[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:
Santiago Aboy Solanes 2019-07-04 14:39:54 +01:00 committed by Commit Bot
parent 552073345f
commit 1f872cbc4c
3 changed files with 159 additions and 0 deletions

View File

@ -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();
}
}

View 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 });

View File

@ -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"}
]
}
]
}