PR-URL: https://github.com/nodejs/node/pull/50115 Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Michael Dawson <midawson@redhat.com>
48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
// 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);
|