--- old/src/hotspot/share/memory/metaspace/chunkHeaderPool.cpp 2020-09-04 13:58:19.161547967 +0200 +++ /dev/null 2020-09-04 12:37:41.765504620 +0200 @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. - * Copyright (c) 2020 SAP SE. 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. - * - */ - -#include "precompiled.hpp" -#include "memory/metaspace/chunkHeaderPool.hpp" -#include "runtime/os.hpp" -#include "utilities/debug.hpp" -#include "utilities/globalDefinitions.hpp" - -namespace metaspace { - - -// Returns reference to the one global chunk header pool. -ChunkHeaderPool* ChunkHeaderPool::_chunkHeaderPool = NULL; - - -ChunkHeaderPool::ChunkHeaderPool() - : _num_slabs(), _first_slab(NULL), _current_slab(NULL) -{ -} - -// Note: the global chunk header pool gets never deleted; so this destructor only -// exists for the sake of tests. -ChunkHeaderPool::~ChunkHeaderPool() { - slab_t* s = _first_slab; - while (s != NULL) { - slab_t* next_slab = s->next; - os::free(s); - s = next_slab; - } -} - -void ChunkHeaderPool::allocate_new_slab() { - slab_t* slab = new slab_t(); - if (_current_slab != NULL) { - _current_slab->next = slab; - } - _current_slab = slab; - if (_first_slab == NULL) { - _first_slab = slab; - } - _num_slabs.increment(); -} - -// Returns size of memory used. -size_t ChunkHeaderPool::memory_footprint_words() const { - return (_num_slabs.get() * sizeof(slab_t)) / BytesPerWord; -} - -void ChunkHeaderPool::initialize() { - assert(_chunkHeaderPool == NULL, "only once"); - _chunkHeaderPool = new ChunkHeaderPool(); -} - -#ifdef ASSERT -void ChunkHeaderPool::verify(bool slow) const { - const slab_t* s = _first_slab; - int num = 0; - while (s != NULL) { - assert(s->top >= 0 && s->top <= slab_capacity, - "invalid slab at " PTR_FORMAT ", top: %d, slab cap: %d", - p2i(s), s->top, slab_capacity ); - s = s->next; - num ++; - } - _num_slabs.check(num); -} -#endif - -} // namespace metaspace - -