33 // - VM_G1Concurrent |
33 // - VM_G1Concurrent |
34 // - VM_G1CollectForAllocation |
34 // - VM_G1CollectForAllocation |
35 // - VM_G1CollectFull |
35 // - VM_G1CollectFull |
36 |
36 |
37 class VM_G1CollectFull : public VM_GC_Operation { |
37 class VM_G1CollectFull : public VM_GC_Operation { |
|
38 bool _gc_succeeded; |
|
39 |
38 public: |
40 public: |
39 VM_G1CollectFull(uint gc_count_before, |
41 VM_G1CollectFull(uint gc_count_before, |
40 uint full_gc_count_before, |
42 uint full_gc_count_before, |
41 GCCause::Cause cause) : |
43 GCCause::Cause cause) : |
42 VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true) { } |
44 VM_GC_Operation(gc_count_before, cause, full_gc_count_before, true), |
|
45 _gc_succeeded(false) { } |
43 virtual VMOp_Type type() const { return VMOp_G1CollectFull; } |
46 virtual VMOp_Type type() const { return VMOp_G1CollectFull; } |
44 virtual void doit(); |
47 virtual void doit(); |
|
48 bool gc_succeeded() { return _gc_succeeded; } |
45 }; |
49 }; |
46 |
50 |
47 class VM_G1CollectForAllocation : public VM_CollectForAllocation { |
51 class VM_G1CollectForAllocation : public VM_CollectForAllocation { |
48 bool _pause_succeeded; |
52 bool _gc_succeeded; |
49 |
53 |
50 bool _should_initiate_conc_mark; |
54 bool _should_initiate_conc_mark; |
51 bool _should_retry_gc; |
55 bool _should_retry_gc; |
52 double _target_pause_time_ms; |
56 double _target_pause_time_ms; |
53 uint _old_marking_cycles_completed_before; |
57 uint _old_marking_cycles_completed_before; |
54 |
58 |
55 public: |
59 public: |
56 VM_G1CollectForAllocation(size_t word_size, |
60 VM_G1CollectForAllocation(size_t word_size, |
57 uint gc_count_before, |
61 uint gc_count_before, |
58 GCCause::Cause gc_cause, |
62 GCCause::Cause gc_cause, |
61 virtual VMOp_Type type() const { return VMOp_G1CollectForAllocation; } |
65 virtual VMOp_Type type() const { return VMOp_G1CollectForAllocation; } |
62 virtual bool doit_prologue(); |
66 virtual bool doit_prologue(); |
63 virtual void doit(); |
67 virtual void doit(); |
64 virtual void doit_epilogue(); |
68 virtual void doit_epilogue(); |
65 bool should_retry_gc() const { return _should_retry_gc; } |
69 bool should_retry_gc() const { return _should_retry_gc; } |
66 bool pause_succeeded() { return _pause_succeeded; } |
70 bool gc_succeeded() { return _gc_succeeded; } |
67 }; |
71 }; |
68 |
72 |
69 // Concurrent G1 stop-the-world operations such as remark and cleanup. |
73 // Concurrent G1 stop-the-world operations such as remark and cleanup. |
70 class VM_G1Concurrent : public VM_Operation { |
74 class VM_G1Concurrent : public VM_Operation { |
71 VoidClosure* _cl; |
75 VoidClosure* _cl; |