65 } 66 } 67 68 private static final class InjectedStampDependency extends Dependency { 69 70 private InjectedStampDependency() { 71 super("stamp", "org.graalvm.compiler.core.common.type.Stamp"); 72 } 73 74 @Override 75 public String inject(AbstractProcessor processor, ExecutableElement inject) { 76 AnnotationMirror nodeIntrinsic = processor.getAnnotation(inject, processor.getType(NODE_INTRINSIC_CLASS_NAME)); 77 boolean nonNull = nodeIntrinsic != null && getAnnotationValue(nodeIntrinsic, "injectedStampIsNonNull", Boolean.class); 78 return String.format("injection.getInjectedStamp(%s.class, %s)", GeneratedPlugin.getErasedType(inject.getReturnType()), nonNull); 79 } 80 } 81 82 public enum WellKnownDependency { 83 CONSTANT_REFLECTION("b.getConstantReflection()", "jdk.vm.ci.meta.ConstantReflectionProvider"), 84 META_ACCESS("b.getMetaAccess()", "jdk.vm.ci.meta.MetaAccessProvider"), 85 INJECTED_STAMP(new InjectedStampDependency()), 86 SNIPPET_REFLECTION(new InjectedDependency("snippetReflection", "org.graalvm.compiler.api.replacements.SnippetReflectionProvider")), 87 STAMP_PROVIDER("b.getStampProvider()", "org.graalvm.compiler.nodes.spi.StampProvider"), 88 STRUCTURED_GRAPH("b.getGraph()", "org.graalvm.compiler.nodes.StructuredGraph"); 89 90 private final String expr; 91 private final String type; 92 private final Dependency generateMember; 93 94 WellKnownDependency(String expr, String type) { 95 this.expr = expr; 96 this.type = type; 97 this.generateMember = null; 98 } 99 100 WellKnownDependency(Dependency generateMember) { 101 this.expr = generateMember.name; 102 this.type = generateMember.type; 103 this.generateMember = generateMember; 104 } 105 106 private TypeMirror getType(AbstractProcessor processor) { 107 return processor.getType(type); | 65 } 66 } 67 68 private static final class InjectedStampDependency extends Dependency { 69 70 private InjectedStampDependency() { 71 super("stamp", "org.graalvm.compiler.core.common.type.Stamp"); 72 } 73 74 @Override 75 public String inject(AbstractProcessor processor, ExecutableElement inject) { 76 AnnotationMirror nodeIntrinsic = processor.getAnnotation(inject, processor.getType(NODE_INTRINSIC_CLASS_NAME)); 77 boolean nonNull = nodeIntrinsic != null && getAnnotationValue(nodeIntrinsic, "injectedStampIsNonNull", Boolean.class); 78 return String.format("injection.getInjectedStamp(%s.class, %s)", GeneratedPlugin.getErasedType(inject.getReturnType()), nonNull); 79 } 80 } 81 82 public enum WellKnownDependency { 83 CONSTANT_REFLECTION("b.getConstantReflection()", "jdk.vm.ci.meta.ConstantReflectionProvider"), 84 META_ACCESS("b.getMetaAccess()", "jdk.vm.ci.meta.MetaAccessProvider"), 85 ASSUMPTIONS("b.getAssumptions()", "jdk.vm.ci.meta.Assumptions"), 86 OPTIONVALUES("b.getOptions()", "org.graalvm.compiler.options.OptionValues"), 87 INJECTED_STAMP(new InjectedStampDependency()), 88 SNIPPET_REFLECTION(new InjectedDependency("snippetReflection", "org.graalvm.compiler.api.replacements.SnippetReflectionProvider")), 89 STAMP_PROVIDER("b.getStampProvider()", "org.graalvm.compiler.nodes.spi.StampProvider"), 90 INTRINSIC_CONTEXT("b.getIntrinsic()", "org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext"), 91 STRUCTURED_GRAPH("b.getGraph()", "org.graalvm.compiler.nodes.StructuredGraph"); 92 93 private final String expr; 94 private final String type; 95 private final Dependency generateMember; 96 97 WellKnownDependency(String expr, String type) { 98 this.expr = expr; 99 this.type = type; 100 this.generateMember = null; 101 } 102 103 WellKnownDependency(Dependency generateMember) { 104 this.expr = generateMember.name; 105 this.type = generateMember.type; 106 this.generateMember = generateMember; 107 } 108 109 private TypeMirror getType(AbstractProcessor processor) { 110 return processor.getType(type); |