langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java
changeset 5738 c24b113fe4ac
parent 5520 86e4b9a9da40
parent 5736 ee0850472ca1
child 5857 84d4886d48aa
equal deleted inserted replaced
5735:3190f7182a90 5738:c24b113fe4ac
   118     public final Type stringBufferType;
   118     public final Type stringBufferType;
   119     public final Type stringBuilderType;
   119     public final Type stringBuilderType;
   120     public final Type cloneableType;
   120     public final Type cloneableType;
   121     public final Type serializableType;
   121     public final Type serializableType;
   122     public final Type methodHandleType;
   122     public final Type methodHandleType;
       
   123     public final Type polymorphicSignatureType;
   123     public final Type invokeDynamicType;
   124     public final Type invokeDynamicType;
   124     public final Type throwableType;
   125     public final Type throwableType;
   125     public final Type errorType;
   126     public final Type errorType;
   126     public final Type illegalArgumentExceptionType;
   127     public final Type illegalArgumentExceptionType;
   127     public final Type exceptionType;
   128     public final Type exceptionType;
   283                     try {
   284                     try {
   284                         completer.complete(sym);
   285                         completer.complete(sym);
   285                     } catch (CompletionFailure e) {
   286                     } catch (CompletionFailure e) {
   286                         sym.flags_field |= (PUBLIC | INTERFACE);
   287                         sym.flags_field |= (PUBLIC | INTERFACE);
   287                         ((ClassType) sym.type).supertype_field = objectType;
   288                         ((ClassType) sym.type).supertype_field = objectType;
   288                     }
       
   289                 }
       
   290             };
       
   291         }
       
   292     }
       
   293 
       
   294     public void synthesizeMHTypeIfMissing(final Type type) {
       
   295         final Completer completer = type.tsym.completer;
       
   296         if (completer != null) {
       
   297             type.tsym.completer = new Completer() {
       
   298                 public void complete(Symbol sym) throws CompletionFailure {
       
   299                     try {
       
   300                         completer.complete(sym);
       
   301                     } catch (CompletionFailure e) {
       
   302                         sym.flags_field |= (PUBLIC | ABSTRACT);
       
   303                         ((ClassType) sym.type).supertype_field = objectType;
       
   304                         // do not bother to create MH.type if not visibly declared
       
   305                         // this sym just accumulates invoke(...) methods
       
   306                     }
   289                     }
   307                 }
   290                 }
   308             };
   291             };
   309         }
   292         }
   310     }
   293     }
   424         stringBuilderType = enterClass("java.lang.StringBuilder");
   407         stringBuilderType = enterClass("java.lang.StringBuilder");
   425         cloneableType = enterClass("java.lang.Cloneable");
   408         cloneableType = enterClass("java.lang.Cloneable");
   426         throwableType = enterClass("java.lang.Throwable");
   409         throwableType = enterClass("java.lang.Throwable");
   427         serializableType = enterClass("java.io.Serializable");
   410         serializableType = enterClass("java.io.Serializable");
   428         methodHandleType = enterClass("java.dyn.MethodHandle");
   411         methodHandleType = enterClass("java.dyn.MethodHandle");
       
   412         polymorphicSignatureType = enterClass("java.dyn.MethodHandle$PolymorphicSignature");
   429         invokeDynamicType = enterClass("java.dyn.InvokeDynamic");
   413         invokeDynamicType = enterClass("java.dyn.InvokeDynamic");
   430         errorType = enterClass("java.lang.Error");
   414         errorType = enterClass("java.lang.Error");
   431         illegalArgumentExceptionType = enterClass("java.lang.IllegalArgumentException");
   415         illegalArgumentExceptionType = enterClass("java.lang.IllegalArgumentException");
   432         exceptionType = enterClass("java.lang.Exception");
   416         exceptionType = enterClass("java.lang.Exception");
   433         runtimeExceptionType = enterClass("java.lang.RuntimeException");
   417         runtimeExceptionType = enterClass("java.lang.RuntimeException");
   461         inheritedType = enterClass("java.lang.annotation.Inherited");
   445         inheritedType = enterClass("java.lang.annotation.Inherited");
   462         systemType = enterClass("java.lang.System");
   446         systemType = enterClass("java.lang.System");
   463 
   447 
   464         synthesizeEmptyInterfaceIfMissing(cloneableType);
   448         synthesizeEmptyInterfaceIfMissing(cloneableType);
   465         synthesizeEmptyInterfaceIfMissing(serializableType);
   449         synthesizeEmptyInterfaceIfMissing(serializableType);
   466         synthesizeMHTypeIfMissing(methodHandleType);
   450         synthesizeEmptyInterfaceIfMissing(polymorphicSignatureType);
   467         synthesizeMHTypeIfMissing(invokeDynamicType);
       
   468         synthesizeBoxTypeIfMissing(doubleType);
   451         synthesizeBoxTypeIfMissing(doubleType);
   469         synthesizeBoxTypeIfMissing(floatType);
   452         synthesizeBoxTypeIfMissing(floatType);
   470         synthesizeBoxTypeIfMissing(voidType);
   453         synthesizeBoxTypeIfMissing(voidType);
   471 
   454 
   472         // Enter a synthetic class that is used to mark Sun
   455         // Enter a synthetic class that is used to mark Sun