54 static void deactivate_derived_pointers() {
55 #if COMPILER2_OR_JVMCI
56 DerivedPointerTable::set_active(false);
57 #endif
58 }
59
60 static void update_derived_pointers() {
61 #if COMPILER2_OR_JVMCI
62 DerivedPointerTable::update_pointers();
63 #endif
64 }
65
66 G1CMBitMap* G1FullCollector::mark_bitmap() {
67 return _heap->concurrent_mark()->next_mark_bitmap();
68 }
69
70 ReferenceProcessor* G1FullCollector::reference_processor() {
71 return _heap->ref_processor_stw();
72 }
73
74 G1FullCollector::G1FullCollector(G1CollectedHeap* heap, bool explicit_gc, bool clear_soft_refs) :
75 _heap(heap),
76 _scope(explicit_gc, clear_soft_refs),
77 _num_workers(heap->workers()->active_workers()),
78 _oop_queue_set(_num_workers),
79 _array_queue_set(_num_workers),
80 _preserved_marks_set(true),
81 _serial_compaction_point(),
82 _is_alive(heap->concurrent_mark()->next_mark_bitmap()),
83 _is_alive_mutator(heap->ref_processor_stw(), &_is_alive) {
84 assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
85
86 _preserved_marks_set.init(_num_workers);
87 _markers = NEW_C_HEAP_ARRAY(G1FullGCMarker*, _num_workers, mtGC);
88 _compaction_points = NEW_C_HEAP_ARRAY(G1FullGCCompactionPoint*, _num_workers, mtGC);
89 for (uint i = 0; i < _num_workers; i++) {
90 _markers[i] = new G1FullGCMarker(i, _preserved_marks_set.get(i), mark_bitmap());
91 _compaction_points[i] = new G1FullGCCompactionPoint();
92 _oop_queue_set.register_queue(i, marker(i)->oop_stack());
93 _array_queue_set.register_queue(i, marker(i)->objarray_stack());
94 }
95 }
96
|
54 static void deactivate_derived_pointers() {
55 #if COMPILER2_OR_JVMCI
56 DerivedPointerTable::set_active(false);
57 #endif
58 }
59
60 static void update_derived_pointers() {
61 #if COMPILER2_OR_JVMCI
62 DerivedPointerTable::update_pointers();
63 #endif
64 }
65
66 G1CMBitMap* G1FullCollector::mark_bitmap() {
67 return _heap->concurrent_mark()->next_mark_bitmap();
68 }
69
70 ReferenceProcessor* G1FullCollector::reference_processor() {
71 return _heap->ref_processor_stw();
72 }
73
74 G1FullCollector::G1FullCollector(G1CollectedHeap* heap, GCMemoryManager* memory_manager, bool explicit_gc, bool clear_soft_refs) :
75 _heap(heap),
76 _scope(memory_manager, explicit_gc, clear_soft_refs),
77 _num_workers(heap->workers()->active_workers()),
78 _oop_queue_set(_num_workers),
79 _array_queue_set(_num_workers),
80 _preserved_marks_set(true),
81 _serial_compaction_point(),
82 _is_alive(heap->concurrent_mark()->next_mark_bitmap()),
83 _is_alive_mutator(heap->ref_processor_stw(), &_is_alive) {
84 assert(SafepointSynchronize::is_at_safepoint(), "must be at a safepoint");
85
86 _preserved_marks_set.init(_num_workers);
87 _markers = NEW_C_HEAP_ARRAY(G1FullGCMarker*, _num_workers, mtGC);
88 _compaction_points = NEW_C_HEAP_ARRAY(G1FullGCCompactionPoint*, _num_workers, mtGC);
89 for (uint i = 0; i < _num_workers; i++) {
90 _markers[i] = new G1FullGCMarker(i, _preserved_marks_set.get(i), mark_bitmap());
91 _compaction_points[i] = new G1FullGCCompactionPoint();
92 _oop_queue_set.register_queue(i, marker(i)->oop_stack());
93 _array_queue_set.register_queue(i, marker(i)->objarray_stack());
94 }
95 }
96
|