< prev index next >
src/share/vm/gc/shenandoah/vm_operations_shenandoah.hpp
Print this page
rev 13387 : [mq]: parallel_sp_cleaning.patch
@@ -40,11 +40,12 @@
class VM_ShenandoahOperation : public VM_Operation {
protected:
uint _gc_id;
public:
- VM_ShenandoahOperation() : _gc_id(GCId::current()) {};
+ bool _safepoint_cleanup_done;
+ VM_ShenandoahOperation() : _gc_id(GCId::current()), _safepoint_cleanup_done(false) {};
};
class VM_ShenandoahReferenceOperation : public VM_ShenandoahOperation {
public:
VM_ShenandoahReferenceOperation() : VM_ShenandoahOperation() {};
@@ -56,36 +57,45 @@
public:
VM_ShenandoahInitMark() : VM_ShenandoahOperation() {};
VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahInitMark; }
const char* name() const { return "Shenandoah Init Marking"; }
virtual void doit();
+ bool deflates_idle_monitors() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
+ bool marks_nmethods() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
+
};
class VM_ShenandoahFinalMarkStartEvac: public VM_ShenandoahReferenceOperation {
public:
VM_ShenandoahFinalMarkStartEvac() : VM_ShenandoahReferenceOperation() {};
VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFinalMarkStartEvac; }
const char* name() const { return "Shenandoah Final Mark and Start Evacuation"; }
virtual void doit();
+ bool deflates_idle_monitors() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
+ bool marks_nmethods() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
};
class VM_ShenandoahFullGC : public VM_ShenandoahReferenceOperation {
private:
GCCause::Cause _gc_cause;
public:
VM_ShenandoahFullGC(GCCause::Cause gc_cause) : VM_ShenandoahReferenceOperation(), _gc_cause(gc_cause) {};
VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFullGC; }
const char* name() const { return "Shenandoah Full GC"; }
virtual void doit();
+ bool deflates_idle_monitors() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
+ bool marks_nmethods() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
};
class VM_ShenandoahPartialGC: public VM_ShenandoahOperation {
public:
VM_ShenandoahPartialGC() : VM_ShenandoahOperation() {};
VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahPartialGC; }
const char* name() const { return "Shenandoah Partial Collection"; }
virtual void doit();
+ bool deflates_idle_monitors() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
+ bool marks_nmethods() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
};
class VM_ShenandoahInitUpdateRefs: public VM_ShenandoahOperation {
public:
VM_ShenandoahInitUpdateRefs() : VM_ShenandoahOperation() {};
@@ -98,10 +108,12 @@
public:
VM_ShenandoahFinalUpdateRefs() : VM_ShenandoahOperation() {};
VM_Operation::VMOp_Type type() const { return VMOp_ShenandoahFinalUpdateRefs; }
const char* name() const { return "Shenandoah Final Update References"; }
virtual void doit();
+ bool deflates_idle_monitors() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
+ bool marks_nmethods() { return ShenandoahSPCleanup && ! _safepoint_cleanup_done; }
};
class VM_ShenandoahVerifyHeapAfterEvacuation: public VM_ShenandoahOperation {
public:
VM_ShenandoahVerifyHeapAfterEvacuation() : VM_ShenandoahOperation() {};
< prev index next >