next up previous contents
Next: Tycoon-2 Up: Implementierungen virtueller Maschinen Previous: Appeal JRockit 1.1.2   Inhalt

Intel Open Runtime Platform

Die Intel Open Runtime Platform ist die in den Intel Microprocessor Research Labs entwickelte Forschungsmaschine. Sie verfügt über eine definierte Schnittstelle zum Garbage Collector, die prinzipiell verschiedene GC-Implementierungen ermöglicht. In der aktuellen (ersten) Version ist ein generationaler Algorithmus mit 2 Generationen und einem ,,Large Object Space`` implementiert worden.

Als ,,Write Barrier`` zum Protokollieren von Zeigern zwischen Generationen findet ,,Card Marking`` mit eine Kartengröße von 256 Bytes Verwendung.

Die Allokation in der jungen Generation findet in einem LAB einer Größe zwischen 64KB und 256KB statt.

Die Thread-Implementierung basiert auf Betriebssytem-Threads; für die Monitore wird einen Kombination aus thin locks und einem Metalockprotokoll verwendet.

Zur Ausführung verwendet ORP zwei Compiler aber keinen Interpreter. Wie bei Jalapeño wird der Bytecode zunächst von einem Basis-Compiler übersetzt. Gesteuert durch dynamische Profilinformationen wird ggf. die Neuübersetzung einer Methode durch den optimierenden Compiler ausgelöst.

Es gibt keine feste Rahmendarstellung, jeder Compiler kann eine eigene Repräsentation bestimmen. Muß eine Methode aufgrund einer Ausnahme verlassen werden, so wird der Compiler, der die betreffende Methode compiliert hat, aufgefordert, die aktuelle Aktivierung abzubauen (unwind). Für die Garbage Collection identifiziert der entsprechende Compiler die Referenzen auf dem Stack und in den Registern. Referenztabellen kann jeder Compiler also in dem von ihm bevorzugten Format ablegen.

Der Basis-Compiler nutzt diese Flexibilität, indem bei der Übersetzung keine Referenztabellen generiert werden, statt dessen werden diese bei Bedarf berechnet. Der optimierende Compiler legt die Referenztabellen hingegen in komprimierter Form für praktisch jede Instruktion ab. Hiervon ausgenommen sind nur Instruktionsfolgen, die die Speicherverwaltung in einen inkonsistenten Zwischenzustand bringenA2. Durch die Bereitstellung von Referenztabellen für praktisch jede Instruktion sind damit jederzeit nur wenige Threads inkonsistent -- bei einer Garbage Collection müssen daher nur wenige Threads vorgerollt werden.


next up previous contents
Next: Tycoon-2 Up: Implementierungen virtueller Maschinen Previous: Appeal JRockit 1.1.2   Inhalt

2001-02-28