Frage

Tagged Zeiger sind eine gemeinsame Optimierung, wenn dynamische Sprachen Umsetzung: Nutzen Ausrichtungsanforderungen, die die niedrigen zwei oder drei Bits eines Zeigers bedeutet immer Null sein wird, und verwenden Sie sie zum Speichern von Typinformationen

.

Angenommen, Sie Boehm Garbage Collector verwenden, die für die Dinge, indem man aktiv Daten grundsätzlich funktioniert, die aussehen wie Zeiger. Tagged Zeiger sehen nicht wie Zeiger, in dem Sinne, dass ihre niedrigen Bits ungleich Null sind.

Ist das ein Hemmschuh, das heißt Sie haben zu Graben markiert Zeiger, wenn Sie Boehm verwenden? Oder ist es eine Möglichkeit, um dieses Problem?

War es hilfreich?

Lösung

AFAIK Boehm kann dies mit den richtigen Optionen behandeln. Es ist in der Lage, zu einem kleinen Preis, der inneren Zeiger erkennen. Es ist auch möglich, eigene Scan-Code zu schreiben. Grundsätzlich gibt es wahrscheinlich genug Haken einfach alles zu handhaben.

Ich habe meinen eigenen Sammler geschrieben, es ist genau auf dem Heap und konservativ auf dem Stapel. Es ist nicht berühren C Zeiger gemacht. Für einige Anwendungen wird es schneller sein, weil es viel über meine Sprache zugeordneten Objekte kennt und über andere Sachen kümmert sich nicht darum, die verwaltet wird, sagen wir, traditionellen C ++ Destruktoren verwenden.

Es ist jedoch nicht inkrementelles oder generationsüber, und es spielt keine Themen behandeln, wie gut (es ist nicht intelligent genug, um Stop-Fäden mit Signalen). Auf der positiven Seite, ist es jedoch erfordert keine magische Verknüpfung Techniken, die Boehm hat (zu Capture mallocs, etc). Auf der ernsten Minus-Seite kann man nicht verwaltete Objekte in nicht verwalteten diejenigen setzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top