node/deps/v8/test/mjsunit/compiler/bigint-equal.js
Michaël Zasso f226350fcb deps: update V8 to 11.3.244.4
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>
2023-03-31 14:15:23 +00:00

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);
}