diff -r 69cfd80f8706 -r c40b2a190173 src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotClassInitializationPlugin.java --- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotClassInitializationPlugin.java Tue Apr 23 14:09:54 2019 -0400 +++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/meta/HotSpotClassInitializationPlugin.java Tue Apr 23 22:55:09 2019 +0200 @@ -24,13 +24,11 @@ package org.graalvm.compiler.hotspot.meta; -import java.lang.reflect.Method; import java.util.function.Supplier; import org.graalvm.compiler.core.common.type.ObjectStamp; import org.graalvm.compiler.core.common.type.Stamp; import org.graalvm.compiler.core.common.type.StampFactory; -import org.graalvm.compiler.debug.GraalError; import org.graalvm.compiler.hotspot.nodes.aot.InitializeKlassNode; import org.graalvm.compiler.hotspot.nodes.aot.ResolveConstantNode; import org.graalvm.compiler.nodes.ConstantNode; @@ -40,6 +38,7 @@ import org.graalvm.compiler.nodes.graphbuilderconf.ClassInitializationPlugin; import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext; +import jdk.vm.ci.hotspot.HotSpotConstantPool; import jdk.vm.ci.hotspot.HotSpotResolvedObjectType; import jdk.vm.ci.meta.ConstantPool; import jdk.vm.ci.meta.ResolvedJavaMethod; @@ -85,44 +84,17 @@ return false; } - private static final Class hscp; - private static final Method loadReferencedTypeIIZMH; - - static { - Method m = null; - Class c = null; - try { - c = Class.forName("jdk.vm.ci.hotspot.HotSpotConstantPool").asSubclass(ConstantPool.class); - m = c.getDeclaredMethod("loadReferencedType", int.class, int.class, boolean.class); - } catch (Exception e) { - throw GraalError.shouldNotReachHere(e); - } - loadReferencedTypeIIZMH = m; - hscp = c; - } - - private static boolean isHotSpotConstantPool(ConstantPool cp) { + @Override + public boolean supportsLazyInitialization(ConstantPool cp) { // jdk.vm.ci.hotspot.HotSpotConstantPool is final, so we can // directly compare Classes. - return cp.getClass() == hscp; - } - - @Override - public boolean supportsLazyInitialization(ConstantPool cp) { - if (loadReferencedTypeIIZMH != null && isHotSpotConstantPool(cp)) { - return true; - } - return false; + return (cp instanceof HotSpotConstantPool); } @Override public void loadReferencedType(GraphBuilderContext builder, ConstantPool cp, int cpi, int opcode) { - if (loadReferencedTypeIIZMH != null && isHotSpotConstantPool(cp)) { - try { - loadReferencedTypeIIZMH.invoke(cp, cpi, opcode, false); - } catch (Throwable t) { - throw GraalError.shouldNotReachHere(t); - } + if (cp instanceof HotSpotConstantPool) { + ((HotSpotConstantPool) cp).loadReferencedType(cpi, opcode, false); } else { cp.loadReferencedType(cpi, opcode); }