< prev index next >

src/hotspot/share/gc/g1/g1ConcurrentRefine.cpp

Print this page
rev 53582 : imported patch rename

*** 1,7 **** /* ! * Copyright (c) 2001, 2018, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2001, 2019, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 24,33 **** --- 24,34 ---- #include "precompiled.hpp" #include "gc/g1/g1BarrierSet.hpp" #include "gc/g1/g1ConcurrentRefine.hpp" #include "gc/g1/g1ConcurrentRefineThread.hpp" + #include "gc/g1/g1DirtyCardQueue.hpp" #include "logging/log.hpp" #include "memory/allocation.inline.hpp" #include "runtime/java.hpp" #include "runtime/thread.hpp" #include "utilities/debug.hpp"
*** 376,394 **** } void G1ConcurrentRefine::adjust(double update_rs_time, size_t update_rs_processed_buffers, double goal_ms) { ! DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); if (G1UseAdaptiveConcRefinement) { update_zones(update_rs_time, update_rs_processed_buffers, goal_ms); // Change the barrier params if (max_num_threads() == 0) { // Disable dcqs notification when there are no threads to notify. ! dcqs.set_process_completed_buffers_threshold(DirtyCardQueueSet::ProcessCompletedBuffersThresholdNever); } else { // Worker 0 is the primary; wakeup is via dcqs notification. STATIC_ASSERT(max_yellow_zone <= INT_MAX); size_t activate = activation_threshold(0); dcqs.set_process_completed_buffers_threshold(activate); --- 377,395 ---- } void G1ConcurrentRefine::adjust(double update_rs_time, size_t update_rs_processed_buffers, double goal_ms) { ! G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); if (G1UseAdaptiveConcRefinement) { update_zones(update_rs_time, update_rs_processed_buffers, goal_ms); // Change the barrier params if (max_num_threads() == 0) { // Disable dcqs notification when there are no threads to notify. ! dcqs.set_process_completed_buffers_threshold(G1DirtyCardQueueSet::ProcessCompletedBuffersThresholdNever); } else { // Worker 0 is the primary; wakeup is via dcqs notification. STATIC_ASSERT(max_yellow_zone <= INT_MAX); size_t activate = activation_threshold(0); dcqs.set_process_completed_buffers_threshold(activate);
*** 415,435 **** Thresholds thresholds = calc_thresholds(_green_zone, _yellow_zone, worker_id); return deactivation_level(thresholds); } uint G1ConcurrentRefine::worker_id_offset() { ! return DirtyCardQueueSet::num_par_ids(); } void G1ConcurrentRefine::maybe_activate_more_threads(uint worker_id, size_t num_cur_buffers) { if (num_cur_buffers > activation_threshold(worker_id + 1)) { _thread_control.maybe_activate_next(worker_id); } } bool G1ConcurrentRefine::do_refinement_step(uint worker_id) { ! DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); size_t curr_buffer_num = dcqs.completed_buffers_num(); // If the number of the buffers falls down into the yellow zone, // that means that the transition period after the evacuation pause has ended. // Since the value written to the DCQS is the same for all threads, there is no --- 416,436 ---- Thresholds thresholds = calc_thresholds(_green_zone, _yellow_zone, worker_id); return deactivation_level(thresholds); } uint G1ConcurrentRefine::worker_id_offset() { ! return G1DirtyCardQueueSet::num_par_ids(); } void G1ConcurrentRefine::maybe_activate_more_threads(uint worker_id, size_t num_cur_buffers) { if (num_cur_buffers > activation_threshold(worker_id + 1)) { _thread_control.maybe_activate_next(worker_id); } } bool G1ConcurrentRefine::do_refinement_step(uint worker_id) { ! G1DirtyCardQueueSet& dcqs = G1BarrierSet::dirty_card_queue_set(); size_t curr_buffer_num = dcqs.completed_buffers_num(); // If the number of the buffers falls down into the yellow zone, // that means that the transition period after the evacuation pause has ended. // Since the value written to the DCQS is the same for all threads, there is no
< prev index next >