forked from JavaTX/JavaCompilerCore
970 B
970 B
StackMapTable
- Attribute für Codeattribut
- Wird für Sprünge im Bytecode benötigt
- Quelle: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.4
Generierung
- StackMapTable könnte generiert werden, indem im bytecode geschaut wird, wo Sprünge vorliegen.
- https://stackoverflow.com/questions/24927993/what-kind-of-java-code-requires-stackmap-frames#24930521
- It is illegal to have code after an unconditional branch without a stack map frame being provided for it.
BCEL Patch
https://issues.apache.org/jira/browse/BCEL-268
- Submitting patch: https://commons.apache.org/patches.html
Änderungen im BCEL-Projekt
- Neue Datei StackMapTableGen
- Testen TODO:
- Mittels BCELifier Code generieren lassen, welcher Methoden erstellt, die Branches enthalten
- Dies dann dem StackMapTableGen übergeben und auf das erstellen von StackMapEntries abprüfen
Literatur
- Zu JVM allgemein: http://blog.jamesdbloom.com/JVMInternals.html