8#ifndef SkAutoMalloc_DEFINED
9#define SkAutoMalloc_DEFINED
64 void*
get() {
return fPtr.get(); }
65 const void*
get()
const {
return fPtr.get(); }
73 return fPtr.release();
78 void operator()(
void* p) {
sk_free(p); }
80 std::unique_ptr<void, WrapFree> fPtr;
116 if (fPtr != (
void*)fStorage) {
126 void*
get()
const {
return fPtr; }
135 bool* didChangeAlloc =
nullptr) {
136 size = (size < kSize) ? kSize : size;
138 if (didChangeAlloc) {
139 *didChangeAlloc = alloc;
142 if (fPtr != (
void*)fStorage) {
155 SkASSERT(fSize >= size && fSize >= kSize);
156 SkASSERT((fPtr == fStorage) || fSize > kSize);
162 static const size_t kSizeAlign4 =
SkAlign4(kSizeRequested);
163#if defined(SK_BUILD_FOR_GOOGLE3)
166 static const size_t kMaxBytes = 4 * 1024;
167 static const size_t kSize = kSizeRequested > kMaxBytes ? kMaxBytes : kSizeAlign4;
169 static const size_t kSize = kSizeAlign4;
174 uint32_t fStorage[kSize >> 2];
static constexpr T SkAlign4(T x)
SK_API void sk_free(void *)
static void * sk_malloc_throw(size_t size)
void * reset(size_t size=0, OnShrink shrink=kAlloc_OnShrink)
SkAutoMalloc(size_t size=0)
SkAutoSMalloc(size_t size)
void * reset(size_t size, SkAutoMalloc::OnShrink shrink=SkAutoMalloc::kAlloc_OnShrink, bool *didChangeAlloc=nullptr)