corda/src
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
..
android fix SSL stack and Android JAR resource loading 2014-08-22 07:20:19 -06:00
avian support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
codegen fix GCC 5.1 compiler warnings/errors 2015-06-23 14:07:48 -06:00
heap fix GC crash for bootimage builds 2015-07-07 17:28:32 -06:00
lzma fix clang "always true" warning in lzma/main.cpp 2014-08-11 08:40:08 -06:00
openjdk update copyright years 2015-03-13 12:52:59 -06:00
system support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
tools support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
util update copyright years 2015-03-13 12:52:59 -06:00
arm64.S update copyright years 2015-03-13 12:52:59 -06:00
arm.masm update copyright years 2015-03-13 12:52:59 -06:00
arm.S update copyright years 2015-03-13 12:52:59 -06:00
boot-javahome.cpp use size_t instead of unsigned in a bunch of appropriate places 2015-03-16 16:28:20 -06:00
boot.cpp use size_t instead of unsigned in a bunch of appropriate places 2015-03-16 16:28:20 -06:00
bootimage-fields.cpp first pass at minimal invokedynamic support for Java 8 lambdas 2015-08-06 13:30:05 -06:00
bootimage-template.cpp fix GCC 5.1 compiler warnings/errors 2015-06-23 14:07:48 -06:00
builtin.cpp support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
classpath-android.cpp llabs call fixed 2015-06-24 17:49:56 +03:00
classpath-avian.cpp update copyright years 2015-03-13 12:52:59 -06:00
classpath-openjdk.cpp add support for openjdk=$JDK8_HOME 2015-08-06 13:30:18 -06:00
CMakeLists.txt add initial cmake script (only builds parts of the code) 2014-07-24 09:36:40 -06:00
compile-arm64.S update copyright years 2015-03-13 12:52:59 -06:00
compile-arm.masm update copyright years 2015-03-13 12:52:59 -06:00
compile-arm.S update copyright years 2015-03-13 12:52:59 -06:00
compile-i386.masm update copyright years 2015-03-13 12:52:59 -06:00
compile-i386.S update copyright years 2015-03-13 12:52:59 -06:00
compile-x86_64.S update copyright years 2015-03-13 12:52:59 -06:00
compile.cpp support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
continuations-x86.S update copyright years 2015-03-13 12:52:59 -06:00
debug-util.cpp touch up type safety in types.def 2014-07-11 13:25:20 -06:00
debug-util.h add debug-util for printing java bytecode as it's compiled 2014-05-30 23:40:21 -06:00
embed.cpp update copyright years 2015-03-13 12:52:59 -06:00
embedded-loader.cpp update copyright years 2015-03-13 12:52:59 -06:00
finder.cpp use size_t instead of unsigned in a bunch of appropriate places 2015-03-16 16:28:20 -06:00
heapdump.cpp update copyright years 2015-03-13 12:52:59 -06:00
heapwalk.cpp update copyright years 2015-03-13 12:52:59 -06:00
i386.masm update copyright years 2015-03-13 12:52:59 -06:00
i386.S update copyright years 2015-03-13 12:52:59 -06:00
interpret.cpp support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
jnienv.cpp support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
lzma-decode.cpp use size_t instead of unsigned in a bunch of appropriate places 2015-03-16 16:28:20 -06:00
lzma-encode.cpp fix unsigned->size_t build regression 2015-05-04 09:59:49 -06:00
machine.cpp support AOT-compilation of Java 8 lambda expressions 2015-09-13 14:21:24 -06:00
main.cpp use size_t instead of unsigned in a bunch of appropriate places 2015-03-16 16:28:20 -06:00
powerpc-regs.S enable Linux PowerPC build 2011-02-26 12:45:22 -07:00
process.cpp update copyright years 2015-03-13 12:52:59 -06:00
thunks.cpp add util.cpp/.h changes 2014-07-11 13:25:19 -06:00
types.def implement basic Java 8 lambda support 2015-08-06 13:30:18 -06:00
util.cpp update copyright years 2015-03-13 12:52:59 -06:00
x86_64.S update copyright years 2015-03-13 12:52:59 -06:00