Why having the wrong InnerClasses attribute is an issue for the VM ?
Remi Forax
forax at univ-mlv.fr
Mon Nov 30 07:08:13 UTC 2020
I've forgotten a cast in an invokedynamic, hence a call to wrongTargetType,
but in order to create the error message, MethodType.toString(), getSimpleName() is called and it fails because getDeclaringClass() verifies the InnerClasses attribute.
For me InnerClasses was just an attribute for javac not something the VM should take care of,
it seems that the VM strongly verifies this attribute and i wonder what is the reason behind that ?
regards,
RĂ©mi
Exception in thread "main" java.lang.IncompatibleClassChangeError: fr.umlv.transmogrif.ImplMap and fr.umlv.transmogrif.ImplMap$Row/0x0000000801007400 disagree on InnerClasses attribute
at java.base/java.lang.Class.getDeclaringClass0(Native Method)
at java.base/java.lang.Class.isTopLevelClass(Class.java:1970)
at java.base/java.lang.Class.getSimpleBinaryName(Class.java:1955)
at java.base/java.lang.Class.getSimpleName0(Class.java:1835)
at java.base/java.lang.Class.getSimpleName(Class.java:1826)
at java.base/java.lang.Class.getSimpleName0(Class.java:1833)
at java.base/java.lang.Class.getSimpleName(Class.java:1826)
at java.base/java.lang.invoke.MethodType.toString(MethodType.java:895)
at java.base/java.lang.String.valueOf(String.java:3365)
at java.base/java.lang.StringBuilder.append(StringBuilder.java:169)
at java.base/java.lang.invoke.MethodHandle.standardString(MethodHandle.java:1611)
at java.base/java.lang.invoke.MethodHandle.toString(MethodHandle.java:1608)
at java.base/java.lang.String.valueOf(String.java:3365)
at java.base/java.lang.invoke.CallSite.wrongTargetType(CallSite.java:203)
at java.base/java.lang.invoke.CallSite.makeSite(CallSite.java:333)
at java.base/java.lang.invoke.MethodHandleNatives.linkCallSiteImpl(MethodHandleNatives.java:280)
at java.base/java.lang.invoke.MethodHandleNatives.linkCallSite(MethodHandleNatives.java:270)
at fr.umlv.transmogrif.ImplMap/0x0000000801003c00.<init>(ImplMap.java:21)
at fr.umlv.transmogrif.Main.main(Main.java:7)
More information about the core-libs-dev
mailing list