Merge

Thu, 16 Jul 2015 17:18:06 -0700

author
asaha
date
Thu, 16 Jul 2015 17:18:06 -0700
changeset 8216
2a559ddea547
parent 8215
2ca31b46416e
parent 8114
90611b16f50f
child 8217
e30be4c0f1da

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.

mercurial