|
David Grove made changes - 17/Jun/09 12:22 PM
David Grove made changes - 17/Jun/09 05:03 PM
fix and test cases committed in r15712.
David Grove made changes - 17/Jun/09 09:30 PM
The r15712 does not yet complete the GetStaticFieldID, and here is an updated testcase. m$svn diff testing/tests/jni/src/TestJNIGetFieldID.java
Index: testing/tests/jni/src/TestJNIGetFieldID.java
===================================================================
--- testing/tests/jni/src/TestJNIGetFieldID.java (revision 15712)
+++ testing/tests/jni/src/TestJNIGetFieldID.java (working copy)
@@ -74,6 +74,18 @@
allTestPass = false;
}
+ try {
+ if (getStaticFinalF(I.class) == 1) {
+ if (verbose) System.out.println("static_I.f: pass");
+ } else {
+ if (verbose) System.out.println("static_I.f: fail");
+ allTestPass = false;
+ }
+ } catch(Throwable e) {
+ if (verbose) System.out.println("static_f: fail");
+ allTestPass = false;
+ }
+
if (allTestPass) {
System.out.println("PASS: TestJNIGetFieldID");
} else {
Here is a failure in Jikes RVM, and successes in Hotspot and J9: $rvm -showversion -Djava.library.path=./target/tests/byeong/prototype/jni -classpath ./target/tests/byeong/prototype/jni/classes TestJNIGetFieldID production Jikes RVM 3.1.0+svn (r15711M) instance_a: pass static_s: pass static_f: pass static_f: fail FAIL: TestJNIGetFieldID $java -showversion -Djava.library.path=./target/tests/byeong/prototype/jni -classpath ./target/tests/byeong/prototype/jni/classes TestJNIGetFieldID java version "1.6.0_13" Java(TM) SE Runtime Environment (build 1.6.0_13-b03) Java HotSpot(TM) Server VM (build 11.3-b02, mixed mode) instance_a: pass static_s: pass static_f: pass static_I.f: pass PASS: TestJNIGetFieldID $java -showversion -Djava.library.path=./target/tests/byeong/prototype/jni -classpath ./target/tests/byeong/prototype/jni/classes TestJNIGetFieldID java version "1.6.0" Java(TM) SE Runtime Environment (build pxi3260sr4-20090219_01(SR4)) IBM J9 VM (build 2.4, J2RE 1.6.0 IBM J9 2.4 Linux x86-32 jvmxi3260-20090215_29883 (JIT enabled, AOT enabled) J9VM - 20090215_029883_lHdSMr JIT - r9_20090213_2028 GC - 20090213_AA) JCL - 20090218_01 instance_a: pass static_s: pass static_f: pass static_I.f: pass PASS: TestJNIGetFieldID Here is a proposed patch and the result: $svn diff rvm/src/org/jikesrvm/jni/JNIFunctions.java
Index: rvm/src/org/jikesrvm/jni/JNIFunctions.java
===================================================================
--- rvm/src/org/jikesrvm/jni/JNIFunctions.java (revision 15712)
+++ rvm/src/org/jikesrvm/jni/JNIFunctions.java (working copy)
@@ -3447,12 +3447,13 @@
}
}
}
- // Now search all implemented interfaces (includes inherited interfaces)
- for (RVMClass curClass : rvmType.asClass().getAllImplementedInterfaces()) {
- for (RVMField field : curClass.getStaticFields()) {
- if (field.getName() == fieldName && field.getDescriptor() == descriptor) {
+ }
+
+ // Now search all implemented interfaces (includes inherited interfaces)
+ for (RVMClass curClass : rvmType.asClass().getAllImplementedInterfaces()) {
+ for (RVMField field : curClass.getStaticFields()) {
+ if (field.getName() == fieldName && field.getDescriptor() == descriptor) {
return field.getId();
- }
}
}
}
$rvm -showversion -Djava.library.path=./target/tests/byeong/prototype/jni -classpath ./target/tests/byeong/prototype/jni/classes TestJNIGetFieldID
prototype Jikes RVM 3.1.0+svn (r15712M)
instance_a: pass
static_s: pass
static_f: pass
static_I.f: pass
PASS: TestJNIGetFieldID
The RVM r15711rejects an interface class, which the JNI specification allows:
Byeong Lee made changes - 18/Jun/09 10:47 PM
Hi BK, Are you actually working with a more complex example in which the order of traversing superclasses vs. superinterfaces matters? The current svn head passes the extended test case for me. So unless it is a question of ordering (the field is declared in both an interface of this class and as a field of a superclass and we are supposed to find the interface one in preference to the superclass one), then I don't see why it isn't working for you. Hi Dave, I am not working with the complex example on Jikes RVM. I also observed that the SVN head passed the extended test. ok, Appreciate getting nice test cases along with the bug report...thanks!
David Grove made changes - 19/Jun/09 11:22 AM
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
The patch is more complex than it needs to be to fix the problem. Working on simpler fix.