comparison src/share/vm/runtime/thread.cpp @ 6854:fb19af007ffc

7189254: Change makefiles for more flexibility to override defaults Summary: Change makefiles so that targets and parameters can be overridden by alternate makefiles. Reviewed-by: dholmes, coleenp
author jprovino
date Wed, 10 Oct 2012 14:35:58 -0400
parents c088e2e95e69
children 5876f980ea19
comparison
equal deleted inserted replaced
6830:81e878c53615 6854:fb19af007ffc
319 // So far, only Solaris has real implementation of initialize_thread(). 319 // So far, only Solaris has real implementation of initialize_thread().
320 // 320 //
321 // set up any platform-specific state. 321 // set up any platform-specific state.
322 os::initialize_thread(this); 322 os::initialize_thread(this);
323 323
324 #if INCLUDE_NMT
324 // record thread's native stack, stack grows downward 325 // record thread's native stack, stack grows downward
325 if (MemTracker::is_on()) { 326 if (MemTracker::is_on()) {
326 address stack_low_addr = stack_base() - stack_size(); 327 address stack_low_addr = stack_base() - stack_size();
327 MemTracker::record_thread_stack(stack_low_addr, stack_size(), this, 328 MemTracker::record_thread_stack(stack_low_addr, stack_size(), this,
328 CURRENT_PC); 329 CURRENT_PC);
329 } 330 }
331 #endif // INCLUDE_NMT
330 } 332 }
331 333
332 334
333 Thread::~Thread() { 335 Thread::~Thread() {
334 // Reclaim the objectmonitors from the omFreeList of the moribund thread. 336 // Reclaim the objectmonitors from the omFreeList of the moribund thread.
336 338
337 // stack_base can be NULL if the thread is never started or exited before 339 // stack_base can be NULL if the thread is never started or exited before
338 // record_stack_base_and_size called. Although, we would like to ensure 340 // record_stack_base_and_size called. Although, we would like to ensure
339 // that all started threads do call record_stack_base_and_size(), there is 341 // that all started threads do call record_stack_base_and_size(), there is
340 // not proper way to enforce that. 342 // not proper way to enforce that.
343 #if INCLUDE_NMT
341 if (_stack_base != NULL) { 344 if (_stack_base != NULL) {
342 address low_stack_addr = stack_base() - stack_size(); 345 address low_stack_addr = stack_base() - stack_size();
343 MemTracker::release_thread_stack(low_stack_addr, stack_size(), this); 346 MemTracker::release_thread_stack(low_stack_addr, stack_size(), this);
344 } 347 }
348 #endif // INCLUDE_NMT
345 349
346 // deallocate data structures 350 // deallocate data structures
347 delete resource_area(); 351 delete resource_area();
348 // since the handle marks are using the handle area, we have to deallocated the root 352 // since the handle marks are using the handle area, we have to deallocated the root
349 // handle mark before deallocating the thread's handle area, 353 // handle mark before deallocating the thread's handle area,
1355 set_deopt_nmethod(NULL); 1359 set_deopt_nmethod(NULL);
1356 clear_must_deopt_id(); 1360 clear_must_deopt_id();
1357 set_monitor_chunks(NULL); 1361 set_monitor_chunks(NULL);
1358 set_next(NULL); 1362 set_next(NULL);
1359 set_thread_state(_thread_new); 1363 set_thread_state(_thread_new);
1364 #if INCLUDE_NMT
1360 set_recorder(NULL); 1365 set_recorder(NULL);
1366 #endif
1361 _terminated = _not_terminated; 1367 _terminated = _not_terminated;
1362 _privileged_stack_top = NULL; 1368 _privileged_stack_top = NULL;
1363 _array_for_gc = NULL; 1369 _array_for_gc = NULL;
1364 _suspend_equivalent = false; 1370 _suspend_equivalent = false;
1365 _in_deopt_handler = 0; 1371 _in_deopt_handler = 0;
3521 #else /* USDT2 */ 3527 #else /* USDT2 */
3522 HOTSPOT_VM_INIT_END(); 3528 HOTSPOT_VM_INIT_END();
3523 #endif /* USDT2 */ 3529 #endif /* USDT2 */
3524 3530
3525 // record VM initialization completion time 3531 // record VM initialization completion time
3532 #if INCLUDE_MANAGEMENT
3526 Management::record_vm_init_completed(); 3533 Management::record_vm_init_completed();
3534 #endif // INCLUDE_MANAGEMENT
3527 3535
3528 // Compute system loader. Note that this has to occur after set_init_completed, since 3536 // Compute system loader. Note that this has to occur after set_init_completed, since
3529 // valid exceptions may be thrown in the process. 3537 // valid exceptions may be thrown in the process.
3530 // Note that we do not use CHECK_0 here since we are inside an EXCEPTION_MARK and 3538 // Note that we do not use CHECK_0 here since we are inside an EXCEPTION_MARK and
3531 // set_init_completed has just been called, causing exceptions not to be shortcut 3539 // set_init_completed has just been called, causing exceptions not to be shortcut
3582 if (CleanChunkPoolAsync) { 3590 if (CleanChunkPoolAsync) {
3583 Chunk::start_chunk_pool_cleaner_task(); 3591 Chunk::start_chunk_pool_cleaner_task();
3584 } 3592 }
3585 3593
3586 // initialize compiler(s) 3594 // initialize compiler(s)
3595 #if defined(COMPILER1) || defined(COMPILER2)
3587 CompileBroker::compilation_init(); 3596 CompileBroker::compilation_init();
3588 3597 #endif
3598
3599 #if INCLUDE_MANAGEMENT
3589 Management::initialize(THREAD); 3600 Management::initialize(THREAD);
3601 #endif // INCLUDE_MANAGEMENT
3602
3590 if (HAS_PENDING_EXCEPTION) { 3603 if (HAS_PENDING_EXCEPTION) {
3591 // management agent fails to start possibly due to 3604 // management agent fails to start possibly due to
3592 // configuration problem and is responsible for printing 3605 // configuration problem and is responsible for printing
3593 // stack trace if appropriate. Simply exit VM. 3606 // stack trace if appropriate. Simply exit VM.
3594 vm_exit(1); 3607 vm_exit(1);
3754 void Threads::create_vm_init_agents() { 3767 void Threads::create_vm_init_agents() {
3755 extern struct JavaVM_ main_vm; 3768 extern struct JavaVM_ main_vm;
3756 AgentLibrary* agent; 3769 AgentLibrary* agent;
3757 3770
3758 JvmtiExport::enter_onload_phase(); 3771 JvmtiExport::enter_onload_phase();
3772
3759 for (agent = Arguments::agents(); agent != NULL; agent = agent->next()) { 3773 for (agent = Arguments::agents(); agent != NULL; agent = agent->next()) {
3760 OnLoadEntry_t on_load_entry = lookup_agent_on_load(agent); 3774 OnLoadEntry_t on_load_entry = lookup_agent_on_load(agent);
3761 3775
3762 if (on_load_entry != NULL) { 3776 if (on_load_entry != NULL) {
3763 // Invoke the Agent_OnLoad function 3777 // Invoke the Agent_OnLoad function