node/deps/v8/test/js-perf-test/BytecodeHandlers/LdaNamedProperty.js
Michaël Zasso e31f0a7d25
deps: update V8 to 7.7.299.4
PR-URL: https://github.com/nodejs/node/pull/28918
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
2019-08-19 09:25:23 +02:00

61 lines
2.5 KiB
JavaScript

// 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;
}
}