Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Side by Side Diff: src/core/SkVarAlloc.h

Issue 730193003: SkVarAlloc::approxBytesAllocated (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Skip Android instead. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gyp/tests.gypi ('k') | src/core/SkVarAlloc.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #ifndef SkVarAlloc_DEFINED 1 #ifndef SkVarAlloc_DEFINED
2 #define SkVarAlloc_DEFINED 2 #define SkVarAlloc_DEFINED
3 3
4 #include "SkTypes.h" 4 #include "SkTypes.h"
5 5
6 class SkVarAlloc : SkNoncopyable { 6 class SkVarAlloc : SkNoncopyable {
7 public: 7 public:
8 SkVarAlloc(); 8 SkVarAlloc();
9 ~SkVarAlloc(); 9 ~SkVarAlloc();
10 10
11 // Returns contiguous bytes aligned at least for pointers. You may pass SK_ MALLOC_THROW, etc. 11 // Returns contiguous bytes aligned at least for pointers. You may pass SK_ MALLOC_THROW, etc.
12 char* alloc(size_t bytes, unsigned sk_malloc_flags) { 12 char* alloc(size_t bytes, unsigned sk_malloc_flags) {
13 bytes = SkAlignPtr(bytes); 13 bytes = SkAlignPtr(bytes);
14 14
15 if (bytes > fRemaining) { 15 if (bytes > fRemaining) {
16 this->makeSpace(bytes, sk_malloc_flags); 16 this->makeSpace(bytes, sk_malloc_flags);
17 } 17 }
18 SkASSERT(bytes <= fRemaining); 18 SkASSERT(bytes <= fRemaining);
19 19
20 char* ptr = fByte; 20 char* ptr = fByte;
21 fByte += bytes; 21 fByte += bytes;
22 fRemaining -= bytes; 22 fRemaining -= bytes;
23 return ptr; 23 return ptr;
24 } 24 }
25 25
26 // Returns our best estimate of the number of bytes we've allocated.
27 // (We intentionally do not track this precisely to save space.)
28 size_t approxBytesAllocated() const;
29
26 private: 30 private:
27 void makeSpace(size_t bytes, unsigned flags); 31 void makeSpace(size_t bytes, unsigned flags);
28 32
29 char* fByte; 33 char* fByte;
30 unsigned fRemaining; 34 unsigned fRemaining;
31 unsigned fLgSize; // This is always in the range [4, 16], so it really only needs 4 bits. 35 unsigned fLgSize; // This is always in the range [4, 16], so it really only needs 4 bits.
32 36
33 struct Block; 37 struct Block;
34 Block* fBlock; 38 Block* fBlock;
35 }; 39 };
36 40
37 #endif//SkVarAlloc_DEFINED 41 #endif//SkVarAlloc_DEFINED
OLDNEW
« no previous file with comments | « gyp/tests.gypi ('k') | src/core/SkVarAlloc.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698