equal
deleted
inserted
replaced
400 // for use in places like enum definitions that require compile-time constant |
400 // for use in places like enum definitions that require compile-time constant |
401 // expressions and a function for all other places so as to get type checking. |
401 // expressions and a function for all other places so as to get type checking. |
402 |
402 |
403 #define align_size_up_(size, alignment) (((size) + ((alignment) - 1)) & ~((alignment) - 1)) |
403 #define align_size_up_(size, alignment) (((size) + ((alignment) - 1)) & ~((alignment) - 1)) |
404 |
404 |
|
405 inline bool is_size_aligned(size_t size, size_t alignment) { |
|
406 return align_size_up_(size, alignment) == size; |
|
407 } |
|
408 |
|
409 inline bool is_ptr_aligned(void* ptr, size_t alignment) { |
|
410 return align_size_up_((intptr_t)ptr, (intptr_t)alignment) == (intptr_t)ptr; |
|
411 } |
|
412 |
405 inline intptr_t align_size_up(intptr_t size, intptr_t alignment) { |
413 inline intptr_t align_size_up(intptr_t size, intptr_t alignment) { |
406 return align_size_up_(size, alignment); |
414 return align_size_up_(size, alignment); |
407 } |
415 } |
408 |
416 |
409 #define align_size_down_(size, alignment) ((size) & ~((alignment) - 1)) |
417 #define align_size_down_(size, alignment) ((size) & ~((alignment) - 1)) |
411 inline intptr_t align_size_down(intptr_t size, intptr_t alignment) { |
419 inline intptr_t align_size_down(intptr_t size, intptr_t alignment) { |
412 return align_size_down_(size, alignment); |
420 return align_size_down_(size, alignment); |
413 } |
421 } |
414 |
422 |
415 #define is_size_aligned_(size, alignment) ((size) == (align_size_up_(size, alignment))) |
423 #define is_size_aligned_(size, alignment) ((size) == (align_size_up_(size, alignment))) |
|
424 |
|
425 inline void* align_ptr_up(void* ptr, size_t alignment) { |
|
426 return (void*)align_size_up((intptr_t)ptr, (intptr_t)alignment); |
|
427 } |
|
428 |
|
429 inline void* align_ptr_down(void* ptr, size_t alignment) { |
|
430 return (void*)align_size_down((intptr_t)ptr, (intptr_t)alignment); |
|
431 } |
416 |
432 |
417 // Align objects by rounding up their size, in HeapWord units. |
433 // Align objects by rounding up their size, in HeapWord units. |
418 |
434 |
419 #define align_object_size_(size) align_size_up_(size, MinObjAlignment) |
435 #define align_object_size_(size) align_size_up_(size, MinObjAlignment) |
420 |
436 |