v8/test/js-perf-test/AsyncAwait/baseline-naive-promises.js
tzik 07011cc4f0 Replace %RunMicrotasks with %PerformMicrotaskCheckpoint
This replaces Runtime_RunMicrotasks with Runtime_PerformMicrotaskCheckpoint.

RunMicrotasks forcibly runs Microtasks even when the microtasks are suppressed,
and may causes nested Microtasks in a problematic way. E.g. that confuses
v8::MicrotasksScope::IsRunningMicrotasks() and GetEnteredOrMicrotaskContext().

OTOH, PerformMicrotaskCheckpoint() doesn't run cause the failure as it
respects the microtask suppressions.

As all existing tests don't call RunMicrotasks() in the suppressed situation
(like Promise.resolve().then(()=>{%RunMicrotasks();})), this change should
not affect to these tests.

Change-Id: Ib043a0cc8e482e022d375084d65ea98a6f54ef3d
Reviewed-on: https://chromium-review.googlesource.com/c/1360095
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58068}
2018-12-06 11:10:18 +00:00

53 lines
1.1 KiB
JavaScript

// Copyright 2016 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.
new BenchmarkSuite('BaselineNaivePromises', [1000], [
new Benchmark('Basic', false, false, 0, Basic, Setup),
]);
var a,b,c,d,e,f,g,h,i,j,x;
function Setup() {
x = Promise.resolve();
j = function j(p) { return p; };
i = function i(p) {
return p.then(j)
.then(j)
.then(j)
.then(j)
.then(j)
.then(j)
.then(j)
.then(j)
.then(j)
.then(j);
};
h = function h(p) { return p; };
g = function g(p) { return p; };
f = function f(p) { return p; };
e = function e(p) { return p; };
d = function d(p) { return p; };
c = function c(p) { return p; };
b = function b(p) { return p; };
a = function a(p) { return p; };
%PerformMicrotaskCheckpoint();
}
function Basic() {
x.then(j)
.then(i)
.then(h)
.then(g)
.then(f)
.then(e)
.then(d)
.then(c)
.then(b)
.then(a);
%PerformMicrotaskCheckpoint();
}