| Index: src/builtins/builtins-array.cc
|
| diff --git a/src/builtins/builtins-array.cc b/src/builtins/builtins-array.cc
|
| index 198c263723f8cdb7ded549171edf59da9013e64a..248bcadd673e60a5f22160bc0e9bbd3890f1410f 100644
|
| --- a/src/builtins/builtins-array.cc
|
| +++ b/src/builtins/builtins-array.cc
|
| @@ -1423,7 +1423,6 @@ void Builtins::Generate_ArrayIncludes(compiler::CodeAssemblerState* state) {
|
|
|
| Node* the_hole = assembler.TheHoleConstant();
|
| Node* undefined = assembler.UndefinedConstant();
|
| - Node* heap_number_map = assembler.HeapNumberMapConstant();
|
|
|
| Variable len_var(&assembler, MachineType::PointerRepresentation()),
|
| index_var(&assembler, MachineType::PointerRepresentation()),
|
| @@ -1554,8 +1553,7 @@ void Builtins::Generate_ArrayIncludes(compiler::CodeAssemblerState* state) {
|
| assembler.GotoIf(assembler.WordEqual(search_element, undefined),
|
| &undef_loop);
|
| Node* map = assembler.LoadMap(search_element);
|
| - assembler.GotoIf(assembler.WordNotEqual(map, heap_number_map),
|
| - ¬_heap_num);
|
| + assembler.GotoUnless(assembler.IsHeapNumberMap(map), ¬_heap_num);
|
| search_num.Bind(assembler.LoadHeapNumberValue(search_element));
|
| assembler.Goto(&heap_num_loop);
|
|
|
| @@ -1619,9 +1617,9 @@ void Builtins::Generate_ArrayIncludes(compiler::CodeAssemblerState* state) {
|
| &return_true, &continue_loop);
|
|
|
| assembler.Bind(¬_smi);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(element_k),
|
| - heap_number_map),
|
| - &continue_loop);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(element_k)),
|
| + &continue_loop);
|
| assembler.Branch(
|
| assembler.Float64Equal(search_num.value(),
|
| assembler.LoadHeapNumberValue(element_k)),
|
| @@ -1642,9 +1640,9 @@ void Builtins::Generate_ArrayIncludes(compiler::CodeAssemblerState* state) {
|
| elements, index_var.value(), 0,
|
| CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler.GotoIf(assembler.TaggedIsSmi(element_k), &continue_loop);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(element_k),
|
| - heap_number_map),
|
| - &continue_loop);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(element_k)),
|
| + &continue_loop);
|
| assembler.BranchIfFloat64IsNaN(assembler.LoadHeapNumberValue(element_k),
|
| &return_true, &continue_loop);
|
|
|
| @@ -1718,9 +1716,9 @@ void Builtins::Generate_ArrayIncludes(compiler::CodeAssemblerState* state) {
|
| assembler.Goto(¬_nan_loop);
|
|
|
| assembler.Bind(&search_notnan);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(search_element),
|
| - heap_number_map),
|
| - &return_false);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(search_element)),
|
| + &return_false);
|
|
|
| search_num.Bind(assembler.LoadHeapNumberValue(search_element));
|
|
|
| @@ -1775,9 +1773,9 @@ void Builtins::Generate_ArrayIncludes(compiler::CodeAssemblerState* state) {
|
| assembler.Bind(&search_notnan);
|
| assembler.GotoIf(assembler.WordEqual(search_element, undefined),
|
| &hole_loop);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(search_element),
|
| - heap_number_map),
|
| - &return_false);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(search_element)),
|
| + &return_false);
|
|
|
| search_num.Bind(assembler.LoadHeapNumberValue(search_element));
|
|
|
| @@ -1866,7 +1864,6 @@ void Builtins::Generate_ArrayIndexOf(compiler::CodeAssemblerState* state) {
|
| Node* intptr_one = assembler.IntPtrConstant(1);
|
|
|
| Node* undefined = assembler.UndefinedConstant();
|
| - Node* heap_number_map = assembler.HeapNumberMapConstant();
|
|
|
| Variable len_var(&assembler, MachineType::PointerRepresentation()),
|
| index_var(&assembler, MachineType::PointerRepresentation()),
|
| @@ -1997,8 +1994,7 @@ void Builtins::Generate_ArrayIndexOf(compiler::CodeAssemblerState* state) {
|
| assembler.GotoIf(assembler.WordEqual(search_element, undefined),
|
| &undef_loop);
|
| Node* map = assembler.LoadMap(search_element);
|
| - assembler.GotoIf(assembler.WordNotEqual(map, heap_number_map),
|
| - ¬_heap_num);
|
| + assembler.GotoUnless(assembler.IsHeapNumberMap(map), ¬_heap_num);
|
| search_num.Bind(assembler.LoadHeapNumberValue(search_element));
|
| assembler.Goto(&heap_num_loop);
|
|
|
| @@ -2061,9 +2057,9 @@ void Builtins::Generate_ArrayIndexOf(compiler::CodeAssemblerState* state) {
|
| &return_found, &continue_loop);
|
|
|
| assembler.Bind(¬_smi);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(element_k),
|
| - heap_number_map),
|
| - &continue_loop);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(element_k)),
|
| + &continue_loop);
|
| assembler.Branch(
|
| assembler.Float64Equal(search_num.value(),
|
| assembler.LoadHeapNumberValue(element_k)),
|
| @@ -2137,9 +2133,9 @@ void Builtins::Generate_ArrayIndexOf(compiler::CodeAssemblerState* state) {
|
| assembler.Goto(¬_nan_loop);
|
|
|
| assembler.Bind(&search_notnan);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(search_element),
|
| - heap_number_map),
|
| - &return_not_found);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(search_element)),
|
| + &return_not_found);
|
|
|
| search_num.Bind(assembler.LoadHeapNumberValue(search_element));
|
|
|
| @@ -2174,9 +2170,9 @@ void Builtins::Generate_ArrayIndexOf(compiler::CodeAssemblerState* state) {
|
| assembler.Goto(¬_nan_loop);
|
|
|
| assembler.Bind(&search_notnan);
|
| - assembler.GotoIf(assembler.WordNotEqual(assembler.LoadMap(search_element),
|
| - heap_number_map),
|
| - &return_not_found);
|
| + assembler.GotoUnless(
|
| + assembler.IsHeapNumberMap(assembler.LoadMap(search_element)),
|
| + &return_not_found);
|
|
|
| search_num.Bind(assembler.LoadHeapNumberValue(search_element));
|
|
|
|
|