--- old/src/share/vm/gc/g1/concurrentMarkThread.hpp 2017-02-17 20:09:44.545994119 -0500 +++ new/src/share/vm/gc/g1/concurrentMarkThread.hpp 2017-02-17 20:09:44.417987573 -0500 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2016, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2017, 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,6 +30,7 @@ // The Concurrent Mark GC Thread triggers the parallel G1CMConcurrentMarkingTasks // as well as handling various marking cleanup. +class ConcurrentGCPhaseManager; class G1ConcurrentMark; class G1Policy; @@ -50,6 +51,10 @@ volatile State _state; + // WhiteBox testing support. + int _requested_phase; + ConcurrentGCPhaseManager* _phase_manager; + void sleepBeforeNextCycle(); void delay_to_keep_mmu(G1Policy* g1_policy, bool remark); @@ -83,6 +88,11 @@ // as the CM thread might take some time to wake up before noticing // that started() is set and set in_progress(). bool during_cycle() { return !idle(); } + + // WhiteBox testing support. + bool request_concurrent_phase(const char* phase); + + ConcurrentGCPhaseManager* phase_manager() const { return _phase_manager; } }; #endif // SHARE_VM_GC_G1_CONCURRENTMARKTHREAD_HPP