nodejs/deps/v8/test/mjsunit/maglev/regress-1483146.js

48 lines
1.1 KiB
JavaScript
Raw Permalink Normal View History

// Copyright 2023 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.
//
// Flags: --allow-natives-syntax --maglev --maglev-inlining
let result;
function dontOpt(x) {
result = x;
}
(function () {
prettyPrinted = function prettyPrinted(value) {
return value;
}
let maxExtraPrinting = 100;
prettyPrint = function (value, extra = false) {
let str = prettyPrinted(value);
if (extra && maxExtraPrinting-- <= 0) {
return;
}
dontOpt(str);
};
printExtra = function (value) {
prettyPrint(value, true);
};
})();
function empty() {}
let g;
var foo = function () {
printExtra();
g = empty();
printExtra((this instanceof Object));
};
%PrepareFunctionForOptimization(foo);
%PrepareFunctionForOptimization(printExtra);
%PrepareFunctionForOptimization(prettyPrint);
%PrepareFunctionForOptimization(prettyPrinted);
%PrepareFunctionForOptimization(empty);
foo();
assertEquals(true, result);
%OptimizeMaglevOnNextCall(foo);
foo();
assertEquals(true, result);