mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 07:14:30 +02:00
7129514: time warp warnings after 7117303
Replace calls to os::javaTimeMillis() that are used to update the milliseconds since the last GC to an equivalent that uses a monotonically non-decreasing time source. Reviewed-by: ysr, jmasa
This commit is contained in:
parent
6a31970946
commit
fa9d6d7682
4 changed files with 23 additions and 6 deletions
|
@ -6092,7 +6092,11 @@ void CMSCollector::sweep(bool asynch) {
|
||||||
_inter_sweep_timer.reset();
|
_inter_sweep_timer.reset();
|
||||||
_inter_sweep_timer.start();
|
_inter_sweep_timer.start();
|
||||||
|
|
||||||
update_time_of_last_gc(os::javaTimeMillis());
|
// We need to use a monotonically non-deccreasing time in ms
|
||||||
|
// or we will see time-warp warnings and os::javaTimeMillis()
|
||||||
|
// does not guarantee monotonicity.
|
||||||
|
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
|
||||||
|
update_time_of_last_gc(now);
|
||||||
|
|
||||||
// NOTE on abstract state transitions:
|
// NOTE on abstract state transitions:
|
||||||
// Mutators allocate-live and/or mark the mod-union table dirty
|
// Mutators allocate-live and/or mark the mod-union table dirty
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1042,7 +1042,11 @@ void ParNewGeneration::collect(bool full,
|
||||||
size_policy->avg_survived()->sample(from()->used());
|
size_policy->avg_survived()->sample(from()->used());
|
||||||
}
|
}
|
||||||
|
|
||||||
update_time_of_last_gc(os::javaTimeMillis());
|
// We need to use a monotonically non-deccreasing time in ms
|
||||||
|
// or we will see time-warp warnings and os::javaTimeMillis()
|
||||||
|
// does not guarantee monotonicity.
|
||||||
|
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
|
||||||
|
update_time_of_last_gc(now);
|
||||||
|
|
||||||
SpecializationStats::print();
|
SpecializationStats::print();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -655,7 +655,12 @@ void DefNewGeneration::collect(bool full,
|
||||||
from()->set_concurrent_iteration_safe_limit(from()->top());
|
from()->set_concurrent_iteration_safe_limit(from()->top());
|
||||||
to()->set_concurrent_iteration_safe_limit(to()->top());
|
to()->set_concurrent_iteration_safe_limit(to()->top());
|
||||||
SpecializationStats::print();
|
SpecializationStats::print();
|
||||||
update_time_of_last_gc(os::javaTimeMillis());
|
|
||||||
|
// We need to use a monotonically non-deccreasing time in ms
|
||||||
|
// or we will see time-warp warnings and os::javaTimeMillis()
|
||||||
|
// does not guarantee monotonicity.
|
||||||
|
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
|
||||||
|
update_time_of_last_gc(now);
|
||||||
}
|
}
|
||||||
|
|
||||||
class RemoveForwardPointerClosure: public ObjectClosure {
|
class RemoveForwardPointerClosure: public ObjectClosure {
|
||||||
|
|
|
@ -176,7 +176,11 @@ void GenMarkSweep::invoke_at_safepoint(int level, ReferenceProcessor* rp,
|
||||||
|
|
||||||
// Update time of last gc for all generations we collected
|
// Update time of last gc for all generations we collected
|
||||||
// (which curently is all the generations in the heap).
|
// (which curently is all the generations in the heap).
|
||||||
gch->update_time_of_last_gc(os::javaTimeMillis());
|
// We need to use a monotonically non-deccreasing time in ms
|
||||||
|
// or we will see time-warp warnings and os::javaTimeMillis()
|
||||||
|
// does not guarantee monotonicity.
|
||||||
|
jlong now = os::javaTimeNanos() / NANOSECS_PER_MILLISEC;
|
||||||
|
gch->update_time_of_last_gc(now);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenMarkSweep::allocate_stacks() {
|
void GenMarkSweep::allocate_stacks() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue