50
51 class G1EvacuationRootClosures : public G1RootClosures {
52 public:
53 // Flush any buffered state and deferred processing
54 virtual void flush() = 0;
55 virtual double closure_app_seconds() = 0;
56
57 // Applied to the weakly reachable CLDs when all strongly reachable
58 // CLDs are guaranteed to have been processed.
59 virtual CLDClosure* second_pass_weak_clds() = 0;
60
61 // Get a raw oop closure for processing oops, bypassing the flushing above.
62 virtual OopClosure* raw_strong_oops() = 0;
63
64 // Applied to code blobs treated as weak roots.
65 virtual CodeBlobClosure* weak_codeblobs() = 0;
66
67 // Is this closure used for tracing metadata?
68 virtual bool trace_metadata() = 0;
69
70 static G1EvacuationRootClosures* create_root_closures(G1ParScanThreadState* pss, G1CollectedHeap* g1h);
71 };
72
73 #endif // SHARE_VM_GC_G1_G1ROOTCLOSURESET_HPP
|
50
51 class G1EvacuationRootClosures : public G1RootClosures {
52 public:
53 // Flush any buffered state and deferred processing
54 virtual void flush() = 0;
55 virtual double closure_app_seconds() = 0;
56
57 // Applied to the weakly reachable CLDs when all strongly reachable
58 // CLDs are guaranteed to have been processed.
59 virtual CLDClosure* second_pass_weak_clds() = 0;
60
61 // Get a raw oop closure for processing oops, bypassing the flushing above.
62 virtual OopClosure* raw_strong_oops() = 0;
63
64 // Applied to code blobs treated as weak roots.
65 virtual CodeBlobClosure* weak_codeblobs() = 0;
66
67 // Is this closure used for tracing metadata?
68 virtual bool trace_metadata() = 0;
69
70 // Applied to inter-region pointers, statically typed due to devirtualization.
71 virtual G1ParPushHeapRSClosure* inter_region_oops() = 0;
72
73 static G1EvacuationRootClosures* create_root_closures(G1ParScanThreadState* pss, G1CollectedHeap* g1h);
74 };
75
76 #endif // SHARE_VM_GC_G1_G1ROOTCLOSURESET_HPP
|