23 */
24
25 #ifndef SHARE_VM_GC_PARALLEL_PSMARKSWEEP_HPP
26 #define SHARE_VM_GC_PARALLEL_PSMARKSWEEP_HPP
27
28 #include "gc/serial/markSweep.hpp"
29 #include "gc/shared/collectorCounters.hpp"
30 #include "gc/shared/referenceProcessor.hpp"
31 #include "utilities/stack.hpp"
32
33 class PSAdaptiveSizePolicy;
34 class PSYoungGen;
35 class PSOldGen;
36
37 class PSMarkSweep : public MarkSweep {
38 private:
39 static elapsedTimer _accumulated_time;
40 static jlong _time_of_last_gc; // ms
41 static CollectorCounters* _counters;
42
43 static SpanSubjectToDiscoveryClosure _span_discoverer;
44
45 // Closure accessors
46 static OopClosure* mark_and_push_closure() { return &MarkSweep::mark_and_push_closure; }
47 static VoidClosure* follow_stack_closure() { return &MarkSweep::follow_stack_closure; }
48 static CLDClosure* follow_cld_closure() { return &MarkSweep::follow_cld_closure; }
49 static OopClosure* adjust_pointer_closure() { return &MarkSweep::adjust_pointer_closure; }
50 static CLDClosure* adjust_cld_closure() { return &MarkSweep::adjust_cld_closure; }
51 static BoolObjectClosure* is_alive_closure() { return &MarkSweep::is_alive; }
52
53 // Mark live objects
54 static void mark_sweep_phase1(bool clear_all_softrefs);
55 // Calculate new addresses
56 static void mark_sweep_phase2();
57 // Update pointers
58 static void mark_sweep_phase3();
59 // Move objects to new positions
60 static void mark_sweep_phase4();
61
62 // Temporary data structures for traversal and storing/restoring marks
63 static void allocate_stacks();
|
23 */
24
25 #ifndef SHARE_VM_GC_PARALLEL_PSMARKSWEEP_HPP
26 #define SHARE_VM_GC_PARALLEL_PSMARKSWEEP_HPP
27
28 #include "gc/serial/markSweep.hpp"
29 #include "gc/shared/collectorCounters.hpp"
30 #include "gc/shared/referenceProcessor.hpp"
31 #include "utilities/stack.hpp"
32
33 class PSAdaptiveSizePolicy;
34 class PSYoungGen;
35 class PSOldGen;
36
37 class PSMarkSweep : public MarkSweep {
38 private:
39 static elapsedTimer _accumulated_time;
40 static jlong _time_of_last_gc; // ms
41 static CollectorCounters* _counters;
42
43 static SpanSubjectToDiscoveryClosure _span_based_discoverer;
44
45 // Closure accessors
46 static OopClosure* mark_and_push_closure() { return &MarkSweep::mark_and_push_closure; }
47 static VoidClosure* follow_stack_closure() { return &MarkSweep::follow_stack_closure; }
48 static CLDClosure* follow_cld_closure() { return &MarkSweep::follow_cld_closure; }
49 static OopClosure* adjust_pointer_closure() { return &MarkSweep::adjust_pointer_closure; }
50 static CLDClosure* adjust_cld_closure() { return &MarkSweep::adjust_cld_closure; }
51 static BoolObjectClosure* is_alive_closure() { return &MarkSweep::is_alive; }
52
53 // Mark live objects
54 static void mark_sweep_phase1(bool clear_all_softrefs);
55 // Calculate new addresses
56 static void mark_sweep_phase2();
57 // Update pointers
58 static void mark_sweep_phase3();
59 // Move objects to new positions
60 static void mark_sweep_phase4();
61
62 // Temporary data structures for traversal and storing/restoring marks
63 static void allocate_stacks();
|