[lworld] Reflection issue after switching to JEP 401 model

XMLWordPrintable

      After switching to JEP 401 model, test runtime/valhalla/inlinetypes/EmptyInlineTest.java fails with this error message:

      java.lang.InternalError: java.lang.NoSuchMethodException: no such method: jdk.internal.misc.Unsafe.getValue(Object,long)Object/invokeV
      irtual
              at java.base/java.lang.invoke.MethodHandleStatics.newInternalError(MethodHandleStatics.java:166)
              at java.base/java.lang.invoke.DirectMethodHandle.makePreparedFieldLambdaForm(DirectMethodHandle.java:796)
              at java.base/java.lang.invoke.DirectMethodHandle.preparedFieldLambdaForm(DirectMethodHandle.java:696)
              at java.base/java.lang.invoke.DirectMethodHandle.preparedFieldLambdaForm(DirectMethodHandle.java:682)
              at java.base/java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:113)
              at java.base/java.lang.invoke.DirectMethodHandle.make(DirectMethodHandle.java:129)
              at java.base/java.lang.invoke.MethodHandles$Lookup.getDirectFieldCommon(MethodHandles.java:4201)
              at java.base/java.lang.invoke.MethodHandles$Lookup.getDirectFieldNoSecurityManager(MethodHandles.java:4192)
              at java.base/java.lang.invoke.MethodHandles$Lookup.unreflectField(MethodHandles.java:3634)
              at java.base/java.lang.invoke.MethodHandles$Lookup.unreflectGetter(MethodHandles.java:3585)
              at java.base/java.lang.invoke.MethodHandleImpl$1.unreflectField(MethodHandleImpl.java:1625)
              at java.base/jdk.internal.reflect.MethodHandleAccessorFactory.newFieldAccessor(MethodHandleAccessorFactory.java:184)
              at java.base/jdk.internal.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:144)
              at java.base/java.lang.reflect.Field.acquireFieldAccessor(Field.java:1203)
              at java.base/java.lang.reflect.Field.getFieldAccessor(Field.java:1182)
              at java.base/java.lang.reflect.Field.get(Field.java:458)
              at runtime.valhalla.inlinetypes.EmptyInlineTest.main(EmptyInlineTest.java:145)
              at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
              at java.base/java.lang.reflect.Method.invoke(Method.java:582)
              at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
              at java.base/java.lang.Thread.run(Thread.java:1570)
      Caused by: java.lang.NoSuchMethodException: no such method: jdk.internal.misc.Unsafe.getValue(Object,long)Object/invokeVirtual
              at java.base/java.lang.invoke.MemberName.makeAccessException(MemberName.java:943)
              at java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1022)
              at java.base/java.lang.invoke.DirectMethodHandle.makePreparedFieldLambdaForm(DirectMethodHandle.java:793)
              ... 19 more
      Caused by: java.lang.NoSuchMethodError: 'java.lang.Object jdk.internal.misc.Unsafe.getValue(java.lang.Object, long)'
              at java.base/java.lang.invoke.MethodHandleNatives.resolve(Native Method)
              at java.base/java.lang.invoke.MemberName$Factory.resolve(MemberName.java:990)
              at java.base/java.lang.invoke.MemberName$Factory.resolveOrFail(MemberName.java:1019)
              ... 20 more
      java.lang.RuntimeException: Reflection tests failed: java.lang.InternalError: java.lang.NoSuchMethodException: no such method: jdk.int
      ernal.misc.Unsafe.getValue(Object,long)Object/invokeVirtual
              at runtime.valhalla.inlinetypes.EmptyInlineTest.main(EmptyInlineTest.java:154)
              at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
              at java.base/java.lang.reflect.Method.invoke(Method.java:582)
              at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
              at java.base/java.lang.Thread.run(Thread.java:1570)

      JavaTest Message: Test threw exception: java.lang.RuntimeException: Reflection tests failed: java.lang.InternalError: java.lang.NoSuch
      MethodException: no such method: jdk.internal.misc.Unsafe.getValue(Object,long)Object/invokeVirtual


      Reproducing the issue to have changes from both https://bugs.openjdk.org/browse/JDK-8317277 and https://bugs.openjdk.org/browse/JDK-8326595.

      One possible cause to this issue could the change to class flags in the new class file format, leading to the Java code to not identify correctly value classes.

            Assignee:
            Mandy Chung (Inactive)
            Reporter:
            Frederic Parain
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: