OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/builtins/builtins.h" | 5 #include "src/builtins/builtins.h" |
6 #include "src/builtins/builtins-utils.h" | 6 #include "src/builtins/builtins-utils.h" |
7 | 7 |
8 #include "src/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/elements.h" | 9 #include "src/elements.h" |
10 | 10 |
(...skipping 1289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1300 | 1300 |
1301 len_var.Bind(assembler->SmiToWord(len)); | 1301 len_var.Bind(assembler->SmiToWord(len)); |
1302 assembler->Branch(assembler->WordEqual(len_var.value(), intptr_zero), | 1302 assembler->Branch(assembler->WordEqual(len_var.value(), intptr_zero), |
1303 &return_false, &init_k); | 1303 &return_false, &init_k); |
1304 } | 1304 } |
1305 | 1305 |
1306 assembler->Bind(&init_k); | 1306 assembler->Bind(&init_k); |
1307 { | 1307 { |
1308 Label done(assembler), init_k_smi(assembler), init_k_heap_num(assembler), | 1308 Label done(assembler), init_k_smi(assembler), init_k_heap_num(assembler), |
1309 init_k_zero(assembler), init_k_n(assembler); | 1309 init_k_zero(assembler), init_k_n(assembler); |
1310 Callable call_to_integer = CodeFactory::ToInteger(assembler->isolate()); | 1310 Node* tagged_n = assembler->ToInteger(context, start_from); |
1311 Node* tagged_n = assembler->CallStub(call_to_integer, context, start_from); | |
1312 | 1311 |
1313 assembler->Branch(assembler->WordIsSmi(tagged_n), &init_k_smi, | 1312 assembler->Branch(assembler->WordIsSmi(tagged_n), &init_k_smi, |
1314 &init_k_heap_num); | 1313 &init_k_heap_num); |
1315 | 1314 |
1316 assembler->Bind(&init_k_smi); | 1315 assembler->Bind(&init_k_smi); |
1317 { | 1316 { |
1318 start_from_var.Bind(assembler->SmiUntag(tagged_n)); | 1317 start_from_var.Bind(assembler->SmiUntag(tagged_n)); |
1319 assembler->Goto(&init_k_n); | 1318 assembler->Goto(&init_k_n); |
1320 } | 1319 } |
1321 | 1320 |
(...skipping 426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1748 | 1747 |
1749 len_var.Bind(assembler->SmiToWord(len)); | 1748 len_var.Bind(assembler->SmiToWord(len)); |
1750 assembler->Branch(assembler->WordEqual(len_var.value(), intptr_zero), | 1749 assembler->Branch(assembler->WordEqual(len_var.value(), intptr_zero), |
1751 &return_not_found, &init_k); | 1750 &return_not_found, &init_k); |
1752 } | 1751 } |
1753 | 1752 |
1754 assembler->Bind(&init_k); | 1753 assembler->Bind(&init_k); |
1755 { | 1754 { |
1756 Label done(assembler), init_k_smi(assembler), init_k_heap_num(assembler), | 1755 Label done(assembler), init_k_smi(assembler), init_k_heap_num(assembler), |
1757 init_k_zero(assembler), init_k_n(assembler); | 1756 init_k_zero(assembler), init_k_n(assembler); |
1758 Callable call_to_integer = CodeFactory::ToInteger(assembler->isolate()); | 1757 Node* tagged_n = assembler->ToInteger(context, start_from); |
1759 Node* tagged_n = assembler->CallStub(call_to_integer, context, start_from); | |
1760 | 1758 |
1761 assembler->Branch(assembler->WordIsSmi(tagged_n), &init_k_smi, | 1759 assembler->Branch(assembler->WordIsSmi(tagged_n), &init_k_smi, |
1762 &init_k_heap_num); | 1760 &init_k_heap_num); |
1763 | 1761 |
1764 assembler->Bind(&init_k_smi); | 1762 assembler->Bind(&init_k_smi); |
1765 { | 1763 { |
1766 start_from_var.Bind(assembler->SmiUntag(tagged_n)); | 1764 start_from_var.Bind(assembler->SmiUntag(tagged_n)); |
1767 assembler->Goto(&init_k_n); | 1765 assembler->Goto(&init_k_n); |
1768 } | 1766 } |
1769 | 1767 |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2070 assembler->Bind(&return_not_found); | 2068 assembler->Bind(&return_not_found); |
2071 assembler->Return(assembler->NumberConstant(-1)); | 2069 assembler->Return(assembler->NumberConstant(-1)); |
2072 | 2070 |
2073 assembler->Bind(&call_runtime); | 2071 assembler->Bind(&call_runtime); |
2074 assembler->Return(assembler->CallRuntime(Runtime::kArrayIndexOf, context, | 2072 assembler->Return(assembler->CallRuntime(Runtime::kArrayIndexOf, context, |
2075 array, search_element, start_from)); | 2073 array, search_element, start_from)); |
2076 } | 2074 } |
2077 | 2075 |
2078 } // namespace internal | 2076 } // namespace internal |
2079 } // namespace v8 | 2077 } // namespace v8 |
OLD | NEW |