RFR: 6983726: remove Proxy from MethodHandleProxies.asInterfaceInstance SAM conversion [v7]
Chen Liang
liach at openjdk.org
Thu Apr 6 18:33:30 UTC 2023
On Thu, 6 Apr 2023 18:09:33 GMT, Mandy Chung <mchung at openjdk.org> wrote:
> If you run the test with the system property on, it's dumped in the scratch directory. Do you run with jtreg command?
I ran with `make test TEST="test/jdk/java/lang/invoke/MethodHandleProxies"`. The scratch's subdirectories (corresponding to processors) are all empty.
> > It appears the default class hierarchy resolver cannot be used to generates stack maps with only the FilePermission required by JTReg granted.
>
> what permission does it need?
It didn't explicitly fail with a security exception; the test fails with such a stacktrace:
java.lang.IllegalArgumentException: Could not resolve class RuntimeException
at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.resolve(ClassHierarchyImpl.java:59)
at java.base/jdk.internal.classfile.impl.ClassHierarchyImpl.isInterface(ClassHierarchyImpl.java:69)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeReferenceFrom(StackMapGenerator.java:1360)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Type.mergeFrom(StackMapGenerator.java:1328)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.merge(StackMapGenerator.java:1191)
at java.base/jdk.internal.classfile.impl.StackMapGenerator$Frame.checkAssignableTo(StackMapGenerator.java:1141)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.checkJumpTarget(StackMapGenerator.java:263)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.processExceptionHandlerTargets(StackMapGenerator.java:659)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.processBlock(StackMapGenerator.java:645)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.processMethod(StackMapGenerator.java:420)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.generate(StackMapGenerator.java:293)
at java.base/jdk.internal.classfile.impl.StackMapGenerator.<init>(StackMapGenerator.java:232)
at java.base/jdk.internal.classfile.impl.DirectCodeBuilder$4.writeBody(DirectCodeBuilder.java:333)
at java.base/jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute.writeTo(UnboundAttribute.java:914)
at java.base/jdk.internal.classfile.impl.AttributeHolder.writeTo(AttributeHolder.java:56)
at java.base/jdk.internal.classfile.impl.DirectMethodBuilder.writeTo(DirectMethodBuilder.java:136)
at java.base/jdk.internal.classfile.impl.BufWriterImpl.writeList(BufWriterImpl.java:194)
at java.base/jdk.internal.classfile.impl.DirectClassBuilder.build(DirectClassBuilder.java:176)
at java.base/jdk.internal.classfile.Classfile.build(Classfile.java:218)
at java.base/jdk.internal.classfile.Classfile.build(Classfile.java:200)
at java.base/jdk.internal.classfile.Classfile.build(Classfile.java:186)
at java.base/java.lang.invoke.MethodHandleProxies.createTemplate(MethodHandleProxies.java:297)
at java.base/java.lang.invoke.MethodHandleProxies$1.computeValue(MethodHandleProxies.java:260)
at java.base/java.lang.invoke.MethodHandleProxies$1.computeValue(MethodHandleProxies.java:229)
at java.base/java.lang.ClassValue.getFromHashMap(ClassValue.java:229)
at java.base/java.lang.ClassValue.getFromBackup(ClassValue.java:211)
at java.base/java.lang.ClassValue.get(ClassValue.java:117)
at java.base/java.lang.invoke.MethodHandleProxies.asInterfaceInstance(MethodHandleProxies.java:195)
at WithSecurityManagerTest.main(WithSecurityManagerTest.java:38)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:578)
at com.sun.javatest.regtest.agent.MainWrapper$MainTask.run(MainWrapper.java:138)
at java.base/java.lang.Thread.run(Thread.java:1630)
Think it relates to the behavior of `ClassLoader.getSystemResourceAsStream`.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13197#issuecomment-1499458101
More information about the core-libs-dev
mailing list