61 lines
1.2 KiB
JavaScript
61 lines
1.2 KiB
JavaScript
//@ skip if not $jitTests
|
|
function assert(a, e) {
|
|
if (a !== e)
|
|
throw new Error("Expected: " + e + " but got: " + a);
|
|
}
|
|
|
|
function bitAnd(a, b) {
|
|
return a & b;
|
|
}
|
|
noInline(bitAnd);
|
|
|
|
if (!jscOptions().useExecutableAllocationFuzz) {
|
|
|
|
var o = { valueOf: () => 0b1101 };
|
|
|
|
for (var i = 0; i < 10000; i++)
|
|
assert(bitAnd(0b11, o), 0b1);
|
|
|
|
assert(numberOfDFGCompiles(bitAnd) <= 1, true);
|
|
|
|
function bitOr(a, b) {
|
|
return a | b;
|
|
}
|
|
noInline(bitOr);
|
|
|
|
for (var i = 0; i < 10000; i++)
|
|
assert(bitOr(0b11, o), 0b1111);
|
|
|
|
assert(numberOfDFGCompiles(bitOr) <= 1, true);
|
|
|
|
function bitXor(a, b) {
|
|
return a ^ b;
|
|
}
|
|
noInline(bitXor);
|
|
|
|
for (var i = 0; i < 10000; i++)
|
|
assert(bitXor(0b0011, o), 0b1110);
|
|
|
|
assert(numberOfDFGCompiles(bitXor) <= 1, true);
|
|
|
|
function bitNot(a) {
|
|
return ~a;
|
|
}
|
|
noInline(bitNot);
|
|
|
|
for (var i = 0; i < 10000; i++)
|
|
assert(bitNot(o), -14);
|
|
|
|
assert(numberOfDFGCompiles(bitNot) <= 1, true);
|
|
|
|
function bitLShift(a, b) {
|
|
return a << b;
|
|
}
|
|
noInline(bitLShift);
|
|
|
|
for (var i = 0; i < 10000; i++)
|
|
assert(bitLShift(o, 3), 0b1101000);
|
|
|
|
assert(numberOfDFGCompiles(bitLShift) <= 1, true);
|
|
}
|