# HG changeset patch # User Jaroslav Tulach # Date 1407772343 -7200 # Node ID 6d5075e5ceac818a779a8ceb292d71ba8d302cd4 # Parent 2f22f2a2175d1be0102d157c161fcaa73d3f9af4 Initial attempt to provide proper 3rd parameter to bootmethod diff -r 2f22f2a2175d -r 6d5075e5ceac rt/emul/compact/src/main/java/java/lang/invoke/MethodHandleNatives.java --- a/rt/emul/compact/src/main/java/java/lang/invoke/MethodHandleNatives.java Sun Aug 10 11:39:36 2014 +0200 +++ b/rt/emul/compact/src/main/java/java/lang/invoke/MethodHandleNatives.java Mon Aug 11 17:52:23 2014 +0200 @@ -45,7 +45,9 @@ static native void init(MemberName self, Object ref); static native void expand(MemberName self); - static native MemberName resolve(MemberName self, Class caller) throws LinkageError; + static MemberName resolve(MemberName self, Class caller) throws LinkageError { + return self; + } static native int getMembers(Class defc, String matchName, String matchSig, int matchFlags, Class caller, int skip, MemberName[] results); @@ -57,25 +59,13 @@ /// MethodHandle support - /** Fetch MH-related JVM parameter. - * which=0 retrieves MethodHandlePushLimit - * which=1 retrieves stack slot push size (in address units) - */ - static native int getConstant(int which); - - static final boolean COUNT_GWT; - /// CallSite support /** Tell the JVM that we need to change the target of a CallSite. */ static native void setCallSiteTargetNormal(CallSite site, MethodHandle target); static native void setCallSiteTargetVolatile(CallSite site, MethodHandle target); - private static native void registerNatives(); static { - registerNatives(); - COUNT_GWT = getConstant(Constants.GC_COUNT_GWT) != 0; - // The JVM calls MethodHandleNatives.. Cascade the calls as needed: MethodHandleImpl.initStatics(); } diff -r 2f22f2a2175d -r 6d5075e5ceac rt/emul/mini/src/main/java/java/lang/ClassLoader.java --- a/rt/emul/mini/src/main/java/java/lang/ClassLoader.java Sun Aug 10 11:39:36 2014 +0200 +++ b/rt/emul/mini/src/main/java/java/lang/ClassLoader.java Mon Aug 11 17:52:23 2014 +0200 @@ -499,13 +499,13 @@ * @since 1.1 */ protected final Class findLoadedClass(String name) { - if (!checkName(name)) + try { + return Class.forName(name); + } catch (ClassNotFoundException ex) { return null; - return findLoadedClass0(name); + } } - private native final Class findLoadedClass0(String name); - /** * Sets the signers of a class. This should be invoked after defining a * class.

@@ -884,10 +884,6 @@ return false; } - private boolean checkName(String name) { - throw new UnsupportedOperationException(); - } - private Class findBootstrapClassOrNull(String name) { throw new UnsupportedOperationException(); } diff -r 2f22f2a2175d -r 6d5075e5ceac rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Aug 10 11:39:36 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Mon Aug 11 17:52:23 2014 +0200 @@ -1069,6 +1069,8 @@ println(" mi[2]: " + mi[2]); println(" mn : " + mn); println(" name and type: " + jc.stringValue(c2.cpx2, true)); + CPX2 nameAndType = jc.getCpoolEntry(c2.cpx2); + String type = jc.StringValue(nameAndType.cpx2); String object = accessClass(mcn) + "(false)"; if (mn.startsWith("cons_")) { object += ".constructor"; @@ -1078,7 +1080,9 @@ append('('); String lookup = accessClass("java_lang_invoke_MethodHandles") + "(false).findFor__Ljava_lang_invoke_MethodHandles$Lookup_2Ljava_lang_Class_2(CLS.$class)"; append(lookup); - append(", '").append(mi[1]).append("'"); + append(", '").append(mi[1]).append("', "); + String methodType = accessClass("java_lang_invoke_MethodType") + "(false).fromMethodDescriptorString__Ljava_lang_invoke_MethodType_2Ljava_lang_String_2Ljava_lang_ClassLoader_2("; + append(methodType).append("'").append(type).append("', null)"); // if (numArguments > 0) { // append(vars[0]); // for (int j = 1; j < numArguments; ++j) {