Mon, 07 Feb 2011 18:09:46 +0000
7017414: before the move of JSR 292 to package java.lang.invoke, javac must recognize the new package
Summary: added support for future 292 package (support for old location 'java.dyn' will be removed in followup changeset)
Reviewed-by: jjg
1.1 --- a/src/share/classes/com/sun/tools/javac/code/Flags.java Fri Feb 04 17:30:28 2011 -0800 1.2 +++ b/src/share/classes/com/sun/tools/javac/code/Flags.java Mon Feb 07 18:09:46 2011 +0000 1.3 @@ -237,7 +237,7 @@ 1.4 1.5 /** 1.6 * Flag that marks a signature-polymorphic invoke method. 1.7 - * (These occur inside java.dyn.MethodHandle.) 1.8 + * (These occur inside java.lang.invoke.MethodHandle.) 1.9 */ 1.10 public static final long POLYMORPHIC_SIGNATURE = 1L<<40; 1.11
2.1 --- a/src/share/classes/com/sun/tools/javac/code/Symtab.java Fri Feb 04 17:30:28 2011 -0800 2.2 +++ b/src/share/classes/com/sun/tools/javac/code/Symtab.java Mon Feb 07 18:09:46 2011 +0000 2.3 @@ -124,7 +124,9 @@ 2.4 public final Type stringBuilderType; 2.5 public final Type cloneableType; 2.6 public final Type serializableType; 2.7 + public final Type transientMethodHandleType; // transient - 292 2.8 public final Type methodHandleType; 2.9 + public final Type transientPolymorphicSignatureType; // transient - 292 2.10 public final Type polymorphicSignatureType; 2.11 public final Type throwableType; 2.12 public final Type errorType; 2.13 @@ -419,8 +421,10 @@ 2.14 cloneableType = enterClass("java.lang.Cloneable"); 2.15 throwableType = enterClass("java.lang.Throwable"); 2.16 serializableType = enterClass("java.io.Serializable"); 2.17 - methodHandleType = enterClass("java.dyn.MethodHandle"); 2.18 - polymorphicSignatureType = enterClass("java.dyn.MethodHandle$PolymorphicSignature"); 2.19 + transientMethodHandleType = enterClass("java.dyn.MethodHandle"); // transient - 292 2.20 + methodHandleType = enterClass("java.lang.invoke.MethodHandle"); 2.21 + transientPolymorphicSignatureType = enterClass("java.dyn.MethodHandle$PolymorphicSignature"); // transient - 292 2.22 + polymorphicSignatureType = enterClass("java.lang.invoke.MethodHandle$PolymorphicSignature"); 2.23 errorType = enterClass("java.lang.Error"); 2.24 illegalArgumentExceptionType = enterClass("java.lang.IllegalArgumentException"); 2.25 exceptionType = enterClass("java.lang.Exception"); 2.26 @@ -464,6 +468,7 @@ 2.27 2.28 synthesizeEmptyInterfaceIfMissing(cloneableType); 2.29 synthesizeEmptyInterfaceIfMissing(serializableType); 2.30 + synthesizeEmptyInterfaceIfMissing(transientPolymorphicSignatureType); // transient - 292 2.31 synthesizeEmptyInterfaceIfMissing(polymorphicSignatureType); 2.32 synthesizeBoxTypeIfMissing(doubleType); 2.33 synthesizeBoxTypeIfMissing(floatType);
3.1 --- a/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Fri Feb 04 17:30:28 2011 -0800 3.2 +++ b/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Mon Feb 07 18:09:46 2011 +0000 3.3 @@ -787,10 +787,11 @@ 3.4 && s.owner.kind != MTH 3.5 && types.isSameType(c.type, syms.deprecatedType)) 3.6 s.flags_field |= Flags.DEPRECATED; 3.7 - // Internally to java.dyn, a @PolymorphicSignature annotation 3.8 + // Internally to java.lang.invoke, a @PolymorphicSignature annotation 3.9 // acts like a classfile attribute. 3.10 if (!c.type.isErroneous() && 3.11 - types.isSameType(c.type, syms.polymorphicSignatureType)) { 3.12 + (types.isSameType(c.type, syms.polymorphicSignatureType) || 3.13 + types.isSameType(c.type, syms.transientPolymorphicSignatureType))) { 3.14 if (!target.hasMethodHandles()) { 3.15 // Somebody is compiling JDK7 source code to a JDK6 target. 3.16 // Make it an error, since it is unlikely but important.
4.1 --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Feb 04 17:30:28 2011 -0800 4.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Feb 07 18:09:46 2011 +0000 4.3 @@ -1321,7 +1321,9 @@ 4.4 sym.flags_field |= PROPRIETARY; 4.5 else 4.6 proxies.append(proxy); 4.7 - if (majorVersion >= V51.major && proxy.type.tsym == syms.polymorphicSignatureType.tsym) { 4.8 + if (majorVersion >= V51.major && 4.9 + (proxy.type.tsym == syms.polymorphicSignatureType.tsym || 4.10 + proxy.type.tsym == syms.transientPolymorphicSignatureType.tsym)) { 4.11 sym.flags_field |= POLYMORPHIC_SIGNATURE; 4.12 } 4.13 }
5.1 --- a/src/share/classes/com/sun/tools/javac/util/Names.java Fri Feb 04 17:30:28 2011 -0800 5.2 +++ b/src/share/classes/com/sun/tools/javac/util/Names.java Mon Feb 07 18:09:46 2011 +0000 5.3 @@ -73,7 +73,8 @@ 5.4 public final Name java_io_Serializable; 5.5 public final Name serialVersionUID; 5.6 public final Name java_lang_Enum; 5.7 - public final Name java_dyn_MethodHandle; 5.8 + public final Name transient_java_dyn_MethodHandle; // transient - 292 5.9 + public final Name java_lang_invoke_MethodHandle; 5.10 public final Name package_info; 5.11 public final Name ConstantValue; 5.12 public final Name LineNumberTable; 5.13 @@ -183,7 +184,8 @@ 5.14 java_lang_Cloneable = fromString("java.lang.Cloneable"); 5.15 java_io_Serializable = fromString("java.io.Serializable"); 5.16 java_lang_Enum = fromString("java.lang.Enum"); 5.17 - java_dyn_MethodHandle = fromString("java.dyn.MethodHandle"); 5.18 + transient_java_dyn_MethodHandle = fromString("java.dyn.MethodHandle"); //transient - 292 5.19 + java_lang_invoke_MethodHandle = fromString("java.lang.invoke.MethodHandle"); 5.20 package_info = fromString("package-info"); 5.21 serialVersionUID = fromString("serialVersionUID"); 5.22 ConstantValue = fromString("ConstantValue");