Mercurial > hg > graal-compiler
comparison src/share/vm/runtime/thread.cpp @ 3769:ef2d1b8f2dd4
7051430: CMS: ongoing CMS cycle should terminate abruptly to allow prompt JVM termination at exit
Summary: It turns out that there is no need to explicitly stop CMS since the JVM is taken down at a terminal safepoint during which CMS threads are (terminally) inactive. This will need to be revised if and when we evolve in the future to a point where we allow JVM reincarnation in the same process, but those changes will be much more sweeping than just terminating CMS threads. The unused ::stop() methods will be removed in a separate CR. Also include in this CR is the fix for a small typo in the spelling of UseGCLogFileRotation in a message in arguments.cpp, brought to our attention by Rainer Jung and reviewed by minqi.
Reviewed-by: johnc, jwilhelm
author | ysr |
---|---|
date | Mon, 13 Jun 2011 09:58:16 -0700 |
parents | a80577f854f9 |
children | 48048b59a551 |
comparison
equal
deleted
inserted
replaced
3768:42df21744b50 | 3769:ef2d1b8f2dd4 |
---|---|
3696 // 4945125 The vm thread comes to a safepoint during exit. | 3696 // 4945125 The vm thread comes to a safepoint during exit. |
3697 // GC vm_operations can get caught at the safepoint, and the | 3697 // GC vm_operations can get caught at the safepoint, and the |
3698 // heap is unparseable if they are caught. Grab the Heap_lock | 3698 // heap is unparseable if they are caught. Grab the Heap_lock |
3699 // to prevent this. The GC vm_operations will not be able to | 3699 // to prevent this. The GC vm_operations will not be able to |
3700 // queue until after the vm thread is dead. | 3700 // queue until after the vm thread is dead. |
3701 // After this point, we'll never emerge out of the safepoint before | |
3702 // the VM exits, so concurrent GC threads do not need to be explicitly | |
3703 // stopped; they remain inactive until the process exits. | |
3704 // Note: some concurrent G1 threads may be running during a safepoint, | |
3705 // but these will not be accessing the heap, just some G1-specific side | |
3706 // data structures that are not accessed by any other threads but them | |
3707 // after this point in a terminal safepoint. | |
3708 | |
3701 MutexLocker ml(Heap_lock); | 3709 MutexLocker ml(Heap_lock); |
3702 | 3710 |
3703 VMThread::wait_for_vm_thread_exit(); | 3711 VMThread::wait_for_vm_thread_exit(); |
3704 assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint"); | 3712 assert(SafepointSynchronize::is_at_safepoint(), "VM thread should exit at Safepoint"); |
3705 VMThread::destroy(); | 3713 VMThread::destroy(); |