< prev index next >
src/share/vm/gc_implementation/shenandoah/shenandoahCollectorPolicy.hpp
Print this page
rev 9705 : [backport] Implement early update references phase.
*** 103,114 ****
--- 103,136 ----
evac_management_roots,
evac_system_dictionary_roots,
evac_cldg_roots,
evac_jvmti_roots,
+ init_update_refs_gross,
+ init_update_refs,
+
+ final_update_refs_gross,
+ final_update_refs,
+
+ // Per-thread timer block, should have "roots" counters in consistent order
+ final_update_refs_roots,
+ final_update_refs_thread_roots,
+ final_update_refs_code_roots,
+ final_update_refs_string_table_roots,
+ final_update_refs_universe_roots,
+ final_update_refs_jni_roots,
+ final_update_refs_jni_weak_roots,
+ final_update_refs_synchronizer_roots,
+ final_update_refs_flat_profiler_roots,
+ final_update_refs_management_roots,
+ final_update_refs_system_dict_roots,
+ final_update_refs_cldg_roots,
+ final_update_refs_jvmti_roots,
+
conc_mark,
conc_evac,
+ conc_update_refs,
reset_bitmaps,
full_gc,
full_gc_heapdumps,
full_gc_prepare,
*** 137,146 ****
--- 159,171 ----
size_t _user_requested_gcs;
size_t _allocation_failure_gcs;
size_t _degenerated_cm;
size_t _successful_cm;
+ size_t _degenerated_uprefs;
+ size_t _successful_uprefs;
+
ShenandoahHeuristics* _heuristics;
ShenandoahTracer* _tracer;
STWGCTimer* _stw_timer;
ConcurrentGCTimer* _conc_timer;
*** 167,176 ****
--- 192,206 ----
void initialize_alignments();
void post_heap_initialize();
+ // TODO: This is different from gc_end: that one encompasses one VM operation.
+ // These two encompass the entire cycle.
+ void record_cycle_start();
+ void record_cycle_end();
+
void record_phase_start(TimingPhase phase);
void record_phase_end(TimingPhase phase);
void record_workers_start(TimingPhase phase);
void record_workers_end(TimingPhase phase);
*** 183,198 ****
--- 213,240 ----
void record_bytes_allocated(size_t bytes);
void record_bytes_reclaimed(size_t bytes);
void record_bytes_start_CM(size_t bytes);
void record_bytes_end_CM(size_t bytes);
bool should_start_concurrent_mark(size_t used, size_t capacity);
+
+ // Returns true when there should be a separate concurrent reference
+ // updating phase after evacuation.
+ bool should_start_update_refs();
+ bool update_refs();
+
bool handover_cancelled_marking();
+ bool handover_cancelled_uprefs();
void record_cm_cancelled();
void record_cm_success();
void record_cm_degenerated();
void record_full_gc();
+ void record_uprefs_cancelled();
+ void record_uprefs_success();
+ void record_uprefs_degenerated();
+
+ void record_peak_occupancy();
void choose_collection_set(ShenandoahCollectionSet* collection_set, int* connections=NULL);
void choose_free_set(ShenandoahFreeSet* free_set);
bool process_references();
*** 205,215 ****
ShenandoahTracer* tracer() {return _tracer;}
void set_conc_gc_aborted() { _conc_gc_aborted = true;}
void clear_conc_gc_aborted() {_conc_gc_aborted = false;}
- void increase_cycle_counter();
size_t cycle_counter() const;
// Calculate the number of workers for initial marking
static uint calc_workers_for_init_marking(uint active_workers,
--- 247,256 ----
< prev index next >