< prev index next >
src/share/vm/gc/shenandoah/vm_operations_shenandoah.hpp
Print this page
rev 13387 : [mq]: parallel_sp_cleaning.patch
*** 40,50 ****
class VM_ShenandoahOperation : public VM_Operation {
protected:
uint _gc_id;
public:
! VM_ShenandoahOperation() : _gc_id(GCId::current()) {};
};
class VM_ShenandoahReferenceOperation : public VM_ShenandoahOperation {
public:
VM_ShenandoahReferenceOperation() : VM_ShenandoahOperation() {};
--- 40,51 ----
class VM_ShenandoahOperation : public VM_Operation {
protected:
uint _gc_id;
public:
! 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,91 ****
--- 57,101 ----
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,107 ****
--- 108,119 ----
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 >