7017414: before the move of JSR 292 to package java.lang.invoke, javac must recognize the new package
Added support for future 292 package (support for old location 'java.dyn' will be removed in followup changeset) Reviewed-by: jjg
This commit is contained in:
parent
3f331b632b
commit
3c0d8e8275
langtools/src/share/classes/com/sun/tools/javac
@ -237,7 +237,7 @@ public class Flags {
|
||||
|
||||
/**
|
||||
* Flag that marks a signature-polymorphic invoke method.
|
||||
* (These occur inside java.dyn.MethodHandle.)
|
||||
* (These occur inside java.lang.invoke.MethodHandle.)
|
||||
*/
|
||||
public static final long POLYMORPHIC_SIGNATURE = 1L<<40;
|
||||
|
||||
|
@ -124,7 +124,9 @@ public class Symtab {
|
||||
public final Type stringBuilderType;
|
||||
public final Type cloneableType;
|
||||
public final Type serializableType;
|
||||
public final Type transientMethodHandleType; // transient - 292
|
||||
public final Type methodHandleType;
|
||||
public final Type transientPolymorphicSignatureType; // transient - 292
|
||||
public final Type polymorphicSignatureType;
|
||||
public final Type throwableType;
|
||||
public final Type errorType;
|
||||
@ -419,8 +421,10 @@ public class Symtab {
|
||||
cloneableType = enterClass("java.lang.Cloneable");
|
||||
throwableType = enterClass("java.lang.Throwable");
|
||||
serializableType = enterClass("java.io.Serializable");
|
||||
methodHandleType = enterClass("java.dyn.MethodHandle");
|
||||
polymorphicSignatureType = enterClass("java.dyn.MethodHandle$PolymorphicSignature");
|
||||
transientMethodHandleType = enterClass("java.dyn.MethodHandle"); // transient - 292
|
||||
methodHandleType = enterClass("java.lang.invoke.MethodHandle");
|
||||
transientPolymorphicSignatureType = enterClass("java.dyn.MethodHandle$PolymorphicSignature"); // transient - 292
|
||||
polymorphicSignatureType = enterClass("java.lang.invoke.MethodHandle$PolymorphicSignature");
|
||||
errorType = enterClass("java.lang.Error");
|
||||
illegalArgumentExceptionType = enterClass("java.lang.IllegalArgumentException");
|
||||
exceptionType = enterClass("java.lang.Exception");
|
||||
@ -464,6 +468,7 @@ public class Symtab {
|
||||
|
||||
synthesizeEmptyInterfaceIfMissing(cloneableType);
|
||||
synthesizeEmptyInterfaceIfMissing(serializableType);
|
||||
synthesizeEmptyInterfaceIfMissing(transientPolymorphicSignatureType); // transient - 292
|
||||
synthesizeEmptyInterfaceIfMissing(polymorphicSignatureType);
|
||||
synthesizeBoxTypeIfMissing(doubleType);
|
||||
synthesizeBoxTypeIfMissing(floatType);
|
||||
|
@ -787,10 +787,11 @@ public class MemberEnter extends JCTree.Visitor implements Completer {
|
||||
&& s.owner.kind != MTH
|
||||
&& types.isSameType(c.type, syms.deprecatedType))
|
||||
s.flags_field |= Flags.DEPRECATED;
|
||||
// Internally to java.dyn, a @PolymorphicSignature annotation
|
||||
// Internally to java.lang.invoke, a @PolymorphicSignature annotation
|
||||
// acts like a classfile attribute.
|
||||
if (!c.type.isErroneous() &&
|
||||
types.isSameType(c.type, syms.polymorphicSignatureType)) {
|
||||
(types.isSameType(c.type, syms.polymorphicSignatureType) ||
|
||||
types.isSameType(c.type, syms.transientPolymorphicSignatureType))) {
|
||||
if (!target.hasMethodHandles()) {
|
||||
// Somebody is compiling JDK7 source code to a JDK6 target.
|
||||
// Make it an error, since it is unlikely but important.
|
||||
|
@ -1321,7 +1321,9 @@ public class ClassReader implements Completer {
|
||||
sym.flags_field |= PROPRIETARY;
|
||||
else
|
||||
proxies.append(proxy);
|
||||
if (majorVersion >= V51.major && proxy.type.tsym == syms.polymorphicSignatureType.tsym) {
|
||||
if (majorVersion >= V51.major &&
|
||||
(proxy.type.tsym == syms.polymorphicSignatureType.tsym ||
|
||||
proxy.type.tsym == syms.transientPolymorphicSignatureType.tsym)) {
|
||||
sym.flags_field |= POLYMORPHIC_SIGNATURE;
|
||||
}
|
||||
}
|
||||
|
@ -73,7 +73,8 @@ public class Names {
|
||||
public final Name java_io_Serializable;
|
||||
public final Name serialVersionUID;
|
||||
public final Name java_lang_Enum;
|
||||
public final Name java_dyn_MethodHandle;
|
||||
public final Name transient_java_dyn_MethodHandle; // transient - 292
|
||||
public final Name java_lang_invoke_MethodHandle;
|
||||
public final Name package_info;
|
||||
public final Name ConstantValue;
|
||||
public final Name LineNumberTable;
|
||||
@ -183,7 +184,8 @@ public class Names {
|
||||
java_lang_Cloneable = fromString("java.lang.Cloneable");
|
||||
java_io_Serializable = fromString("java.io.Serializable");
|
||||
java_lang_Enum = fromString("java.lang.Enum");
|
||||
java_dyn_MethodHandle = fromString("java.dyn.MethodHandle");
|
||||
transient_java_dyn_MethodHandle = fromString("java.dyn.MethodHandle"); //transient - 292
|
||||
java_lang_invoke_MethodHandle = fromString("java.lang.invoke.MethodHandle");
|
||||
package_info = fromString("package-info");
|
||||
serialVersionUID = fromString("serialVersionUID");
|
||||
ConstantValue = fromString("ConstantValue");
|
||||
|
Loading…
x
Reference in New Issue
Block a user