[*] Fix: oddballs are now handled under bitwise operations

Close: #3

Last Aurora Commit: 1224fc8e
This commit is contained in:
Reece Wilson 2023-02-28 09:42:27 +00:00
parent 1224fc8eea
commit 37233447b6

View File

@ -8058,7 +8058,7 @@ void CodeStubAssembler::TaggedToBigInt(TNode<Context> context,
TVariable<Numeric>* var_bigint, TVariable<Numeric>* var_bigint,
TVariable<Smi>* var_feedback) { TVariable<Smi>* var_feedback) {
Label done(this), is_smi(this), is_heapnumber(this), maybe_bigint64(this), Label done(this), is_smi(this), is_heapnumber(this), maybe_bigint64(this),
is_bigint(this), is_oddball(this); is_bigint(this), is_oddball(this), is_true(this), is_false(this);
GotoIf(TaggedIsSmi(value), &is_smi); GotoIf(TaggedIsSmi(value), &is_smi);
TNode<HeapObject> heap_object_value = CAST(value); TNode<HeapObject> heap_object_value = CAST(value);
TNode<Map> map = LoadMap(heap_object_value); TNode<Map> map = LoadMap(heap_object_value);
@ -8104,6 +8104,14 @@ void CodeStubAssembler::TaggedToBigInt(TNode<Context> context,
Goto(if_bigint); Goto(if_bigint);
BIND(&is_oddball); BIND(&is_oddball);
Branch(IsTrue(value), &is_true, &is_false);
BIND(&is_true);
*var_bigint = SmiConstant(1);
OverwriteFeedback(var_feedback, BinaryOperationFeedback::kNumberOrOddball);
Goto(if_bigint);
BIND(&is_false);
*var_bigint = SmiConstant(0); *var_bigint = SmiConstant(0);
OverwriteFeedback(var_feedback, BinaryOperationFeedback::kNumberOrOddball); OverwriteFeedback(var_feedback, BinaryOperationFeedback::kNumberOrOddball);
Goto(if_bigint); Goto(if_bigint);