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
|
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::to_oop(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
|