[IC] Add LdaNamedProperty micro-benchmark tests
Change-Id: I154b7705fe9750ed16166c50a22cd16b0abc0425 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1687889 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#62523}
This commit is contained in:
parent
db24e2000a
commit
f39f76d637
60
test/js-perf-test/BytecodeHandlers/LdaNamedProperty.js
Normal file
60
test/js-perf-test/BytecodeHandlers/LdaNamedProperty.js
Normal file
@ -0,0 +1,60 @@
|
||||
// Copyright 2019 the V8 project authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
function addBenchmark(name, test) {
|
||||
new BenchmarkSuite(name, [1000],
|
||||
[
|
||||
new Benchmark(name, false, false, 0, test)
|
||||
]);
|
||||
}
|
||||
|
||||
addBenchmark('Smi-Value', smiValue);
|
||||
addBenchmark('Prototype-Chain-Value', functionOnPrototypeValue);
|
||||
|
||||
// TODO(all): might be a good idea to also do with receivers: double, HeapObject
|
||||
// with map, HeapObject, tagged, empty getter / accessor.
|
||||
// Also, element keyed loads (in another file, probably?) both with strings and
|
||||
// numbers for normal, cons,and sliced strings (for named properties).
|
||||
// Also, monomorphic vs poly vs mega.
|
||||
|
||||
function smiValue() {
|
||||
function constructSmi() {
|
||||
this.smi = 0;
|
||||
}
|
||||
let o = new constructSmi();
|
||||
|
||||
for (var i = 0; i < 1000; ++i) {
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi; o.smi;
|
||||
}
|
||||
}
|
||||
|
||||
function functionOnPrototypeValue() {
|
||||
function objectWithPrototypeChain() {
|
||||
}
|
||||
objectWithPrototypeChain.prototype.__proto__ =
|
||||
{__proto__:{__proto__:{__proto__:{f(){}}}}};
|
||||
let o = new objectWithPrototypeChain();
|
||||
|
||||
for (var i = 0; i < 1000; ++i) {
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f; o.f;
|
||||
}
|
||||
}
|
@ -348,6 +348,17 @@
|
||||
{"name": "Smi-Constant-ShiftRight"},
|
||||
{"name": "Smi-Constant-ShiftRightLogical"}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "LdaNamedProperty",
|
||||
"main": "run.js",
|
||||
"resources": [ "LdaNamedProperty.js" ],
|
||||
"test_flags": [ "LdaNamedProperty" ],
|
||||
"results_regexp": "^%s\\-BytecodeHandler\\(Score\\): (.+)$",
|
||||
"tests": [
|
||||
{"name": "Smi-Value"},
|
||||
{"name": "Prototype-Chain-Value"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user