# HG changeset patch # User jwilhelm # Date 1471619987 -7200 # Node ID 20873f6704de9238d9d49bc82d16997772f2125d # Parent e17429a7e843c4a4ed3651458d0f950970edcbcc 8164124: [BACKOUT] G1 does not implement millis_since_last_gc which is needed by RMI GC Reviewed-by: jprovino diff -r e17429a7e843 -r 20873f6704de hotspot/src/share/vm/gc/g1/g1Analytics.cpp --- a/hotspot/src/share/vm/gc/g1/g1Analytics.cpp Wed Jul 05 22:07:34 2017 +0200 +++ b/hotspot/src/share/vm/gc/g1/g1Analytics.cpp Fri Aug 19 17:19:47 2016 +0200 @@ -316,14 +316,10 @@ return get_new_size_prediction(_pending_cards_seq); } -double G1Analytics::oldest_known_gc_end_time_sec() const { +double G1Analytics::last_known_gc_end_time_sec() const { return _recent_prev_end_times_for_all_gcs_sec->oldest(); } -double G1Analytics::last_known_gc_end_time_sec() const { - return _recent_prev_end_times_for_all_gcs_sec->last(); -} - void G1Analytics::update_recent_gc_times(double end_time_sec, double pause_time_ms) { _recent_gc_times_ms->add(pause_time_ms); diff -r e17429a7e843 -r 20873f6704de hotspot/src/share/vm/gc/g1/g1Analytics.hpp --- a/hotspot/src/share/vm/gc/g1/g1Analytics.hpp Wed Jul 05 22:07:34 2017 +0200 +++ b/hotspot/src/share/vm/gc/g1/g1Analytics.hpp Fri Aug 19 17:19:47 2016 +0200 @@ -155,7 +155,6 @@ void update_recent_gc_times(double end_time_sec, double elapsed_ms); void compute_pause_time_ratio(double interval_ms, double pause_time_ms); - double oldest_known_gc_end_time_sec() const; double last_known_gc_end_time_sec() const; }; diff -r e17429a7e843 -r 20873f6704de hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp --- a/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Wed Jul 05 22:07:34 2017 +0200 +++ b/hotspot/src/share/vm/gc/g1/g1CollectedHeap.cpp Fri Aug 19 17:19:47 2016 +0200 @@ -28,7 +28,6 @@ #include "classfile/symbolTable.hpp" #include "code/codeCache.hpp" #include "code/icBuffer.hpp" -#include "gc/g1/g1Analytics.hpp" #include "gc/g1/bufferingOopClosure.hpp" #include "gc/g1/concurrentG1Refine.hpp" #include "gc/g1/concurrentG1RefineThread.hpp" @@ -2474,19 +2473,8 @@ } jlong G1CollectedHeap::millis_since_last_gc() { - jlong now = os::elapsed_counter() / NANOSECS_PER_MILLISEC; - const G1Analytics* analytics = _g1_policy->analytics(); - double last = analytics->last_known_gc_end_time_sec(); - jlong ret_val = now - (last * 1000); - if (ret_val < 0) { - // See the notes in GenCollectedHeap::millis_since_last_gc() - // for more information about the implementation. - log_warning(gc)("Detected clock going backwards. " - "Milliseconds since last GC would be " JLONG_FORMAT - ". returning zero instead.", ret_val); - return 0; - } - return ret_val; + // assert(false, "NYI"); + return 0; } void G1CollectedHeap::prepare_for_verify() { diff -r e17429a7e843 -r 20873f6704de hotspot/src/share/vm/gc/g1/g1DefaultPolicy.cpp --- a/hotspot/src/share/vm/gc/g1/g1DefaultPolicy.cpp Wed Jul 05 22:07:34 2017 +0200 +++ b/hotspot/src/share/vm/gc/g1/g1DefaultPolicy.cpp Fri Aug 19 17:19:47 2016 +0200 @@ -604,7 +604,7 @@ _analytics->report_alloc_rate_ms(alloc_rate_ms); double interval_ms = - (end_time_sec - _analytics->oldest_known_gc_end_time_sec()) * 1000.0; + (end_time_sec - _analytics->last_known_gc_end_time_sec()) * 1000.0; _analytics->update_recent_gc_times(end_time_sec, pause_time_ms); _analytics->compute_pause_time_ratio(interval_ms, pause_time_ms); } diff -r e17429a7e843 -r 20873f6704de hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp --- a/hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp Wed Jul 05 22:07:34 2017 +0200 +++ b/hotspot/src/share/vm/gc/shared/genCollectedHeap.cpp Fri Aug 19 17:19:47 2016 +0200 @@ -1256,21 +1256,21 @@ }; jlong GenCollectedHeap::millis_since_last_gc() { - // javaTimeNanos() is guaranteed to be monotonically non-decreasing - // provided the underlying platform provides such a time source - // (and it is bug free). So we still have to guard against getting - // back a time later than 'now'. + // We need a monotonically non-decreasing time in ms but + // os::javaTimeMillis() does not guarantee monotonicity. jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC; GenTimeOfLastGCClosure tolgc_cl(now); // iterate over generations getting the oldest // time that a generation was collected generation_iterate(&tolgc_cl, false); + // javaTimeNanos() is guaranteed to be monotonically non-decreasing + // provided the underlying platform provides such a time source + // (and it is bug free). So we still have to guard against getting + // back a time later than 'now'. jlong retVal = now - tolgc_cl.time(); if (retVal < 0) { - log_warning(gc)("Detected clock going backwards. " - "Milliseconds since last GC would be " JLONG_FORMAT - ". returning zero instead.", retVal); + NOT_PRODUCT(log_warning(gc)("time warp: " JLONG_FORMAT, retVal);) return 0; } return retVal;