2016-01-12 12:32:16 +00:00
|
|
|
# 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.
|
|
|
|
|
2016-02-18 17:28:08 +00:00
|
|
|
## BCEL Patch
|
|
|
|
https://issues.apache.org/jira/browse/BCEL-268
|
2016-03-10 14:28:03 +00:00
|
|
|
* 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
|
2016-02-18 17:28:08 +00:00
|
|
|
|
|
|
|
# Literatur
|
|
|
|
* Zu JVM allgemein: http://blog.jamesdbloom.com/JVMInternals.html
|