Thu, 16 Jul 2015 17:18:06 -0700
Merge
.hgtags | file | annotate | diff | comparison | revisions | |
make/hotspot_version | file | annotate | diff | comparison | revisions |
1.1 --- a/.hgtags Tue Jul 14 11:31:34 2015 -0700 1.2 +++ b/.hgtags Thu Jul 16 17:18:06 2015 -0700 1.3 @@ -714,6 +714,8 @@ 1.4 ff8fdeb2fb6d6f3348597339c53412f8f6202c3f hs25.60-b22 1.5 878cb0df27c22c6b1e9f4add1eb3da3edc8ab51d jdk8u60-b22 1.6 0e4094950cd312c8f95c7f37336606323fe049fe jdk8u60-b23 1.7 +d89ceecf1bad55e1aee2932b8895d60fc64c15db hs25.60-b23 1.8 +fb157d537278cda4150740e27bb57cd8694e15bf jdk8u60-b24 1.9 0219ab69f00782e5c49687e2fa75138a7ffddea1 jdk8u52-b06 1.10 9b6f44853eed8caba935915c7e710c546b205c8e jdk8u52-b07 1.11 0219ab69f00782e5c49687e2fa75138a7ffddea1 jdk8u65-b00 1.12 @@ -722,4 +724,6 @@ 1.13 ea47136e6ea4253c0bf238fb61760f98a8d01ebc jdk8u65-b03 1.14 2a03fd592fe60fd113c1c89e431ebaa6857c4998 jdk8u65-b04 1.15 aa915217a00c4b8ce0e82d1b23fa1df8a9e4cc70 jdk8u65-b05 1.16 +878cb0df27c22c6b1e9f4add1eb3da3edc8ab51d jdk8u66-b00 1.17 +777a354cada52b831a32bfc5362ad7cedfde4450 jdk8u66-b01 1.18 9a158a0c243beb610dbaabd63d6218d3ce5825f1 jdk8u71-b00
2.1 --- a/src/os/bsd/vm/jsig.c Tue Jul 14 11:31:34 2015 -0700 2.2 +++ b/src/os/bsd/vm/jsig.c Thu Jul 16 17:18:06 2015 -0700 2.3 @@ -1,5 +1,5 @@ 2.4 /* 2.5 - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. 2.6 + * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. 2.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2.8 * 2.9 * This code is free software; you can redistribute it and/or modify it 2.10 @@ -36,6 +36,7 @@ 2.11 #include <stdio.h> 2.12 #include <stdlib.h> 2.13 #include <stdbool.h> 2.14 +#include <string.h> 2.15 2.16 #define MAXSIGNUM 32 2.17 #define MASK(sig) ((unsigned int)1 << sig) 2.18 @@ -43,6 +44,9 @@ 2.19 static struct sigaction sact[MAXSIGNUM]; /* saved signal handlers */ 2.20 static unsigned int jvmsigs = 0; /* signals used by jvm */ 2.21 2.22 +static pthread_key_t reentry_flag_key; 2.23 +static pthread_once_t reentry_key_init_once = PTHREAD_ONCE_INIT; 2.24 + 2.25 /* used to synchronize the installation of signal handlers */ 2.26 static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 2.27 static pthread_cond_t cond = PTHREAD_COND_INITIALIZER; 2.28 @@ -59,6 +63,15 @@ 2.29 static bool jvm_signal_installing = false; 2.30 static bool jvm_signal_installed = false; 2.31 2.32 +#define check_status(cmd) \ 2.33 + do { \ 2.34 + int status = (cmd); \ 2.35 + if (status != 0) { \ 2.36 + printf("error %s (%d) in " #cmd "\n", strerror(status), status); \ 2.37 + exit(1); \ 2.38 + } \ 2.39 + } while (0) 2.40 + 2.41 static void signal_lock() { 2.42 pthread_mutex_lock(&mutex); 2.43 /* When the jvm is installing its set of signal handlers, threads 2.44 @@ -74,8 +87,15 @@ 2.45 pthread_mutex_unlock(&mutex); 2.46 } 2.47 2.48 +static void reentry_tls_init() { 2.49 + // value for reentry_flag_key will default to NULL (false) 2.50 + check_status(pthread_key_create(&reentry_flag_key, NULL)); 2.51 +} 2.52 + 2.53 static sa_handler_t call_os_signal(int sig, sa_handler_t disp, 2.54 bool is_sigset) { 2.55 + sa_handler_t res; 2.56 + 2.57 if (os_signal == NULL) { 2.58 if (!is_sigset) { 2.59 os_signal = (signal_t)dlsym(RTLD_NEXT, "signal"); 2.60 @@ -87,7 +107,12 @@ 2.61 exit(0); 2.62 } 2.63 } 2.64 - return (*os_signal)(sig, disp); 2.65 + check_status(pthread_once(&reentry_key_init_once, reentry_tls_init)); 2.66 + // set reentry_flag_key to non-NULL to show reentry 2.67 + check_status(pthread_setspecific(reentry_flag_key, &res)); 2.68 + res = (*os_signal)(sig, disp); 2.69 + check_status(pthread_setspecific(reentry_flag_key, NULL)); 2.70 + return res; 2.71 } 2.72 2.73 static void save_signal_handler(int sig, sa_handler_t disp) { 2.74 @@ -161,6 +186,11 @@ 2.75 bool sigused; 2.76 struct sigaction oldAct; 2.77 2.78 + check_status(pthread_once(&reentry_key_init_once, reentry_tls_init)); 2.79 + if (pthread_getspecific(reentry_flag_key) != NULL) { 2.80 + return call_os_sigaction(sig, act, oact); 2.81 + } 2.82 + 2.83 signal_lock(); 2.84 2.85 sigused = (MASK(sig) & jvmsigs) != 0;
3.1 --- a/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Tue Jul 14 11:31:34 2015 -0700 3.2 +++ b/src/os_cpu/solaris_sparc/vm/vm_version_solaris_sparc.cpp Thu Jul 16 17:18:06 2015 -0700 3.3 @@ -189,7 +189,7 @@ 3.4 return CPUVisitor::visit(nodeh, state); 3.5 } 3.6 3.7 - PICL(bool is_fujitsu) : _L1_data_cache_line_size(0), _L2_data_cache_line_size(0), _dl_handle(NULL) { 3.8 + PICL(bool is_fujitsu, bool is_sun4v) : _L1_data_cache_line_size(0), _L2_data_cache_line_size(0), _dl_handle(NULL) { 3.9 if (!open_library()) { 3.10 return; 3.11 } 3.12 @@ -201,7 +201,7 @@ 3.13 if (is_fujitsu) { 3.14 cpu_class = "core"; 3.15 } 3.16 - CPUVisitor cpu_visitor(this, os::processor_count()); 3.17 + CPUVisitor cpu_visitor(this, (is_sun4v && !is_fujitsu) ? 1 : os::processor_count()); 3.18 _picl_walk_tree_by_class(rooth, cpu_class, &cpu_visitor, PICL_visit_cpu_helper); 3.19 if (cpu_visitor.l1_visitor()->is_assigned()) { // Is there a value? 3.20 _L1_data_cache_line_size = cpu_visitor.l1_visitor()->value(); 3.21 @@ -494,7 +494,7 @@ 3.22 } 3.23 3.24 // Figure out cache line sizes using PICL 3.25 - PICL picl((features & sparc64_family_m) != 0); 3.26 + PICL picl((features & sparc64_family_m) != 0, (features & sun4v_m) != 0); 3.27 _L2_data_cache_line_size = picl.L2_data_cache_line_size(); 3.28 3.29 return features;
4.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Tue Jul 14 11:31:34 2015 -0700 4.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Thu Jul 16 17:18:06 2015 -0700 4.3 @@ -3339,9 +3339,11 @@ 4.4 // Not unloading classes this cycle 4.5 assert(!should_unload_classes(), "Inconsitency!"); 4.6 4.7 + // If we are not unloading classes then add SO_AllCodeCache to root 4.8 + // scanning options. 4.9 + add_root_scanning_option(rso); 4.10 + 4.11 if ((!verifying() || unloaded_classes_last_cycle()) && should_verify) { 4.12 - // Include symbols, strings and code cache elements to prevent their resurrection. 4.13 - add_root_scanning_option(rso); 4.14 set_verifying(true); 4.15 } else if (verifying() && !should_verify) { 4.16 // We were verifying, but some verification flags got disabled.