1.1 --- a/rt/emul/compact/src/main/java/java/lang/invoke/MethodHandles.java Sun Aug 10 10:37:23 2014 +0200
1.2 +++ b/rt/emul/compact/src/main/java/java/lang/invoke/MethodHandles.java Sun Aug 10 11:32:38 2014 +0200
1.3 @@ -142,6 +142,14 @@
1.4 // Copied from AccessibleObject, as used by Method.setAccessible, etc.:
1.5 // static final private java.security.Permission ACCESS_PERMISSION =
1.6 // new ReflectPermission("suppressAccessChecks");
1.7 +
1.8 + static Lookup findFor(Class<?> clazz) {
1.9 + Object o = clazz;
1.10 + if (o instanceof Class) {
1.11 + return new Lookup(clazz, Lookup.ALL_MODES);
1.12 + }
1.13 + throw new IllegalArgumentException("Expecting class: " + o);
1.14 + }
1.15
1.16 /**
1.17 * A <em>lookup object</em> is a factory for creating method handles,
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Aug 10 10:37:23 2014 +0200
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Aug 10 11:32:38 2014 +0200
2.3 @@ -1076,6 +1076,8 @@
2.4 append("var metHan = ");
2.5 append(accessStaticMethod(object, mn, mi));
2.6 append('(');
2.7 + String lookup = accessClass("java_lang_invoke_MethodHandles") + "(false).findFor__Ljava_lang_invoke_MethodHandles$Lookup_2Ljava_lang_Class_2(CLS.$class)";
2.8 + append(lookup);
2.9 // if (numArguments > 0) {
2.10 // append(vars[0]);
2.11 // for (int j = 1; j < numArguments; ++j) {
3.1 --- a/rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamic.java Sun Aug 10 10:37:23 2014 +0200
3.2 +++ b/rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamic.java Sun Aug 10 11:32:38 2014 +0200
3.3 @@ -37,6 +37,7 @@
3.4 assertReal("1st parameter lookup", lookup);
3.5 assertReal("2nd parameter name", name);
3.6 assertReal("3rd parameter type", type);
3.7 + assert lookup.lookupClass() == InvokeDynamic.class : "We are making the lookup: " + lookup.lookupClass();
3.8 try {
3.9 return new ConstantCallSite(lookup.findVirtual(InvokeDynamic.class, "instance_sayHello", MethodType.methodType(String.class)));
3.10 } catch (NoSuchMethodException | IllegalAccessException e) {