--- old/src/share/vm/gc/g1/g1StringDedupStat.hpp 2016-06-27 15:23:15.949992719 +0200 +++ new/src/share/vm/gc/g1/g1StringDedupStat.hpp 2016-06-27 15:23:15.860988970 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -30,11 +30,14 @@ // Macros for GC log output formating #define G1_STRDEDUP_OBJECTS_FORMAT UINTX_FORMAT_W(12) -#define G1_STRDEDUP_TIME_FORMAT "%1.7lf secs" -#define G1_STRDEDUP_PERCENT_FORMAT "%5.1lf%%" -#define G1_STRDEDUP_PERCENT_FORMAT_NS "%.1lf%%" -#define G1_STRDEDUP_BYTES_FORMAT "%8.1lf%s" -#define G1_STRDEDUP_BYTES_FORMAT_NS "%.1lf%s" +#define G1_STRDEDUP_TIME_FORMAT "%.3fs" +#define G1_STRDEDUP_TIME_PARAM(time) (time) +#define G1_STRDEDUP_TIME_FORMAT_MS "%.3fms" +#define G1_STRDEDUP_TIME_PARAM_MS(time) ((time) * MILLIUNITS) +#define G1_STRDEDUP_PERCENT_FORMAT "%5.1f%%" +#define G1_STRDEDUP_PERCENT_FORMAT_NS "%.1f%%" +#define G1_STRDEDUP_BYTES_FORMAT "%8.1f%s" +#define G1_STRDEDUP_BYTES_FORMAT_NS "%.1f%s" #define G1_STRDEDUP_BYTES_PARAM(bytes) byte_size_in_proper_unit((double)(bytes)), proper_unit_for_byte_size((bytes)) // @@ -60,7 +63,9 @@ uintx _block; // Time spent by the deduplication thread in different phases - double _start; + double _start_concurrent; + double _end_concurrent; + double _start_phase; double _idle_elapsed; double _exec_elapsed; double _block_elapsed; @@ -104,38 +109,41 @@ } void mark_idle() { - _start = os::elapsedTime(); + _start_phase = os::elapsedTime(); _idle++; } void mark_exec() { double now = os::elapsedTime(); - _idle_elapsed = now - _start; - _start = now; + _idle_elapsed = now - _start_phase; + _start_phase = now; + _start_concurrent = now; _exec++; } void mark_block() { double now = os::elapsedTime(); - _exec_elapsed += now - _start; - _start = now; + _exec_elapsed += now - _start_phase; + _start_phase = now; _block++; } void mark_unblock() { double now = os::elapsedTime(); - _block_elapsed += now - _start; - _start = now; + _block_elapsed += now - _start_phase; + _start_phase = now; } void mark_done() { double now = os::elapsedTime(); - _exec_elapsed += now - _start; + _exec_elapsed += now - _start_phase; + _end_concurrent = now; } void add(const G1StringDedupStat& stat); - static void print_summary(const G1StringDedupStat& last_stat, const G1StringDedupStat& total_stat); + static void print_start(const G1StringDedupStat& last_stat); + static void print_end(const G1StringDedupStat& last_stat, const G1StringDedupStat& total_stat); static void print_statistics(const G1StringDedupStat& stat, bool total); };