39 import org.graalvm.compiler.nodes.ValueNode; |
39 import org.graalvm.compiler.nodes.ValueNode; |
40 import org.graalvm.compiler.nodes.ValuePhiNode; |
40 import org.graalvm.compiler.nodes.ValuePhiNode; |
41 import org.graalvm.compiler.nodes.ValueProxyNode; |
41 import org.graalvm.compiler.nodes.ValueProxyNode; |
42 import org.graalvm.compiler.nodes.java.MethodCallTargetNode; |
42 import org.graalvm.compiler.nodes.java.MethodCallTargetNode; |
43 import org.graalvm.compiler.nodes.java.NewInstanceNode; |
43 import org.graalvm.compiler.nodes.java.NewInstanceNode; |
|
44 import org.graalvm.compiler.nodes.spi.CoreProviders; |
44 import org.graalvm.compiler.nodes.spi.LoweringProvider; |
45 import org.graalvm.compiler.nodes.spi.LoweringProvider; |
45 import org.graalvm.compiler.phases.VerifyPhase; |
46 import org.graalvm.compiler.phases.VerifyPhase; |
46 import org.graalvm.compiler.phases.tiers.PhaseContext; |
|
47 |
47 |
48 import jdk.vm.ci.meta.ResolvedJavaMethod; |
48 import jdk.vm.ci.meta.ResolvedJavaMethod; |
49 import jdk.vm.ci.meta.ResolvedJavaType; |
49 import jdk.vm.ci.meta.ResolvedJavaType; |
50 |
50 |
51 public class VerifyGraphAddUsage extends VerifyPhase<PhaseContext> { |
51 public class VerifyGraphAddUsage extends VerifyPhase<CoreProviders> { |
52 private static final Method ADD_OR_UNIQUE; |
52 private static final Method ADD_OR_UNIQUE; |
53 private static final Method CONSTRUCTOR_NEW_INSTANCE; |
53 private static final Method CONSTRUCTOR_NEW_INSTANCE; |
54 private static final EconomicSet<Class<?>> ALLOWED_CLASSES = EconomicSet.create(); |
54 private static final EconomicSet<Class<?>> ALLOWED_CLASSES = EconomicSet.create(); |
55 |
55 |
56 static { |
56 static { |
64 ALLOWED_CLASSES.add(Graph.class); |
64 ALLOWED_CLASSES.add(Graph.class); |
65 ALLOWED_CLASSES.add(LoweringProvider.class); |
65 ALLOWED_CLASSES.add(LoweringProvider.class); |
66 } |
66 } |
67 |
67 |
68 @Override |
68 @Override |
69 protected void verify(StructuredGraph graph, PhaseContext context) { |
69 protected void verify(StructuredGraph graph, CoreProviders context) { |
70 boolean allowed = false; |
70 boolean allowed = false; |
71 for (Class<?> cls : ALLOWED_CLASSES) { |
71 for (Class<?> cls : ALLOWED_CLASSES) { |
72 ResolvedJavaType declaringClass = graph.method().getDeclaringClass(); |
72 ResolvedJavaType declaringClass = graph.method().getDeclaringClass(); |
73 if (context.getMetaAccess().lookupJavaType(cls).isAssignableFrom(declaringClass)) { |
73 if (context.getMetaAccess().lookupJavaType(cls).isAssignableFrom(declaringClass)) { |
74 allowed = true; |
74 allowed = true; |