1.1 --- a/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/Bck2BrwsrJars.java Sun Sep 14 21:54:20 2014 +0200
1.2 +++ b/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/Bck2BrwsrJars.java Sun Sep 14 22:33:35 2014 +0200
1.3 @@ -81,7 +81,11 @@
1.4 }
1.5 @Override
1.6 public InputStream get(String resource) throws IOException {
1.7 - InputStream is = jf.getInputStream(new ZipEntry(resource));
1.8 + InputStream is = getConverted(resource);
1.9 + if (is != null) {
1.10 + return is;
1.11 + }
1.12 + is = jf.getInputStream(new ZipEntry(resource));
1.13 return is == null ? super.get(resource) : is;
1.14 }
1.15 }
1.16 @@ -198,13 +202,20 @@
1.17 this.proc = p;
1.18 }
1.19
1.20 - @Override
1.21 - public InputStream get(String name) throws IOException {
1.22 + protected final InputStream getConverted(String name) throws IOException {
1.23 byte[] arr = converted.get(name);
1.24 if (arr != null) {
1.25 return new ByteArrayInputStream(arr);
1.26 }
1.27 -
1.28 + return null;
1.29 + }
1.30 +
1.31 + @Override
1.32 + public InputStream get(String name) throws IOException {
1.33 + InputStream is = getConverted(name);
1.34 + if (is != null) {
1.35 + return is;
1.36 + }
1.37 Enumeration<URL> en = Bck2BrwsrJars.class.getClassLoader().getResources(name);
1.38 URL u = null;
1.39 while (en.hasMoreElements()) {
2.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Sep 14 21:54:20 2014 +0200
2.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sun Sep 14 22:33:35 2014 +0200
2.3 @@ -1076,11 +1076,15 @@
2.4 char[] returnType = {'V'};
2.5 StringBuilder cnt = new StringBuilder();
2.6 String mn = findMethodName(mi, cnt, returnType);
2.7 - println(" mi[0]: " + mi[0]);
2.8 - println(" mi[1]: " + mi[1]);
2.9 - println(" mi[2]: " + mi[2]);
2.10 - println(" mn : " + mn);
2.11 - println(" name and type: " + jc.stringValue(c2.cpx2, true));
2.12 + StringBuilder sb = new StringBuilder();
2.13 + sb.append("We don't handle invokedynamic, need to preprocess ahead-of-time:\n");
2.14 + sb.append(" mi[0]: ").append(mi[0]).append("\n");
2.15 + sb.append(" mi[1]: ").append(mi[1]).append("\n");
2.16 + sb.append(" mi[2]: ").append(mi[2]).append("\n");
2.17 + sb.append(" mn : ").append(mn).append("\n");
2.18 + sb.append(" name and type: ").append(jc.stringValue(c2.cpx2, true)).append("\n");
2.19 + throw new IOException(sb.toString());
2.20 + /*
2.21 CPX2 nameAndType = jc.getCpoolEntry(c2.cpx2);
2.22 String type = jc.StringValue(nameAndType.cpx2);
2.23 String object = accessClass(mcn) + "(false)";
2.24 @@ -1106,6 +1110,7 @@
2.25 emit(smapper, this, "throw 'Invoke dynamic: ' + @1 + ': ' + metHan;", "" + indx);
2.26 i += 4;
2.27 break;
2.28 + */
2.29 }
2.30 case opc_new: {
2.31 int indx = readUShortArg(byteCodes, i);