1 /* |
1 /* |
2 * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP |
26 #define SHARE_VM_GC_IMPLEMENTATION_G1_HEAPREGIONSEQ_INLINE_HPP |
27 |
27 |
28 #include "gc_implementation/g1/heapRegion.hpp" |
28 #include "gc_implementation/g1/heapRegion.hpp" |
29 #include "gc_implementation/g1/heapRegionSeq.hpp" |
29 #include "gc_implementation/g1/heapRegionSeq.hpp" |
30 |
30 |
31 inline size_t HeapRegionSeq::addr_to_index_biased(HeapWord* addr) const { |
31 inline uintx HeapRegionSeq::addr_to_index_biased(HeapWord* addr) const { |
32 assert(_heap_bottom <= addr && addr < _heap_end, |
32 assert(_heap_bottom <= addr && addr < _heap_end, |
33 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT" end: "PTR_FORMAT, |
33 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT" end: "PTR_FORMAT, |
34 addr, _heap_bottom, _heap_end)); |
34 addr, _heap_bottom, _heap_end)); |
35 size_t index = (size_t) addr >> _region_shift; |
35 uintx index = (uintx) addr >> _region_shift; |
36 return index; |
36 return index; |
37 } |
37 } |
38 |
38 |
39 inline HeapRegion* HeapRegionSeq::addr_to_region_unsafe(HeapWord* addr) const { |
39 inline HeapRegion* HeapRegionSeq::addr_to_region_unsafe(HeapWord* addr) const { |
40 assert(_heap_bottom <= addr && addr < _heap_end, |
40 assert(_heap_bottom <= addr && addr < _heap_end, |
41 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT" end: "PTR_FORMAT, |
41 err_msg("addr: "PTR_FORMAT" bottom: "PTR_FORMAT" end: "PTR_FORMAT, |
42 addr, _heap_bottom, _heap_end)); |
42 addr, _heap_bottom, _heap_end)); |
43 size_t index_biased = addr_to_index_biased(addr); |
43 uintx index_biased = addr_to_index_biased(addr); |
44 HeapRegion* hr = _regions_biased[index_biased]; |
44 HeapRegion* hr = _regions_biased[index_biased]; |
45 assert(hr != NULL, "invariant"); |
45 assert(hr != NULL, "invariant"); |
46 return hr; |
46 return hr; |
47 } |
47 } |
48 |
48 |
53 return addr_to_region_unsafe(addr); |
53 return addr_to_region_unsafe(addr); |
54 } |
54 } |
55 return NULL; |
55 return NULL; |
56 } |
56 } |
57 |
57 |
58 inline HeapRegion* HeapRegionSeq::at(size_t index) const { |
58 inline HeapRegion* HeapRegionSeq::at(uint index) const { |
59 assert(index < length(), "pre-condition"); |
59 assert(index < length(), "pre-condition"); |
60 HeapRegion* hr = _regions[index]; |
60 HeapRegion* hr = _regions[index]; |
61 assert(hr != NULL, "sanity"); |
61 assert(hr != NULL, "sanity"); |
62 assert(hr->hrs_index() == index, "sanity"); |
62 assert(hr->hrs_index() == index, "sanity"); |
63 return hr; |
63 return hr; |