< prev index next >
src/share/vm/utilities/globalDefinitions.hpp
Print this page
@@ -198,21 +198,10 @@
const int LogHeapWordSize = 2;
#endif
const int HeapWordsPerLong = BytesPerLong / HeapWordSize;
const int LogHeapWordsPerLong = LogBytesPerLong - LogHeapWordSize;
-// The larger HeapWordSize for 64bit requires larger heaps
-// for the same application running in 64bit. See bug 4967770.
-// The minimum alignment to a heap word size is done. Other
-// parts of the memory system may require additional alignment
-// and are responsible for those alignments.
-#ifdef _LP64
-#define ScaleForWordSize(x) align_down_((x) * 13 / 10, HeapWordSize)
-#else
-#define ScaleForWordSize(x) (x)
-#endif
-
// The minimum number of native machine words necessary to contain "byte_size"
// bytes.
inline size_t heap_word_size(size_t byte_size) {
return (byte_size + (HeapWordSize-1)) >> LogHeapWordSize;
}
@@ -494,138 +483,10 @@
const bool support_IRIW_for_not_multiple_copy_atomic_cpu = true;
#else
const bool support_IRIW_for_not_multiple_copy_atomic_cpu = false;
#endif
-// The byte alignment to be used by Arena::Amalloc. See bugid 4169348.
-// Note: this value must be a power of 2
-
-#define ARENA_AMALLOC_ALIGNMENT (2*BytesPerWord)
-
-// Signed variants of alignment helpers. There are two versions of each, a macro
-// for use in places like enum definitions that require compile-time constant
-// expressions and a function for all other places so as to get type checking.
-
-// Using '(what) & ~align_mask(alignment)' to align 'what' down is broken when
-// 'alignment' is an unsigned int and 'what' is a wider type. The & operation
-// will widen the inverted mask, and not sign extend it, leading to a mask with
-// zeros in the most significant bits. The use of align_mask_widened() solves
-// this problem.
-#define align_mask(alignment) ((alignment) - 1)
-#define widen_to_type_of(what, type_carrier) (true ? (what) : (type_carrier))
-#define align_mask_widened(alignment, type_carrier) widen_to_type_of(align_mask(alignment), (type_carrier))
-
-#define align_down_(size, alignment) ((size) & ~align_mask_widened((alignment), (size)))
-
-#define align_up_(size, alignment) (align_down_((size) + align_mask(alignment), (alignment)))
-
-#define is_aligned_(size, alignment) ((size) == (align_up_((size), (alignment))))
-
-// Temporary declaration until this file has been restructured.
-template <typename T>
-bool is_power_of_2_t(T x) {
- return (x != T(0)) && ((x & (x - 1)) == T(0));
-}
-
-// Helpers to align sizes and check for alignment
-
-template <typename T, typename A>
-inline T align_up(T size, A alignment) {
- assert(is_power_of_2_t(alignment), "must be a power of 2: " UINT64_FORMAT, (uint64_t)alignment);
-
- T ret = align_up_(size, alignment);
- assert(is_aligned_(ret, alignment), "must be aligned: " UINT64_FORMAT, (uint64_t)ret);
-
- return ret;
-}
-
-template <typename T, typename A>
-inline T align_down(T size, A alignment) {
- assert(is_power_of_2_t(alignment), "must be a power of 2: " UINT64_FORMAT, (uint64_t)alignment);
-
- T ret = align_down_(size, alignment);
- assert(is_aligned_(ret, alignment), "must be aligned: " UINT64_FORMAT, (uint64_t)ret);
-
- return ret;
-}
-
-template <typename T, typename A>
-inline bool is_aligned(T size, A alignment) {
- assert(is_power_of_2_t(alignment), "must be a power of 2: " UINT64_FORMAT, (uint64_t)alignment);
-
- return is_aligned_(size, alignment);
-}
-
-// Align down with a lower bound. If the aligning results in 0, return 'alignment'.
-template <typename T, typename A>
-inline T align_down_bounded(T size, A alignment) {
- A aligned_size = align_down(size, alignment);
- return aligned_size > 0 ? aligned_size : alignment;
-}
-
-// Helpers to align pointers and check for alignment.
-
-template <typename T, typename A>
-inline T* align_up(T* ptr, A alignment) {
- return (T*)align_up((uintptr_t)ptr, alignment);
-}
-
-template <typename T, typename A>
-inline T* align_down(T* ptr, A alignment) {
- return (T*)align_down((uintptr_t)ptr, alignment);
-}
-
-template <typename T, typename A>
-inline bool is_aligned(T* ptr, A alignment) {
- return is_aligned((uintptr_t)ptr, alignment);
-}
-
-// Align metaspace objects by rounding up to natural word boundary
-template <typename T>
-inline T align_metadata_size(T size) {
- return align_up(size, 1);
-}
-
-// Align objects in the Java Heap by rounding up their size, in HeapWord units.
-template <typename T>
-inline T align_object_size(T word_size) {
- return align_up(word_size, MinObjAlignment);
-}
-
-inline bool is_object_aligned(size_t word_size) {
- return is_aligned(word_size, MinObjAlignment);
-}
-
-inline bool is_object_aligned(const void* addr) {
- return is_aligned(addr, MinObjAlignmentInBytes);
-}
-
-// Pad out certain offsets to jlong alignment, in HeapWord units.
-template <typename T>
-inline T align_object_offset(T offset) {
- return align_up(offset, HeapWordsPerLong);
-}
-
-// Clamp an address to be within a specific page
-// 1. If addr is on the page it is returned as is
-// 2. If addr is above the page_address the start of the *next* page will be returned
-// 3. Otherwise, if addr is below the page_address the start of the page will be returned
-template <typename T>
-inline T* clamp_address_in_page(T* addr, T* page_address, size_t page_size) {
- if (align_down(addr, page_size) == align_down(page_address, page_size)) {
- // address is in the specified page, just return it as is
- return addr;
- } else if (addr > page_address) {
- // address is above specified page, return start of next page
- return align_down(page_address, page_size) + page_size;
- } else {
- // address is below specified page, return start of page
- return align_down(page_address, page_size);
- }
-}
-
-
// The expected size in bytes of a cache line, used to pad data structures.
#ifndef DEFAULT_CACHE_LINE_SIZE
#define DEFAULT_CACHE_LINE_SIZE 64
#endif
< prev index next >