mirror of
https://github.com/nodejs/node.git
synced 2025-05-15 16:01:52 +00:00

PR-URL: https://github.com/nodejs/node/pull/47251 Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com> Reviewed-By: Richard Lau <rlau@redhat.com>
45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
// Copyright 2022 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 --turbofan --no-always-turbofan
|
|
|
|
const bi = 42n;
|
|
|
|
function Equal(x, y) {
|
|
return x == y;
|
|
}
|
|
|
|
function StrictEqual(x, y) {
|
|
return x === y;
|
|
}
|
|
|
|
function Test(f, large) {
|
|
assertEquals(false, f(1n, 2n));
|
|
assertEquals(false, f(1n, -1n));
|
|
assertEquals(true, f(-1n, -1n));
|
|
assertEquals(true, f(bi, bi));
|
|
assertEquals(false, f(2n ** 63n - 1n, -(2n ** 63n) + 1n));
|
|
if (large) {
|
|
assertEquals(false, f(2n ** 63n, -(2n ** 63n)));
|
|
assertEquals(true, f(13n ** 70n, 13n ** 70n));
|
|
}
|
|
}
|
|
|
|
function OptAndTest(f, large) {
|
|
%PrepareFunctionForOptimization(f);
|
|
Test(f, large);
|
|
assertUnoptimized(f);
|
|
%OptimizeFunctionOnNextCall(f);
|
|
Test(f, large);
|
|
assertOptimized(f);
|
|
}
|
|
|
|
OptAndTest(Equal, false);
|
|
OptAndTest(StrictEqual, false);
|
|
if (%Is64Bit()) {
|
|
// Should deopt on large bigints and there should not be deopt loops.
|
|
OptAndTest(Equal, true);
|
|
OptAndTest(StrictEqual, true);
|
|
}
|