src/hotspot/share/runtime/init.cpp
changeset 54301 2f522c487791
parent 53895 b22d8ae270a2
child 54411 1ad7f5bcc670
equal deleted inserted replaced
54300:1b85f55c9aa2 54301:2f522c487791
    34 #include "prims/methodHandles.hpp"
    34 #include "prims/methodHandles.hpp"
    35 #include "runtime/flags/jvmFlag.hpp"
    35 #include "runtime/flags/jvmFlag.hpp"
    36 #include "runtime/handles.inline.hpp"
    36 #include "runtime/handles.inline.hpp"
    37 #include "runtime/icache.hpp"
    37 #include "runtime/icache.hpp"
    38 #include "runtime/init.hpp"
    38 #include "runtime/init.hpp"
       
    39 #include "runtime/orderAccess.hpp"
    39 #include "runtime/safepoint.hpp"
    40 #include "runtime/safepoint.hpp"
    40 #include "runtime/sharedRuntime.hpp"
    41 #include "runtime/sharedRuntime.hpp"
    41 #include "services/memTracker.hpp"
    42 #include "services/memTracker.hpp"
    42 #include "utilities/macros.hpp"
    43 #include "utilities/macros.hpp"
    43 
    44 
   184 }
   185 }
   185 
   186 
   186 static volatile bool _init_completed = false;
   187 static volatile bool _init_completed = false;
   187 
   188 
   188 bool is_init_completed() {
   189 bool is_init_completed() {
   189   return _init_completed;
   190   return OrderAccess::load_acquire(&_init_completed);
   190 }
   191 }
   191 
   192 
       
   193 void wait_init_completed() {
       
   194   MonitorLockerEx ml(InitCompleted_lock, Monitor::_no_safepoint_check_flag);
       
   195   while (!_init_completed) {
       
   196     ml.wait(Monitor::_no_safepoint_check_flag);
       
   197   }
       
   198 }
   192 
   199 
   193 void set_init_completed() {
   200 void set_init_completed() {
   194   assert(Universe::is_fully_initialized(), "Should have completed initialization");
   201   assert(Universe::is_fully_initialized(), "Should have completed initialization");
   195   _init_completed = true;
   202   MonitorLockerEx ml(InitCompleted_lock, Monitor::_no_safepoint_check_flag);
   196 }
   203   OrderAccess::release_store(&_init_completed, true);
       
   204   ml.notify_all();
       
   205 }