Invokedynamic for the CACAO JVM

Saved in:
Bibliographic Details
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
Description
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