Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8178489

Make align functions more type safe and consistent

XMLWordPrintable

    • Icon: Enhancement Enhancement
    • Resolution: Fixed
    • Icon: P4 P4
    • 10
    • 10
    • hotspot
    • None
    • gc
    • b21

      Currently, the align functions forces the user to often explicitly cast either the input parameters, or the return type, or both.

      Two examples of the current API:
      inline intptr_t align_size_up(intptr_t size, intptr_t alignment);
      inline void* align_ptr_up(const void* ptr, size_t alignment);

      I propose that we change the API to use templates to return the aligned value as the same type as the type of the unaligned input.

      The proposed API would look like this:

      template <typename T, typename A>
      inline T align_size_up(T size, A alignment);

      template <typename T, typename A>
      inline T* align_ptr_up(T* ptr, A alignment);

      and a follow-up RFE would get rid of _size_ and _ptr_ from the names.

      Usages of these align functions would then look like:

      size_t aligned_size = align_up(alloc_size, os::vm_page_size())
      HeapWord* aligned_top = align_up(top, region_size)

            stefank Stefan Karlsson
            stefank Stefan Karlsson
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: