1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Sun Aug 10 08:07:11 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Sun Aug 10 08:57:22 2014 +0200
1.3 @@ -1231,8 +1231,8 @@
1.4 }
1.5 }
1.6
1.7 - public String getBootMethod(int indx) {
1.8 - return bootMethods != null ? bootMethods[indx].toString() : null;
1.9 + public BootMethodData getBootMethod(int indx) {
1.10 + return bootMethods != null ? bootMethods[indx] : null;
1.11 }
1.12
1.13 /**
1.14 @@ -1593,9 +1593,9 @@
1.15 }
1.16 } // end InnerClassData
1.17
1.18 - private static class BootMethodData {
1.19 + static class BootMethodData {
1.20 private final ClassData clazz;
1.21 - private final int method;
1.22 + final int method;
1.23 private final int[] args;
1.24
1.25 private BootMethodData(ClassData clazz, int method, int[] args) {
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Aug 10 08:07:11 2014 +0200
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Aug 10 08:57:22 2014 +0200
2.3 @@ -1056,7 +1056,15 @@
2.4 int indx = readUShortArg(byteCodes, i);
2.5 println("invoke dynamic: " + indx);
2.6 ByteCodeParser.CPX2 c2 = jc.getCpoolEntry(indx);
2.7 - println(" bootmethod: " + jc.getBootMethod(c2.cpx1));
2.8 + BootMethodData bm = jc.getBootMethod(c2.cpx1);
2.9 + String[] mi = jc.getFieldInfoName(bm.method);
2.10 + char[] returnType = {'V'};
2.11 + StringBuilder cnt = new StringBuilder();
2.12 + String mn = findMethodName(mi, cnt, returnType);
2.13 + println(" mi[0]: " + mi[0]);
2.14 + println(" mi[1]: " + mi[1]);
2.15 + println(" mi[2]: " + mi[2]);
2.16 + println(" mn : " + mn);
2.17 println(" name and type: " + jc.stringValue(c2.cpx2, true));
2.18 emit(smapper, this, "throw 'Invoke dynamic: ' + @1;", "" + indx);
2.19 i += 4;