< prev index next >
src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp
Print this page
rev 59271 : 8240870: Shenandoah: merge evac and update phases
Reviewed-by: XXX
*** 317,328 ****
public:
enum ShenandoahDegenPoint {
_degenerated_unset,
_degenerated_outside_cycle,
_degenerated_mark,
! _degenerated_evac,
! _degenerated_updaterefs,
_DEGENERATED_LIMIT
};
static const char* degen_point_to_string(ShenandoahDegenPoint point) {
switch (point) {
--- 317,327 ----
public:
enum ShenandoahDegenPoint {
_degenerated_unset,
_degenerated_outside_cycle,
_degenerated_mark,
! _degenerated_evac_update,
_DEGENERATED_LIMIT
};
static const char* degen_point_to_string(ShenandoahDegenPoint point) {
switch (point) {
*** 330,343 ****
return "<UNSET>";
case _degenerated_outside_cycle:
return "Outside of Cycle";
case _degenerated_mark:
return "Mark";
! case _degenerated_evac:
! return "Evacuation";
! case _degenerated_updaterefs:
! return "Update Refs";
default:
ShouldNotReachHere();
return "ERROR";
}
};
--- 329,340 ----
return "<UNSET>";
case _degenerated_outside_cycle:
return "Outside of Cycle";
case _degenerated_mark:
return "Mark";
! case _degenerated_evac_update:
! return "Evac Update";
default:
ShouldNotReachHere();
return "ERROR";
}
};
*** 376,396 ****
public:
// Entry points to STW GC operations, these cause a related safepoint, that then
// call the entry method below
void vmop_entry_init_mark();
void vmop_entry_final_mark();
! void vmop_entry_init_updaterefs();
! void vmop_entry_final_updaterefs();
void vmop_entry_full(GCCause::Cause cause);
void vmop_degenerated(ShenandoahDegenPoint point);
// Entry methods to normally STW GC operations. These set up logging, monitoring
// and workers for net VM operation
void entry_init_mark();
void entry_final_mark();
! void entry_init_updaterefs();
! void entry_final_updaterefs();
void entry_full(GCCause::Cause cause);
void entry_degenerated(int point);
// Entry methods to normally concurrent GC operations. These set up logging, monitoring
// for concurrent operation.
--- 373,393 ----
public:
// Entry points to STW GC operations, these cause a related safepoint, that then
// call the entry method below
void vmop_entry_init_mark();
void vmop_entry_final_mark();
! void vmop_entry_init_evac_update();
! void vmop_entry_final_evac_update();
void vmop_entry_full(GCCause::Cause cause);
void vmop_degenerated(ShenandoahDegenPoint point);
// Entry methods to normally STW GC operations. These set up logging, monitoring
// and workers for net VM operation
void entry_init_mark();
void entry_final_mark();
! void entry_init_evac_update();
! void entry_final_evac_update();
void entry_full(GCCause::Cause cause);
void entry_degenerated(int point);
// Entry methods to normally concurrent GC operations. These set up logging, monitoring
// for concurrent operation.
*** 399,419 ****
void entry_preclean();
void entry_weak_roots();
void entry_class_unloading();
void entry_strong_roots();
void entry_cleanup_early();
! void entry_evac();
! void entry_updaterefs();
void entry_cleanup_complete();
void entry_uncommit(double shrink_before);
private:
// Actual work for the phases
void op_init_mark();
void op_final_mark();
! void op_init_updaterefs();
! void op_final_updaterefs();
void op_full(GCCause::Cause cause);
void op_degenerated(ShenandoahDegenPoint point);
void op_degenerated_fail();
void op_degenerated_futile();
--- 396,415 ----
void entry_preclean();
void entry_weak_roots();
void entry_class_unloading();
void entry_strong_roots();
void entry_cleanup_early();
! void entry_evac_update();
void entry_cleanup_complete();
void entry_uncommit(double shrink_before);
private:
// Actual work for the phases
void op_init_mark();
void op_final_mark();
! void op_init_evac_update();
! void op_final_evac_update();
void op_full(GCCause::Cause cause);
void op_degenerated(ShenandoahDegenPoint point);
void op_degenerated_fail();
void op_degenerated_futile();
*** 422,434 ****
void op_preclean();
void op_weak_roots();
void op_class_unloading();
void op_strong_roots();
void op_cleanup_early();
! void op_conc_evac();
! void op_stw_evac();
! void op_updaterefs();
void op_cleanup_complete();
void op_uncommit(double shrink_before);
// Messages for GC trace events, they have to be immortal for
// passing around the logging/tracing systems
--- 418,429 ----
void op_preclean();
void op_weak_roots();
void op_class_unloading();
void op_strong_roots();
void op_cleanup_early();
! void op_conc_evac_update();
! void op_stw_evac_update();
void op_cleanup_complete();
void op_uncommit(double shrink_before);
// Messages for GC trace events, they have to be immortal for
// passing around the logging/tracing systems
*** 644,656 ****
inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl);
template<class T>
inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
- template<class T>
- inline void marked_object_oop_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
-
void reset_mark_bitmap();
// SATB barriers hooks
template<bool RESOLVE>
inline bool requires_marking(const void* entry) const;
--- 639,648 ----
*** 686,695 ****
--- 678,690 ----
// Evacuates object src. Returns the evacuated object, either evacuated
// by this thread, or by some other thread.
inline oop evacuate_object(oop src, Thread* thread);
+ template<class T>
+ oop evacuate_object_recursively(oop obj, T* load_addr, Thread* thread);
+
// Call before/after evacuation.
void enter_evacuation();
void leave_evacuation();
// ---------- Helper functions
*** 715,725 ****
void deduplicate_string(oop str);
private:
void trash_cset_regions();
- void update_heap_references(bool concurrent);
// ---------- Testing helpers functions
//
private:
ShenandoahSharedFlag _inject_alloc_failure;
--- 710,719 ----
< prev index next >