changeset 4969:b59e02d9e72b icedtea-2.4.3

Merge jdk7u45-b31
author andrew
date Wed, 16 Oct 2013 15:17:08 +0100
parents 1c5a7e22a4d6 (current diff) 520b7b3d9153 (diff)
children 0505a797849f
files .hgtags make/hotspot_version make/windows/makefiles/sa.make src/share/vm/memory/allocation.hpp
diffstat 6 files changed, 83 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Sat Aug 24 00:14:46 2013 -0700
+++ b/.hgtags	Wed Oct 16 15:17:08 2013 +0100
@@ -484,6 +484,24 @@
 8386245b59c3e82b7c728b7d3832ea342c62615d jdk7u21-b50
 c5e4585a045fe165d067ec0e98af42eace20c5f8 jdk7u21-b12
 00dbf9fa12ec6b1ba15d9a9a12495f50e10837bf jdk7u21-b31
+bf2d84c5103d98db1697b50071a649ea23c4e33d jdk7u25-b01
+07119340f80f77dfcb03fa568641e80b43d4be74 jdk7u25-b02
+655bea6843fb7beabd8d9eeda59572c0c7055b85 jdk7u25-b03
+96a4e612195c0d753be24cf38fea0ee8ce30edcf jdk7u25-b04
+7151c26b838828a20cb28595ef1f70403d1868cf jdk7u25-b05
+fbb5f6083dd00ca7417e4a45311f33918bb2a5f0 jdk7u25-b06
+83abf4b2fc8a5bb7226177c5e4334bd0bfd7a8df jdk7u25-b07
+525252cd9fca4869c3fd81bc61299a85e73ff9c7 jdk7u25-b08
+706a255a8404b7e41579cea278df6bb87c314567 jdk7u25-b09
+402184622f60a2ba35479bdf124a8d4694835406 jdk7u25-b10
+cca49a35bf83664456af112482ffb3a7465d21fa jdk7u25-b11
+7ca68c0674df72fdd784de337c049404d2b5b0c3 jdk7u25-b12
+3e145a686fedd9eefdcb6b714241200ed236b41d jdk7u25-b13
+4fafaf293aa5666e8c9f5ca1d96c3f752305f586 jdk7u25-b14
+40acb370626fbc439e4cfed8854960a83a376fba jdk7u25-b15
+97a3ebd62052410e0709035f40032d3f2113ed86 jdk7u25-b30
+b80a290e6e3011097273525c4f352c70b9857464 jdk7u25-b16
+273e8afccd6ef9e10e9fe121f7b323755191f3cc jdk7u25-b32
 e3d2c238e29c421c3b5c001e400acbfb30790cfc jdk7u14-b14
 860ae068f4dff62a77c8315f0335b7e935087e86 hs24-b34
 12619005c5e29be6e65f0dc9891ca19d9ffb1aaa jdk7u14-b15
@@ -565,3 +583,24 @@
 0000000000000000000000000000000000000000 icedtea-2.4.2
 0000000000000000000000000000000000000000 icedtea-2.4.2
 b732355257e3452875a1a8e5a5de2c553dfa705c icedtea-2.4.2
+efaa26fb6de2ecb8506fb8b785a429d040e96768 jdk7u40-b61
+df6f37a7311d35072a07c1425a7aadee469a09b6 jdk7u40-b62
+5fb434aa203c32b4551167b922a70e79831ffdf4 jdk7u45-b01
+f2039061ba49de742ae88cc3123fd1237965d665 jdk7u45-b02
+d6fd3f84a30ce82a37fc39b6e5e9d73bd8054ab2 jdk7u45-b03
+7f16aa9067386aeb3668336aa6cd63ef3dc4f44a jdk7u45-b04
+b4fe146b820b47d8b59bbb9dc9d43221436ed0ae jdk7u45-b05
+63efa616e54dd3545e16a5aa1917662548b18ee5 jdk7u45-b06
+f6748e6123b6745497d69addffdff38e224a77c5 jdk7u45-b07
+06bcab9ef18355dccc87401fc24dbd5f15615db0 jdk7u45-b08
+996b6863b3b2468cece20d7a6f571f9ec1b7830c jdk7u45-b09
+bcaf889eea9e64d30f8c3aefdcdc2c2ee29406f2 jdk7u45-b10
+7ca907428850dc2aa99ee4a906446e479dbeb392 jdk7u45-b11
+ed1505510ea0e94b17f968cdb3e8aba13c99d543 jdk7u45-b12
+89f99af7a7bbdadb5b8cf781c7d899c22df64b71 jdk7u45-b13
+718d1e9223dd0359d9ccef81fb82c32215702fe8 jdk7u45-b14
+9ad76a08e5edfe24e95eef84e15fef261bff1abf jdk7u45-b15
+429884602206fcf5314c8b953c06d54d337558ca jdk7u45-b16
+0c0dc384915cafd9bfaa2fe5792a629a22d1b990 jdk7u45-b17
+12374864c655a2cefb0d65caaacf215d5365ec5f jdk7u45-b18
+3677c8cc3c89c0fa608f485b84396e4cf755634b jdk7u45-b30
--- a/make/hotspot_version	Sat Aug 24 00:14:46 2013 -0700
+++ b/make/hotspot_version	Wed Oct 16 15:17:08 2013 +0100
@@ -34,8 +34,8 @@
 HOTSPOT_VM_COPYRIGHT=Copyright 2013
 
 HS_MAJOR_VER=24
-HS_MINOR_VER=0
-HS_BUILD_NUMBER=56
+HS_MINOR_VER=45
+HS_BUILD_NUMBER=08
 
 JDK_MAJOR_VER=1
 JDK_MINOR_VER=7
--- a/src/os/bsd/vm/os_bsd.cpp	Sat Aug 24 00:14:46 2013 -0700
+++ b/src/os/bsd/vm/os_bsd.cpp	Wed Oct 16 15:17:08 2013 +0100
@@ -971,13 +971,14 @@
 #endif
 
 #ifdef __APPLE__
-static uint64_t locate_unique_thread_id() {
+static uint64_t locate_unique_thread_id(mach_port_t mach_thread_port) {
   // Additional thread_id used to correlate threads in SA
   thread_identifier_info_data_t     m_ident_info;
   mach_msg_type_number_t            count = THREAD_IDENTIFIER_INFO_COUNT;
 
-  thread_info(::mach_thread_self(), THREAD_IDENTIFIER_INFO,
+  thread_info(mach_thread_port, THREAD_IDENTIFIER_INFO,
               (thread_info_t) &m_ident_info, &count);
+
   return m_ident_info.thread_id;
 }
 #endif
@@ -1009,9 +1010,14 @@
 
 #ifdef _ALLBSD_SOURCE
 #ifdef __APPLE__
-  // thread_id is mach thread on macos
-  osthread->set_thread_id(::mach_thread_self());
-  osthread->set_unique_thread_id(locate_unique_thread_id());
+  // thread_id is mach thread on macos, which pthreads graciously caches and provides for us
+  mach_port_t thread_id = ::pthread_mach_thread_np(::pthread_self());
+  guarantee(thread_id != 0, "thread id missing from pthreads");
+  osthread->set_thread_id(thread_id);
+
+  uint64_t unique_thread_id = locate_unique_thread_id(thread_id);
+  guarantee(unique_thread_id != 0, "unique thread id was not found");
+  osthread->set_unique_thread_id(unique_thread_id);
 #else
   // thread_id is pthread_id on BSD
   osthread->set_thread_id(::pthread_self());
@@ -1207,8 +1213,14 @@
   // Store pthread info into the OSThread
 #ifdef _ALLBSD_SOURCE
 #ifdef __APPLE__
-  osthread->set_thread_id(::mach_thread_self());
-  osthread->set_unique_thread_id(locate_unique_thread_id());
+  // thread_id is mach thread on macos, which pthreads graciously caches and provides for us
+  mach_port_t thread_id = ::pthread_mach_thread_np(::pthread_self());
+  guarantee(thread_id != 0, "just checking");
+  osthread->set_thread_id(thread_id);
+
+  uint64_t unique_thread_id = locate_unique_thread_id(thread_id);
+  guarantee(unique_thread_id != 0, "just checking");
+  osthread->set_unique_thread_id(unique_thread_id);
 #else
   osthread->set_thread_id(::pthread_self());
 #endif
@@ -1830,7 +1842,7 @@
 
 intx os::current_thread_id() {
 #ifdef __APPLE__
-  return (intx)::mach_thread_self();
+  return (intx)::pthread_mach_thread_np(::pthread_self());
 #else
   return (intx)::pthread_self();
 #endif
--- a/src/share/vm/runtime/mutexLocker.cpp	Sat Aug 24 00:14:46 2013 -0700
+++ b/src/share/vm/runtime/mutexLocker.cpp	Wed Oct 16 15:17:08 2013 +0100
@@ -133,13 +133,15 @@
 
 Mutex*   Management_lock              = NULL;
 Monitor* Service_lock                 = NULL;
-Mutex*   Stacktrace_lock              = NULL;
+Monitor* PeriodicTask_lock            = NULL;
 
-Monitor* JfrQuery_lock                = NULL;
+#ifdef INCLUDE_TRACE
+Mutex*   JfrStacktrace_lock           = NULL;
 Monitor* JfrMsg_lock                  = NULL;
 Mutex*   JfrBuffer_lock               = NULL;
 Mutex*   JfrStream_lock               = NULL;
-Monitor* PeriodicTask_lock            = NULL;
+Mutex*   JfrThreadGroups_lock         = NULL;
+#endif
 
 #define MAX_NUM_MUTEX 128
 static Monitor * _mutex_array[MAX_NUM_MUTEX];
@@ -215,7 +217,6 @@
   def(Patching_lock                , Mutex  , special,     true ); // used for safepointing and code patching.
   def(ObjAllocPost_lock            , Monitor, special,     false);
   def(Service_lock                 , Monitor, special,     true ); // used for service thread operations
-  def(Stacktrace_lock              , Mutex,   special,     true ); // used for JFR stacktrace database
   def(JmethodIdCreation_lock       , Mutex  , leaf,        true ); // used for creating jmethodIDs.
 
   def(SystemDictionary_lock        , Monitor, leaf,        true ); // lookups done by VM thread
@@ -278,12 +279,17 @@
   def(MethodCompileQueue_lock      , Monitor, nonleaf+4,   true );
   def(Debug2_lock                  , Mutex  , nonleaf+4,   true );
   def(Debug3_lock                  , Mutex  , nonleaf+4,   true );
-  def(CompileThread_lock           , Monitor, nonleaf+5,   false );
+  def(CompileThread_lock           , Monitor, nonleaf+5,   false);
+  def(PeriodicTask_lock            , Monitor, nonleaf+5,   true);
 
+#ifdef INCLUDE_TRACE
   def(JfrMsg_lock                  , Monitor, leaf,        true);
   def(JfrBuffer_lock               , Mutex,   nonleaf+1,   true);
+  def(JfrThreadGroups_lock         , Mutex,   nonleaf+1,   true);
   def(JfrStream_lock               , Mutex,   nonleaf+2,   true);
-  def(PeriodicTask_lock            , Monitor, nonleaf+5,   true);
+  def(JfrStacktrace_lock           , Mutex,   special,     true );
+#endif
+
 }
 
 GCMutexLocker::GCMutexLocker(Monitor * mutex) {
--- a/src/share/vm/runtime/mutexLocker.hpp	Sat Aug 24 00:14:46 2013 -0700
+++ b/src/share/vm/runtime/mutexLocker.hpp	Wed Oct 16 15:17:08 2013 +0100
@@ -135,13 +135,15 @@
 
 extern Mutex*   Management_lock;                 // a lock used to serialize JVM management
 extern Monitor* Service_lock;                    // a lock used for service thread operation
-extern Mutex*   Stacktrace_lock;                 // used to guard access to the stacktrace table
+extern Monitor* PeriodicTask_lock;               // protects the periodic task structure
 
-extern Monitor* JfrQuery_lock;                   // protects JFR use
+#ifdef INCLUDE_TRACE
+extern Mutex*   JfrStacktrace_lock;              // used to guard access to the JFR stacktrace table
 extern Monitor* JfrMsg_lock;                     // protects JFR messaging
 extern Mutex*   JfrBuffer_lock;                  // protects JFR buffer operations
 extern Mutex*   JfrStream_lock;                  // protects JFR stream access
-extern Monitor* PeriodicTask_lock;               // protects the periodic task structure
+extern Mutex*   JfrThreadGroups_lock;            // protects JFR access to Thread Groups
+#endif
 
 // A MutexLocker provides mutual exclusion with respect to a given mutex
 // for the scope which contains the locker.  The lock is an OS lock, not
--- a/src/share/vm/services/gcNotifier.cpp	Sat Aug 24 00:14:46 2013 -0700
+++ b/src/share/vm/services/gcNotifier.cpp	Wed Oct 16 15:17:08 2013 +0100
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -209,11 +209,11 @@
   GCNotificationRequest *request = getRequest();
   if (request != NULL) {
     NotificationMark nm(request);
-    Handle objGcInfo = createGcInfo(request->gcManager, request->gcStatInfo, THREAD);
+    Handle objGcInfo = createGcInfo(request->gcManager, request->gcStatInfo, CHECK);
 
-    Handle objName = java_lang_String::create_from_platform_dependent_str(request->gcManager->name(), CHECK);
-    Handle objAction = java_lang_String::create_from_platform_dependent_str(request->gcAction, CHECK);
-    Handle objCause = java_lang_String::create_from_platform_dependent_str(request->gcCause, CHECK);
+    Handle objName = java_lang_String::create_from_str(request->gcManager->name(), CHECK);
+    Handle objAction = java_lang_String::create_from_str(request->gcAction, CHECK);
+    Handle objCause = java_lang_String::create_from_str(request->gcCause, CHECK);
 
     klassOop k = Management::sun_management_GarbageCollectorImpl_klass(CHECK);
     instanceKlassHandle gc_mbean_klass(THREAD, k);