1/* 2 * Copyright 2015 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8#include "SkRecord.h" 9 10SkRecord::~SkRecord() { 11 Destroyer destroyer; 12 for (unsigned i = 0; i < this->count(); i++) { 13 this->mutate<void>(i, destroyer); 14 } 15} 16 17void SkRecord::grow() { 18 SkASSERT(fCount == fReserved); 19 SkASSERT(fReserved > 0); 20 fReserved *= 2; 21 fRecords.realloc(fReserved); 22} 23 24size_t SkRecord::bytesUsed() const { 25 size_t bytes = fAlloc.approxBytesAllocated() + sizeof(SkRecord); 26 // If fReserved <= kInlineRecords, we've already accounted for fRecords with 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; 32} 33