32 class G1ParScanThreadState;
33
34 class G1RootClosures : public CHeapObj<mtGC> {
35 public:
36 virtual ~G1RootClosures() {}
37
38 // Closures to process raw oops in the root set.
39 virtual OopClosure* weak_oops() = 0;
40 virtual OopClosure* strong_oops() = 0;
41
42 // Closures to process CLDs in the root set.
43 virtual CLDClosure* weak_clds() = 0;
44 virtual CLDClosure* strong_clds() = 0;
45
46 // Applied to code blobs reachable as strong roots.
47 virtual CodeBlobClosure* strong_codeblobs() = 0;
48 };
49
50 class G1EvacuationRootClosures : public G1RootClosures {
51 public:
52 // The amount of time spent during trimming evacuation queues ("Object Copy" time)
53 // during iterating through the roots.
54 virtual double trim_time_seconds() = 0;
55
56 // Applied to the weakly reachable CLDs when all strongly reachable
57 // CLDs are guaranteed to have been processed.
58 virtual CLDClosure* second_pass_weak_clds() = 0;
59
60 // Get a raw oop closure for processing oops, bypassing the flushing above.
61 virtual OopClosure* raw_strong_oops() = 0;
62
63 // Applied to code blobs treated as weak roots.
64 virtual CodeBlobClosure* weak_codeblobs() = 0;
65
66 // Is this closure used for tracing metadata?
67 virtual bool trace_metadata() = 0;
68
69 static G1EvacuationRootClosures* create_root_closures(G1ParScanThreadState* pss, G1CollectedHeap* g1h);
70 };
71
72 #endif // SHARE_VM_GC_G1_G1ROOTCLOSURESET_HPP
|
32 class G1ParScanThreadState;
33
34 class G1RootClosures : public CHeapObj<mtGC> {
35 public:
36 virtual ~G1RootClosures() {}
37
38 // Closures to process raw oops in the root set.
39 virtual OopClosure* weak_oops() = 0;
40 virtual OopClosure* strong_oops() = 0;
41
42 // Closures to process CLDs in the root set.
43 virtual CLDClosure* weak_clds() = 0;
44 virtual CLDClosure* strong_clds() = 0;
45
46 // Applied to code blobs reachable as strong roots.
47 virtual CodeBlobClosure* strong_codeblobs() = 0;
48 };
49
50 class G1EvacuationRootClosures : public G1RootClosures {
51 public:
52 // Applied to the weakly reachable CLDs when all strongly reachable
53 // CLDs are guaranteed to have been processed.
54 virtual CLDClosure* second_pass_weak_clds() = 0;
55
56 // Get a raw oop closure for processing oops, bypassing the flushing above.
57 virtual OopClosure* raw_strong_oops() = 0;
58
59 // Applied to code blobs treated as weak roots.
60 virtual CodeBlobClosure* weak_codeblobs() = 0;
61
62 // Is this closure used for tracing metadata?
63 virtual bool trace_metadata() = 0;
64
65 static G1EvacuationRootClosures* create_root_closures(G1ParScanThreadState* pss, G1CollectedHeap* g1h);
66 };
67
68 #endif // SHARE_VM_GC_G1_G1ROOTCLOSURESET_HPP
|