case kExternal##Type##Array: {                                             \
    ctype* data = copy_data ? reinterpret_cast<ctype*>(data_copy_ptr)        \
                            : static_cast<ctype*>(array->DataPtr());         \
    SBXCHECK(length * sizeof(ctype) == byte_length);                         \
    if (kExternal##Type##Array == kExternalFloat64Array ||                   \
        kExternal##Type##Array == kExternalFloat32Array) {                   \
               \
        std::sort(UnalignedSlot<ctype>(data),                                \
                  UnalignedSlot<ctype>(data + length), CompareNum<ctype>);   \
      } else {                                                               \
        std::sort(data, data + length, CompareNum<ctype>);                   \
      }                                                                      \
    } else if (kExternal##Type##Array == kExternalFloat16Array) {            \
      std::sort(data, data + length, LessThanFloat16RawBits);                \
    } else {                                                                 \
               \
        std::sort(UnalignedSlot<ctype>(data),                                \
                  UnalignedSlot<ctype>(data + length));                      \
      } else {                                                               \
        std::sort(data, data + length);                                      \
      }                                                                      \
    }                                                                        \
    break;                                                                   \
  }
#define COMPRESS_POINTERS_BOOL