changeset 4998:79d6c7579df1

Merge
author asaha
date Tue, 01 Oct 2013 12:38:15 -0700
parents 583e3b215735 (current diff) 429884602206 (diff)
children 06fd4dba2fb8
files .hgtags
diffstat 8 files changed, 89 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Thu Sep 12 17:17:21 2013 -0700
+++ b/.hgtags	Tue Oct 01 12:38:15 2013 -0700
@@ -476,6 +476,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
@@ -549,4 +567,20 @@
 4e779305ed58e21b433626ac06b5eb884055183b jdk7u40-b42
 b8d8caf6df744d5342b5d284376a005e86c0b108 hs24-b56
 eceae04782438987cd747e1c76e4085f50b43a18 jdk7u40-b43
+af1fc2868a2b919727bfbb0858449bd991bbee4a jdk7u40-b60
+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
 ae4adc1492d1c90a70bd2d139a939fc0c8329be9 jdk7u60-b00
--- a/make/hotspot_version	Thu Sep 12 17:17:21 2013 -0700
+++ b/make/hotspot_version	Tue Oct 01 12:38:15 2013 -0700
@@ -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/make/windows/makefiles/compile.make	Thu Sep 12 17:17:21 2013 -0700
+++ b/make/windows/makefiles/compile.make	Tue Oct 01 12:38:15 2013 -0700
@@ -172,6 +172,7 @@
 PRODUCT_OPT_OPTION   = /O2 /Oy-
 FASTDEBUG_OPT_OPTION = /O2 /Oy-
 DEBUG_OPT_OPTION     = /Od
+SAFESEH_FLAG = /SAFESEH
 !endif
 
 !if "$(COMPILER_NAME)" == "VS2005"
@@ -190,6 +191,7 @@
 !if "x$(MT)" == "x"
 MT=mt.exe
 !endif
+SAFESEH_FLAG = /SAFESEH
 !endif
 
 !if "$(COMPILER_NAME)" == "VS2008"
@@ -203,6 +205,7 @@
 !if "x$(MT)" == "x"
 MT=mt.exe
 !endif
+SAFESEH_FLAG = /SAFESEH
 !endif
 
 !if "$(COMPILER_NAME)" == "VS2010"
@@ -216,9 +219,11 @@
 !if "x$(MT)" == "x"
 MT=mt.exe
 !endif
+SAFESEH_FLAG = /SAFESEH
+!endif
+
 !if "$(BUILDARCH)" == "i486"
-LD_FLAGS = /SAFESEH $(LD_FLAGS)
-!endif
+LD_FLAGS = $(SAFESEH_FLAG) $(LD_FLAGS)
 !endif
 
 # If NO_OPTIMIZATIONS is defined in the environment, turn everything off
--- a/make/windows/makefiles/sa.make	Thu Sep 12 17:17:21 2013 -0700
+++ b/make/windows/makefiles/sa.make	Tue Oct 01 12:38:15 2013 -0700
@@ -107,6 +107,9 @@
 !if "$(ENABLE_FULL_DEBUG_SYMBOLS)" == "1"
 SA_LFLAGS = $(SA_LFLAGS) -map -debug
 !endif
+!if "$(BUILDARCH)" == "i486"
+SA_LFLAGS = $(SAFESEH_FLAG) $(SA_LFLAGS)
+!endif
 
 # Note that we do not keep sawindbj.obj around as it would then
 # get included in the dumpbin command in build_vm_def.sh
--- a/src/os/bsd/vm/os_bsd.cpp	Thu Sep 12 17:17:21 2013 -0700
+++ b/src/os/bsd/vm/os_bsd.cpp	Tue Oct 01 12:38:15 2013 -0700
@@ -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/classfile/classFileParser.cpp	Thu Sep 12 17:17:21 2013 -0700
+++ b/src/share/vm/classfile/classFileParser.cpp	Tue Oct 01 12:38:15 2013 -0700
@@ -2028,8 +2028,8 @@
           }
           if (lvt_cnt == max_lvt_cnt) {
             max_lvt_cnt <<= 1;
-            REALLOC_RESOURCE_ARRAY(u2, localvariable_table_length, lvt_cnt, max_lvt_cnt);
-            REALLOC_RESOURCE_ARRAY(u2*, localvariable_table_start, lvt_cnt, max_lvt_cnt);
+            localvariable_table_length = REALLOC_RESOURCE_ARRAY(u2, localvariable_table_length, lvt_cnt, max_lvt_cnt);
+            localvariable_table_start  = REALLOC_RESOURCE_ARRAY(u2*, localvariable_table_start, lvt_cnt, max_lvt_cnt);
           }
           localvariable_table_start[lvt_cnt] =
             parse_localvariable_table(code_length,
@@ -2058,8 +2058,8 @@
           // Parse local variable type table
           if (lvtt_cnt == max_lvtt_cnt) {
             max_lvtt_cnt <<= 1;
-            REALLOC_RESOURCE_ARRAY(u2, localvariable_type_table_length, lvtt_cnt, max_lvtt_cnt);
-            REALLOC_RESOURCE_ARRAY(u2*, localvariable_type_table_start, lvtt_cnt, max_lvtt_cnt);
+            localvariable_type_table_length = REALLOC_RESOURCE_ARRAY(u2, localvariable_type_table_length, lvtt_cnt, max_lvtt_cnt);
+            localvariable_type_table_start  = REALLOC_RESOURCE_ARRAY(u2*, localvariable_type_table_start, lvtt_cnt, max_lvtt_cnt);
           }
           localvariable_type_table_start[lvtt_cnt] =
             parse_localvariable_table(code_length,
@@ -4051,9 +4051,8 @@
   for (int index = 0; index < num_methods; index++) {
     methodOop m = (methodOop)methods->obj_at(index);
 
-    // skip private, static and <init> methods
-    if ((!m->is_private()) &&
-        (!m->is_static()) &&
+    // skip static and <init> methods
+    if ((!m->is_static()) &&
         (m->name() != vmSymbols::object_initializer_name())) {
 
       Symbol* name = m->name();
--- a/src/share/vm/runtime/mutexLocker.cpp	Thu Sep 12 17:17:21 2013 -0700
+++ b/src/share/vm/runtime/mutexLocker.cpp	Tue Oct 01 12:38:15 2013 -0700
@@ -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	Thu Sep 12 17:17:21 2013 -0700
+++ b/src/share/vm/runtime/mutexLocker.hpp	Tue Oct 01 12:38:15 2013 -0700
@@ -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