< prev index next > src/hotspot/share/gc/shenandoah/shenandoahDegeneratedGC.hpp
Print this page
#define SHARE_GC_SHENANDOAH_SHENANDOAHDEGENERATEDGC_HPP
#include "gc/shenandoah/shenandoahGC.hpp"
class VM_ShenandoahDegeneratedGC;
class ShenandoahDegenGC : public ShenandoahGC {
friend class VM_ShenandoahDegeneratedGC;
private:
const ShenandoahDegenPoint _degen_point;
public:
! ShenandoahDegenGC(ShenandoahDegenPoint degen_point);
bool collect(GCCause::Cause cause);
private:
void vmop_degenerated();
void entry_degenerated();
#define SHARE_GC_SHENANDOAH_SHENANDOAHDEGENERATEDGC_HPP
#include "gc/shenandoah/shenandoahGC.hpp"
class VM_ShenandoahDegeneratedGC;
+ class ShenandoahGeneration;
class ShenandoahDegenGC : public ShenandoahGC {
friend class VM_ShenandoahDegeneratedGC;
private:
const ShenandoahDegenPoint _degen_point;
+ ShenandoahGeneration* _generation;
+ bool _abbreviated;
public:
! ShenandoahDegenGC(ShenandoahDegenPoint degen_point, ShenandoahGeneration* generation);
bool collect(GCCause::Cause cause);
private:
void vmop_degenerated();
void entry_degenerated();
void op_reset();
void op_mark();
void op_finish_mark();
void op_prepare_evacuation();
void op_cleanup_early();
+
void op_evacuate();
void op_init_updaterefs();
void op_updaterefs();
void op_update_roots();
void op_cleanup_complete();
// Fail handling
void op_degenerated_futile();
void op_degenerated_fail();
+ // Turns this degenerated cycle into a full gc without leaving the safepoint
+ void upgrade_to_full();
+
const char* degen_event_message(ShenandoahDegenPoint point) const;
+
+ bool has_in_place_promotions(const ShenandoahHeap* heap) const;
};
#endif // SHARE_GC_SHENANDOAH_SHENANDOAHDEGENERATEDGC_HPP
< prev index next >