Mercurial > hg > jdk9-shenandoah > hotspot
changeset 9658:a3fbc02ec341
8133470: Uses of Atomic methods in plab.hpp should be moved to .inline.hpp file
Summary: Fix include file dependencies according to general guidelines for plab.hpp
Reviewed-by: ehelin, mgerdin
author | tschatzl |
---|---|
date | Wed, 19 Aug 2015 13:50:50 +0200 |
parents | a8c6a4d765bb |
children | 8e371a1ba7df |
files | src/share/vm/gc/cms/parNewGeneration.cpp src/share/vm/gc/cms/parNewGeneration.hpp src/share/vm/gc/cms/parNewGeneration.inline.hpp src/share/vm/gc/g1/g1Allocator.hpp src/share/vm/gc/g1/g1Allocator.inline.hpp src/share/vm/gc/g1/g1Allocator_ext.cpp src/share/vm/gc/g1/g1CollectedHeap.cpp src/share/vm/gc/g1/g1CollectedHeap.hpp src/share/vm/gc/g1/g1CollectorPolicy.hpp src/share/vm/gc/g1/g1ParScanThreadState.cpp src/share/vm/gc/g1/g1ParScanThreadState.hpp src/share/vm/gc/shared/plab.cpp src/share/vm/gc/shared/plab.hpp src/share/vm/gc/shared/plab.inline.hpp |
diffstat | 14 files changed, 90 insertions(+), 38 deletions(-) [+] |
line wrap: on
line diff
--- a/src/share/vm/gc/cms/parNewGeneration.cpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/cms/parNewGeneration.cpp Wed Aug 19 13:50:50 2015 +0200 @@ -25,7 +25,7 @@ #include "precompiled.hpp" #include "gc/cms/compactibleFreeListSpace.hpp" #include "gc/cms/concurrentMarkSweepGeneration.hpp" -#include "gc/cms/parNewGeneration.hpp" +#include "gc/cms/parNewGeneration.inline.hpp" #include "gc/cms/parOopClosures.inline.hpp" #include "gc/serial/defNewGeneration.inline.hpp" #include "gc/shared/adaptiveSizePolicy.hpp"
--- a/src/share/vm/gc/cms/parNewGeneration.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/cms/parNewGeneration.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -169,11 +169,7 @@ // Allocate a to-space block of size "sz", or else return NULL. HeapWord* alloc_in_to_space_slow(size_t word_sz); - HeapWord* alloc_in_to_space(size_t word_sz) { - HeapWord* obj = to_space_alloc_buffer()->allocate_aligned(word_sz, SurvivorAlignmentInBytes); - if (obj != NULL) return obj; - else return alloc_in_to_space_slow(word_sz); - } + inline HeapWord* alloc_in_to_space(size_t word_sz); HeapWord* young_old_boundary() { return _young_old_boundary; }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/share/vm/gc/cms/parNewGeneration.inline.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2015, 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + * + */ + +#ifndef SHARE_VM_GC_CMS_PARNEWGENERATION_INLINE_HPP +#define SHARE_VM_GC_CMS_PARNEWGENERATION_INLINE_HPP + +#include "gc/cms/parNewGeneration.hpp" +#include "gc/shared/plab.inline.hpp" +#include "utilities/globalDefinitions.hpp" + +inline HeapWord* ParScanThreadState::alloc_in_to_space(size_t word_sz) { + HeapWord* obj = to_space_alloc_buffer()->allocate_aligned(word_sz, SurvivorAlignmentInBytes); + if (obj != NULL) return obj; + else return alloc_in_to_space_slow(word_sz); +} +#endif // SHARE_VM_GC_CMS_PARNEWGENERATION_INLINE_HPP
--- a/src/share/vm/gc/g1/g1Allocator.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1Allocator.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -247,16 +247,9 @@ // Allocate word_sz words in the PLAB of dest. Returns the address of the // allocated memory, NULL if not successful. - HeapWord* plab_allocate(InCSetState dest, - size_t word_sz, - AllocationContext_t context) { - G1PLAB* buffer = alloc_buffer(dest, context); - if (_survivor_alignment_bytes == 0 || !dest.is_young()) { - return buffer->allocate(word_sz); - } else { - return buffer->allocate_aligned(word_sz, _survivor_alignment_bytes); - } - } + inline HeapWord* plab_allocate(InCSetState dest, + size_t word_sz, + AllocationContext_t context); HeapWord* allocate(InCSetState dest, size_t word_sz,
--- a/src/share/vm/gc/g1/g1Allocator.inline.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1Allocator.inline.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -27,6 +27,7 @@ #include "gc/g1/g1Allocator.hpp" #include "gc/g1/g1AllocRegion.inline.hpp" +#include "gc/shared/plab.inline.hpp" HeapWord* G1Allocator::attempt_allocation(size_t word_size, AllocationContext_t context) { return mutator_alloc_region(context)->attempt_allocation(word_size, false /* bot_updates */); @@ -43,4 +44,15 @@ return mutator_alloc_region(context)->attempt_allocation_force(word_size, false /* bot_updates */); } +inline HeapWord* G1PLABAllocator::plab_allocate(InCSetState dest, + size_t word_sz, + AllocationContext_t context) { + G1PLAB* buffer = alloc_buffer(dest, context); + if (_survivor_alignment_bytes == 0 || !dest.is_young()) { + return buffer->allocate(word_sz); + } else { + return buffer->allocate_aligned(word_sz, _survivor_alignment_bytes); + } +} + #endif // SHARE_VM_GC_G1_G1ALLOCATOR_HPP
--- a/src/share/vm/gc/g1/g1Allocator_ext.cpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1Allocator_ext.cpp Wed Aug 19 13:50:50 2015 +0200 @@ -23,7 +23,7 @@ */ #include "precompiled.hpp" -#include "gc/g1/g1Allocator.hpp" +#include "gc/g1/g1Allocator.inline.hpp" #include "gc/g1/g1CollectedHeap.hpp" G1Allocator* G1Allocator::create_allocator(G1CollectedHeap* g1h) {
--- a/src/share/vm/gc/g1/g1CollectedHeap.cpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1CollectedHeap.cpp Wed Aug 19 13:50:50 2015 +0200 @@ -6217,6 +6217,10 @@ } } +bool G1CollectedHeap::is_old_gc_alloc_region(HeapRegion* hr) { + return _allocator->is_retained_old_region(hr); +} + void G1CollectedHeap::set_region_short_lived_locked(HeapRegion* hr) { _young_list->push_region(hr); }
--- a/src/share/vm/gc/g1/g1CollectedHeap.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1CollectedHeap.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -28,7 +28,6 @@ #include "gc/g1/concurrentMark.hpp" #include "gc/g1/evacuationInfo.hpp" #include "gc/g1/g1AllocationContext.hpp" -#include "gc/g1/g1Allocator.hpp" #include "gc/g1/g1BiasedArray.hpp" #include "gc/g1/g1CollectorState.hpp" #include "gc/g1/g1HRPrinter.hpp" @@ -41,6 +40,7 @@ #include "gc/g1/heapRegionSet.hpp" #include "gc/shared/barrierSet.hpp" #include "gc/shared/collectedHeap.hpp" +#include "gc/shared/plab.hpp" #include "memory/memRegion.hpp" #include "utilities/stack.hpp" @@ -76,6 +76,8 @@ class nmethod; class Ticks; class WorkGang; +class G1Allocator; +class G1ArchiveAllocator; typedef OverflowTaskQueue<StarTask, mtGC> RefToScanQueue; typedef GenericTaskQueueSet<RefToScanQueue, mtGC> RefToScanQueueSet; @@ -1195,9 +1197,7 @@ // Determine whether the given region is one that we are using as an // old GC alloc region. - bool is_old_gc_alloc_region(HeapRegion* hr) { - return _allocator->is_retained_old_region(hr); - } + bool is_old_gc_alloc_region(HeapRegion* hr); // Perform a collection of the heap; intended for use in implementing // "System.gc". This probably implies as full a collection as the
--- a/src/share/vm/gc/g1/g1CollectorPolicy.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1CollectorPolicy.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -26,8 +26,8 @@ #define SHARE_VM_GC_G1_G1COLLECTORPOLICY_HPP #include "gc/g1/collectionSetChooser.hpp" -#include "gc/g1/g1Allocator.hpp" #include "gc/g1/g1CollectorState.hpp" +#include "gc/g1/g1InCSetState.hpp" #include "gc/g1/g1MMUTracker.hpp" #include "gc/shared/collectorPolicy.hpp"
--- a/src/share/vm/gc/g1/g1ParScanThreadState.cpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1ParScanThreadState.cpp Wed Aug 19 13:50:50 2015 +0200 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "gc/g1/g1Allocator.inline.hpp" #include "gc/g1/g1CollectedHeap.inline.hpp" #include "gc/g1/g1OopClosures.inline.hpp" #include "gc/g1/g1ParScanThreadState.inline.hpp"
--- a/src/share/vm/gc/g1/g1ParScanThreadState.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/g1/g1ParScanThreadState.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -35,6 +35,7 @@ #include "memory/allocation.hpp" #include "oops/oop.hpp" +class G1PLABAllocator; class HeapRegion; class outputStream;
--- a/src/share/vm/gc/shared/plab.cpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/shared/plab.cpp Wed Aug 19 13:50:50 2015 +0200 @@ -24,7 +24,7 @@ #include "precompiled.hpp" #include "gc/shared/collectedHeap.hpp" -#include "gc/shared/plab.hpp" +#include "gc/shared/plab.inline.hpp" #include "gc/shared/threadLocalAllocBuffer.hpp" #include "oops/arrayOop.hpp" #include "oops/oop.inline.hpp"
--- a/src/share/vm/gc/shared/plab.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/shared/plab.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -95,7 +95,7 @@ } // Allocate the object aligned to "alignment_in_bytes". - HeapWord* allocate_aligned(size_t word_sz, unsigned short alignment_in_bytes); + inline HeapWord* allocate_aligned(size_t word_sz, unsigned short alignment_in_bytes); // Undo any allocation in the buffer, which is required to be of the // "obj" of the given "word_sz". @@ -189,21 +189,13 @@ // updates _desired_plab_sz and clears sensor accumulators. void adjust_desired_plab_sz(); - void add_allocated(size_t v) { - Atomic::add_ptr(v, &_allocated); - } + inline void add_allocated(size_t v); - void add_unused(size_t v) { - Atomic::add_ptr(v, &_unused); - } + inline void add_unused(size_t v); - void add_wasted(size_t v) { - Atomic::add_ptr(v, &_wasted); - } + inline void add_wasted(size_t v); - void add_undo_wasted(size_t v) { - Atomic::add_ptr(v, &_undo_wasted); - } + inline void add_undo_wasted(size_t v); }; #endif // SHARE_VM_GC_SHARED_PLAB_HPP
--- a/src/share/vm/gc/shared/plab.inline.hpp Wed Aug 19 13:47:40 2015 +0200 +++ b/src/share/vm/gc/shared/plab.inline.hpp Wed Aug 19 13:50:50 2015 +0200 @@ -27,9 +27,9 @@ #include "gc/shared/collectedHeap.inline.hpp" #include "gc/shared/plab.hpp" +#include "runtime/atomic.inline.hpp" -HeapWord* PLAB::allocate_aligned(size_t word_sz, unsigned short alignment_in_bytes) { - +inline HeapWord* PLAB::allocate_aligned(size_t word_sz, unsigned short alignment_in_bytes) { HeapWord* res = CollectedHeap::align_allocation_or_fail(_top, _end, alignment_in_bytes); if (res == NULL) { return NULL; @@ -41,4 +41,20 @@ return allocate(word_sz); } +void PLABStats::add_allocated(size_t v) { + Atomic::add_ptr(v, &_allocated); +} + +void PLABStats::add_unused(size_t v) { + Atomic::add_ptr(v, &_unused); +} + +void PLABStats::add_wasted(size_t v) { + Atomic::add_ptr(v, &_wasted); +} + +void PLABStats::add_undo_wasted(size_t v) { + Atomic::add_ptr(v, &_undo_wasted); +} + #endif // SHARE_VM_GC_SHARED_PLAB_INLINE_HPP