Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8326600

[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.

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

              Created:
              Updated:
              Resolved: