hotspot/src/share/vm/runtime/thread.cpp
changeset 13859 7fe4578493fc
parent 13748 c4455a44f974
child 13860 70ec7368a991
equal deleted inserted replaced
13856:bb11e2aa5265 13859:7fe4578493fc
   306   // method to complete because it may need to allocate memory to
   306   // method to complete because it may need to allocate memory to
   307   // store information for the new thread.
   307   // store information for the new thread.
   308 
   308 
   309   // initialize structure dependent on thread local storage
   309   // initialize structure dependent on thread local storage
   310   ThreadLocalStorage::set_thread(this);
   310   ThreadLocalStorage::set_thread(this);
   311 
       
   312   // set up any platform-specific state.
       
   313   os::initialize_thread();
       
   314 }
   311 }
   315 
   312 
   316 void Thread::record_stack_base_and_size() {
   313 void Thread::record_stack_base_and_size() {
   317   set_stack_base(os::current_stack_base());
   314   set_stack_base(os::current_stack_base());
   318   set_stack_size(os::current_stack_size());
   315   set_stack_size(os::current_stack_size());
   319 
   316   // CR 7190089: on Solaris, primordial thread's stack is adjusted
   320   // record thread's native stack, stack grows downward
   317   // in initialize_thread(). Without the adjustment, stack size is
   321   address low_stack_addr = stack_base() - stack_size();
   318   // incorrect if stack is set to unlimited (ulimit -s unlimited).
   322   MemTracker::record_thread_stack(low_stack_addr, stack_size(), this,
   319   // So far, only Solaris has real implementation of initialize_thread().
   323              CURRENT_PC);
   320   //
       
   321   // set up any platform-specific state.
       
   322   os::initialize_thread(this);
       
   323 
       
   324    // record thread's native stack, stack grows downward
       
   325   if (MemTracker::is_on()) {
       
   326     address stack_low_addr = stack_base() - stack_size();
       
   327     MemTracker::record_thread_stack(stack_low_addr, stack_size(), this,
       
   328       CURRENT_PC);
       
   329   }
   324 }
   330 }
   325 
   331 
   326 
   332 
   327 Thread::~Thread() {
   333 Thread::~Thread() {
   328   // Reclaim the objectmonitors from the omFreeList of the moribund thread.
   334   // Reclaim the objectmonitors from the omFreeList of the moribund thread.