This is a bunch of commits squashed into one per Josh's request. add dynamicTable field add invokedynamic instruction add defaultDynamic bootimage field add dummy invokedynamic support in bootimage-generator add defaultDynamic thunk check dynamicTable offset comment defaultDynamicThunk to fix unused function comment defaultDynamicThunk to fix unused function add dynamicTable / dynamicIndex stuff comment dynamicIndex and dynamicTable add invokedynamic instruction impl stub out addDynamic unstub addDynamic don't allow tail calls in invokedynamic implement stub JVM_GetTemporaryDirectory method (build broken) begin add InvokeDynamicTest Revert "(build broken) begin add InvokeDynamicTest" This reverts commit 77f9c54. add InternalError add URLClassPath.c for openjdk-src builds implement stub JVM_KnownToNotExist and JVM_GetResourceLookupCache methods intercept open0 / open for openjdk add basic java/lang/invoke stubs remove non-public java/lang/invoke classes fix invokedynamic example building <wip debugging>
This is based on recent feedback on the Avian group. I've tested it using both OpenJDK 7u40 and 7u60.
As of the latest code from the jdk7u-dev Mercurial repository, java.lang.String no longer has offset or length fields. Instead, the content fits exactly into the backing char array, so offset is implicitly zero and length is the length of the array. The VM previously relied on those fields being present, whereas this commit handles the case where they are not. In addition, I've made some changes to openjdk-src.mk to ensure that we can build against both a stock OpenJDK 7 and an IcedTea-patched version.
Recent versions of Cygwin's GCC no longer support the -mno-cygwin flag (compilation works, but linking fails). However, Cygwin now includes mingw64-i686-gcc, mingw64-x86_64-gcc, and related packages, so we use those compilers instead. This has the added benefit that we can build native x86_64 binaries on Cygwin now. This will break the build for old Cygwin installs, so it will be necessary to upgrade Cygwin and install the aforementioned packages to build Avian going forward.
OpenJDK's compile.c and Avian's compile.cpp were both being compiled to compile.o, which led to a conflict when building libavian.a. We now append "-openjdk" to the object file name for OpenJDK code to avoid such conflicts.
…lasses This class is not present in the Windows build of OpenJDK 6u20.