16 auto context = Parameter<Context>(Descriptor::kContext);
18 Label return_true(
this), return_false(
this);
22 Label loop(
this, &var_num);
23 var_num = Parameter<Object>(Descriptor::kNumber);
30 GotoIf(TaggedIsSmi(num), &return_true);
34 Label if_numisheapnumber(
this),
35 if_numisnotheapnumber(
this, Label::kDeferred);
36 Branch(IsHeapNumber(num_heap_object), &if_numisheapnumber,
37 &if_numisnotheapnumber);
39 BIND(&if_numisheapnumber);
43 BranchIfFloat64IsNaN(Float64Sub(num_value, num_value), &return_false,
47 BIND(&if_numisnotheapnumber);
51 CallBuiltin(Builtin::kNonNumberToNumber, context, num_heap_object);
57 Return(TrueConstant());
60 Return(FalseConstant());
65 auto context = Parameter<Context>(Descriptor::kContext);
67 Label return_true(
this), return_false(
this);
71 Label loop(
this, &var_num);
72 var_num = Parameter<Object>(Descriptor::kNumber);
79 GotoIf(TaggedIsSmi(num), &return_false);
83 Label if_numisheapnumber(
this),
84 if_numisnotheapnumber(
this, Label::kDeferred);
85 Branch(IsHeapNumber(num_heap_object), &if_numisheapnumber,
86 &if_numisnotheapnumber);
88 BIND(&if_numisheapnumber);
92 BranchIfFloat64IsNaN(num_value, &return_true, &return_false);
95 BIND(&if_numisnotheapnumber);
99 CallBuiltin(Builtin::kNonNumberToNumber, context, num_heap_object);
105 Return(TrueConstant());
108 Return(FalseConstant());