Incorrect Stackmap Frames error: no uninitialized locals
Issue #248
resolved
ExtendJ 8.0.1-249-gfe3a489 Java SE 8
The following test causes a runtime error due to incorrect stackmap frames:
public class Test {
public static void main(String[] args) {
boolean b = args.length > 0;
Binary t = new Binary(!b);
}
static class Binary {
public Binary(boolean value) {
System.out.println(value);
}
}
}
Expected result: should print "true"
Actual result: fails to run:
[junit] [FAIL] runTest[codegen/smf_04p](tests.extendj.TestJava7)
[junit] Error output files differ expected:<[]> but was:<[Error: A JNI error has occurred, please check your installation and try again
[junit] Exception in thread "main" java.lang.VerifyError: Inconsistent stackmap frames at branch target 24
[junit] Exception Details:
[junit] Location:
[junit] Test.main([Ljava/lang/String;)V @24: iconst_0
[junit] Reason:
[junit] Type uninitialized 12 (current frame, stack[0]) is not assignable to 'Test$Binary' (stack map, stack[0])
[junit] Current Frame:
[junit] bci: @17
[junit] flags: { }
[junit] locals: { '[Ljava/lang/String;', integer }
[junit] stack: { uninitialized 12, uninitialized 12, integer }
[junit] Stackmap Frame:
[junit] bci: @24
[junit] flags: { }
[junit] locals: { '[Ljava/lang/String;', integer }
[junit] stack: { 'Test$Binary', 'Test$Binary' }
Comments (2)
-
reporter -
reporter - changed status to resolved
Track uninitialized references in stackmap
This adds tracking of uninitialized class references in stackmap frames.
fixes
#248(bitbucket)→ <<cset ea2c7fcc4f0b>>
- Log in to comment
Added test for this:
codegen/smf_04p