Name: viR10068 Date: 11/14/2003
The spec ClassFileFormat.pdf says:
"The stackmaps are in monotonically increasing order."
But the JVM (1.5.0-beta-b28) accepts class files with
not monotonically increasing order for stackmaps.
The new JCK tests are failed due to this error:
vm/cldc/typechecker/rules/rules002/rules00202m2/rules00202m2.html
vm/cldc/typechecker/rules/rules002/rules00202m4/rules00202m4.html
vm/cldc/typechecker/rules/rules002/rules00202m5/rules00202m5.html
The test source:
--------------------- test18.jcod ---------------------------
class test18 {
0xCAFEBABE;
0;
49;
[] { // Constant Pool
; // first element is empty
Method #3 #5; // #1
Utf8 "StackMap"; // #2
class #4; // #3
Utf8 "java/lang/Object"; // #4
NameAndType #10 #6; // #5
Utf8 "()V"; // #6
Utf8 "m"; // #7
Utf8 "Code"; // #8
class #11; // #9
Utf8 "<init>"; // #10
Utf8 "test18"; // #11
} // Constant Pool
0x0021; // access
#9;// this_cpx
#3;// super_cpx
[] { // Interfaces
} // Interfaces
[] { // fields
} // fields
[] { // methods
{ // Member
0x0001; // access
#10; // name_cpx
#6; // sig_cpx
[] { // Attributes
Attr(#8) { // Code
1; // max_stack
1; // max_locals
Bytes[]{
0x2AB70001B1;
};
[] { // Traps
} // end Traps
[] { // Attributes
} // Attributes
} // end Code
} // Attributes
} // Member
;
{ // Member
0x0001; // access
#7; // name_cpx
#6; // sig_cpx
[] { // Attributes
Attr(#8) { // Code
0; // max_stack
1; // max_locals
Bytes[]{
0x0000B1;
};
[] { // Traps
} // end Traps
[] { // Attributes
Attr(#2) { // StackMap
[] { //
2, []{}, []{};
1, []{}, []{};
0, []{}, []{};
}
} // end StackMap
} // Attributes
} // end Code
} // Attributes
} // Member
} // methods
[] {} // Attributes
}
-------------------------------------------------------------
The execution log:
% jdk1.5.0-b28/solaris-sparc/bin/java -showversion -Xfuture test18
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b28)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b28, mixed mode)
Exception in thread "main" java.lang.NoSuchMethodError: main
%
======================================================================
The spec ClassFileFormat.pdf says:
"The stackmaps are in monotonically increasing order."
But the JVM (1.5.0-beta-b28) accepts class files with
not monotonically increasing order for stackmaps.
The new JCK tests are failed due to this error:
vm/cldc/typechecker/rules/rules002/rules00202m2/rules00202m2.html
vm/cldc/typechecker/rules/rules002/rules00202m4/rules00202m4.html
vm/cldc/typechecker/rules/rules002/rules00202m5/rules00202m5.html
The test source:
--------------------- test18.jcod ---------------------------
class test18 {
0xCAFEBABE;
0;
49;
[] { // Constant Pool
; // first element is empty
Method #3 #5; // #1
Utf8 "StackMap"; // #2
class #4; // #3
Utf8 "java/lang/Object"; // #4
NameAndType #10 #6; // #5
Utf8 "()V"; // #6
Utf8 "m"; // #7
Utf8 "Code"; // #8
class #11; // #9
Utf8 "<init>"; // #10
Utf8 "test18"; // #11
} // Constant Pool
0x0021; // access
#9;// this_cpx
#3;// super_cpx
[] { // Interfaces
} // Interfaces
[] { // fields
} // fields
[] { // methods
{ // Member
0x0001; // access
#10; // name_cpx
#6; // sig_cpx
[] { // Attributes
Attr(#8) { // Code
1; // max_stack
1; // max_locals
Bytes[]{
0x2AB70001B1;
};
[] { // Traps
} // end Traps
[] { // Attributes
} // Attributes
} // end Code
} // Attributes
} // Member
;
{ // Member
0x0001; // access
#7; // name_cpx
#6; // sig_cpx
[] { // Attributes
Attr(#8) { // Code
0; // max_stack
1; // max_locals
Bytes[]{
0x0000B1;
};
[] { // Traps
} // end Traps
[] { // Attributes
Attr(#2) { // StackMap
[] { //
2, []{}, []{};
1, []{}, []{};
0, []{}, []{};
}
} // end StackMap
} // Attributes
} // end Code
} // Attributes
} // Member
} // methods
[] {} // Attributes
}
-------------------------------------------------------------
The execution log:
% jdk1.5.0-b28/solaris-sparc/bin/java -showversion -Xfuture test18
java version "1.5.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta-b28)
Java HotSpot(TM) Client VM (build 1.5.0-beta-b28, mixed mode)
Exception in thread "main" java.lang.NoSuchMethodError: main
%
======================================================================