Markierte Zeiger sind eine allgemeine Optimierung bei der Implementierung dynamischer Sprachen: Nutzen Sie Ausrichtungsanforderungen, die bedeuten, dass die niedrigen zwei oder drei Bits eines Zeigers immer Null sind, und verwenden Sie sie zum Speichern von Typinformationen.Boehm und markierte Zeiger
Angenommen, Sie verwenden den Boehm Garbage Collector, der im Grunde funktioniert, indem er sich aktive Daten für Dinge ansieht, die wie Zeiger aussehen. Markierte Zeiger sehen nicht wie Zeiger aus, in dem Sinne, dass ihre niedrigen Bits ungleich Null sind.
Ist das ein Showstopper, d. H. Müssen Sie Zeiger mit Tags versehen, wenn Sie Boehm verwenden? Oder hat es ein Problem mit diesem Problem?
Warum Boehm für eine Sprachimplementierung verwenden? Wenn Sie fortgeschritten genug sind, um darüber nachzudenken, ein paar Bits von Typinformationen zu speichern, können Sie sicherlich einen handangepassten GC schreiben, der nicht darauf eingeht und viel schlauer ist als Boehm für Ihre Sprache? Recht? – delnan
Im Prinzip vielleicht, aber auf kurze Sicht ist es nicht unwesentlich besser als Boehm (beachten Sie, dass zB Mono es bis vor kurzem verwendete) und auf lange Sicht strebe ich nach Interoperabilität mit C (in diesem Szenario ist Böhm wohl ein nahezu optimaler Lösung). – rwallace