[IC] Add calls micro-benchmark tests
This will be used to test InterpreterEntryTrampoline Change-Id: I2ee2cffea0741e15597a7e31f70e156e9aaa1c2d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1688890 Reviewed-by: Mythri Alle <mythria@chromium.org> Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Cr-Commit-Position: refs/heads/master@{#62527}
This commit is contained in:
parent
552073345f
commit
1f872cbc4c
@ -0,0 +1,119 @@
|
||||
// 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('Calls-No-Argument', callsNoArgument);
|
||||
addBenchmark('Calls-One-Argument', callsOneArgument);
|
||||
addBenchmark('Calls-Six-Arguments', callsSixArguments);
|
||||
addBenchmark('Calls-With-Receiver', callsWithReceiver);
|
||||
|
||||
function callsNoArgument() {
|
||||
function f() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (var i = 0; i < 1000; ++i) {
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
f(); f(); f(); f(); f(); f(); f(); f(); f();
|
||||
}
|
||||
}
|
||||
|
||||
function callsOneArgument() {
|
||||
function f(a) {
|
||||
return a;
|
||||
}
|
||||
let z = 0;
|
||||
|
||||
for (var i = 0; i < 1000; ++i) {
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
f(z); f(z); f(z); f(z); f(z); f(z); f(z); f(z);
|
||||
}
|
||||
}
|
||||
|
||||
function callsSixArguments() {
|
||||
function g(a,b,c,d,e,f) {
|
||||
return c;
|
||||
}
|
||||
let a = 0;
|
||||
let b = 1;
|
||||
let c = 2;
|
||||
let d = 3;
|
||||
let e = 4;
|
||||
let f = 5;
|
||||
|
||||
for (var i = 0; i < 1000; ++i) {
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f); g(a,b,c,d,e,f);
|
||||
}
|
||||
}
|
||||
|
||||
function callsWithReceiver() {
|
||||
function constructObject() {
|
||||
this.f = function() {
|
||||
return 0;
|
||||
};
|
||||
}
|
||||
let o = new constructObject();
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
26
test/js-perf-test/InterpreterEntryTrampoline/run.js
Normal file
26
test/js-perf-test/InterpreterEntryTrampoline/run.js
Normal file
@ -0,0 +1,26 @@
|
||||
// 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.
|
||||
|
||||
load('../base.js');
|
||||
load('InterpreterEntryTrampoline.js');
|
||||
|
||||
var success = true;
|
||||
|
||||
function PrintResult(name, result) {
|
||||
print(name + '-InterpreterEntryTrampoline(Score): ' + result);
|
||||
}
|
||||
|
||||
function PrintStep(name) {}
|
||||
|
||||
function PrintError(name, error) {
|
||||
PrintResult(name, error);
|
||||
success = false;
|
||||
}
|
||||
|
||||
BenchmarkSuite.config.doWarmup = undefined;
|
||||
BenchmarkSuite.config.doDeterministic = undefined;
|
||||
|
||||
BenchmarkSuite.RunSuites({ NotifyResult: PrintResult,
|
||||
NotifyError: PrintError,
|
||||
NotifyStep: PrintStep });
|
@ -361,6 +361,20 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "InterpreterEntryTrampoline",
|
||||
"path": ["InterpreterEntryTrampoline"],
|
||||
"main": "run.js",
|
||||
"flags": ["--no-opt"],
|
||||
"resources": ["InterpreterEntryTrampoline.js"],
|
||||
"results_regexp": "^%s\\-InterpreterEntryTrampoline\\(Score\\): (.+)$",
|
||||
"tests": [
|
||||
{"name": "Calls-No-Argument"},
|
||||
{"name": "Calls-One-Argument"},
|
||||
{"name": "Calls-Six-Arguments"},
|
||||
{"name": "Calls-With-Receiver"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user