< prev index next >
src/hotspot/share/utilities/globalDefinitions.hpp
Print this page
@@ -1046,11 +1046,11 @@
return i;
}
//* largest i such that 2^i <= x
// A negative value of 'x' will return '63'
-inline int log2_long(unsigned long x) {
+inline int log2_long(julong x) {
int i = -1;
julong p = 1;
while (p != 0 && p <= x) {
// p = 2^(i+1) && p <= x (i.e., 2^(i+1) <= x)
i++; p *= 2;
@@ -1062,20 +1062,28 @@
inline int log2_intptr(intptr_t x) {
return log2_intptr((uintptr_t)x);
}
-inline int log2_intptr(int x) {
+inline int log2_int(int x) {
+ STATIC_ASSERT(sizeof(int) <= sizeof(uintptr_t));
return log2_intptr((uintptr_t)x);
}
-inline int log2_intptr(uint x) {
+inline int log2_jint(jint x) {
+ STATIC_ASSERT(sizeof(jint) <= sizeof(uintptr_t));
return log2_intptr((uintptr_t)x);
}
-inline int log2_long(jlong x) {
- return log2_long((unsigned long)x);
+inline int log2_uint(uint x) {
+ STATIC_ASSERT(sizeof(uint) <= sizeof(uintptr_t));
+ return log2_intptr((uintptr_t)x);
+}
+
+inline int log2_jlong(jlong x) {
+ STATIC_ASSERT(sizeof(jlong) <= sizeof(julong));
+ return log2_long((julong)x);
}
//* the argument must be exactly a power of 2
inline int exact_log2(intptr_t x) {
assert(is_power_of_2(x), "x must be a power of 2: " INTPTR_FORMAT, x);
< prev index next >