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<? extends ConstantPool> hscp;
- private static final Method loadReferencedTypeIIZMH;
-
- static {
- Method m = null;
- Class<? extends ConstantPool> 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);
}