Index: src/core/SkVarAlloc.h |
diff --git a/src/core/SkVarAlloc.h b/src/core/SkVarAlloc.h |
index 19b2d75e76ca2467eb1a38eb55df269b0a548049..0a7864b37a878e265c7e12eccdee4ee03123d331 100644 |
--- a/src/core/SkVarAlloc.h |
+++ b/src/core/SkVarAlloc.h |
@@ -5,21 +5,22 @@ |
class SkVarAlloc : SkNoncopyable { |
public: |
- SkVarAlloc(); |
+ // SkVarAlloc will never allocate less than smallest bytes at a time. |
+ // When it allocates a new block, it will be at least growth times bigger than the last. |
+ SkVarAlloc(size_t smallest, float growth); |
~SkVarAlloc(); |
// Returns contiguous bytes aligned at least for pointers. You may pass SK_MALLOC_THROW, etc. |
char* alloc(size_t bytes, unsigned sk_malloc_flags) { |
bytes = SkAlignPtr(bytes); |
- if (bytes > fRemaining) { |
+ if (fByte + bytes > fLimit) { |
this->makeSpace(bytes, sk_malloc_flags); |
} |
- SkASSERT(bytes <= fRemaining); |
+ SkASSERT(fByte + bytes <= fLimit); |
char* ptr = fByte; |
fByte += bytes; |
- fRemaining -= bytes; |
return ptr; |
} |
@@ -27,8 +28,10 @@ |
void makeSpace(size_t bytes, unsigned flags); |
char* fByte; |
- unsigned fRemaining; |
- unsigned fLgMinSize; |
+ const char* fLimit; |
+ |
+ unsigned fSmallest; |
+ const float fGrowth; |
struct Block; |
Block* fBlock; |