public MemorySegment toMemorySegment()

in src/main/java/org/apache/datasketches/memory/internal/ResourceImpl.java [565:593]


  public MemorySegment toMemorySegment(final Arena arena, final long alignment) {
    final long len = seg.byteSize();
    final boolean arenaValid = arena != null;
    final MemorySegment out;
    if (arenaValid) { //off-heap
      if (len == 0) {
        out = MemorySegment.NULL;
        return out;
      }
      out = arena.allocate(seg.byteSize(), alignment);
    }
    else { //on-heap
      if (len == 0) {
        out = MemorySegment.ofArray(new byte[0]);
        return out;
      }
      if (len % Long.BYTES == 0) {
        out = MemorySegment.ofArray(new long[(int)(len >>> LONG_SHIFT)]);
      } else if (len % Integer.BYTES == 0) {
        out = MemorySegment.ofArray(new int[(int)(len >>> INT_SHIFT)]);
      } else if (len % Short.BYTES == 0) {
        out = MemorySegment.ofArray(new short[(int)(len >>> SHORT_SHIFT)]);
      } else {
        out = MemorySegment.ofArray(new byte[(int)len]);
      }
    }
    out.copyFrom(seg);
    return out;
  }