< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symtab.java

Print this page
*** 43,10 ***
--- 43,11 ---
  import com.sun.tools.javac.code.Symbol.ModuleSymbol;
  import com.sun.tools.javac.code.Symbol.PackageSymbol;
  import com.sun.tools.javac.code.Symbol.RootPackageSymbol;
  import com.sun.tools.javac.code.Symbol.TypeSymbol;
  import com.sun.tools.javac.code.Symbol.VarSymbol;
+ import com.sun.tools.javac.code.Type.ArrayType;
  import com.sun.tools.javac.code.Type.BottomType;
  import com.sun.tools.javac.code.Type.ClassType;
  import com.sun.tools.javac.code.Type.ErrorType;
  import com.sun.tools.javac.code.Type.JCPrimitiveType;
  import com.sun.tools.javac.code.Type.JCVoidType;

*** 240,10 ***
--- 241,22 ---
      // For externalization lint checking
      public final Type externalizableType;
      public final Type objectInputType;
      public final Type objectOutputType;
  
+     // For code reflection
+     public final Type codeReflectionType;
+     public final Type quotedType;
+     public final Type quotableType;
+     public final Type closureOpType;
+     public final Type lambdaOpType;
+     public final Type opInterpreterType;
+     public final Type opParserType;
+     public final Type opType;
+     public final MethodSymbol opInterpreterInvoke;
+     public final MethodSymbol opParserFromString;
+ 
      /** The symbol representing the length field of an array.
       */
      public final VarSymbol lengthVar;
  
      /** The symbol representing the final finalize method on enums */

*** 623,16 ***
--- 636,37 ---
          ioExceptionType = enterClass("java.io.IOException");
          objectStreamExceptionType = enterClass("java.io.ObjectStreamException");
          externalizableType = enterClass("java.io.Externalizable");
          objectInputType  = enterClass("java.io.ObjectInput");
          objectOutputType = enterClass("java.io.ObjectOutput");
+         // For code reflection
+         codeReflectionType = enterClass("java.lang.runtime.CodeReflection");
+         quotedType = enterClass("java.lang.reflect.code.Quoted");
+         quotableType = enterClass("java.lang.reflect.code.Quotable");
+         closureOpType = enterClass("java.lang.reflect.code.op.CoreOp$ClosureOp");
+         lambdaOpType = enterClass("java.lang.reflect.code.op.CoreOp$LambdaOp");
+         opInterpreterType = enterClass("java.lang.reflect.code.interpreter.Interpreter");
+         opType = enterClass("java.lang.reflect.code.Op");
+         opInterpreterInvoke = new MethodSymbol(PUBLIC | STATIC | VARARGS,
+                 names.fromString("invoke"),
+                 new MethodType(List.of(opType, new ArrayType(objectType, arrayClass)), objectType,
+                         List.nil(), methodClass),
+                 opInterpreterType.tsym);
+         opParserType = enterClass("java.lang.reflect.code.parser.OpParser");
+         opParserFromString = new MethodSymbol(PUBLIC | STATIC,
+                 names.fromString("fromStringOfFuncOp"),
+                 new MethodType(List.of(stringType), opType,
+                         List.nil(), methodClass),
+                 opParserType.tsym);
          synthesizeEmptyInterfaceIfMissing(autoCloseableType);
          synthesizeEmptyInterfaceIfMissing(cloneableType);
          synthesizeEmptyInterfaceIfMissing(serializableType);
          synthesizeEmptyInterfaceIfMissing(lambdaMetafactory);
          synthesizeEmptyInterfaceIfMissing(serializedLambdaType);
          synthesizeEmptyInterfaceIfMissing(stringConcatFactory);
+         synthesizeEmptyInterfaceIfMissing(quotedType);
+         synthesizeEmptyInterfaceIfMissing(quotableType);
          synthesizeBoxTypeIfMissing(doubleType);
          synthesizeBoxTypeIfMissing(floatType);
          synthesizeBoxTypeIfMissing(voidType);
  
          // Enter a synthetic class that is used to mark internal
< prev index next >