aboutsummaryrefslogtreecommitdiffhomepage
path: root/modules/skjson/src/SkJSONBench.cpp
diff options
context:
space:
mode:
authorGravatar Florin Malita <fmalita@chromium.org>2018-06-14 18:41:39 +0000
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-14 18:41:50 +0000
commit0510edeebf76b8a9753acc06afde8b09a8f00a54 (patch)
treedbfb32906b2e6dc632860e574ccfd29682032222 /modules/skjson/src/SkJSONBench.cpp
parent28f5dd8a4c8aa053f417bcf7f1da94daa8915ca9 (diff)
Revert "[skjson] Size-constrained input API"
This reverts commit fc792b8718cc30e9da62c9559b23c1baac3166bb. Reason for revert: New ASAN, Android failures. Original change's description: > [skjson] Size-constrained input API > > Pass an explicit input size instead of requiring a C string. > > Thanks to mtklein's clever trick, this has no measurable perf impact. > > Change-Id: I64f210a9f653a78b05ab6b58fa34479504aa35ff > Reviewed-on: https://skia-review.googlesource.com/134940 > Reviewed-by: Mike Klein <mtklein@google.com> > Commit-Queue: Florin Malita <fmalita@chromium.org> TBR=mtklein@google.com,fmalita@chromium.org Change-Id: Ic0b52398b1ce6f64c781debb858829cb64bbae58 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://skia-review.googlesource.com/135022 Reviewed-by: Florin Malita <fmalita@chromium.org> Commit-Queue: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'modules/skjson/src/SkJSONBench.cpp')
-rw-r--r--modules/skjson/src/SkJSONBench.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/modules/skjson/src/SkJSONBench.cpp b/modules/skjson/src/SkJSONBench.cpp
index b9c3664306..4be3b972ab 100644
--- a/modules/skjson/src/SkJSONBench.cpp
+++ b/modules/skjson/src/SkJSONBench.cpp
@@ -25,21 +25,27 @@ protected:
bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; }
void onPerCanvasPreDraw(SkCanvas*) override {
- fData = SkData::MakeFromFileName(kBenchFile);
- if (!fData) {
+ if (auto stream = SkStream::MakeFromFile(kBenchFile)) {
+ SkASSERT(stream->hasLength());
+ fCStringData = SkData::MakeUninitialized(stream->getLength() + 1);
+ auto* data8 = reinterpret_cast<uint8_t*>(fCStringData->writable_data());
+ SkAssertResult(stream->read(data8, stream->getLength()) == stream->getLength());
+ data8[stream->getLength()] = '\0';
+
+ } else {
SkDebugf("!! Could not open bench file: %s\n", kBenchFile);
}
}
void onPerCanvasPostDraw(SkCanvas*) override {
- fData = nullptr;
+ fCStringData = nullptr;
}
void onDraw(int loops, SkCanvas*) override {
- if (!fData) return;
+ if (!fCStringData) return;
for (int i = 0; i < loops; i++) {
- skjson::DOM dom(static_cast<const char*>(fData->data()), fData->size());
+ skjson::DOM dom(static_cast<const char*>(fCStringData->data()));
if (dom.root().is<skjson::NullValue>()) {
SkDebugf("!! Parsing failed.\n");
return;
@@ -48,7 +54,7 @@ protected:
}
private:
- sk_sp<SkData> fData;
+ sk_sp<SkData> fCStringData;
using INHERITED = Benchmark;
};