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

Make align functions more type safe and consistent

    XMLWordPrintable

    Details

    • Type: Enhancement
    • Status: Resolved
    • Priority: P4
    • Resolution: Fixed
    • Affects Version/s: 10
    • Fix Version/s: 10
    • Component/s: hotspot
    • Labels:
      None
    • Subcomponent:
      gc
    • Resolved In Build:
      b21

      Description

      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)

        Attachments

          Issue Links

            Activity

              People

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

                Dates

                Created:
                Updated:
                Resolved: