| Index: src/builtins/builtins-array.cc
|
| diff --git a/src/builtins/builtins-array.cc b/src/builtins/builtins-array.cc
|
| index 09ee4cc2e2d741cd1fc22f0187552fa189cb7cd6..f956fd7da6da68049ccee4c9fdfca386cc944df2 100644
|
| --- a/src/builtins/builtins-array.cc
|
| +++ b/src/builtins/builtins-array.cc
|
| @@ -1269,24 +1269,24 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| Node* start_from = assembler->Parameter(2);
|
| Node* context = assembler->Parameter(3 + 2);
|
|
|
| - Node* int32_zero = assembler->Int32Constant(0);
|
| - Node* int32_one = assembler->Int32Constant(1);
|
| + Node* intptr_zero = assembler->IntPtrConstant(0);
|
| + Node* intptr_one = assembler->IntPtrConstant(1);
|
|
|
| Node* the_hole = assembler->TheHoleConstant();
|
| Node* undefined = assembler->UndefinedConstant();
|
| Node* heap_number_map = assembler->HeapNumberMapConstant();
|
|
|
| - Variable len_var(assembler, MachineRepresentation::kWord32),
|
| - index_var(assembler, MachineRepresentation::kWord32),
|
| - start_from_var(assembler, MachineRepresentation::kWord32);
|
| + Variable len_var(assembler, MachineType::PointerRepresentation()),
|
| + index_var(assembler, MachineType::PointerRepresentation()),
|
| + start_from_var(assembler, MachineType::PointerRepresentation());
|
|
|
| Label init_k(assembler), return_true(assembler), return_false(assembler),
|
| call_runtime(assembler);
|
|
|
| Label init_len(assembler);
|
|
|
| - index_var.Bind(int32_zero);
|
| - len_var.Bind(int32_zero);
|
| + index_var.Bind(intptr_zero);
|
| + len_var.Bind(intptr_zero);
|
|
|
| // Take slow path if not a JSArray, if retrieving elements requires
|
| // traversing prototype, or if access checks are required.
|
| @@ -1299,7 +1299,7 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| assembler->GotoUnless(assembler->WordIsSmi(len), &call_runtime);
|
|
|
| len_var.Bind(assembler->SmiToWord(len));
|
| - assembler->Branch(assembler->Word32Equal(len_var.value(), int32_zero),
|
| + assembler->Branch(assembler->WordEqual(len_var.value(), intptr_zero),
|
| &return_false, &init_k);
|
| }
|
|
|
| @@ -1315,23 +1315,25 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
|
|
| assembler->Bind(&init_k_smi);
|
| {
|
| - start_from_var.Bind(assembler->SmiToWord32(tagged_n));
|
| + start_from_var.Bind(assembler->SmiUntag(tagged_n));
|
| assembler->Goto(&init_k_n);
|
| }
|
|
|
| assembler->Bind(&init_k_heap_num);
|
| {
|
| Label do_return_false(assembler);
|
| - Node* fp_len = assembler->ChangeInt32ToFloat64(len_var.value());
|
| + // This round is lossless for all valid lengths.
|
| + Node* fp_len = assembler->RoundIntPtrToFloat64(len_var.value());
|
| Node* fp_n = assembler->LoadHeapNumberValue(tagged_n);
|
| assembler->GotoIf(assembler->Float64GreaterThanOrEqual(fp_n, fp_len),
|
| &do_return_false);
|
| - start_from_var.Bind(assembler->TruncateFloat64ToWord32(fp_n));
|
| + start_from_var.Bind(assembler->ChangeInt32ToIntPtr(
|
| + assembler->TruncateFloat64ToWord32(fp_n)));
|
| assembler->Goto(&init_k_n);
|
|
|
| assembler->Bind(&do_return_false);
|
| {
|
| - index_var.Bind(int32_zero);
|
| + index_var.Bind(intptr_zero);
|
| assembler->Goto(&return_false);
|
| }
|
| }
|
| @@ -1340,7 +1342,7 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label if_positive(assembler), if_negative(assembler), done(assembler);
|
| assembler->Branch(
|
| - assembler->Int32LessThan(start_from_var.value(), int32_zero),
|
| + assembler->IntPtrLessThan(start_from_var.value(), intptr_zero),
|
| &if_negative, &if_positive);
|
|
|
| assembler->Bind(&if_positive);
|
| @@ -1352,15 +1354,15 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| assembler->Bind(&if_negative);
|
| {
|
| index_var.Bind(
|
| - assembler->Int32Add(len_var.value(), start_from_var.value()));
|
| + assembler->IntPtrAdd(len_var.value(), start_from_var.value()));
|
| assembler->Branch(
|
| - assembler->Int32LessThan(index_var.value(), int32_zero),
|
| + assembler->IntPtrLessThan(index_var.value(), intptr_zero),
|
| &init_k_zero, &done);
|
| }
|
|
|
| assembler->Bind(&init_k_zero);
|
| {
|
| - index_var.Bind(int32_zero);
|
| + index_var.Bind(intptr_zero);
|
| assembler->Goto(&done);
|
| }
|
|
|
| @@ -1416,38 +1418,38 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| search_type, assembler->Int32Constant(FIRST_NONSTRING_TYPE)),
|
| &string_loop);
|
| assembler->GotoIf(
|
| - assembler->WordEqual(search_type,
|
| - assembler->Int32Constant(SIMD128_VALUE_TYPE)),
|
| + assembler->Word32Equal(search_type,
|
| + assembler->Int32Constant(SIMD128_VALUE_TYPE)),
|
| &simd_loop);
|
| assembler->Goto(&ident_loop);
|
|
|
| assembler->Bind(&ident_loop);
|
| {
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordEqual(element_k, search_element),
|
| &return_true);
|
|
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&ident_loop);
|
| }
|
|
|
| assembler->Bind(&undef_loop);
|
| {
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordEqual(element_k, undefined),
|
| &return_true);
|
| assembler->GotoIf(assembler->WordEqual(element_k, the_hole),
|
| &return_true);
|
|
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&undef_loop);
|
| }
|
|
|
| @@ -1462,10 +1464,11 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler), not_smi(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoUnless(assembler->WordIsSmi(element_k), ¬_smi);
|
| assembler->Branch(
|
| assembler->Float64Equal(search_num.value(),
|
| @@ -1481,7 +1484,7 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| &return_true, &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(¬_nan_loop);
|
| }
|
|
|
| @@ -1489,10 +1492,11 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordIsSmi(element_k), &continue_loop);
|
| assembler->GotoIf(assembler->WordNotEqual(assembler->LoadMap(element_k),
|
| heap_number_map),
|
| @@ -1502,7 +1506,7 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&nan_loop);
|
| }
|
| }
|
| @@ -1511,10 +1515,10 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordIsSmi(element_k), &continue_loop);
|
| assembler->GotoUnless(assembler->Int32LessThan(
|
| assembler->LoadInstanceType(element_k),
|
| @@ -1530,7 +1534,7 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| &return_true, &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&string_loop);
|
| }
|
|
|
| @@ -1543,11 +1547,11 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| assembler->Goto(&loop_body);
|
| assembler->Bind(&loop_body);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
|
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordIsSmi(element_k), &continue_loop);
|
|
|
| Node* map_k = assembler->LoadMap(element_k);
|
| @@ -1555,7 +1559,7 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| &return_true, &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&loop_body);
|
| }
|
| }
|
| @@ -1585,14 +1589,15 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| Node* element_k = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Float64());
|
| + elements, index_var.value(), MachineType::Float64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->BranchIfFloat64Equal(element_k, search_num.value(),
|
| &return_true, &continue_loop);
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(¬_nan_loop);
|
| }
|
|
|
| @@ -1601,13 +1606,14 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
| Node* element_k = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Float64());
|
| + elements, index_var.value(), MachineType::Float64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->BranchIfFloat64IsNaN(element_k, &return_true, &continue_loop);
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&nan_loop);
|
| }
|
| }
|
| @@ -1639,19 +1645,21 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
|
|
| if (kPointerSize == kDoubleSize) {
|
| Node* element = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Uint64());
|
| + elements, index_var.value(), MachineType::Uint64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| Node* the_hole = assembler->Int64Constant(kHoleNanInt64);
|
| assembler->GotoIf(assembler->Word64Equal(element, the_hole),
|
| &continue_loop);
|
| } else {
|
| Node* element_upper = assembler->LoadFixedDoubleArrayElement(
|
| elements, index_var.value(), MachineType::Uint32(),
|
| - kIeeeDoubleExponentWordOffset);
|
| + kIeeeDoubleExponentWordOffset,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(
|
| assembler->Word32Equal(element_upper,
|
| assembler->Int32Constant(kHoleNanUpper32)),
|
| @@ -1659,11 +1667,12 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| }
|
|
|
| Node* element_k = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Float64());
|
| + elements, index_var.value(), MachineType::Float64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->BranchIfFloat64Equal(element_k, search_num.value(),
|
| &return_true, &continue_loop);
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(¬_nan_loop);
|
| }
|
|
|
| @@ -1672,19 +1681,21 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
|
|
| if (kPointerSize == kDoubleSize) {
|
| Node* element = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Uint64());
|
| + elements, index_var.value(), MachineType::Uint64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| Node* the_hole = assembler->Int64Constant(kHoleNanInt64);
|
| assembler->GotoIf(assembler->Word64Equal(element, the_hole),
|
| &continue_loop);
|
| } else {
|
| Node* element_upper = assembler->LoadFixedDoubleArrayElement(
|
| elements, index_var.value(), MachineType::Uint32(),
|
| - kIeeeDoubleExponentWordOffset);
|
| + kIeeeDoubleExponentWordOffset,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(
|
| assembler->Word32Equal(element_upper,
|
| assembler->Int32Constant(kHoleNanUpper32)),
|
| @@ -1692,10 +1703,11 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| }
|
|
|
| Node* element_k = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Float64());
|
| + elements, index_var.value(), MachineType::Float64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->BranchIfFloat64IsNaN(element_k, &return_true, &continue_loop);
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&nan_loop);
|
| }
|
|
|
| @@ -1703,26 +1715,28 @@ void Builtins::Generate_ArrayIncludes(CodeStubAssembler* assembler) {
|
| assembler->Bind(&hole_loop);
|
| {
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_false);
|
|
|
| if (kPointerSize == kDoubleSize) {
|
| Node* element = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Uint64());
|
| + elements, index_var.value(), MachineType::Uint64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| Node* the_hole = assembler->Int64Constant(kHoleNanInt64);
|
| assembler->GotoIf(assembler->Word64Equal(element, the_hole),
|
| &return_true);
|
| } else {
|
| Node* element_upper = assembler->LoadFixedDoubleArrayElement(
|
| elements, index_var.value(), MachineType::Uint32(),
|
| - kIeeeDoubleExponentWordOffset);
|
| + kIeeeDoubleExponentWordOffset,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(
|
| assembler->Word32Equal(element_upper,
|
| assembler->Int32Constant(kHoleNanUpper32)),
|
| &return_true);
|
| }
|
|
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&hole_loop);
|
| }
|
| }
|
| @@ -1749,23 +1763,23 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| Node* start_from = assembler->Parameter(2);
|
| Node* context = assembler->Parameter(3 + 2);
|
|
|
| - Node* int32_zero = assembler->Int32Constant(0);
|
| - Node* int32_one = assembler->Int32Constant(1);
|
| + Node* intptr_zero = assembler->IntPtrConstant(0);
|
| + Node* intptr_one = assembler->IntPtrConstant(1);
|
|
|
| Node* undefined = assembler->UndefinedConstant();
|
| Node* heap_number_map = assembler->HeapNumberMapConstant();
|
|
|
| - Variable len_var(assembler, MachineRepresentation::kWord32),
|
| - index_var(assembler, MachineRepresentation::kWord32),
|
| - start_from_var(assembler, MachineRepresentation::kWord32);
|
| + Variable len_var(assembler, MachineType::PointerRepresentation()),
|
| + index_var(assembler, MachineType::PointerRepresentation()),
|
| + start_from_var(assembler, MachineType::PointerRepresentation());
|
|
|
| Label init_k(assembler), return_found(assembler), return_not_found(assembler),
|
| call_runtime(assembler);
|
|
|
| Label init_len(assembler);
|
|
|
| - index_var.Bind(int32_zero);
|
| - len_var.Bind(int32_zero);
|
| + index_var.Bind(intptr_zero);
|
| + len_var.Bind(intptr_zero);
|
|
|
| // Take slow path if not a JSArray, if retrieving elements requires
|
| // traversing prototype, or if access checks are required.
|
| @@ -1778,7 +1792,7 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| assembler->GotoUnless(assembler->WordIsSmi(len), &call_runtime);
|
|
|
| len_var.Bind(assembler->SmiToWord(len));
|
| - assembler->Branch(assembler->Word32Equal(len_var.value(), int32_zero),
|
| + assembler->Branch(assembler->WordEqual(len_var.value(), intptr_zero),
|
| &return_not_found, &init_k);
|
| }
|
|
|
| @@ -1794,23 +1808,25 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
|
|
| assembler->Bind(&init_k_smi);
|
| {
|
| - start_from_var.Bind(assembler->SmiToWord32(tagged_n));
|
| + start_from_var.Bind(assembler->SmiUntag(tagged_n));
|
| assembler->Goto(&init_k_n);
|
| }
|
|
|
| assembler->Bind(&init_k_heap_num);
|
| {
|
| Label do_return_not_found(assembler);
|
| - Node* fp_len = assembler->ChangeInt32ToFloat64(len_var.value());
|
| + // This round is lossless for all valid lengths.
|
| + Node* fp_len = assembler->RoundIntPtrToFloat64(len_var.value());
|
| Node* fp_n = assembler->LoadHeapNumberValue(tagged_n);
|
| assembler->GotoIf(assembler->Float64GreaterThanOrEqual(fp_n, fp_len),
|
| &do_return_not_found);
|
| - start_from_var.Bind(assembler->TruncateFloat64ToWord32(fp_n));
|
| + start_from_var.Bind(assembler->ChangeInt32ToIntPtr(
|
| + assembler->TruncateFloat64ToWord32(fp_n)));
|
| assembler->Goto(&init_k_n);
|
|
|
| assembler->Bind(&do_return_not_found);
|
| {
|
| - index_var.Bind(int32_zero);
|
| + index_var.Bind(intptr_zero);
|
| assembler->Goto(&return_not_found);
|
| }
|
| }
|
| @@ -1819,7 +1835,7 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| {
|
| Label if_positive(assembler), if_negative(assembler), done(assembler);
|
| assembler->Branch(
|
| - assembler->Int32LessThan(start_from_var.value(), int32_zero),
|
| + assembler->IntPtrLessThan(start_from_var.value(), intptr_zero),
|
| &if_negative, &if_positive);
|
|
|
| assembler->Bind(&if_positive);
|
| @@ -1831,15 +1847,15 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| assembler->Bind(&if_negative);
|
| {
|
| index_var.Bind(
|
| - assembler->Int32Add(len_var.value(), start_from_var.value()));
|
| + assembler->IntPtrAdd(len_var.value(), start_from_var.value()));
|
| assembler->Branch(
|
| - assembler->Int32LessThan(index_var.value(), int32_zero),
|
| + assembler->IntPtrLessThan(index_var.value(), intptr_zero),
|
| &init_k_zero, &done);
|
| }
|
|
|
| assembler->Bind(&init_k_zero);
|
| {
|
| - index_var.Bind(int32_zero);
|
| + index_var.Bind(intptr_zero);
|
| assembler->Goto(&done);
|
| }
|
|
|
| @@ -1895,36 +1911,36 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| search_type, assembler->Int32Constant(FIRST_NONSTRING_TYPE)),
|
| &string_loop);
|
| assembler->GotoIf(
|
| - assembler->WordEqual(search_type,
|
| - assembler->Int32Constant(SIMD128_VALUE_TYPE)),
|
| + assembler->Word32Equal(search_type,
|
| + assembler->Int32Constant(SIMD128_VALUE_TYPE)),
|
| &simd_loop);
|
| assembler->Goto(&ident_loop);
|
|
|
| assembler->Bind(&ident_loop);
|
| {
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordEqual(element_k, search_element),
|
| &return_found);
|
|
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&ident_loop);
|
| }
|
|
|
| assembler->Bind(&undef_loop);
|
| {
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordEqual(element_k, undefined),
|
| &return_found);
|
|
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&undef_loop);
|
| }
|
|
|
| @@ -1938,10 +1954,11 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler), not_smi(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoUnless(assembler->WordIsSmi(element_k), ¬_smi);
|
| assembler->Branch(
|
| assembler->Float64Equal(search_num.value(),
|
| @@ -1957,7 +1974,7 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| &return_found, &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(¬_nan_loop);
|
| }
|
| }
|
| @@ -1966,10 +1983,10 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordIsSmi(element_k), &continue_loop);
|
| assembler->GotoUnless(assembler->Int32LessThan(
|
| assembler->LoadInstanceType(element_k),
|
| @@ -1985,7 +2002,7 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| &return_found, &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&string_loop);
|
| }
|
|
|
| @@ -1998,11 +2015,11 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| assembler->Goto(&loop_body);
|
| assembler->Bind(&loop_body);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
|
|
| - Node* element_k =
|
| - assembler->LoadFixedArrayElement(elements, index_var.value());
|
| + Node* element_k = assembler->LoadFixedArrayElement(
|
| + elements, index_var.value(), 0, CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(assembler->WordIsSmi(element_k), &continue_loop);
|
|
|
| Node* map_k = assembler->LoadMap(element_k);
|
| @@ -2010,7 +2027,7 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| &return_found, &continue_loop);
|
|
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(&loop_body);
|
| }
|
| }
|
| @@ -2039,14 +2056,15 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
| Node* element_k = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Float64());
|
| + elements, index_var.value(), MachineType::Float64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->BranchIfFloat64Equal(element_k, search_num.value(),
|
| &return_found, &continue_loop);
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(¬_nan_loop);
|
| }
|
| }
|
| @@ -2075,19 +2093,21 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| {
|
| Label continue_loop(assembler);
|
| assembler->GotoUnless(
|
| - assembler->Int32LessThan(index_var.value(), len_var.value()),
|
| + assembler->UintPtrLessThan(index_var.value(), len_var.value()),
|
| &return_not_found);
|
|
|
| if (kPointerSize == kDoubleSize) {
|
| Node* element = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Uint64());
|
| + elements, index_var.value(), MachineType::Uint64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| Node* the_hole = assembler->Int64Constant(kHoleNanInt64);
|
| assembler->GotoIf(assembler->Word64Equal(element, the_hole),
|
| &continue_loop);
|
| } else {
|
| Node* element_upper = assembler->LoadFixedDoubleArrayElement(
|
| elements, index_var.value(), MachineType::Uint32(),
|
| - kIeeeDoubleExponentWordOffset);
|
| + kIeeeDoubleExponentWordOffset,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->GotoIf(
|
| assembler->Word32Equal(element_upper,
|
| assembler->Int32Constant(kHoleNanUpper32)),
|
| @@ -2095,11 +2115,12 @@ void Builtins::Generate_ArrayIndexOf(CodeStubAssembler* assembler) {
|
| }
|
|
|
| Node* element_k = assembler->LoadFixedDoubleArrayElement(
|
| - elements, index_var.value(), MachineType::Float64());
|
| + elements, index_var.value(), MachineType::Float64(), 0,
|
| + CodeStubAssembler::INTPTR_PARAMETERS);
|
| assembler->BranchIfFloat64Equal(element_k, search_num.value(),
|
| &return_found, &continue_loop);
|
| assembler->Bind(&continue_loop);
|
| - index_var.Bind(assembler->Int32Add(index_var.value(), int32_one));
|
| + index_var.Bind(assembler->IntPtrAdd(index_var.value(), intptr_one));
|
| assembler->Goto(¬_nan_loop);
|
| }
|
| }
|
|
|