59 lines
1.0 KiB
JavaScript
59 lines
1.0 KiB
JavaScript
|
// Copyright 2020 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.
|
||
|
|
||
|
// Sample file for creating tickprocessor-test.log
|
||
|
"use strict"
|
||
|
|
||
|
let result;
|
||
|
|
||
|
function loop() {
|
||
|
let result = 0;
|
||
|
for (let i = 0; i < 10_000_000; i++) {
|
||
|
result = add(result, 1);
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
function add(a, b) {
|
||
|
return a + b;
|
||
|
}
|
||
|
|
||
|
|
||
|
result = loop();
|
||
|
result = loop();
|
||
|
|
||
|
// Cause some IC misses
|
||
|
function read_monomorphic(o) {
|
||
|
return o.value
|
||
|
}
|
||
|
|
||
|
function read_polymorphic(o) {
|
||
|
return o.value
|
||
|
}
|
||
|
|
||
|
function read_megamorphic(o) {
|
||
|
return o.value
|
||
|
}
|
||
|
|
||
|
const objects = [];
|
||
|
for (let i = 0; i < 100; i++) {
|
||
|
const object = {};
|
||
|
object['key' + i ];
|
||
|
object['value'] = 1 + i/100;
|
||
|
objects.push(object)
|
||
|
}
|
||
|
|
||
|
function ics() {
|
||
|
result = 0;
|
||
|
for (let i = 0; i < objects.length; i++) {
|
||
|
result += read_monomorphic(objects[0]);
|
||
|
result += read_polymorphic(objects[i % 3])
|
||
|
result += read_megamorphic(objects[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
for (let i = 0; i < 100_000; i++) {
|
||
|
ics();
|
||
|
}
|