39 return value; 40 } 41 42 return (size_t)1 << (log2_intptr(value) + 1); 43 } 44 45 inline size_t ZUtils::round_down_power_of_2(size_t value) { 46 assert(value != 0, "Invalid value"); 47 return (size_t)1 << log2_intptr(value); 48 } 49 50 inline size_t ZUtils::bytes_to_words(size_t size_in_bytes) { 51 assert(is_aligned(size_in_bytes, BytesPerWord), "Size not word aligned"); 52 return size_in_bytes >> LogBytesPerWord; 53 } 54 55 inline size_t ZUtils::words_to_bytes(size_t size_in_words) { 56 return size_in_words << LogBytesPerWord; 57 } 58 59 inline size_t ZUtils::object_size(uintptr_t addr) { 60 return words_to_bytes(ZOop::from_address(addr)->size()); 61 } 62 63 inline void ZUtils::object_copy(uintptr_t from, uintptr_t to, size_t size) { 64 Copy::aligned_disjoint_words((HeapWord*)from, (HeapWord*)to, bytes_to_words(size)); 65 } 66 67 #endif // SHARE_GC_Z_ZUTILS_INLINE_HPP | 39 return value; 40 } 41 42 return (size_t)1 << (log2_intptr(value) + 1); 43 } 44 45 inline size_t ZUtils::round_down_power_of_2(size_t value) { 46 assert(value != 0, "Invalid value"); 47 return (size_t)1 << log2_intptr(value); 48 } 49 50 inline size_t ZUtils::bytes_to_words(size_t size_in_bytes) { 51 assert(is_aligned(size_in_bytes, BytesPerWord), "Size not word aligned"); 52 return size_in_bytes >> LogBytesPerWord; 53 } 54 55 inline size_t ZUtils::words_to_bytes(size_t size_in_words) { 56 return size_in_words << LogBytesPerWord; 57 } 58 59 inline void ZUtils::zero(uintptr_t addr, size_t size) { 60 Copy::zero_to_bytes((void*)addr, size); 61 } 62 63 inline size_t ZUtils::object_size(uintptr_t addr) { 64 return words_to_bytes(ZOop::from_address(addr)->size()); 65 } 66 67 inline void ZUtils::object_copy(uintptr_t from, uintptr_t to, size_t size) { 68 Copy::aligned_disjoint_words((HeapWord*)from, (HeapWord*)to, bytes_to_words(size)); 69 } 70 71 #endif // SHARE_GC_Z_ZUTILS_INLINE_HPP |