Uploaded image for project: 'JikesRVM'
  1. JikesRVM
  2. RVM-294

JikesRVM fails to build using a Classpath VM

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Medium
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
      None
    • Environment:

      ia32-linux

      Description

      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.

      gen-interface:
      [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)

        Attachments

          Activity

            People

            • Assignee:
              gnu_andrew Andrew John Hughes
              Reporter:
              gnu_andrew Andrew John Hughes
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: