OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
6 */ | 6 */ |
7 | 7 |
8 #include "SkRecord.h" | 8 #include "SkRecord.h" |
9 | 9 |
10 SkRecord::~SkRecord() { | 10 SkRecord::~SkRecord() { |
11 Destroyer destroyer; | 11 Destroyer destroyer; |
12 for (unsigned i = 0; i < this->count(); i++) { | 12 for (unsigned i = 0; i < this->count(); i++) { |
13 this->mutate<void>(i, destroyer); | 13 this->mutate<void>(i, destroyer); |
14 } | 14 } |
15 } | 15 } |
16 | 16 |
17 void SkRecord::grow() { | 17 void SkRecord::grow() { |
18 SkASSERT(fCount == fReserved); | 18 SkASSERT(fCount == fReserved); |
19 SkASSERT(fReserved > 0); | 19 SkASSERT(fReserved > 0); |
20 fReserved *= 2; | 20 fReserved *= 2; |
21 fRecords.realloc(fReserved); | 21 fRecords.realloc(fReserved); |
22 } | 22 } |
23 | 23 |
24 size_t SkRecord::bytesUsed() const { | 24 size_t SkRecord::bytesUsed() const { |
25 return fAlloc.approxBytesAllocated() + | 25 size_t bytes = fAlloc.approxBytesAllocated() + sizeof(SkRecord); |
26 (fReserved - kInlineRecords) * sizeof(Record) + | 26 // If fReserved <= kInlineRecords, we've already accounted for fRecords with
sizeof(SkRecord). |
27 sizeof(SkRecord); | 27 // When we go over that limit, they're allocated on the heap (and the inline
space is wasted). |
| 28 if (fReserved > kInlineRecords) { |
| 29 bytes += fReserved * sizeof(Record); |
| 30 } |
| 31 return bytes; |
28 } | 32 } |
OLD | NEW |