corda/classpath/avian
Joel Dice d5a5b5309a support AOT-compilation of Java 8 lambda expressions
These expressions are tricky because they rely on invokedynamic, which
normally implies runtime code generation.  However, since lambdas
don't actually use the "dynamicness" of invokedynamic, we can convert
them into static calls to synthetic classes at compile time.

Since I had already written code to synthesize such classes in Java
and I didn't want to rewrite it in C++, I needed to add support for
running Java code to the bootimage generator.  And since the primary
VM used by the generator is purpose-built to generate AOT-compiled
code for a specific target architecture and is not capable of
generating or running JIT-compiled code for the host architecture, I
added support for loading a second, independent, host-specific VM for
running Java code.

The rest of the patch handles the fact that each method compilation
might cause new, synthetic classes to be created, so we need to make
sure those classes and their methods are included in the final heap
and code images.  This required breaking some giant code blocks out of
makeCodeImage into their own methods, which makes the diff look
scarier than it really is.
2015-09-13 14:21:24 -06:00
..
avianvmresource update copyright years 2015-03-13 12:52:59 -06:00
file update copyright years 2015-03-13 12:52:59 -06:00
http update copyright years 2015-03-13 12:52:59 -06:00
jar update copyright years 2015-03-13 12:52:59 -06:00
Addendum.java update copyright years 2015-03-13 12:52:59 -06:00
AnnotationInvocationHandler.java update copyright years 2015-03-13 12:52:59 -06:00
Assembler.java implement basic Java 8 lambda support 2015-08-06 13:30:18 -06:00
Atomic.java update copyright years 2015-03-13 12:52:59 -06:00
Callback.java update copyright years 2015-03-13 12:52:59 -06:00
Cell.java update copyright years 2015-03-13 12:52:59 -06:00
ClassAddendum.java implement basic Java 8 lambda support 2015-08-06 13:30:18 -06:00
Classes.java support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
Code.java statically type Addendum.pool better 2014-07-11 13:25:19 -06:00
ConstantPool.java update copyright years 2015-03-13 12:52:59 -06:00
Continuations.java update copyright years 2015-03-13 12:52:59 -06:00
Data.java update copyright years 2015-03-13 12:52:59 -06:00
FieldAddendum.java update copyright years 2015-03-13 12:52:59 -06:00
FormatString.java Added java.util.Formatter implementation. Basic/common formats work, 2015-03-17 01:08:07 -04:00
Function.java update copyright years 2015-03-13 12:52:59 -06:00
IncompatibleContinuationException.java update copyright years 2015-03-13 12:52:59 -06:00
InnerClassReference.java update copyright years 2015-03-13 12:52:59 -06:00
Iso88591.java update copyright years 2015-03-13 12:52:59 -06:00
LegacyObjectInputStream.java update copyright years 2015-03-13 12:52:59 -06:00
LegacyObjectOutputStream.java update copyright years 2015-03-13 12:52:59 -06:00
Machine.java update copyright years 2015-03-13 12:52:59 -06:00
MethodAddendum.java update copyright years 2015-03-13 12:52:59 -06:00
Pair.java fix all the bugs 2014-07-12 16:57:24 -06:00
PersistentSet.java update copyright years 2015-03-13 12:52:59 -06:00
Singleton.java update copyright years 2015-03-13 12:52:59 -06:00
Stream.java update copyright years 2015-03-13 12:52:59 -06:00
SystemClassLoader.java support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
Traces.java update copyright years 2015-03-13 12:52:59 -06:00
Utf8.java update copyright years 2015-03-13 12:52:59 -06:00
VMClass.java update copyright years 2015-03-13 12:52:59 -06:00
VMField.java update copyright years 2015-03-13 12:52:59 -06:00
VMMethod.java update copyright years 2015-03-13 12:52:59 -06:00