"do not print trace line after scavenger collection")
DEFINE_BOOL(trace_idle_notification, false,
"print one trace line following each idle notification")
+DEFINE_BOOL(trace_idle_notification_verbose, false,
+ "prints the heap state used by the idle notification")
DEFINE_BOOL(print_cumulative_gc_stat, false,
"print cumulative GC statistics in name=value format on exit")
DEFINE_BOOL(print_max_heap_committed, false,
}
+void GCIdleTimeHandler::HeapState::Print() {
+ PrintF("contexts_disposed=%d ", contexts_disposed);
+ PrintF("contexts_disposal_rate=%f ", contexts_disposal_rate);
+ PrintF("size_of_objects=%" V8_PTR_PREFIX "d ", size_of_objects);
+ PrintF("incremental_marking_stopped=%d ", incremental_marking_stopped);
+ PrintF("can_start_incremental_marking=%d ", can_start_incremental_marking);
+ PrintF("sweeping_in_progress=%d ", sweeping_in_progress);
+ PrintF("mark_compact_speed=%" V8_PTR_PREFIX "d ",
+ mark_compact_speed_in_bytes_per_ms);
+ PrintF("incremental_marking_speed=%" V8_PTR_PREFIX "d ",
+ incremental_marking_speed_in_bytes_per_ms);
+ PrintF("scavenge_speed=%" V8_PTR_PREFIX "d ", scavenge_speed_in_bytes_per_ms);
+ PrintF("new_space_size=%" V8_PTR_PREFIX "d ", used_new_space_size);
+ PrintF("new_space_capacity=%" V8_PTR_PREFIX "d ", new_space_capacity);
+ PrintF("new_space_allocation_throughput=%" V8_PTR_PREFIX "d",
+ new_space_allocation_throughput_in_bytes_per_ms);
+}
+
+
size_t GCIdleTimeHandler::EstimateMarkingStepSize(
size_t idle_time_in_ms, size_t marking_speed_in_bytes_per_ms) {
DCHECK(idle_time_in_ms > 0);
PrintF("Idle notification: requested idle time %d ms, actual time %d ms [",
idle_time_in_ms, actual_time_in_ms);
action.Print();
- PrintF("]\n");
+ PrintF("]");
+ if (FLAG_trace_idle_notification_verbose) {
+ PrintF("[");
+ heap_state.Print();
+ PrintF("]");
+ }
+ PrintF("\n");
}
contexts_disposed_ = 0;