# HG changeset patch # User Jaroslav Tulach # Date 1410617502 -7200 # Node ID 3238bffeaf12df5a3d046a7f5c5f239aeceac940 # Parent 17f95ced156b3843103923f533ff9b2e76e6dbd8 Call RetroLambda during AOT compilation diff -r 17f95ced156b -r 3238bffeaf12 rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/Bck2BrwsrJars.java --- a/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/Bck2BrwsrJars.java Sat Sep 13 15:41:35 2014 +0200 +++ b/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/Bck2BrwsrJars.java Sat Sep 13 16:11:42 2014 +0200 @@ -18,6 +18,7 @@ package org.apidesign.bck2brwsr.aot; import java.io.BufferedReader; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -199,6 +200,11 @@ @Override public InputStream get(String name) throws IOException { + byte[] arr = converted.get(name); + if (arr != null) { + return new ByteArrayInputStream(arr); + } + Enumeration en = Bck2BrwsrJars.class.getClassLoader().getResources(name); URL u = null; while (en.hasMoreElements()) { @@ -227,7 +233,7 @@ if (res.equals(n)) { found = true; } - assert res.endsWith(".class"); + assert res.endsWith(".class") : "Wrong resource: " + res; converted.put(res, bytes); classes.add(res.substring(0, res.length() - 6)); } diff -r 17f95ced156b -r 3238bffeaf12 rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/RetroLambda.java --- a/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/RetroLambda.java Sat Sep 13 15:41:35 2014 +0200 +++ b/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/RetroLambda.java Sat Sep 13 16:11:42 2014 +0200 @@ -47,9 +47,8 @@ public void saveIfLambda(String className, byte[] bytecode) { if (LambdaReifier.isLambdaClassToReify(className)) { try { - System.out.println("Saving lambda class: " + className); byte[] backportedBytecode = LambdaClassBackporter.transform(bytecode, Opcodes.V1_7); - putBytecode(className, backportedBytecode); + putBytecode(className + ".class", backportedBytecode); } catch (Throwable t) { // print to stdout to keep in sync with other log output throw new IllegalStateException("ERROR: Failed to backport lambda class: " + className); @@ -58,6 +57,7 @@ } private void putBytecode(String className, byte[] backportedBytecode) { + assert className.endsWith(".class") : "Full resource: " + className; if (converted == null) { converted = new HashMap<>(); } @@ -84,6 +84,8 @@ if (!Arrays.equals(newB, byteCode)) { putBytecode(className, newB); } + } catch (Throwable t) { + t.printStackTrace(); } finally { Thread.currentThread().setContextClassLoader(prev); } @@ -106,6 +108,9 @@ if (c != null) { return c; } + if (name.startsWith("java.")) { + return super.loadClass(name); + } String r = name.replace('.', '/') + ".class"; try (InputStream is = res.get(r)) { if (is == null) { diff -r 17f95ced156b -r 3238bffeaf12 rt/vm8/pom.xml --- a/rt/vm8/pom.xml Sat Sep 13 15:41:35 2014 +0200 +++ b/rt/vm8/pom.xml Sat Sep 13 16:11:42 2014 +0200 @@ -29,21 +29,6 @@ - - net.orfjackal.retrolambda - retrolambda-maven-plugin - 1.5.0 - - - - process-test - - - - - 1.8 - -