src/share/vm/gc_implementation/shared/immutableSpace.hpp

Thu, 13 Feb 2014 17:44:39 +0100

author
stefank
date
Thu, 13 Feb 2014 17:44:39 +0100
changeset 6971
7426d8d76305
parent 4037
da91efe96a93
child 6876
710a3c8b516e
permissions
-rw-r--r--

8034761: Remove the do_code_roots parameter from process_strong_roots
Reviewed-by: tschatzl, mgerdin, jmasa

duke@435 1 /*
brutisso@3711 2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
duke@435 22 *
duke@435 23 */
duke@435 24
stefank@2314 25 #ifndef SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
stefank@2314 26 #define SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
stefank@2314 27
stefank@2314 28 #include "memory/iterator.hpp"
stefank@2314 29
duke@435 30 // An ImmutableSpace is a viewport into a contiguous range
duke@435 31 // (or subrange) of previously allocated objects.
duke@435 32
duke@435 33 // Invariant: bottom() and end() are on page_size boundaries and
duke@435 34 // bottom() <= end()
duke@435 35
zgu@3900 36 class ImmutableSpace: public CHeapObj<mtGC> {
duke@435 37 friend class VMStructs;
duke@435 38 protected:
duke@435 39 HeapWord* _bottom;
duke@435 40 HeapWord* _end;
duke@435 41
duke@435 42 public:
duke@435 43 ImmutableSpace() { _bottom = NULL; _end = NULL; }
duke@435 44 HeapWord* bottom() const { return _bottom; }
duke@435 45 HeapWord* end() const { return _end; }
duke@435 46
duke@435 47 MemRegion region() const { return MemRegion(bottom(), end()); }
duke@435 48
duke@435 49 // Initialization
duke@435 50 void initialize(MemRegion mr);
duke@435 51
duke@435 52 bool contains(const void* p) const { return _bottom <= p && p < _end; }
duke@435 53
duke@435 54 // Size computations. Sizes are in bytes.
duke@435 55 size_t capacity_in_bytes() const { return capacity_in_words() * HeapWordSize; }
duke@435 56
duke@435 57 // Size computations. Sizes are in heapwords.
iveresov@808 58 size_t capacity_in_words() const { return pointer_delta(end(), bottom()); }
iveresov@808 59 virtual size_t capacity_in_words(Thread*) const { return capacity_in_words(); }
duke@435 60
duke@435 61 // Iteration.
coleenp@4037 62 virtual void oop_iterate(ExtendedOopClosure* cl);
duke@435 63 virtual void object_iterate(ObjectClosure* cl);
duke@435 64
duke@435 65 // Debugging
duke@435 66 virtual void print() const PRODUCT_RETURN;
duke@435 67 virtual void print_short() const PRODUCT_RETURN;
brutisso@3711 68 virtual void verify();
duke@435 69 };
stefank@2314 70
stefank@2314 71 #endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP

mercurial