MCPcopy Create free account
hub / github.com/cel-expr/cel-cpp / AlignedNew

Function AlignedNew

internal/new.cc:56–85  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54void* New(size_t size) { return ::operator new(size); }
55
56void* AlignedNew(size_t size, std::align_val_t alignment) {
57 ABSL_DCHECK(absl::has_single_bit(static_cast<size_t>(alignment)));
58#ifdef CEL_INTERNAL_HAVE_ALIGNED_NEW
59 return ::operator new(size, alignment);
60#else
61 if (static_cast<size_t>(alignment) <= kDefaultNewAlignment) {
62 return New(size);
63 }
64#if defined(_MSC_VER)
65 void* ptr = _aligned_malloc(size, static_cast<size_t>(alignment));
66 if (ABSL_PREDICT_FALSE(size != 0 && ptr == nullptr)) {
67 ThrowStdBadAlloc();
68 }
69 return ptr;
70#elif defined(__APPLE__)
71 void* ptr;
72 if (ABSL_PREDICT_FALSE(
73 posix_memalign(&ptr, static_cast<size_t>(alignment), size) != 0)) {
74 ThrowStdBadAlloc();
75 }
76 return ptr;
77#else
78 void* ptr = std::aligned_alloc(static_cast<size_t>(alignment), size);
79 if (ABSL_PREDICT_FALSE(size != 0 && ptr == nullptr)) {
80 ThrowStdBadAlloc();
81 }
82 return ptr;
83#endif
84#endif
85}
86
87std::pair<void*, size_t> SizeReturningNew(size_t size) {
88 return std::pair{::operator new(size), size};

Callers 4

SizeReturningAlignedNewFunction · 0.85
TESTFunction · 0.85
allocate_bytesMethod · 0.85
allocateMethod · 0.85

Calls 2

NewFunction · 0.85
ThrowStdBadAllocFunction · 0.85

Tested by 1

TESTFunction · 0.68