< prev index next >
src/hotspot/share/gc/z/zGranuleMap.inline.hpp
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2017, 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.
@@ -19,66 +19,66 @@
* 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_GC_Z_ZADDRESSRANGEMAP_INLINE_HPP
-#define SHARE_GC_Z_ZADDRESSRANGEMAP_INLINE_HPP
+#ifndef SHARE_GC_Z_ZGRANULEMAP_INLINE_HPP
+#define SHARE_GC_Z_ZGRANULEMAP_INLINE_HPP
#include "gc/z/zAddress.inline.hpp"
-#include "gc/z/zAddressRangeMap.hpp"
#include "gc/z/zGlobals.hpp"
+#include "gc/z/zGranuleMap.hpp"
#include "memory/allocation.inline.hpp"
-template <typename T, size_t AddressRangeShift>
-ZAddressRangeMap<T, AddressRangeShift>::ZAddressRangeMap() :
+template <typename T>
+inline ZGranuleMap<T>::ZGranuleMap() :
_map(MmapArrayAllocator<T>::allocate(size(), mtGC)) {}
-template <typename T, size_t AddressRangeShift>
-ZAddressRangeMap<T, AddressRangeShift>::~ZAddressRangeMap() {
+template <typename T>
+inline ZGranuleMap<T>::~ZGranuleMap() {
MmapArrayAllocator<T>::free(_map, size());
}
-template <typename T, size_t AddressRangeShift>
-size_t ZAddressRangeMap<T, AddressRangeShift>::index_for_addr(uintptr_t addr) const {
+template <typename T>
+inline size_t ZGranuleMap<T>::index_for_addr(uintptr_t addr) const {
assert(!ZAddress::is_null(addr), "Invalid address");
- const size_t index = ZAddress::offset(addr) >> AddressRangeShift;
+ const size_t index = ZAddress::offset(addr) >> ZGranuleSizeShift;
assert(index < size(), "Invalid index");
return index;
}
-template <typename T, size_t AddressRangeShift>
-size_t ZAddressRangeMap<T, AddressRangeShift>::size() const {
- return ZAddressOffsetMax >> AddressRangeShift;
+template <typename T>
+inline size_t ZGranuleMap<T>::size() const {
+ return ZAddressOffsetMax >> ZGranuleSizeShift;
}
-template <typename T, size_t AddressRangeShift>
-T ZAddressRangeMap<T, AddressRangeShift>::get(uintptr_t addr) const {
- const uintptr_t index = index_for_addr(addr);
+template <typename T>
+inline T ZGranuleMap<T>::get(uintptr_t addr) const {
+ const size_t index = index_for_addr(addr);
return _map[index];
}
-template <typename T, size_t AddressRangeShift>
-void ZAddressRangeMap<T, AddressRangeShift>::put(uintptr_t addr, T value) {
- const uintptr_t index = index_for_addr(addr);
+template <typename T>
+inline void ZGranuleMap<T>::put(uintptr_t addr, T value) {
+ const size_t index = index_for_addr(addr);
_map[index] = value;
}
-template <typename T, size_t AddressRangeShift>
-inline ZAddressRangeMapIterator<T, AddressRangeShift>::ZAddressRangeMapIterator(const ZAddressRangeMap<T, AddressRangeShift>* map) :
+template <typename T>
+inline ZGranuleMapIterator<T>::ZGranuleMapIterator(const ZGranuleMap<T>* map) :
_map(map),
_next(0) {}
-template <typename T, size_t AddressRangeShift>
-inline bool ZAddressRangeMapIterator<T, AddressRangeShift>::next(T* value) {
+template <typename T>
+inline bool ZGranuleMapIterator<T>::next(T* value) {
if (_next < _map->size()) {
*value = _map->_map[_next++];
return true;
}
// End of map
return false;
}
-#endif // SHARE_GC_Z_ZADDRESSRANGEMAP_INLINE_HPP
+#endif // SHARE_GC_Z_ZGRANULEMAP_INLINE_HPP
< prev index next >