src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.options.processor/src/org/graalvm/compiler/options/processor/OptionProcessor.java
changeset 49873 26ebfe8ce852
parent 47798 9fe9292f5931
child 50330 2cbc42a5764b
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.options.processor/src/org/graalvm/compiler/options/processor/OptionProcessor.java	Tue Apr 24 08:13:30 2018 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.options.processor/src/org/graalvm/compiler/options/processor/OptionProcessor.java	Tue Apr 24 09:04:57 2018 -0700
@@ -61,6 +61,7 @@
 import org.graalvm.compiler.options.OptionDescriptor;
 import org.graalvm.compiler.options.OptionDescriptors;
 import org.graalvm.compiler.options.OptionKey;
+import org.graalvm.compiler.options.OptionType;
 
 /**
  * Processes static fields annotated with {@link Option}. An {@link OptionDescriptors}
@@ -218,7 +219,7 @@
             }
         }
 
-        info.options.add(new OptionInfo(optionName, help, extraHelp, optionType, declaringClass, field));
+        info.options.add(new OptionInfo(optionName, annotation.type(), help, extraHelp, optionType, declaringClass, field));
     }
 
     private void createFiles(OptionsInfo info) {
@@ -243,6 +244,7 @@
             out.println("");
             out.println("import java.util.*;");
             out.println("import " + OptionDescriptors.class.getPackage().getName() + ".*;");
+            out.println("import " + OptionType.class.getName() + ";");
             out.println("");
             out.println("public class " + optionsClassName + " implements " + OptionDescriptors.class.getSimpleName() + " {");
 
@@ -263,6 +265,7 @@
                     optionField = option.declaringClass + "." + option.field.getSimpleName();
                 }
                 out.println("        case \"" + name + "\": {");
+                OptionType optionType = option.optionType;
                 String type = option.type;
                 String help = option.help;
                 String[] extraHelp = option.extraHelp;
@@ -270,7 +273,8 @@
                 Name fieldName = option.field.getSimpleName();
                 out.printf("            return " + desc + ".create(\n");
                 out.printf("                /*name*/ \"%s\",\n", name);
-                out.printf("                /*type*/ %s.class,\n", type);
+                out.printf("                /*optionType*/ %s.%s,\n", optionType.getDeclaringClass().getSimpleName(), optionType.name());
+                out.printf("                /*optionValueType*/ %s.class,\n", type);
                 out.printf("                /*help*/ \"%s\",\n", help);
                 if (extraHelp.length != 0) {
                     out.printf("                /*extraHelp*/ new String[] {\n");
@@ -332,14 +336,16 @@
     static class OptionInfo implements Comparable<OptionInfo> {
 
         final String name;
+        final OptionType optionType;
         final String help;
         final String[] extraHelp;
         final String type;
         final String declaringClass;
         final VariableElement field;
 
-        OptionInfo(String name, String help, String[] extraHelp, String type, String declaringClass, VariableElement field) {
+        OptionInfo(String name, OptionType optionType, String help, String[] extraHelp, String type, String declaringClass, VariableElement field) {
             this.name = name;
+            this.optionType = optionType;
             this.help = help;
             this.extraHelp = extraHelp;
             this.type = type;