< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.replacements.processor/src/org/graalvm/compiler/replacements/processor/PluginGenerator.java

Print this page
rev 52509 : [mq]: graal


 107         disambiguateWith(plugins, plugin -> plugin.getPluginName() + "__" + nextId[0]++);
 108     }
 109 
 110     private static void createPluginFactory(AbstractProcessor processor, Element topLevelClass, List<GeneratedPlugin> plugins) {
 111         PackageElement pkg = (PackageElement) topLevelClass.getEnclosingElement();
 112 
 113         String genClassName = "PluginFactory_" + topLevelClass.getSimpleName();
 114 
 115         String qualifiedGenClassName = pkg.getQualifiedName() + "." + genClassName;
 116         try {
 117             JavaFileObject factory = processor.env().getFiler().createSourceFile(qualifiedGenClassName, topLevelClass);
 118             try (PrintWriter out = new PrintWriter(factory.openWriter())) {
 119                 out.printf("// CheckStyle: stop header check\n");
 120                 out.printf("// CheckStyle: stop line length check\n");
 121                 out.printf("// GENERATED CONTENT - DO NOT EDIT\n");
 122                 out.printf("// GENERATORS: %s, %s\n", ReplacementsAnnotationProcessor.class.getName(), PluginGenerator.class.getName());
 123                 out.printf("package %s;\n", pkg.getQualifiedName());
 124                 out.printf("\n");
 125                 createImports(out, plugins);
 126                 out.printf("\n");
 127                 out.printf("public class %s implements NodeIntrinsicPluginFactory {\n", genClassName);
 128                 for (GeneratedPlugin plugin : plugins) {
 129                     out.printf("\n");
 130                     plugin.generate(processor, out);
 131                 }
 132                 out.printf("\n");


 133                 createPluginFactoryMethod(out, plugins);
 134                 out.printf("}\n");
 135             }
 136         } catch (IOException e) {
 137             processor.env().getMessager().printMessage(Diagnostic.Kind.ERROR, e.getMessage());
 138         }
 139         processor.createProviderFile(qualifiedGenClassName, "org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory", topLevelClass);
 140     }
 141 
 142     protected static void createImports(PrintWriter out, List<GeneratedPlugin> plugins) {
 143         out.printf("import jdk.vm.ci.meta.ResolvedJavaMethod;\n");
 144         out.printf("\n");
 145         out.printf("import java.lang.annotation.Annotation;\n");
 146         out.printf("import org.graalvm.compiler.nodes.ValueNode;\n");
 147         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;\n");
 148         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.GeneratedInvocationPlugin;\n");
 149         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;\n");
 150         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;\n");
 151         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory;\n");
 152 
 153         HashSet<String> extra = new HashSet<>();
 154         for (GeneratedPlugin plugin : plugins) {
 155             plugin.extraImports(extra);
 156         }
 157         if (!extra.isEmpty()) {
 158             out.printf("\n");
 159             for (String i : extra) {
 160                 out.printf("import %s;\n", i);
 161             }
 162         }
 163     }
 164 
 165     private static void createPluginFactoryMethod(PrintWriter out, List<GeneratedPlugin> plugins) {
 166         out.printf("    @Override\n");
 167         out.printf("    public void registerPlugins(InvocationPlugins plugins, InjectionProvider injection) {\n");
 168         for (GeneratedPlugin plugin : plugins) {
 169             plugin.register(out);
 170         }
 171         out.printf("    }\n");
 172     }
 173 }


 107         disambiguateWith(plugins, plugin -> plugin.getPluginName() + "__" + nextId[0]++);
 108     }
 109 
 110     private static void createPluginFactory(AbstractProcessor processor, Element topLevelClass, List<GeneratedPlugin> plugins) {
 111         PackageElement pkg = (PackageElement) topLevelClass.getEnclosingElement();
 112 
 113         String genClassName = "PluginFactory_" + topLevelClass.getSimpleName();
 114 
 115         String qualifiedGenClassName = pkg.getQualifiedName() + "." + genClassName;
 116         try {
 117             JavaFileObject factory = processor.env().getFiler().createSourceFile(qualifiedGenClassName, topLevelClass);
 118             try (PrintWriter out = new PrintWriter(factory.openWriter())) {
 119                 out.printf("// CheckStyle: stop header check\n");
 120                 out.printf("// CheckStyle: stop line length check\n");
 121                 out.printf("// GENERATED CONTENT - DO NOT EDIT\n");
 122                 out.printf("// GENERATORS: %s, %s\n", ReplacementsAnnotationProcessor.class.getName(), PluginGenerator.class.getName());
 123                 out.printf("package %s;\n", pkg.getQualifiedName());
 124                 out.printf("\n");
 125                 createImports(out, plugins);
 126                 out.printf("\n");

 127                 for (GeneratedPlugin plugin : plugins) {

 128                     plugin.generate(processor, out);

 129                     out.printf("\n");
 130                 }
 131                 out.printf("public class %s implements NodeIntrinsicPluginFactory {\n", genClassName);
 132                 createPluginFactoryMethod(out, plugins);
 133                 out.printf("}\n");
 134             }
 135         } catch (IOException e) {
 136             processor.env().getMessager().printMessage(Diagnostic.Kind.ERROR, e.getMessage());
 137         }
 138         processor.createProviderFile(qualifiedGenClassName, "org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory", topLevelClass);
 139     }
 140 
 141     protected static void createImports(PrintWriter out, List<GeneratedPlugin> plugins) {
 142         out.printf("import jdk.vm.ci.meta.ResolvedJavaMethod;\n");
 143         out.printf("\n");
 144         out.printf("import java.lang.annotation.Annotation;\n");
 145         out.printf("import org.graalvm.compiler.nodes.ValueNode;\n");
 146         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.GraphBuilderContext;\n");
 147         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.GeneratedInvocationPlugin;\n");
 148         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugin;\n");
 149         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.InvocationPlugins;\n");
 150         out.printf("import org.graalvm.compiler.nodes.graphbuilderconf.NodeIntrinsicPluginFactory;\n");
 151 
 152         HashSet<String> extra = new HashSet<>();
 153         for (GeneratedPlugin plugin : plugins) {
 154             plugin.extraImports(extra);
 155         }
 156         if (!extra.isEmpty()) {
 157             out.printf("\n");
 158             for (String i : extra) {
 159                 out.printf("import %s;\n", i);
 160             }
 161         }
 162     }
 163 
 164     private static void createPluginFactoryMethod(PrintWriter out, List<GeneratedPlugin> plugins) {
 165         out.printf("    @Override\n");
 166         out.printf("    public void registerPlugins(InvocationPlugins plugins, NodeIntrinsicPluginFactory.InjectionProvider injection) {\n");
 167         for (GeneratedPlugin plugin : plugins) {
 168             plugin.register(out);
 169         }
 170         out.printf("    }\n");
 171     }
 172 }
< prev index next >