Bug 33731 - JikesRVM fails to build using a Classpath VM
Summary: JikesRVM fails to build using a Classpath VM
Alias: None
Product: classpath
Classification: Unclassified
Component: classpath (show other bugs)
Version: unspecified
: P3 normal
Target Milestone: ---
Assignee: Andrew John Hughes
Depends on:
Reported: 2007-10-10 22:13 UTC by Andrew John Hughes
Modified: 2007-12-03 20:36 UTC (History)
1 user (show)

See Also:
Host: x86-pc-linux-gnu
Target: x86-pc-linux-gnu
Build: x86-pc-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2007-12-03 20:36:17


Note You need to log in before you can comment on or make changes to this bug.
Description Andrew John Hughes 2007-10-10 22:13:18 UTC
Also tracked in: http://jira.codehaus.org/browse/RVM-294

Building JikesRVM with either JamVM or CACAO and GNU Classpath currently fails due to a difference in the VMRuntime classes. JikesRVM's version is public, while the Classpath copy is package-private. 
 [java] java.lang.ExceptionInInitializerError
 [java] at org.jikesrvm.ia32.VM_OutOfLineMachineCode.generateThreadSwitchInstructions(VM_OutOfLineMachineCode.java:342)
 [java] at org.jikesrvm.ia32.VM_OutOfLineMachineCode.init(VM_OutOfLineMachineCode.java:55)
 [java] at org.jikesrvm.VM.init(VM.java:2216)
 [java] at org.jikesrvm.VM.initForTool(VM.java:107)
 [java] at org.jikesrvm.VM.initForTool(VM.java:95)
 [java] at org.jikesrvm.tools.header_gen.GenerateInterfaceDeclarations.main(GenerateInterfaceDeclarations.java:162)
 [java] Caused by: java.lang.IllegalAccessException: class is not accessible
 [java] at org.jikesrvm.runtime.VM_Entrypoints.<clinit>(VM_Entrypoints.java:78)
 [java] at org.jikesrvm.ia32.VM_OutOfLineMachineCode.generateThreadSwitchInstructions(VM_OutOfLineMachineCode.java:342)
 [java] ...5 more
The line in question is:
 public static final VM_Field gcLockField = getField(java.lang.VMRuntime.class, "gcLock", int.class);
I don't know if this is new or not, but we could build earlier. Trying to put this line in a separate file to test causes the compile to fail because VMRuntime is private:
javac -cp target/prototype_x86_64-linux/jksvm.jar:target/prototype_x86_64-linux/rvmrt.jar Test.java
 Test.java:7: java.lang.VMRuntime is not public in java.lang; cannot be accessed from outside package
 System.out.println(getField(java.lang.VMRuntime.class, "gcLock", int.class));
 1 error
Using the jars as the bootclasspath works but the test still fails.
java org/jikesrvm/runtime/Test
 java.lang.IllegalAccessException: class is not accessible
 at org.jikesrvm.runtime.Test.main(Test.java:9)
Comment 1 Andrew John Hughes 2007-12-03 20:36:16 UTC
Using the String variant of the JikesRVM method call allows the build to progress, but it hangs in actually building the boot image.