# HG changeset patch # User Jaroslav Tulach # Date 1456981386 -3600 # Node ID fe13a2b0fd243af2dc6f155a525bfc62f62b3a17 # Parent b5442b691abc99820909e1d72ed6a3c8ff15f2ab Switching to most recent version of retrolamda: 2.1.0 diff -r b5442b691abc -r fe13a2b0fd24 rt/aot/pom.xml --- a/rt/aot/pom.xml Sat Jan 30 20:45:41 2016 +0100 +++ b/rt/aot/pom.xml Thu Mar 03 06:03:06 2016 +0100 @@ -30,7 +30,7 @@ net.orfjackal.retrolambda retrolambda - 1.6.1 + 2.1.0 jar diff -r b5442b691abc -r fe13a2b0fd24 rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/RetroLambda.java --- a/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/RetroLambda.java Sat Jan 30 20:45:41 2016 +0100 +++ b/rt/aot/src/main/java/org/apidesign/bck2brwsr/aot/RetroLambda.java Thu Mar 03 06:03:06 2016 +0100 @@ -19,15 +19,17 @@ import java.io.IOException; import java.io.InputStream; +import java.nio.file.Path; import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import net.orfjackal.retrolambda.LambdaClassBackporter; -import net.orfjackal.retrolambda.LambdaClassDumper; -import net.orfjackal.retrolambda.LambdaClassSaver; -import net.orfjackal.retrolambda.LambdaReifier; -import net.orfjackal.retrolambda.LambdaUsageBackporter; +import net.orfjackal.retrolambda.Transformers; +import net.orfjackal.retrolambda.asm.ClassReader; import net.orfjackal.retrolambda.asm.Opcodes; +import net.orfjackal.retrolambda.files.OutputDirectory; +import net.orfjackal.retrolambda.interfaces.ClassHierarchyAnalyzer; +import net.orfjackal.retrolambda.lambdas.LambdaClassDumper; +import net.orfjackal.retrolambda.lambdas.LambdaClassSaver; import org.apidesign.bck2brwsr.core.ExtraJavaScript; import org.apidesign.vm4brwsr.Bck2Brwsr; @@ -36,24 +38,30 @@ * @author Jaroslav Tulach */ @ExtraJavaScript(processByteCode = false, resource="") -final class RetroLambda extends LambdaClassSaver implements BytecodeProcessor { +final class RetroLambda extends OutputDirectory implements BytecodeProcessor { private Map converted; + private final Transformers transformers; + private final LambdaClassSaver saver; public RetroLambda() { - super(null, Opcodes.V1_7); + super(null); + transformers = new Transformers(Opcodes.V1_7, false, new ClassHierarchyAnalyzer()); + saver = new LambdaClassSaver(this, transformers); } @Override - public void saveIfLambda(String className, byte[] bytecode) { - if (LambdaReifier.isLambdaClassToReify(className)) { - try { - byte[] backportedBytecode = LambdaClassBackporter.transform(bytecode, Opcodes.V1_7); - 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); - } + public void writeFile(Path relativePath, byte[] content) throws IOException { + throw new UnsupportedOperationException(); + } + + @Override + public void writeClass(byte[] bytecode) throws IOException { + if (bytecode == null) { + return; } + ClassReader cr = new ClassReader(bytecode); + String className = cr.getClassName(); + putBytecode(className + ".class", bytecode); } private void putBytecode(String className, byte[] backportedBytecode) { @@ -75,11 +83,11 @@ } ClassLoader prev = Thread.currentThread().getContextClassLoader(); - try (LambdaClassDumper dumper = new LambdaClassDumper(this)) { + try (LambdaClassDumper dumper = new LambdaClassDumper(saver)) { Thread.currentThread().setContextClassLoader(new ResLdr(resources)); dumper.install(); - byte[] newB = LambdaUsageBackporter.transform(byteCode, Opcodes.V1_7); + byte[] newB = transformers.backportClass(new ClassReader(byteCode)); if (!Arrays.equals(newB, byteCode)) { putBytecode(className, newB); }