Index: src/x64/ic-x64.cc |
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc |
index d060e31cedf522219b973275d9a481f10345bec9..2d4a74c402a51c24c93e0ba7a9583fac12edaaf0 100644 |
--- a/src/x64/ic-x64.cc |
+++ b/src/x64/ic-x64.cc |
@@ -580,20 +580,15 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
__ ret(0); |
__ bind(&check_pixel_array); |
- // Check whether the elements object is a pixel array. |
- // rdx: receiver |
- // rax: key |
- __ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset)); |
- __ SmiToInteger32(rbx, rax); // Used on both directions of next branch. |
- __ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset), |
- Heap::kPixelArrayMapRootIndex); |
- __ j(not_equal, &check_number_dictionary); |
- __ cmpl(rbx, FieldOperand(rcx, PixelArray::kLengthOffset)); |
- __ j(above_equal, &slow); |
- __ movq(rax, FieldOperand(rcx, PixelArray::kExternalPointerOffset)); |
- __ movzxbq(rax, Operand(rax, rbx, times_1, 0)); |
- __ Integer32ToSmi(rax, rax); |
- __ ret(0); |
+ GenerateFastPixelArrayLoad(masm, |
+ rdx, |
+ rax, |
+ rcx, |
+ rbx, |
+ rax, |
+ &check_number_dictionary, |
+ NULL, |
+ &slow); |
__ bind(&check_number_dictionary); |
// Check whether the elements is a number dictionary. |