SkRWBuffer: preallocate 'initialCapacity'
authorfmalita <fmalita@chromium.org>
Fri, 30 Sep 2016 17:52:08 +0000 (10:52 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 30 Sep 2016 17:52:08 +0000 (10:52 -0700)
We're currently ignoring the hint, resulting in multiple unneeded
allocations later.

BUG=chromium:651698
R=scroggo@google.com
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2384763002

Review-Url: https://codereview.chromium.org/2384763002

src/core/SkRWBuffer.cpp

index 07a537a640a27173bea2093614bef8a468db0d01..41f1a287d20320351eaca3ab94096a5fe000e332 100644 (file)
@@ -181,7 +181,12 @@ bool SkROBuffer::Iter::next() {
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-SkRWBuffer::SkRWBuffer(size_t initialCapacity) : fHead(nullptr), fTail(nullptr), fTotalUsed(0) {}
+SkRWBuffer::SkRWBuffer(size_t initialCapacity) : fHead(nullptr), fTail(nullptr), fTotalUsed(0) {
+    if (initialCapacity) {
+        fHead = SkBufferHead::Alloc(initialCapacity);
+        fTail = &fHead->fBlock;
+    }
+}
 
 SkRWBuffer::~SkRWBuffer() {
     this->validate();