Files
Kmake/deps/v8/test/mjsunit/maglev/strict-equals-receiver-or-null-or-undefined.js
2026-05-26 23:36:42 -07:00

48 lines
1.5 KiB
JavaScript

// Copyright 2025 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 --no-always-turbofan
// Flags: --no-optimize-maglev-optimizes-to-turbofan
function strictEquals(a, b) {
return a === b;
}
%PrepareFunctionForOptimization(strictEquals);
// Add the ReceiverOrNullOrUndefined feedback.
strictEquals({}, null);
%OptimizeMaglevOnNextCall(strictEquals);
const normalObject = {};
const undetectable = %GetUndetectable();
assertTrue(strictEquals(null, null));
assertFalse(strictEquals(null, undefined));
assertFalse(strictEquals(null, normalObject));
assertFalse(strictEquals(null, undetectable));
assertFalse(strictEquals(undefined, null));
assertTrue(strictEquals(undefined, undefined));
assertFalse(strictEquals(undefined, normalObject));
assertFalse(strictEquals(undefined, undetectable));
assertFalse(strictEquals(normalObject, null));
assertFalse(strictEquals(normalObject, undefined));
assertTrue(strictEquals(normalObject, normalObject));
assertFalse(strictEquals(normalObject, {}));
assertFalse(strictEquals(normalObject, undetectable));
assertFalse(strictEquals(undetectable, null));
assertFalse(strictEquals(undetectable, undefined));
assertFalse(strictEquals(undetectable, normalObject));
assertTrue(strictEquals(undetectable, undetectable));
assertTrue(isMaglevved(strictEquals));
// Passing an unexpected object deopts.
assertFalse(strictEquals({}, ""));
assertFalse(isMaglevved(strictEquals));