Invokedynamic for the CACAO JVM
Saved in:
| Title: | Invokedynamic for the CACAO JVM |
|---|---|
| Authors: | Gruber, Fabian |
| Contributors: | Krall, Andreas, TU Wien, Österreich |
| Publication Year: | 2020 |
| Collection: | TU Wien: reposiTUm |
| Subject Terms: | Java VM, invoke dynamic |
| Description: | Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers ; Zsfassung in dt. Sprache ; Der Java Specification Request 292 (JSR-292)[51] erweitert die Java Virtual Machine (JVM) Spezifikation[34] um die effiziente Implementierung von dynamisch typisierten Programmier- sprachen zu ermöglichen. Der invokedynamic Bytecode ist die wichtigste Neuerung in diesen Zusammenhang. Das Ziel dieser Arbeit ist es alle neuen Features von JSR-292 in der CACAO JVM[30],[31] zu implementieren. Die Umsetzung der neuen Instruktionen und Schnittstellen hat Auswirkungen auf eine Vielzahl von Modulen der virtuellen Maschine, darunter den Classloader, den Bytecode- Verifizierer, den Just-In-Time (JIT) Codegenerator und den Garbage-Collector. Die OpenJDK-Klassenbibliothek enthält einen Laufzeit-Bytecode Generator[57], welcher Tei- le von JSR-292 implementiert. Unglücklicherweise verwendet dieser Generator mehrere inter- ne Schnittstellen der HotSpot JVM und Erweiterungen des Bytecode Befehlssatzes. Ein großer Teil dieser Arbeit war ihrer Reimplementierung in CACAO gewidmet. Das größte Problem stell- te die Annahme des Generators dar, dass die virtuelle Maschine Bytecode unterstützt, der sein Stackverhalten zur Laufzeit verändert. Die HotSpot JVM verwendet in solchen Fällen einen Bytecode-Interpreter, für den Änderungen des Operandenstack kein großes Problem darstellt. Da CACAO sich zur Ausführung von Bytecode vollständig auf einen JIT-Übersetzer verlässt, ist dieser Ansatz derzeit nicht möglich, es war daher notwendig OpenJDKs Generator Framework zu analysieren um das dynamische Verhalten des generierten Bytecode vorhersagen zu können. Abschliessend vergleichen wir die Implementierung von JSR-292 für CACAO mit der von HotSpot und JamVM, zwei weiterer JVMs die den selben Bytecode-Generator verwenden, um Erkenntnisse darüber zu gewinnen wie sich low-level Implementierungsentscheidungen auf die Effizienz auswirken. ; The Java Specification Request 292 (JSR-292)[51] adds features to the Java Virtual Machine (JVM) specification[34] ... |
| Document Type: | thesis |
| File Description: | XI, 69 S. |
| Language: | English |
| Relation: | https://doi.org/10.34726/hss.2014.23038; http://hdl.handle.net/20.500.12708/4337; AC11838919; urn:nbn:at:at-ubtuw:1-74256 |
| DOI: | 10.34726/hss.2014.23038 |
| Availability: | https://doi.org/10.34726/hss.2014.23038 https://hdl.handle.net/20.500.12708/4337 |
| Rights: | open |
| Accession Number: | edsbas.B9AC6548 |
| Database: | BASE |
| Abstract: | Abweichender Titel laut Übersetzung der Verfasserin/des Verfassers ; Zsfassung in dt. Sprache ; Der Java Specification Request 292 (JSR-292)[51] erweitert die Java Virtual Machine (JVM) Spezifikation[34] um die effiziente Implementierung von dynamisch typisierten Programmier- sprachen zu ermöglichen. Der invokedynamic Bytecode ist die wichtigste Neuerung in diesen Zusammenhang. Das Ziel dieser Arbeit ist es alle neuen Features von JSR-292 in der CACAO JVM[30],[31] zu implementieren. Die Umsetzung der neuen Instruktionen und Schnittstellen hat Auswirkungen auf eine Vielzahl von Modulen der virtuellen Maschine, darunter den Classloader, den Bytecode- Verifizierer, den Just-In-Time (JIT) Codegenerator und den Garbage-Collector. Die OpenJDK-Klassenbibliothek enthält einen Laufzeit-Bytecode Generator[57], welcher Tei- le von JSR-292 implementiert. Unglücklicherweise verwendet dieser Generator mehrere inter- ne Schnittstellen der HotSpot JVM und Erweiterungen des Bytecode Befehlssatzes. Ein großer Teil dieser Arbeit war ihrer Reimplementierung in CACAO gewidmet. Das größte Problem stell- te die Annahme des Generators dar, dass die virtuelle Maschine Bytecode unterstützt, der sein Stackverhalten zur Laufzeit verändert. Die HotSpot JVM verwendet in solchen Fällen einen Bytecode-Interpreter, für den Änderungen des Operandenstack kein großes Problem darstellt. Da CACAO sich zur Ausführung von Bytecode vollständig auf einen JIT-Übersetzer verlässt, ist dieser Ansatz derzeit nicht möglich, es war daher notwendig OpenJDKs Generator Framework zu analysieren um das dynamische Verhalten des generierten Bytecode vorhersagen zu können. Abschliessend vergleichen wir die Implementierung von JSR-292 für CACAO mit der von HotSpot und JamVM, zwei weiterer JVMs die den selben Bytecode-Generator verwenden, um Erkenntnisse darüber zu gewinnen wie sich low-level Implementierungsentscheidungen auf die Effizienz auswirken. ; The Java Specification Request 292 (JSR-292)[51] adds features to the Java Virtual Machine (JVM) specification[34] ... |
|---|---|
| DOI: | 10.34726/hss.2014.23038 |
Nájsť tento článok vo Web of Science