RVM
  1. RVM
  2. RVM-294

JikesRVM fails to build using a Classpath VM

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Labels:
      None
    • Environment:
      ia32-linux
    • Testcase included:
      yes
    • Number of attachments :
      1

      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)

      1. Test.java
        0.2 kB
        Andrew John Hughes

        Activity

        Hide
        David Grove added a comment -

        Initial triage for 3.0.1 release; suggesting postponing to 3.0.2; move back to 3.0.1 if you disagree.

        Show
        David Grove added a comment - Initial triage for 3.0.1 release; suggesting postponing to 3.0.2; move back to 3.0.1 if you disagree.
        Hide
        David Grove added a comment -

        Defer to 3.1.1

        Show
        David Grove added a comment - Defer to 3.1.1
        Hide
        David Grove added a comment -

        bulk defer open issues to 3.1.2

        Show
        David Grove added a comment - bulk defer open issues to 3.1.2
        Hide
        David Grove added a comment -

        A lot has changed since 2007. Issue made obsolete by OpenJDK.

        Show
        David Grove added a comment - A lot has changed since 2007. Issue made obsolete by OpenJDK.
        Hide
        David Grove added a comment -

        bulk close of all resolved issues in preparation for 3.1.3 release.

        Show
        David Grove added a comment - bulk close of all resolved issues in preparation for 3.1.3 release.

          People

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

            Dates

            • Created:
              Updated:
              Resolved: