Chromium Code Reviews| Index: src/builtins/builtins-array.cc |
| diff --git a/src/builtins/builtins-array.cc b/src/builtins/builtins-array.cc |
| index e8ee8640c665b16a380fb3f3a2c65eabca1c8929..b0dfae667a809beae748bff82c0caa9247c112d7 100644 |
| --- a/src/builtins/builtins-array.cc |
| +++ b/src/builtins/builtins-array.cc |
| @@ -2021,11 +2021,12 @@ void Builtins::Generate_ArrayIndexOf(compiler::CodeAssemblerState* state) { |
| assembler.Bind(&init_len); |
| { |
| - // Handle case where JSArray length is not an Smi in the runtime |
| - Node* len = assembler.LoadObjectField(array, JSArray::kLengthOffset); |
| - assembler.GotoIfNot(assembler.TaggedIsSmi(len), &call_runtime); |
| + // JSArray length is always an Smi for fast arrays. |
| + Node* len = assembler.LoadAndUntagToWord32ObjectField( |
| + array, JSArray::kLengthOffset); |
| + CSA_ASSERT(&assembler, assembler.TaggedIsSmi(len)); |
|
caitp
2017/02/24 16:09:16
You're doing a LoadAndUntagToWord32ObjectField, wh
caitp
2017/02/24 16:12:42
There may not be any point in untagging though, I
Benedikt Meurer
2017/02/24 17:50:06
That's less efficient on 64-bit platforms, since t
caitp
2017/02/24 18:19:05
Fair enough --- might be worth updating the ArrayI
|
| - len_var.Bind(assembler.SmiToWord(len)); |
| + len_var.Bind(len); |
| assembler.Branch(assembler.WordEqual(len_var.value(), intptr_zero), |
| &return_not_found, &init_k); |
| } |