/hg/icedtea7-forest/hotspot: 18 new changesets

andrew at icedtea.classpath.org andrew at icedtea.classpath.org
Wed Jul 15 02:30:13 UTC 2015


changeset 9e94f25de4df in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=9e94f25de4df
author: andrew
date: Wed Jul 15 03:21:48 2015 +0100

	Added tag icedtea-2.6.0 for changeset 94f15794d5e7


changeset b2789e8600f3 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=b2789e8600f3
author: sgehwolf
date: Fri Apr 03 17:22:23 2015 +0100

	8074312: Enable hotspot builds on 4.x Linux kernels
	Summary: Add "4" to list of allowable versions
	Reviewed-by: dholmes, mikael


changeset d40349452eba in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=d40349452eba
author: sgehwolf
date: Wed Apr 29 12:23:48 2015 -0700

	8078666: JVM fastdebug build compiled with GCC 5 asserts with "widen increases"
	Summary: do the math on the unsigned type where overflows are well defined
	Reviewed-by: kvn, aph


changeset 5d0a13adec23 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=5d0a13adec23
author: mgerdin
date: Thu Jun 26 13:20:18 2014 +0200

	8048214: Linker error when compiling G1SATBCardTableModRefBS after include order changes
	Reviewed-by: stefank, brutisso, tschatzl


changeset e22137065c4c in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=e22137065c4c
author: andrew
date: Fri Jul 03 16:46:09 2015 +0100

	8068674: Increment minor version of HSx for 7u85 and initialize the build number
	Reviewed-by: omajid


changeset f826faea93e0 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=f826faea93e0
author: roland
date: Fri Jul 03 21:30:02 2015 +0100

	8071731: Better scaling for C1
	Reviewed-by: kvn, iveresov


changeset ecdd49fa23ad in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=ecdd49fa23ad
author: andrew
date: Fri Jul 03 23:53:28 2015 +0100

	8014464: Update jcheck for OpenJDK 7
	Reviewed-by: omajid


changeset 1540efbc285f in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=1540efbc285f
author: andrew
date: Fri Jul 03 23:56:44 2015 +0100

	OPENJDK7-01: Allow OpenJDK to build on PaX-enabled kernels
	Reviewed-by: omajid


changeset ec765d295b79 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=ec765d295b79
author: vlivanov
date: Mon Jul 06 19:41:23 2015 +0100

	8075838: Method for typing MethodTypes
	Reviewed-by: jrose, ahgross, alanb, bmoloden


changeset 4ccd7e1e3b39 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=4ccd7e1e3b39
author: andrew
date: Mon Jul 06 22:10:18 2015 +0100

	8078529: Increment the build value to b02 for hs24.85 in 8u85
	Reviewed-by: omajid


changeset 5a042459ed89 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=5a042459ed89
author: andrew
date: Mon Jul 06 22:25:26 2015 +0100

	8081622: Increment the build value to b03 for hs24.85 in 8u51
	Reviewed-by: omajid


changeset 501fc984fa3b in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=501fc984fa3b
author: andrew
date: Tue Jul 07 14:29:19 2015 +0100

	OPENJDK7-03: Only apply PaX-marking when needed by a running PaX kernel
	Reviewed-by: omajid


changeset 3f1b4a1fe4a2 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=3f1b4a1fe4a2
author: andrew
date: Wed Jul 08 21:51:29 2015 +0100

	Added tag jdk7u85-b00 for changeset 501fc984fa3b


changeset 586687e818bd in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=586687e818bd
author: andrew
date: Thu Jul 09 02:11:56 2015 +0100

	Merge jdk7u85-b00


changeset 2eba2e8c4f99 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=2eba2e8c4f99
author: andrew
date: Thu Jul 09 02:31:11 2015 +0100

	PR2502: Remove -fno-tree-vectorize workaround now http://gcc.gnu.org/PR63341 is fixed


changeset ea73c670f3ce in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=ea73c670f3ce
author: andrew
date: Sat Jul 11 16:20:23 2015 +0100

	Added tag jdk7u85-b01 for changeset 3f1b4a1fe4a2


changeset fdf2c26ea61a in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=fdf2c26ea61a
author: andrew
date: Sat Jul 11 16:28:14 2015 +0100

	Merge jdk7u85-b01


changeset f5cfe6987002 in /hg/icedtea7-forest/hotspot
details: http://icedtea.classpath.org/hg/icedtea7-forest/hotspot?cmd=changeset;node=f5cfe6987002
author: andrew
date: Wed Jul 15 03:27:01 2015 +0100

	Merge


diffstat:

 .hgtags                                     |   3 +
 make/hotspot_version                        |   4 +-
 make/linux/makefiles/buildtree.make         |   4 +-
 make/linux/makefiles/gcc.make               |   3 +
 src/share/vm/c1/c1_LIRGenerator.cpp         |  10 +++++-
 src/share/vm/classfile/systemDictionary.cpp |  50 +++++++++++++++++++---------
 6 files changed, 53 insertions(+), 21 deletions(-)

diffs (172 lines):

diff -r 608555fa5c4d -r f5cfe6987002 .hgtags
--- a/.hgtags	Wed Jul 08 13:17:30 2015 +0100
+++ b/.hgtags	Wed Jul 15 03:27:01 2015 +0100
@@ -871,3 +871,6 @@
 198c700d102cc2051b304fc382ac58c5d76e8d26 jdk7u80-b32
 1afefe2d5f90112e87034a4eac57fdad53fe5b9f icedtea-2.6pre23
 94f15794d5e7847a60540eacbe3e276dbe127a1a icedtea-2.6pre24
+94f15794d5e7847a60540eacbe3e276dbe127a1a icedtea-2.6.0
+501fc984fa3b3d51e1a7f1220f2de635a2b370b9 jdk7u85-b00
+3f1b4a1fe4a274cd1f89d9ec83d8018f7f4b7d01 jdk7u85-b01
diff -r 608555fa5c4d -r f5cfe6987002 make/hotspot_version
--- a/make/hotspot_version	Wed Jul 08 13:17:30 2015 +0100
+++ b/make/hotspot_version	Wed Jul 15 03:27:01 2015 +0100
@@ -34,8 +34,8 @@
 HOTSPOT_VM_COPYRIGHT=Copyright 2015
 
 HS_MAJOR_VER=24
-HS_MINOR_VER=80
-HS_BUILD_NUMBER=11
+HS_MINOR_VER=85
+HS_BUILD_NUMBER=03
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
diff -r 608555fa5c4d -r f5cfe6987002 make/linux/makefiles/buildtree.make
--- a/make/linux/makefiles/buildtree.make	Wed Jul 08 13:17:30 2015 +0100
+++ b/make/linux/makefiles/buildtree.make	Wed Jul 15 03:27:01 2015 +0100
@@ -478,7 +478,9 @@
 	echo "fi"; \
 	echo ""; \
 	echo "if [ -x \"$(PAX_COMMAND)\" ]; then "; \
-	echo "  $(PAX_COMMAND) $(PAX_COMMAND_ARGS) ./\$${GAMMA_PROG}"; \
+	echo "  if cat /proc/self/status | grep '^PaX' > /dev/null ; then "; \
+	echo "    $(PAX_COMMAND) $(PAX_COMMAND_ARGS) ./\$${GAMMA_PROG}"; \
+	echo "  fi"; \
 	echo "fi"; \
 	echo ""; \
 	echo "if [ \"$(OS_VENDOR)\" = \"Darwin\" ]; then "; \
diff -r 608555fa5c4d -r f5cfe6987002 make/linux/makefiles/gcc.make
--- a/make/linux/makefiles/gcc.make	Wed Jul 08 13:17:30 2015 +0100
+++ b/make/linux/makefiles/gcc.make	Wed Jul 15 03:27:01 2015 +0100
@@ -108,6 +108,8 @@
 endif
 ARCHFLAG/ppc64   =  -m64
 # gcc bug http://gcc.gnu.org/PR63341 in ppc code generation requires -fno-tree-vectorize for now
+# Fixed in GCC 5 and later
+ifeq "$(shell expr \( $(CC_VER_MAJOR) \< 5 \) )" "1"
 ARCHFLAG/ppc     += -fno-tree-vectorize
 ARCHFLAG/ppc64   += -fno-tree-vectorize
 ifeq ($(TYPE),ZERO)
@@ -121,6 +123,7 @@
     ARCHFLAG/zero += -fno-tree-vectorize
   endif
 endif
+endif
 
 CFLAGS     += $(ARCHFLAG)
 AOUT_FLAGS += $(ARCHFLAG)
diff -r 608555fa5c4d -r f5cfe6987002 src/share/vm/c1/c1_LIRGenerator.cpp
--- a/src/share/vm/c1/c1_LIRGenerator.cpp	Wed Jul 08 13:17:30 2015 +0100
+++ b/src/share/vm/c1/c1_LIRGenerator.cpp	Wed Jul 15 03:27:01 2015 +0100
@@ -2154,7 +2154,15 @@
 #ifdef _LP64
     }
 #endif
-    __ shift_left(index_op, log2_scale, index_op);
+    LIR_Opr tmp = new_pointer_register();
+    if (TwoOperandLIRForm) {
+      __ move(index_op, tmp);
+      index_op = tmp;
+    }
+    __ shift_left(index_op, log2_scale, tmp);
+    if (!TwoOperandLIRForm) {
+      index_op = tmp;
+    }
   }
 #ifdef _LP64
   else if(!index_op->is_illegal() && index_op->type() == T_INT) {
diff -r 608555fa5c4d -r f5cfe6987002 src/share/vm/classfile/systemDictionary.cpp
--- a/src/share/vm/classfile/systemDictionary.cpp	Wed Jul 08 13:17:30 2015 +0100
+++ b/src/share/vm/classfile/systemDictionary.cpp	Wed Jul 15 03:27:01 2015 +0100
@@ -2305,9 +2305,6 @@
   assert(!THREAD->is_Compiler_thread(), "");
   Handle method_type =
     SystemDictionary::find_method_handle_type(signature, accessing_klass, CHECK_(empty));
-  if (false) {  // FIXME: Decide if the Java upcall should resolve signatures.
-    method_type = java_lang_String::create_from_symbol(signature, CHECK_(empty));
-  }
 
   KlassHandle  mh_klass = SystemDictionaryHandles::MethodHandle_klass();
   int ref_kind = JVM_REF_invokeVirtual;
@@ -2339,6 +2336,24 @@
   return unpack_method_and_appendix(mname, appendix_box, appendix_result, THREAD);
 }
 
+// Decide if we can globally cache a lookup of this class, to be returned to any client that asks.
+// We must ensure that all class loaders everywhere will reach this class, for any client.
+// This is a safe bet for public classes in java.lang, such as Object and String.
+// We also include public classes in java.lang.invoke, because they appear frequently in system-level method types.
+// Out of an abundance of caution, we do not include any other classes, not even for packages like java.util.
+static bool is_always_visible_class(oop mirror) {
+  klassOop klass = java_lang_Class::as_klassOop(mirror);
+  if (Klass::cast(klass)->oop_is_objArray()) {
+    klass = objArrayKlass::cast(klass)->bottom_klass(); // check element type
+  }
+  if (Klass::cast(klass)->oop_is_typeArray()) {
+    return true; // primitive array
+  }
+  assert(Klass::cast(klass)->oop_is_instance(), Klass::cast(klass)->external_name());
+  return Klass::cast(klass)->is_public() &&
+         (instanceKlass::cast(klass)->is_same_class_package(SystemDictionary::Object_klass()) ||       // java.lang
+          instanceKlass::cast(klass)->is_same_class_package(SystemDictionary::MethodHandle_klass()));  // java.lang.invoke
+}
 
 // Ask Java code to find or construct a java.lang.invoke.MethodType for the given
 // signature, as interpreted relative to the given class loader.
@@ -2361,32 +2376,33 @@
   }
 
   Handle class_loader, protection_domain;
-  bool is_on_bcp = true;  // keep this true as long as we can materialize from the boot classloader
+  if (accessing_klass.not_null()) {
+    class_loader      = Handle(THREAD, instanceKlass::cast(accessing_klass())->class_loader());
+    protection_domain = Handle(THREAD, instanceKlass::cast(accessing_klass())->protection_domain());
+  }
+  bool can_be_cached = true;
   int npts = ArgumentCount(signature).size();
   objArrayHandle pts = oopFactory::new_objArray(SystemDictionary::Class_klass(), npts, CHECK_(empty));
   int arg = 0;
-  Handle rt;                            // the return type from the signature
+  Handle rt; // the return type from the signature
   ResourceMark rm(THREAD);
   for (SignatureStream ss(signature); !ss.is_done(); ss.next()) {
     oop mirror = NULL;
-    if (is_on_bcp) {
-      // Note:  class_loader & protection_domain are both null at this point.
-      mirror = ss.as_java_mirror(class_loader, protection_domain,
+    if (can_be_cached) {
+      // Use neutral class loader to lookup candidate classes to be placed in the cache.
+      mirror = ss.as_java_mirror(Handle(), Handle(),
                                  SignatureStream::ReturnNull, CHECK_(empty));
-      if (mirror == NULL) {
-        // fall back from BCP to accessing_klass
-        if (accessing_klass.not_null()) {
-          class_loader      = Handle(THREAD, instanceKlass::cast(accessing_klass())->class_loader());
-          protection_domain = Handle(THREAD, instanceKlass::cast(accessing_klass())->protection_domain());
-        }
-        is_on_bcp = false;
+      if (mirror == NULL || (ss.is_object() && !is_always_visible_class(mirror))) {
+        // Fall back to accessing_klass context.
+        can_be_cached = false;
       }
     }
-    if (!is_on_bcp) {
+    if (!can_be_cached) {
       // Resolve, throwing a real error if it doesn't work.
       mirror = ss.as_java_mirror(class_loader, protection_domain,
                                  SignatureStream::NCDFError, CHECK_(empty));
     }
+    assert(!oopDesc::is_null(mirror), ss.as_symbol(THREAD)->as_C_string());
     if (ss.at_return_type())
       rt = Handle(THREAD, mirror);
     else
@@ -2418,7 +2434,7 @@
                          &args, CHECK_(empty));
   Handle method_type(THREAD, (oop) result.get_jobject());
 
-  if (is_on_bcp) {
+  if (can_be_cached) {
     // We can cache this MethodType inside the JVM.
     MutexLocker ml(SystemDictionary_lock, THREAD);
     spe = invoke_method_table()->find_entry(index, hash, signature, null_iid);


More information about the distro-pkg-dev mailing list