11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #include "precompiled.hpp"
25 #include "gc/shared/gcTraceTime.inline.hpp"
26 #include "gc/shared/vmGCOperations.hpp"
27 #include "gc/shenandoah/shenandoahConcurrentMark.inline.hpp"
28 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
29 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
30 #include "gc/shenandoah/shenandoahMarkCompact.hpp"
31 #include "gc/shenandoah/shenandoahPartialGC.hpp"
32 #include "gc/shenandoah/shenandoahTraversalGC.hpp"
33 #include "gc/shenandoah/shenandoahUtils.hpp"
34 #include "gc/shenandoah/shenandoahVerifier.hpp"
35 #include "gc/shenandoah/shenandoahWorkGroup.hpp"
36 #include "gc/shenandoah/shenandoahWorkerPolicy.hpp"
37 #include "gc/shenandoah/vm_operations_shenandoah.hpp"
38
39 bool VM_ShenandoahReferenceOperation::doit_prologue() {
40 Heap_lock->lock();
41 return true;
42 }
43
44 void VM_ShenandoahReferenceOperation::doit_epilogue() {
45 if (Universe::has_reference_pending_list()) {
46 Heap_lock->notify_all();
47 }
48 Heap_lock->unlock();
49 }
50
51 void VM_ShenandoahInitMark::doit() {
54 }
55
56 void VM_ShenandoahFinalMarkStartEvac::doit() {
57 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
58 ShenandoahHeap::heap()->entry_final_mark();
59 }
60
61 void VM_ShenandoahFinalEvac::doit() {
62 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
63 ShenandoahHeap::heap()->entry_final_evac();
64 }
65
66 void VM_ShenandoahFullGC::doit() {
67 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::FULL);
68 ShenandoahHeap::heap()->entry_full(_gc_cause);
69 }
70
71 void VM_ShenandoahDegeneratedGC::doit() {
72 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
73 ShenandoahHeap::heap()->entry_degenerated(_point);
74 }
75
76 void VM_ShenandoahInitPartialGC::doit() {
77 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::MINOR);
78 ShenandoahHeap::heap()->entry_init_partial();
79 }
80
81 void VM_ShenandoahFinalPartialGC::doit() {
82 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::MINOR);
83 ShenandoahHeap::heap()->entry_final_partial();
84 }
85
86 void VM_ShenandoahInitTraversalGC::doit() {
87 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
88 ShenandoahHeap::heap()->entry_init_traversal();
89 }
90
91 void VM_ShenandoahFinalTraversalGC::doit() {
92 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
93 ShenandoahHeap::heap()->entry_final_traversal();
94 }
95
96 void VM_ShenandoahInitUpdateRefs::doit() {
97 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
98 ShenandoahHeap::heap()->entry_init_updaterefs();
99 }
100
101 void VM_ShenandoahFinalUpdateRefs::doit() {
102 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
103 ShenandoahHeap::heap()->entry_final_updaterefs();
|
11 * version 2 for more details (a copy is included in the LICENSE file that
12 * accompanied this code).
13 *
14 * You should have received a copy of the GNU General Public License version
15 * 2 along with this work; if not, write to the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 *
18 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 * or visit www.oracle.com if you need additional information or have any
20 * questions.
21 *
22 */
23
24 #include "precompiled.hpp"
25 #include "gc/shared/gcTraceTime.inline.hpp"
26 #include "gc/shared/vmGCOperations.hpp"
27 #include "gc/shenandoah/shenandoahConcurrentMark.inline.hpp"
28 #include "gc/shenandoah/shenandoahPhaseTimings.hpp"
29 #include "gc/shenandoah/shenandoahHeap.inline.hpp"
30 #include "gc/shenandoah/shenandoahMarkCompact.hpp"
31 #include "gc/shenandoah/shenandoahTraversalGC.hpp"
32 #include "gc/shenandoah/shenandoahUtils.hpp"
33 #include "gc/shenandoah/shenandoahVerifier.hpp"
34 #include "gc/shenandoah/shenandoahWorkGroup.hpp"
35 #include "gc/shenandoah/shenandoahWorkerPolicy.hpp"
36 #include "gc/shenandoah/vm_operations_shenandoah.hpp"
37
38 bool VM_ShenandoahReferenceOperation::doit_prologue() {
39 Heap_lock->lock();
40 return true;
41 }
42
43 void VM_ShenandoahReferenceOperation::doit_epilogue() {
44 if (Universe::has_reference_pending_list()) {
45 Heap_lock->notify_all();
46 }
47 Heap_lock->unlock();
48 }
49
50 void VM_ShenandoahInitMark::doit() {
53 }
54
55 void VM_ShenandoahFinalMarkStartEvac::doit() {
56 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
57 ShenandoahHeap::heap()->entry_final_mark();
58 }
59
60 void VM_ShenandoahFinalEvac::doit() {
61 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
62 ShenandoahHeap::heap()->entry_final_evac();
63 }
64
65 void VM_ShenandoahFullGC::doit() {
66 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::FULL);
67 ShenandoahHeap::heap()->entry_full(_gc_cause);
68 }
69
70 void VM_ShenandoahDegeneratedGC::doit() {
71 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
72 ShenandoahHeap::heap()->entry_degenerated(_point);
73 }
74
75 void VM_ShenandoahInitTraversalGC::doit() {
76 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
77 ShenandoahHeap::heap()->entry_init_traversal();
78 }
79
80 void VM_ShenandoahFinalTraversalGC::doit() {
81 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
82 ShenandoahHeap::heap()->entry_final_traversal();
83 }
84
85 void VM_ShenandoahInitUpdateRefs::doit() {
86 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
87 ShenandoahHeap::heap()->entry_init_updaterefs();
88 }
89
90 void VM_ShenandoahFinalUpdateRefs::doit() {
91 ShenandoahGCPauseMark mark(_gc_id, SvcGCMarker::OTHER);
92 ShenandoahHeap::heap()->entry_final_updaterefs();
|