< 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 >