Merge

Tue, 18 Nov 2014 00:56:42 +0000

author
jiangli
date
Tue, 18 Nov 2014 00:56:42 +0000
changeset 7364
f84125b6f69a
parent 7363
3375833a603e
parent 7361
b00e231d3cb2
child 7365
600c44255e5f

Merge

     1.1 --- a/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp	Mon Nov 10 19:28:51 2014 -0500
     1.2 +++ b/src/share/vm/gc_implementation/concurrentMarkSweep/vmCMSOperations.cpp	Tue Nov 18 00:56:42 2014 +0000
     1.3 @@ -50,8 +50,12 @@
     1.4  void VM_CMS_Operation::acquire_pending_list_lock() {
     1.5    // The caller may block while communicating
     1.6    // with the SLT thread in order to acquire/release the PLL.
     1.7 -  ConcurrentMarkSweepThread::slt()->
     1.8 -    manipulatePLL(SurrogateLockerThread::acquirePLL);
     1.9 +  SurrogateLockerThread* slt = ConcurrentMarkSweepThread::slt();
    1.10 +  if (slt != NULL) {
    1.11 +    slt->manipulatePLL(SurrogateLockerThread::acquirePLL);
    1.12 +  } else {
    1.13 +    SurrogateLockerThread::report_missing_slt();
    1.14 +  }
    1.15  }
    1.16  
    1.17  void VM_CMS_Operation::release_and_notify_pending_list_lock() {
     2.1 --- a/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Mon Nov 10 19:28:51 2014 -0500
     2.2 +++ b/src/share/vm/gc_implementation/g1/vm_operations_g1.cpp	Tue Nov 18 00:56:42 2014 +0000
     2.3 @@ -213,8 +213,12 @@
     2.4    assert(_needs_pll, "don't call this otherwise");
     2.5    // The caller may block while communicating
     2.6    // with the SLT thread in order to acquire/release the PLL.
     2.7 -  ConcurrentMarkThread::slt()->
     2.8 -    manipulatePLL(SurrogateLockerThread::acquirePLL);
     2.9 +  SurrogateLockerThread* slt = ConcurrentMarkThread::slt();
    2.10 +  if (slt != NULL) {
    2.11 +    slt->manipulatePLL(SurrogateLockerThread::acquirePLL);
    2.12 +  } else {
    2.13 +    SurrogateLockerThread::report_missing_slt();
    2.14 +  }
    2.15  }
    2.16  
    2.17  void VM_CGC_Operation::release_and_notify_pending_list_lock() {
     3.1 --- a/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Mon Nov 10 19:28:51 2014 -0500
     3.2 +++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.cpp	Tue Nov 18 00:56:42 2014 +0000
     3.3 @@ -137,6 +137,13 @@
     3.4    return res;
     3.5  }
     3.6  
     3.7 +void SurrogateLockerThread::report_missing_slt() {
     3.8 +  vm_exit_during_initialization(
     3.9 +    "GC before GC support fully initialized: "
    3.10 +    "SLT is needed but has not yet been created.");
    3.11 +  ShouldNotReachHere();
    3.12 +}
    3.13 +
    3.14  void SurrogateLockerThread::manipulatePLL(SLT_msg_type msg) {
    3.15    MutexLockerEx x(&_monitor, Mutex::_no_safepoint_check_flag);
    3.16    assert(_buffer == empty, "Should be empty");
     4.1 --- a/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp	Mon Nov 10 19:28:51 2014 -0500
     4.2 +++ b/src/share/vm/gc_implementation/shared/concurrentGCThread.hpp	Tue Nov 18 00:56:42 2014 +0000
     4.3 @@ -93,6 +93,9 @@
     4.4   public:
     4.5    static SurrogateLockerThread* make(TRAPS);
     4.6  
     4.7 +  // Terminate VM with error message that SLT needed but not yet created.
     4.8 +  static void report_missing_slt();
     4.9 +
    4.10    SurrogateLockerThread();
    4.11  
    4.12    bool is_hidden_from_external_view() const     { return true; }
     5.1 --- a/src/share/vm/runtime/interfaceSupport.cpp	Mon Nov 10 19:28:51 2014 -0500
     5.2 +++ b/src/share/vm/runtime/interfaceSupport.cpp	Tue Nov 18 00:56:42 2014 +0000
     5.3 @@ -85,7 +85,7 @@
     5.4    // Short-circuit any possible re-entrant gc-a-lot attempt
     5.5    if (thread->skip_gcalot()) return;
     5.6  
     5.7 -  if (is_init_completed()) {
     5.8 +  if (Threads::is_vm_complete()) {
     5.9  
    5.10      if (++_fullgc_alot_invocation < FullGCALotStart) {
    5.11        return;

mercurial