Domanda

puntatori con targhetta sono un'ottimizzazione comuni in sede di attuazione linguaggi dinamici: Approfittate dei requisiti di allineamento che significano il basso due o tre pezzi di un puntatore sarà sempre zero, e li usa per informazioni sul tipo di negozio

.

Si supponga che si sta utilizzando il garbage collector Boehm, che funziona praticamente, cercando in dati attivi per le cose che sembrano puntatori. puntatori con targhetta non assomigliano puntatori, nel senso che i loro bit bassi sono diverso da zero.

E 'questo un bloccante, cioè devi fosso contrassegnati puntatori se si sta utilizzando Boehm? O ha un modo per aggirare questo problema?

È stato utile?

Soluzione

Per quanto ne sappia Boehm in grado di gestire questo con le giuste opzioni. Esso è in grado, a basso prezzo, di rilevare puntatori interni. E 'anche possibile scrivere il proprio codice di scansione. Fondamentalmente ci sono abbastanza probabilmente ganci per gestire qualsiasi cosa.

ho scritto la mia collezione, è preciso sul mucchio e conservatore in pila. Esso non tocca C fatta puntatori. Per alcune applicazioni sarà più veloce perché si conosce un sacco di miei lingua assegnato oggetti e non si preoccupa di altre cose che è gestito, per esempio, utilizzando tradizionali distruttori C ++.

Tuttavia non è incrementale o generazionale, e non gestisce le discussioni pure (non è abbastanza intelligente per le discussioni di arresto con i segnali). Sul lato positivo, tuttavia, non richiede tecniche di collegamento magiche che Boehm fa (a mallocs cattura, ecc). Sul lato meno sul serio non si può mettere gli oggetti gestiti in quelli non gestiti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top