mirror of
https://git.freebsd.org/ports.git
synced 2025-05-18 01:53:13 -04:00
85 lines
3.5 KiB
Text
85 lines
3.5 KiB
Text
|
|
# HG changeset patch
|
|
# User jrose
|
|
# Date 1357874549 28800
|
|
# Node ID ecc14534318c80dc7612c8b1d328a67849c5b07f
|
|
# Parent 88c54f7a8c514b3df459cb086356387cd2c35d8a
|
|
8004933: Improve MethodHandle interaction with libraries
|
|
8006017: Improve lookup resolutions
|
|
Reviewed-by: ahgross
|
|
|
|
--- jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java Tue Dec 04 17:28:38 2012 -0800
|
|
+++ jdk/src/share/classes/java/lang/invoke/MethodHandleNatives.java Thu Jan 10 19:22:29 2013 -0800
|
|
@@ -418,6 +418,21 @@ class MethodHandleNatives {
|
|
return defc == sun.misc.Unsafe.class;
|
|
case "lookup":
|
|
return defc == java.lang.invoke.MethodHandles.class;
|
|
+ case "findStatic":
|
|
+ case "findVirtual":
|
|
+ case "findConstructor":
|
|
+ case "findSpecial":
|
|
+ case "findGetter":
|
|
+ case "findSetter":
|
|
+ case "findStaticGetter":
|
|
+ case "findStaticSetter":
|
|
+ case "bind":
|
|
+ case "unreflect":
|
|
+ case "unreflectSpecial":
|
|
+ case "unreflectConstructor":
|
|
+ case "unreflectGetter":
|
|
+ case "unreflectSetter":
|
|
+ return defc == java.lang.invoke.MethodHandles.Lookup.class;
|
|
case "invoke":
|
|
return defc == java.lang.reflect.Method.class;
|
|
case "get":
|
|
--- jdk/src/share/classes/java/lang/invoke/MethodHandles.java Tue Dec 04 17:28:38 2012 -0800
|
|
+++ jdk/src/share/classes/java/lang/invoke/MethodHandles.java Thu Jan 10 19:22:29 2013 -0800
|
|
@@ -68,6 +68,10 @@ public class MethodHandles {
|
|
*/
|
|
public static Lookup lookup() {
|
|
return new Lookup();
|
|
+ }
|
|
+ static {
|
|
+ // FIXME in MR1: Core Reflection cannot be used to gain a Lookup to perform MH reflection
|
|
+ Reflection.registerMethodsToFilter(MethodHandles.class, "lookup");
|
|
}
|
|
|
|
/**
|
|
|
|
|
|
# HG changeset patch
|
|
# User jrose
|
|
# Date 1357955621 28800
|
|
# Node ID d9969a953f693f5760b1d2759f11a2cb222e4f20
|
|
# Parent f9567d889266689d5b76f11a23584127848700bc
|
|
8006125: Update MethodHandles library interactions
|
|
Reviewed-by: mchung, jdn, ahgross
|
|
|
|
--- jdk/src/share/classes/java/lang/invoke/MethodHandles.java Fri Jan 11 09:00:00 2013 -0800
|
|
+++ jdk/src/share/classes/java/lang/invoke/MethodHandles.java Fri Jan 11 17:53:41 2013 -0800
|
|
@@ -68,10 +68,6 @@ public class MethodHandles {
|
|
*/
|
|
public static Lookup lookup() {
|
|
return new Lookup();
|
|
- }
|
|
- static {
|
|
- // FIXME in MR1: Core Reflection cannot be used to gain a Lookup to perform MH reflection
|
|
- Reflection.registerMethodsToFilter(MethodHandles.class, "lookup");
|
|
}
|
|
|
|
/**
|
|
--- jdk/src/share/classes/sun/reflect/misc/MethodUtil.java Fri Jan 11 09:00:00 2013 -0800
|
|
+++ jdk/src/share/classes/sun/reflect/misc/MethodUtil.java Fri Jan 11 17:53:41 2013 -0800
|
|
@@ -256,6 +256,12 @@ public final class MethodUtil extends Se
|
|
public static Object invoke(Method m, Object obj, Object[] params)
|
|
throws InvocationTargetException, IllegalAccessException {
|
|
if (m.getDeclaringClass().equals(AccessController.class) ||
|
|
+ (m.getDeclaringClass().equals(java.lang.invoke.MethodHandles.class)
|
|
+ && m.getName().equals("lookup")) ||
|
|
+ (m.getDeclaringClass().equals(java.lang.invoke.MethodHandles.Lookup.class)
|
|
+ && (m.getName().startsWith("find") ||
|
|
+ m.getName().startsWith("bind") ||
|
|
+ m.getName().startsWith("unreflect"))) ||
|
|
m.getDeclaringClass().equals(Method.class))
|
|
throw new InvocationTargetException(
|
|
new UnsupportedOperationException("invocation not supported"));
|