57 #include "gc/shared/referencePolicy.hpp"
58 #include "gc/shared/space.inline.hpp"
59 #include "gc/shared/strongRootsScope.hpp"
60 #include "gc/shared/taskqueue.inline.hpp"
61 #include "gc/shared/weakProcessor.hpp"
62 #include "logging/log.hpp"
63 #include "logging/logStream.hpp"
64 #include "memory/allocation.hpp"
65 #include "memory/binaryTreeDictionary.inline.hpp"
66 #include "memory/iterator.inline.hpp"
67 #include "memory/padded.hpp"
68 #include "memory/resourceArea.hpp"
69 #include "oops/access.inline.hpp"
70 #include "oops/oop.inline.hpp"
71 #include "prims/jvmtiExport.hpp"
72 #include "runtime/atomic.hpp"
73 #include "runtime/flags/flagSetting.hpp"
74 #include "runtime/globals_extension.hpp"
75 #include "runtime/handles.inline.hpp"
76 #include "runtime/java.hpp"
77 #include "runtime/orderAccess.inline.hpp"
78 #include "runtime/timer.hpp"
79 #include "runtime/vmThread.hpp"
80 #include "services/memoryService.hpp"
81 #include "services/runtimeService.hpp"
82 #include "utilities/align.hpp"
83 #include "utilities/stack.inline.hpp"
84
85 // statics
86 CMSCollector* ConcurrentMarkSweepGeneration::_collector = NULL;
87 bool CMSCollector::_full_gc_requested = false;
88 GCCause::Cause CMSCollector::_full_gc_cause = GCCause::_no_gc;
89
90 //////////////////////////////////////////////////////////////////
91 // In support of CMS/VM thread synchronization
92 //////////////////////////////////////////////////////////////////
93 // We split use of the CGC_lock into 2 "levels".
94 // The low-level locking is of the usual CGC_lock monitor. We introduce
95 // a higher level "token" (hereafter "CMS token") built on top of the
96 // low level monitor (hereafter "CGC lock").
97 // The token-passing protocol gives priority to the VM thread. The
|
57 #include "gc/shared/referencePolicy.hpp"
58 #include "gc/shared/space.inline.hpp"
59 #include "gc/shared/strongRootsScope.hpp"
60 #include "gc/shared/taskqueue.inline.hpp"
61 #include "gc/shared/weakProcessor.hpp"
62 #include "logging/log.hpp"
63 #include "logging/logStream.hpp"
64 #include "memory/allocation.hpp"
65 #include "memory/binaryTreeDictionary.inline.hpp"
66 #include "memory/iterator.inline.hpp"
67 #include "memory/padded.hpp"
68 #include "memory/resourceArea.hpp"
69 #include "oops/access.inline.hpp"
70 #include "oops/oop.inline.hpp"
71 #include "prims/jvmtiExport.hpp"
72 #include "runtime/atomic.hpp"
73 #include "runtime/flags/flagSetting.hpp"
74 #include "runtime/globals_extension.hpp"
75 #include "runtime/handles.inline.hpp"
76 #include "runtime/java.hpp"
77 #include "runtime/orderAccess.hpp"
78 #include "runtime/timer.hpp"
79 #include "runtime/vmThread.hpp"
80 #include "services/memoryService.hpp"
81 #include "services/runtimeService.hpp"
82 #include "utilities/align.hpp"
83 #include "utilities/stack.inline.hpp"
84
85 // statics
86 CMSCollector* ConcurrentMarkSweepGeneration::_collector = NULL;
87 bool CMSCollector::_full_gc_requested = false;
88 GCCause::Cause CMSCollector::_full_gc_cause = GCCause::_no_gc;
89
90 //////////////////////////////////////////////////////////////////
91 // In support of CMS/VM thread synchronization
92 //////////////////////////////////////////////////////////////////
93 // We split use of the CGC_lock into 2 "levels".
94 // The low-level locking is of the usual CGC_lock monitor. We introduce
95 // a higher level "token" (hereafter "CMS token") built on top of the
96 // low level monitor (hereafter "CGC lock").
97 // The token-passing protocol gives priority to the VM thread. The
|