nodejs/deps/v8/test/mjsunit/maglev/regress-41494766.js
Michaël Zasso 9d7cd9b864
deps: update V8 to 12.8.374.13
PR-URL: https://github.com/nodejs/node/pull/54077
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
2024-08-16 16:03:01 +02:00

141 lines
2.6 KiB
JavaScript

// Copyright 2024 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
function issue() {
let i = 0;
function increment() {
i = i + 1;
}
while (i < 100) {
let prevI = i;
increment();
assertFalse(i == prevI);
if (i == 20) %OptimizeOsr();
}
}
%PrepareFunctionForOptimization(issue);
issue();
function issue2() {
let i = 0;
function read() {
return i;
}
while (i < 100) {
var prevI = read();
i = i + 1;
var curI = read();
assertFalse(prevI == curI);
if (i == 20) %OptimizeOsr();
}
}
%PrepareFunctionForOptimization(issue2);
issue2();
function issue3() {
let i = 0;
function check(x, c) {
i = i + 1;
c();
}
while (i < 100) {
function aliasing() {
let prevI = i;
function check2() {
assertTrue(prevI != i);
}
assertFalse(prevI != i);
check(i, check2);
}
aliasing();
if (i == 20) %OptimizeOsr();
}
}
%PrepareFunctionForOptimization(issue3);
issue3();
inc = undefined
function issue4() {
let i = 0;
let first = !inc;
if (!inc) {
inc = function() {
i = i + 1;
};
%PrepareFunctionForOptimization(inc);
}
while (i < 100) {
let prevI = i;
inc();
if (first) {
assertFalse(i == prevI);
} else {
assertTrue(i == prevI);
}
i = i+1;
if (!first && i == 20) %OptimizeOsr();
}
}
%PrepareFunctionForOptimization(issue4);
issue4();
issue4();
function issue5() {
let i = 0;
function increment() {
i = i + 1;
}
{
let start_block = 1;
function capture() { return start_block; }
while (i < 100) {
let prevI = i;
increment();
assertFalse(i == prevI);
if (i == 20) %OptimizeOsr();
}
return start_block;
}
}
%PrepareFunctionForOptimization(issue5);
issue5();
(function() {
let i = 0;
function inc() { i = i + 1; }
%PrepareFunctionForOptimization(inc);
while (i < 2) {
function aliasing() {
let prevI = i;
inc();
assertFalse(prevI == i);
}
%PrepareFunctionForOptimization(aliasing);
aliasing();
%OptimizeMaglevOnNextCall(aliasing);
}
})();
(function() {
let i = 0;
function inc() { i = i + 1; }
%PrepareFunctionForOptimization(inc);
while (i < 2) {
let asdf = 0;
function xxx() { return asdf; }
function aliasing() {
let prevI = i;
inc();
assertFalse(prevI == i);
}
%PrepareFunctionForOptimization(aliasing);
aliasing();
%OptimizeMaglevOnNextCall(aliasing);
}
})();