changeset 2662:7fd913249ef5

PR2916: Update CACAO drop to use the latest from cacao-staging 2016-04-06 Andrew John Hughes <gnu_andrew@member.fsf.org> PR2916: Update CACAO drop to use the latest from cacao-staging * patches/cacao/pr2032.patch, * patches/cacao/pr2035-tempdir.patch, * patches/cacao/pr2349.patch, * patches/cacao/pr2776-cache_api.patch, * patches/cacao/pr2832-refactoring_error.patch, * patches/cacao/pr2908-missing_functions.patch, * patches/cacao/pr2910-8_support.patch: Removed as applied in new snapshot. * Makefile.am: (CACAO_VERSION): Bump to icedtea-3.0.0 changeset in gnu_andrew/cacao-staging repository. (CACAO_SHA256SUM): Likewise. (ICEDTEA_PATCHES): Remove patches applied upstream. (extract-cacao): Adapt to prefix of new snapshot. * NEWS: Updated.
author Andrew John Hughes <gnu_andrew@member.fsf.org>
date Thu, 07 Apr 2016 03:25:35 +0100
parents 83b5af0faf15
children 081a31fe1c39
files ChangeLog Makefile.am NEWS patches/cacao/pr2032.patch patches/cacao/pr2035-tempdir.patch patches/cacao/pr2349.patch patches/cacao/pr2776-cache_api.patch patches/cacao/pr2832-refactoring_error.patch patches/cacao/pr2908-missing_functions.patch patches/cacao/pr2910-8_support.patch
diffstat 10 files changed, 27 insertions(+), 676 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Apr 06 17:49:46 2016 +0100
+++ b/ChangeLog	Thu Apr 07 03:25:35 2016 +0100
@@ -1,3 +1,23 @@
+2016-04-06  Andrew John Hughes  <gnu_andrew@member.fsf.org>
+
+	PR2916: Update CACAO drop to use the latest
+	from cacao-staging
+	* patches/cacao/pr2032.patch,
+	* patches/cacao/pr2035-tempdir.patch,
+	* patches/cacao/pr2349.patch,
+	* patches/cacao/pr2776-cache_api.patch,
+	* patches/cacao/pr2832-refactoring_error.patch,
+	* patches/cacao/pr2908-missing_functions.patch,
+	* patches/cacao/pr2910-8_support.patch:
+	Removed as applied in new snapshot.
+	* Makefile.am:
+	(CACAO_VERSION): Bump to icedtea-3.0.0 changeset
+	in gnu_andrew/cacao-staging repository.
+	(CACAO_SHA256SUM): Likewise.
+	(ICEDTEA_PATCHES): Remove patches applied upstream.
+	(extract-cacao): Adapt to prefix of new snapshot.
+	* NEWS: Updated.
+
 2016-04-05  Andrew John Hughes  <gnu_andrew@member.fsf.org>
 
 	PR2910: Add rudimentary support for OpenJDK 8
--- a/Makefile.am	Wed Apr 06 17:49:46 2016 +0100
+++ b/Makefile.am	Thu Apr 07 03:25:35 2016 +0100
@@ -27,8 +27,10 @@
 
 DROP_URL = http://icedtea.classpath.org/download/drops
 
-CACAO_VERSION = c182f119eaad
-CACAO_SHA256SUM = bf48f6b725a4dc0c936f6770a67ab4074c3bb35352d5de727368350d32549808
+# Drop is a snapshot of the changeset specified by CACAO_VERSION taken
+# from the repository at https://bitbucket.org/gnu_andrew/cacao-staging
+CACAO_VERSION = 900db2220376
+CACAO_SHA256SUM = eccda2d8bdf6a60347d5479b42143209f19c3731ef93666a3d12185f759165d8
 CACAO_BASE_URL = $(DROP_URL)/cacao
 CACAO_SRC_ZIP = cacao-$(CACAO_VERSION).tar.xz
 CACAO_URL = $(CACAO_BASE_URL)/$(CACAO_SRC_ZIP)
@@ -345,14 +347,7 @@
 
 if BUILD_CACAO
 ICEDTEA_PATCHES += \
-	patches/cacao/launcher.patch \
-	patches/cacao/pr2032.patch \
-	patches/cacao/pr2035-tempdir.patch \
-	patches/cacao/pr2349.patch \
-	patches/cacao/pr2776-cache_api.patch \
-	patches/cacao/pr2832-refactoring_error.patch \
-	patches/cacao/pr2908-missing_functions.patch \
-	patches/cacao/pr2910-8_support.patch
+	patches/cacao/launcher.patch
 else
 if USING_CACAO
 ICEDTEA_PATCHES +=
@@ -1414,7 +1409,7 @@
 	then \
 	  mkdir cacao ; \
 	  $(TAR) xf $(CACAO_SRC_ZIP) -C cacao ; \
-	  dir=$$(basename cacao/cacao-*) ; \
+	  dir=$$(basename cacao/gnu*) ; \
 	  mv -v cacao/$$dir cacao/cacao ; \
 	  ln -s cacao cacao/$$dir ; \
 	fi
--- a/NEWS	Wed Apr 06 17:49:46 2016 +0100
+++ b/NEWS	Thu Apr 07 03:25:35 2016 +0100
@@ -213,6 +213,7 @@
   - PR2908: Add missing functions for CACAO OpenJDK JVM implementation
   - PR2909: Install CACAO in same way as JamVM
   - PR2910: Add rudimentary support for OpenJDK 8 class files to CACAO
+  - PR2916: Update CACAO drop to use the latest from cacao-staging
 
 New in release 2.6.3 (2015-11-13):
 
--- a/patches/cacao/pr2032.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-# HG changeset patch
-# User Xerxes RĂ„nby <xerxes@gudinna.com>
-# Date 1414362363 -3600
-# Node ID ec6bd33b3e927738d1353e6e639e76f74d55635f
-# Parent  ea3c9a40d975430d1e9dcb598bf25b4bd7aec4ca
-OpenJDK: Implement JVM_FindClassFromCaller
-
-8015256: Better class accessibility
-Summary: Improve protection domain check in forName()
-
-* contrib/mapfile-vers-product: Export said function.
-* src/native/vm/openjdk/jvm.cpp (JVM_FindClassFromCaller): Implement it.
-
-diff --git a/contrib/mapfile-vers-product b/contrib/mapfile-vers-product
---- cacao/cacao/contrib/mapfile-vers-product
-+++ cacao/cacao/contrib/mapfile-vers-product
-@@ -87,6 +87,7 @@
-                 JVM_Exit;
-                 JVM_FillInStackTrace;
-                 JVM_FindClassFromBootLoader;
-+                JVM_FindClassFromCaller;
-                 JVM_FindClassFromClass;
-                 JVM_FindClassFromClassLoader;
-                 JVM_FindLibraryEntry;
-diff --git a/src/native/vm/openjdk/jvm.cpp b/src/native/vm/openjdk/jvm.cpp
---- cacao/cacao/src/native/vm/openjdk/jvm.cpp
-+++ cacao/cacao/src/native/vm/openjdk/jvm.cpp
-@@ -655,6 +655,44 @@
- }
- 
- 
-+/* JVM_FindClassFromCaller
-+ * Find a class from a given class loader.  Throws ClassNotFoundException.
-+ *  name:   name of class
-+ *  init:   whether initialization is done
-+ *  loader: class loader to look up the class.
-+ *          This may not be the same as the caller's class loader.
-+ *  caller: initiating class. The initiating class may be null when a security
-+ *          manager is not installed.
-+ *
-+ * Find a class with this name in this loader,
-+ * using the caller's "protection domain".
-+ */
-+
-+jclass JVM_FindClassFromCaller(JNIEnv* env, const char* name, jboolean init, jobject loader, jclass caller)
-+{
-+        TRACEJVMCALLS(("JVM_FindClassFromCaller(name=%s, init=%d, loader=%p, caller=%p)", name, init, loader, caller));
-+
-+        Utf8String     u  = Utf8String::from_utf8(name);
-+        classloader_t *cl = loader_hashtable_classloader_add((java_handle_t *) loader);
-+
-+        /* XXX The caller's protection domain should be used during
-+           the load_class_from_classloader but there is no specification or
-+           unit-test in OpenJDK documenting the desired effect */
-+
-+        classinfo     *c  = load_class_from_classloader(u, cl);
-+
-+        if (c == NULL)
-+                return NULL;
-+
-+        if (init)
-+                if (!(c->state & CLASS_INITIALIZED))
-+                        if (!initialize_class(c))
-+                                return NULL;
-+
-+        return (jclass) LLNI_classinfo_wrap(c);
-+}
-+
-+
- /* JVM_FindClassFromClassLoader */
- 
- jclass JVM_FindClassFromClassLoader(JNIEnv* env, const char* name, jboolean init, jobject loader, jboolean throwError)
--- a/patches/cacao/pr2035-tempdir.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,45 +0,0 @@
-diff -r 73c53a02de5d contrib/mapfile-vers-product
---- cacao/cacao/contrib/mapfile-vers-product	Mon Jul 13 01:38:19 2015 +0100
-+++ cacao/cacao/contrib/mapfile-vers-product	Mon Jul 13 10:44:59 2015 +0100
-@@ -161,6 +161,7 @@
-                 JVM_GetStackTraceElement;
-                 JVM_GetSystemPackage;
-                 JVM_GetSystemPackages;
-+		JVM_GetTemporaryDirectory;
-                 JVM_GetThreadStateNames;
-                 JVM_GetThreadStateValues;
-                 JVM_GetVersionInfo;
-diff -r 73c53a02de5d src/native/vm/openjdk/jvm.cpp
---- cacao.orig/cacao/src/native/vm/openjdk/jvm.cpp	Mon Jul 13 01:38:19 2015 +0100
-+++ cacao/cacao/src/native/vm/openjdk/jvm.cpp	Mon Jul 13 10:21:20 2015 +0100
-@@ -3821,6 +3821,30 @@
- 	return -1;
- }
- 
-+/*
-+ * Return the temporary directory that the VM uses for the attach
-+ * and perf data files.
-+ *
-+ * It is important that this directory is well-known and the
-+ * same for all VM instances. It cannot be affected by configuration
-+ * variables such as java.io.tmpdir.
-+ */
-+jstring JVM_GetTemporaryDirectory(JNIEnv *env)
-+{
-+	TRACEJVMCALLS(("JVM_GetTemporaryDirectory(env=%p)", env));
-+
-+#if (defined(__LINUX__) || defined (__SOLARIS__) || \
-+	 defined(__FREEBSD__) || defined (__DARWIN__))
-+	// This must be hard coded because it's the system's temporary
-+	// directory not the java application's temp directory, ala java.io.tmpdir.
-+	return JavaString::from_utf8("/tmp");
-+#else
-+# error Not implemented for this OS.
-+#endif
-+
-+	return NULL;
-+}
-+	
- } // extern "C"
- 
- 
--- a/patches/cacao/pr2349.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,85 +0,0 @@
-diff -r c182f119eaad configure.ac
---- cacao/cacao/configure.ac	Fri Dec 12 22:14:45 2014 +0100
-+++ cacao/cacao/configure.ac	Thu May 14 03:34:48 2015 +0100
-@@ -678,7 +678,7 @@
-         AC_CHECK_WITH_HPI_H
-         AC_CHECK_WITH_JMM_H
-         ;;
--    openjdk7)
-+    openjdk7 | openjdk8 )
-         AC_CHECK_WITH_JVM_MD_H
-         AC_CHECK_WITH_JVM_H
-         AC_CHECK_WITH_JMM_H
-@@ -693,7 +693,7 @@
-     cldc1.1 | gnuclasspath)
-         AC_PROG_JAVAC
-         ;;
--    openjdk | openjdk7)
-+    openjdk | openjdk7 | openjdk8 )
-         ;;
-     *)
-         AC_MSG_ERROR(unknown classpath configuration ${WITH_JAVA_RUNTIME_LIBRARY})
-diff -r c182f119eaad m4/disable-test-dependency-checks.m4
---- cacao/cacao/m4/disable-test-dependency-checks.m4	Fri Dec 12 22:14:45 2014 +0100
-+++ cacao/cacao/m4/disable-test-dependency-checks.m4	Thu May 14 03:34:48 2015 +0100
-@@ -35,7 +35,7 @@
-                   cldc1.1 | gnuclasspath)
-                       disable_test_dependency_checks=no
-                       ;;
--                  openjdk | openjdk7)
-+                  openjdk | openjdk7 | openjdk8 )
-                       disable_test_dependency_checks=yes
-                       ;;
-                   *)
-diff -r c182f119eaad m4/java-runtime-library.m4
---- cacao/cacao/m4/java-runtime-library.m4	Fri Dec 12 22:14:45 2014 +0100
-+++ cacao/cacao/m4/java-runtime-library.m4	Thu May 14 03:34:48 2015 +0100
-@@ -26,7 +26,7 @@
- AC_DEFUN([AC_CHECK_WITH_JAVA_RUNTIME_LIBRARY],[
- AC_MSG_CHECKING(which Java runtime library to use)
- AC_ARG_WITH([java-runtime-library],
--            [AS_HELP_STRING(--with-java-runtime-library=<type>,specifies which type of classpath to use as Java runtime library (cldc1.1,gnuclasspath,openjdk,openjdk7) [[default=gnuclasspath]])],
-+            [AS_HELP_STRING(--with-java-runtime-library=<type>,specifies which type of classpath to use as Java runtime library (cldc1.1,gnuclasspath,openjdk,openjdk7,openjdk8) [[default=gnuclasspath]])],
-             [case "${withval}" in
-                 cldc1.1)
-                     WITH_JAVA_RUNTIME_LIBRARY=cldc1.1
-@@ -38,6 +38,15 @@
-                     AC_DEFINE([WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH], 1, [use GNU Classpath])
-                     AC_SUBST(WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH)
-                     ;;
-+                openjdk8)
-+                    WITH_JAVA_RUNTIME_LIBRARY=openjdk8
-+                    AC_DEFINE([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK], 1, [use OpenJDK's Java SE classes])
-+                    AC_DEFINE([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7], 1, [use OpenJDK's version 7])
-+                    AC_DEFINE([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_8], 1, [use OpenJDK's version 8])
-+                    AC_SUBST(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK)
-+                    AC_SUBST(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7)
-+                    AC_SUBST(WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_8)
-+                    ;;
-                 openjdk7)
-                     WITH_JAVA_RUNTIME_LIBRARY=openjdk7
-                     AC_DEFINE([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK], 1, [use OpenJDK's Java SE classes])
-@@ -60,8 +69,9 @@
- AC_MSG_RESULT(${WITH_JAVA_RUNTIME_LIBRARY})
- AM_CONDITIONAL([WITH_JAVA_RUNTIME_LIBRARY_CLDC1_1], test x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xcldc1.1")
- AM_CONDITIONAL([WITH_JAVA_RUNTIME_LIBRARY_GNU_CLASSPATH], test x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xgnuclasspath")
--AM_CONDITIONAL([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK], test x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk" -o x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk7")
-+AM_CONDITIONAL([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK], test x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk" -o x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk7" -o x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk8")
- AM_CONDITIONAL([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_7], test x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk7")
-+AM_CONDITIONAL([WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_8], test x"${WITH_JAVA_RUNTIME_LIBRARY}" = "xopenjdk8")
- ])
- 
- 
-diff -r c182f119eaad src/native/vm/openjdk/jvm.cpp
---- cacao/cacao/src/native/vm/openjdk/jvm.cpp	Fri Dec 12 22:14:45 2014 +0100
-+++ cacao/cacao/src/native/vm/openjdk/jvm.cpp	Thu May 14 03:34:48 2015 +0100
-@@ -3733,7 +3733,9 @@
- 	info->update_version = 0;
- 	info->special_update_version = 0;
- 	info->is_attach_supported = 0;
-+#ifndef WITH_JAVA_RUNTIME_LIBRARY_OPENJDK_8
- 	info->is_kernel_jvm = 0;
-+#endif
- }
- 
- 
--- a/patches/cacao/pr2776-cache_api.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
---- cacao/cacao/src/native/vm/openjdk/jvm.cpp.old	2016-04-01 04:20:21.912052101 +0100
-+++ cacao/cacao/src/native/vm/openjdk/jvm.cpp	2016-04-01 04:50:05.054102464 +0100
-@@ -3882,6 +3882,32 @@
- 
- 	return NULL;
- }
-+/* JVM_GetResourceLookupCacheURLs */
-+
-+jobjectArray JVM_GetResourceLookupCacheURLs(JNIEnv *env, jobject loader)
-+{
-+	TRACEJVMCALLS(("JVM_GetResourceLookupCacheURLs(env=%p, loader=%p)", env, loader));
-+
-+	return NULL; // tell OpenJDK 8 that the lookup cache API is unavailable
-+}
-+
-+/* JVM_GetResourceLookupCache */
-+
-+jintArray JVM_GetResourceLookupCache(JNIEnv *env, jobject loader, const char *resource_name)
-+{
-+	TRACEJVMCALLS(("JVM_GetResourceLookupCacheURLs(env=%p, loader=%p, resource_name=%s)", env, loader, resource_name));
-+
-+	return NULL; // tell OpenJDK 8 that the lookup cache API is unavailable
-+}
-+
-+/* JVM_GetResourceLookupCache */
-+
-+jboolean JVM_KnownToNotExist(JNIEnv *env, jobject loader, const char *classname)
-+{
-+	TRACEJVMCALLS(("JVM_GetResourceLookupCacheURLs(env=%p, loader=%p, classname=%s)", env, loader, classname));
-+
-+	return JNI_FALSE; // tell OpenJDK 8 we don't know whether it exists or not
-+}
- 	
- } // extern "C"
- 
---- cacao/cacao/contrib/mapfile-vers-product.old	2016-04-01 04:20:21.884052574 +0100
-+++ cacao/cacao/contrib/mapfile-vers-product	2016-04-01 04:38:09.502110743 +0100
-@@ -153,6 +153,8 @@
-                 JVM_GetMethodIxNameUTF;
-                 JVM_GetMethodIxSignatureUTF;
-                 JVM_GetMethodParameterAnnotations;
-+		JVM_GetResourceLookupCacheURLs;
-+		JVM_GetResourceLookupCache;
-                 JVM_GetPrimitiveArrayElement;
-                 JVM_GetProtectionDomain;
-                 JVM_GetSockName;
-@@ -186,6 +188,7 @@
-                 JVM_IsSilentCompiler;
-                 JVM_IsSupportedJNIVersion;
-                 JVM_IsThreadAlive;
-+		JVM_KnownToNotExist;
-                 JVM_LatestUserDefinedLoader;
-                 JVM_Listen;
-                 JVM_LoadClass0;
--- a/patches/cacao/pr2832-refactoring_error.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,107 +0,0 @@
-# HG changeset patch
-# User Stefan Ring <stefan@complang.tuwien.ac.at>
-# Date 1453933756 -3600
-# Node ID 4982d429274b9498ad2629ea4f28566ed69e4775
-# Parent  1cef439b53ee701662059ae50874d55c7b5302d7
-PR195: Fix some oversights during a large macro cleanup in 1e9787c3484e
-
-diff --git cacao/cacao/src/vm/jit/verify/typecheck-common.cpp cacao/cacao/src/vm/jit/verify/typecheck-common.cpp
---- cacao/cacao/src/vm/jit/verify/typecheck-common.cpp
-+++ cacao/cacao/src/vm/jit/verify/typecheck-common.cpp
-@@ -281,7 +281,7 @@
- 
- 		dv->type = sv->type;
- 		if (dv->type == TYPE_ADR) {
--			dv->typeinfo = sv->typeinfo;
-+			typeinfo_t::clone(sv->typeinfo, dv->typeinfo);
- 		}
- 	}
- 	return true;
-diff --git cacao/cacao/src/vm/jit/verify/typeinfo.cpp cacao/cacao/src/vm/jit/verify/typeinfo.cpp
---- cacao/cacao/src/vm/jit/verify/typeinfo.cpp
-+++ cacao/cacao/src/vm/jit/verify/typeinfo.cpp
-@@ -1674,6 +1674,7 @@
- 	classref_or_classinfo common;
- 	classref_or_classinfo elementclass;
- 	int dimension;
-+	ArrayType new_elementtype;
- 	bool changed;
- 	typecheck_result r;
- 
-@@ -1784,23 +1785,23 @@
-          * interpret it as an array (same dim. as x) of Arraystubs. */
-         if (x->dimension < src->dimension) {
-             dimension = x->dimension;
--            elementtype = ARRAYTYPE_OBJECT;
-+            new_elementtype = ARRAYTYPE_OBJECT;
-             elementclass.cls = pseudo_class_Arraystub;
-         }
-         else {
-             dimension    = src->dimension;
--            elementtype  = src->elementtype;
-+            new_elementtype = src->elementtype;
-             elementclass = src->elementclass;
-         }
-         
-         /* {The arrays are of the same dimension.} */
-         
--        if (x->elementtype != elementtype) {
-+        if (x->elementtype != new_elementtype) {
-             /* Different element types are merged, so the resulting array
-              * type has one accessible dimension less. */
-             if (--dimension == 0) {
-                 common.cls       = pseudo_class_Arraystub;
--                elementtype      = ARRAYTYPE_INT;
-+                new_elementtype = ARRAYTYPE_INT;
-                 elementclass.any = NULL;
-             }
-             else {
-@@ -1810,14 +1811,14 @@
- 					return typecheck_FAIL;
- 				}
- 
--                elementtype      = ARRAYTYPE_OBJECT;
-+                new_elementtype = ARRAYTYPE_OBJECT;
-                 elementclass.cls = pseudo_class_Arraystub;
-             }
-         }
-         else {
-             /* {The arrays have the same dimension and elementtype.} */
- 
--            if (elementtype == ARRAYTYPE_OBJECT) {
-+            if (new_elementtype == ARRAYTYPE_OBJECT) {
-                 /* The elements are references, so their respective
-                  * types must be merged.
-                  */
-@@ -1862,7 +1863,7 @@
- 		changed |= r;
- 
-         dimension        = 0;
--        elementtype      = ARRAYTYPE_INT;
-+        new_elementtype = ARRAYTYPE_INT;
-         elementclass.any = NULL;
-     }
- 
-@@ -1876,8 +1877,8 @@
-         this->dimension = dimension;
-         changed = true;
-     }
--    if (this->elementtype != elementtype) {
--        this->elementtype = elementtype;
-+    if (elementtype != new_elementtype) {
-+        elementtype = new_elementtype;
-         changed = true;
-     }
-     if (this->elementclass.any != elementclass.any) {
-diff --git cacao/cacao/src/vm/resolve.cpp cacao/cacao/src/vm/resolve.cpp
---- cacao/cacao/src/vm/resolve.cpp
-+++ cacao/cacao/src/vm/resolve.cpp
-@@ -703,7 +703,7 @@
- 
- 	/* uninitialized objects are illegal here */
- 
--	if (subtinfo->is_primitive()) {
-+	if (subtinfo->is_newobject()) {
- 		exceptions_throw_verifyerror(refmethod,
- 				"Invalid use of uninitialized object");
- 		return resolveFailed;
--- a/patches/cacao/pr2908-missing_functions.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-diff -Nru cacao.old/cacao/contrib/mapfile-vers-product cacao/cacao/contrib/mapfile-vers-product
---- cacao.old/cacao/contrib/mapfile-vers-product	2016-04-01 08:07:33.021538925 +0100
-+++ cacao/cacao/contrib/mapfile-vers-product	2016-04-01 08:08:19.576767011 +0100
-@@ -127,12 +127,14 @@
-                 JVM_GetClassNameUTF;
-                 JVM_GetClassSignature;
-                 JVM_GetClassSigners;
-+		JVM_GetClassTypeAnnotations;
-                 JVM_GetComponentType;
-                 JVM_GetDeclaredClasses;
-                 JVM_GetDeclaringClass;
-                 JVM_GetEnclosingMethodInfo;
-                 JVM_GetFieldAnnotations;
-                 JVM_GetFieldIxModifiers;
-+		JVM_GetFieldTypeAnnotations;
-                 JVM_GetHostName;
-                 JVM_GetInheritedAccessControlContext;
-                 JVM_GetInterfaceVersion;
-@@ -153,6 +155,8 @@
-                 JVM_GetMethodIxNameUTF;
-                 JVM_GetMethodIxSignatureUTF;
-                 JVM_GetMethodParameterAnnotations;
-+		JVM_GetMethodParameters;
-+		JVM_GetMethodTypeAnnotations;
- 		JVM_GetResourceLookupCacheURLs;
- 		JVM_GetResourceLookupCache;
-                 JVM_GetPrimitiveArrayElement;
-@@ -180,6 +184,7 @@
-                 JVM_InvokeMethod;
-                 JVM_IsArrayClass;
-                 JVM_IsConstructorIx;
-+		JVM_IsVMGeneratedMethodIx;
-                 JVM_IsInterface;
-                 JVM_IsInterrupted;
-                 JVM_IsNaN;
-diff -Nru cacao.old/cacao/src/native/vm/openjdk/jvm.cpp cacao/cacao/src/native/vm/openjdk/jvm.cpp
---- cacao.old/cacao/src/native/vm/openjdk/jvm.cpp	2016-04-01 08:07:21.685726880 +0100
-+++ cacao/cacao/src/native/vm/openjdk/jvm.cpp	2016-04-01 08:08:01.225071294 +0100
-@@ -1110,6 +1110,15 @@
- 	return (jbyteArray) annotations;
- }
- 
-+/* JVM_GetClassTypeAnnotations */
-+
-+jbyteArray JVM_GetClassTypeAnnotations(JNIEnv *env, jclass cls)
-+{
-+	TRACEJVMCALLS(("JVM_GetClassAnnotations(env=%p, cls=%p)", env, cls));
-+
-+	log_println("JVM_GetClassTypeAnnotations: IMPLEMENT ME!");
-+	return NULL;
-+}
- 
- /* JVM_GetFieldAnnotations */
- 
-@@ -1127,6 +1136,16 @@
- 	return (jbyteArray) jlrf.get_annotations();
- }
- 
-+/* JVM_GetFieldTypeAnnotations */
-+
-+jbyteArray JVM_GetFieldTypeAnnotations(JNIEnv *env, jobject field)
-+{
-+	TRACEJVMCALLS(("JVM_GetFieldTypeAnnotations(env=%p, field=%p)", env, field));
-+
-+	log_println("JVM_GetFieldTypeAnnotations: IMPLEMENT ME!");
-+	return NULL;
-+}
-+
- 
- /* JVM_GetMethodAnnotations */
- 
-@@ -1144,6 +1163,15 @@
- 	return (jbyteArray) jlrm.get_annotations();
- }
- 
-+/* JVM_GetMethodTypeAnnotations */
-+
-+jbyteArray JVM_GetMethodTypeAnnotations(JNIEnv *env, jobject method)
-+{
-+	TRACEJVMCALLS(("JVM_GetMethodTypeAnnotations(env=%p, method=%p)", env, method));
-+
-+	log_println("JVM_GetMethodTypeAnnotations: IMPLEMENT ME!");
-+	return NULL;
-+}
- 
- /* JVM_GetMethodDefaultAnnotationValue */
- 
-@@ -1178,6 +1206,14 @@
- 	return (jbyteArray) jlrm.get_parameterAnnotations();
- }
- 
-+/* JVM_GetMethodParameters */
-+
-+jbyteArray JVM_GetMethodParameters(JNIEnv *env, jobject method) {
-+	TRACEJVMCALLS(("JVM_GetMethodParameters(env=%p, method=%p)", env, method));
-+
-+	log_println("JVM_GetMethodParameters: IMPLEMENT ME!");
-+	return NULL;
-+}
- 
- /* JVM_GetClassDeclaredFields */
- 
-@@ -1864,6 +1900,14 @@
- 	return 0;
- }
- 
-+/* JVM_IsVMGeneratedMethodIx */
-+
-+jboolean JVM_IsVMGeneratedMethodIx(JNIEnv *env, jclass cls, int method_index)
-+{
-+    log_println("JVM_IsVMGeneratedMethodIx: IMPLEMENT ME!");
-+
-+    return 0;
-+}
- 
- /* JVM_GetMethodIxNameUTF */
- 
--- a/patches/cacao/pr2910-8_support.patch	Wed Apr 06 17:49:46 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-diff -r d38fca124cd9 src/vm/class.cpp
---- cacao.old/cacao/src/vm/class.cpp	Mon Jul 13 13:34:45 2015 +0100
-+++ cacao/cacao/src/vm/class.cpp	Wed Apr 06 01:47:19 2016 +0100
-@@ -673,17 +673,26 @@
- 
- void* class_getconstant(classinfo *c, u4 pos, ConstantPoolTag ctype)
- {
-+	return class_getconstant(c, pos, ctype, CONSTANT_UNUSED);
-+}
-+
-+void* class_getconstant(classinfo *c, u4 pos, ConstantPoolTag ctype, ConstantPoolTag ctype2)
-+{
- 	// check index and type of constantpool entry
- 	// (pos == 0 is caught by type comparison)
--
--	if ((((int32_t)pos) >= c->cpcount) || (c->cptags[pos] != ctype)) {
-+	bool typematch = (c->cptags[pos] == ctype || (ctype2 != CONSTANT_UNUSED && c->cptags[pos] == ctype2));
-+	if ((((int32_t)pos) >= c->cpcount) || !typematch) {
- 		// this is the slow path,
- 		// we can afford to repeat the separate checks for a better error message
- 
- 		if ((pos == 0) || (((int32_t)pos) >= c->cpcount)) {
- 			exceptions_throw_classformaterror(c, "Illegal constant pool index: %u", pos);
--		} else if (c->cptags[pos] != ctype) {
--			exceptions_throw_classformaterror(c, "Illegal constant pool type %u (expected %u)", ctype, c->cptags[pos]);
-+		} else if (!typematch) {
-+			if (ctype2 == CONSTANT_UNUSED)
-+				exceptions_throw_classformaterror(c, "Illegal constant pool type %u (expected %u)", c->cptags[pos], ctype);
-+			else
-+				exceptions_throw_classformaterror(c, "Illegal constant pool type %u (expected %u or %u)",
-+												  c->cptags[pos], ctype, ctype2);
- 		}
- 
- 		assert(exceptions_get_exception());
-diff -r d38fca124cd9 src/vm/class.hpp
---- cacao.old/cacao/src/vm/class.hpp	Mon Jul 13 13:34:45 2015 +0100
-+++ cacao/cacao/src/vm/class.hpp	Wed Apr 06 01:47:19 2016 +0100
-@@ -196,6 +196,7 @@
- 
- /* retrieve constantpool element */
- void* class_getconstant(classinfo *c, u4 pos, ConstantPoolTag ctype);
-+void* class_getconstant(classinfo *c, u4 pos, ConstantPoolTag ctype, ConstantPoolTag ctype2);
- void* innerclass_getconstant(classinfo *c, u4 pos, ConstantPoolTag ctype);
- 
- /* frees all resources used by the class */
-diff -r d38fca124cd9 src/vm/global.hpp
---- cacao.old/cacao/src/vm/global.hpp	Mon Jul 13 13:34:45 2015 +0100
-+++ cacao/cacao/src/vm/global.hpp	Wed Apr 06 01:47:19 2016 +0100
-@@ -142,13 +142,13 @@
- 
- /* some Java related defines **************************************************/
- 
--#define JAVA_VERSION    "1.6.0"         /* this version is supported by CACAO */
--#define CLASS_VERSION   "51.0"
-+#define JAVA_VERSION    "1.8.0"         /* this version is supported by CACAO */
-+#define CLASS_VERSION   "52.0"
- 
- /* Java class file constants **************************************************/
- 
- #define MAGIC             0xCAFEBABE
--#define MAJOR_VERSION     51
-+#define MAJOR_VERSION     52
- #define MINOR_VERSION     0
- 
- 
-diff -r d38fca124cd9 src/vm/loader.cpp
---- cacao.old/cacao/src/vm/loader.cpp	Mon Jul 13 13:34:45 2015 +0100
-+++ cacao/cacao/src/vm/loader.cpp	Wed Apr 06 01:47:19 2016 +0100
-@@ -126,6 +126,7 @@
- 
- const ClassFileVersion ClassFileVersion::CACAO_VERSION(MAJOR_VERSION, MINOR_VERSION);
- const ClassFileVersion ClassFileVersion::JDK_7(51, 0);
-+const ClassFileVersion ClassFileVersion::JDK_8(52, 0);
- 
- 
- /* loader_preinit **************************************************************
-@@ -1848,12 +1849,29 @@
- 			break;
- 
- 		case REF_invokeVirtual:
-+			fmi  = (constant_FMIref*) class_getconstant(c, it->reference_index, CONSTANT_Methodref);
-+
-+			if (!fmi)
-+				return false;
-+
-+			if (fmi->name == utf8::init || fmi->name == utf8::clinit) {
-+				exceptions_throw_classformaterror(c, "Illegal method handle");
-+				return false;
-+			}
-+			break;
-+			
- 		case REF_invokeStatic:
- 		case REF_invokeSpecial:
--			fmi  = (constant_FMIref*) class_getconstant(c, it->reference_index, CONSTANT_Methodref);
--
--			if (!fmi)
-+			if (c->version >= ClassFileVersion::JDK_8) {
-+				fmi  = (constant_FMIref*) class_getconstant(c, it->reference_index,
-+															CONSTANT_Methodref, CONSTANT_InterfaceMethodref);
-+			} else {
-+				fmi  = (constant_FMIref*) class_getconstant(c, it->reference_index, CONSTANT_Methodref);
-+			}
-+			
-+			if (!fmi) {
- 				return false;
-+			}
- 
- 			if (fmi->name == utf8::init || fmi->name == utf8::clinit) {
- 				exceptions_throw_classformaterror(c, "Illegal method handle");
-diff -r d38fca124cd9 src/vm/loader.hpp
---- cacao.old/cacao/src/vm/loader.hpp	Mon Jul 13 13:34:45 2015 +0100
-+++ cacao/cacao/src/vm/loader.hpp	Wed Apr 06 01:47:19 2016 +0100
-@@ -116,6 +116,10 @@
- 		 */
- 		static const ClassFileVersion JDK_7;
- 
-+		/**
-+		 * The class file format version used by JDK 8
-+		 */
-+		static const ClassFileVersion JDK_8;
- 
- 		ClassFileVersion(uint16_t major, uint16_t minor = 0) : _majr(major), _minr(minor) {}
- 
-@@ -141,6 +145,14 @@
- 			return (*this == v) || (*this < v);
- 		}
- 
-+		bool operator >(ClassFileVersion v) const {
-+			return !(*this <= v);
-+		}
-+
-+		bool operator >=(ClassFileVersion v) const {
-+			return (*this == v) || (*this > v);
-+		}
-+	   
- 		// we can't call these major/minor because GCC defines macros of that name
- 		uint16_t majr() const { return _majr; }
- 		uint16_t minr() const { return _minr; }
-diff -r d38fca124cd9 src/vm/method.cpp
---- cacao.old/cacao/src/vm/method.cpp	Mon Jul 13 13:34:45 2015 +0100
-+++ cacao/cacao/src/vm/method.cpp	Wed Apr 06 01:47:19 2016 +0100
-@@ -252,7 +252,7 @@
- 
- 			if (i != 0 && i != ACC_PUBLIC && i != ACC_PRIVATE && i != ACC_PROTECTED) {
- 				exceptions_throw_classformaterror(c,
--												  "Illegal method modifiers: 0x%X",
-+												  "Illegal method access modifiers: 0x%X",
- 												  m->flags);
- 				return false;
- 			}
-@@ -261,18 +261,28 @@
- 				if ((m->flags & (ACC_FINAL | ACC_NATIVE | ACC_PRIVATE |
- 								 ACC_STATIC | ACC_STRICT | ACC_SYNCHRONIZED))) {
- 					exceptions_throw_classformaterror(c,
--													  "Illegal method modifiers: 0x%X",
-+													  "Illegal abstract method modifiers: 0x%X",
- 													  m->flags);
- 					return false;
- 				}
- 			}
- 
- 			if (c->flags & ACC_INTERFACE) {
--				if ((m->flags & (ACC_ABSTRACT | ACC_PUBLIC)) != (ACC_ABSTRACT | ACC_PUBLIC)) {
--					exceptions_throw_classformaterror(c,
--													  "Illegal method modifiers: 0x%X",
--													  m->flags);
--					return false;
-+				if (c->version < ClassFileVersion::JDK_8) {
-+					if ((m->flags & (ACC_ABSTRACT | ACC_PUBLIC)) != (ACC_ABSTRACT | ACC_PUBLIC)) {
-+						exceptions_throw_classformaterror(c,
-+														  "Illegal interface method modifiers: 0x%X",
-+														  m->flags);
-+						return false;
-+					}
-+				} else {
-+					i = (m->flags & (ACC_PUBLIC | ACC_PRIVATE));
-+					if (i != ACC_PUBLIC && i != ACC_PRIVATE) {
-+						exceptions_throw_classformaterror(c,
-+														  "Illegal JDK 8 interface method modifiers: 0x%X",
-+														  m->flags);
-+						return false;
-+					}
- 				}
- 			}
-