changeset 455:434912c745cf

Merge
author iveresov
date Wed, 26 Nov 2008 09:24:57 -0800
parents a60eabc24e2c (diff) df4305d4c1a1 (current diff)
children b6272ef4a18f 27a80744a83b
files src/share/vm/runtime/globals.hpp
diffstat 6 files changed, 20 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Mon Nov 24 09:53:31 2008 -0800
+++ b/.hgtags	Wed Nov 26 09:24:57 2008 -0800
@@ -14,3 +14,4 @@
 9ee9cf798b59e7d51f8c0a686959f313867a55d6 jdk7-b37
 d9bc824aa078573829bb66572af847e26e1bd12e jdk7-b38
 49ca90d77f34571b0757ebfcb8a7848ef2696b88 jdk7-b39
+81a0cbe3b28460ce836109934ece03db7afaf9cc jdk7-b40
--- a/make/hotspot_version	Mon Nov 24 09:53:31 2008 -0800
+++ b/make/hotspot_version	Wed Nov 26 09:24:57 2008 -0800
@@ -35,7 +35,7 @@
 
 HS_MAJOR_VER=14
 HS_MINOR_VER=0
-HS_BUILD_NUMBER=07
+HS_BUILD_NUMBER=08
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/src/cpu/sparc/vm/templateTable_sparc.cpp	Mon Nov 24 09:53:31 2008 -0800
+++ b/src/cpu/sparc/vm/templateTable_sparc.cpp	Wed Nov 26 09:24:57 2008 -0800
@@ -2085,7 +2085,7 @@
     } else {
       if (has_tos) {
       // save object pointer before call_VM() clobbers it
-        __ mov(Otos_i, Lscratch);
+        __ push_ptr(Otos_i);  // put object on tos where GC wants it.
       } else {
         // Load top of stack (do not pop the value off the stack);
         __ ld_ptr(Lesp, Interpreter::expr_offset_in_bytes(0), Otos_i);
@@ -2097,7 +2097,7 @@
     __ call_VM(noreg, CAST_FROM_FN_PTR(address, InterpreterRuntime::post_field_access),
                Otos_i, Rcache);
     if (!is_static && has_tos) {
-      __ mov(Lscratch, Otos_i);  // restore object pointer
+      __ pop_ptr(Otos_i);  // restore object pointer
       __ verify_oop(Otos_i);
     }
     __ get_cache_and_index_at_bcp(Rcache, index, 1);
--- a/src/share/vm/runtime/arguments.cpp	Mon Nov 24 09:53:31 2008 -0800
+++ b/src/share/vm/runtime/arguments.cpp	Wed Nov 26 09:24:57 2008 -0800
@@ -2322,7 +2322,12 @@
       return JNI_ERR;
     }
   }
-
+  // Change the default value for flags  which have different default values
+  // when working with older JDKs.
+  if (JDK_Version::current().compare_major(6) <= 0 &&
+      FLAG_IS_DEFAULT(UseVMInterruptibleIO)) {
+    FLAG_SET_DEFAULT(UseVMInterruptibleIO, true);
+  }
   return JNI_OK;
 }
 
--- a/src/share/vm/runtime/biasedLocking.cpp	Mon Nov 24 09:53:31 2008 -0800
+++ b/src/share/vm/runtime/biasedLocking.cpp	Wed Nov 26 09:24:57 2008 -0800
@@ -582,13 +582,19 @@
   if (heuristics == HR_NOT_BIASED) {
     return NOT_BIASED;
   } else if (heuristics == HR_SINGLE_REVOKE) {
-    if (mark->biased_locker() == THREAD) {
+    Klass *k = Klass::cast(obj->klass());
+    markOop prototype_header = k->prototype_header();
+    if (mark->biased_locker() == THREAD &&
+        prototype_header->bias_epoch() == mark->bias_epoch()) {
       // A thread is trying to revoke the bias of an object biased
       // toward it, again likely due to an identity hash code
       // computation. We can again avoid a safepoint in this case
       // since we are only going to walk our own stack. There are no
       // races with revocations occurring in other threads because we
       // reach no safepoints in the revocation path.
+      // Also check the epoch because even if threads match, another thread
+      // can come in with a CAS to steal the bias of an object that has a
+      // stale epoch.
       ResourceMark rm;
       if (TraceBiasedLocking) {
         tty->print_cr("Revoking bias by walking my own stack:");
--- a/src/share/vm/runtime/globals.hpp	Mon Nov 24 09:53:31 2008 -0800
+++ b/src/share/vm/runtime/globals.hpp	Wed Nov 26 09:24:57 2008 -0800
@@ -3262,9 +3262,10 @@
   diagnostic(bool, PrintDTraceDOF, false,                                   \
              "Print the DTrace DOF passed to the system for JSDT probes")   \
                                                                             \
-  product(bool, UseVMInterruptibleIO, true,                                 \
+  product(bool, UseVMInterruptibleIO, false,                                \
           "(Unstable, Solaris-specific) Thread interrupt before or with "   \
-          "EINTR for I/O operations results in OS_INTRPT")
+          "EINTR for I/O operations results in OS_INTRPT. The default value"\
+          " of this flag is true for JDK 6 and earliers")
 
 
 /*