[*] Fix: oddballs are now handled under bitwise operations
Close: #3
Last Aurora Commit: 1224fc8e
This commit is contained in:
parent
1224fc8eea
commit
37233447b6
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user