http://codereview.chromium.org/6323002/diff/40001/src/arm/ic-arm.cc File src/arm/ic-arm.cc (right):
http://codereview.chromium.org/6323002/diff/40001/src/arm/ic-arm.cc#newcode1395 src/arm/ic-arm.cc:1395: __ ldr(elements, FieldMemOperand(r1, JSObject::kElementsOffset)); We need to check that the receiver is a JSObject before we can load the elements. When the object is not a smi it has to be a heap object. However, there are heap objects that have no elements array (such as value objects and undefined and null). I think you need to use GenerateKeyedReceiverCheck or something like that. We could also get an object that requires access checks or has a keyed interceptor. http://codereview.chromium.org/6323002/diff/40001/src/arm/ic-arm.cc#newcode1403 src/arm/ic-arm.cc:1403: __ ldr(ip, FieldMemOperand(elements, PixelArray::kLengthOffset)); Since we have enough register here, I would prefer not to use ip. Using ip always makes me a bit nervous because it is occasionally clobered by the macroassembler. http://codereview.chromium.org/6323002/diff/40001/src/arm/ic-arm.cc#newcode1409 src/arm/ic-arm.cc:1409: __ ldr(ip, FieldMemOperand(elements, PixelArray::kExternalPointerOffset)); Ditto for using ip. http://codereview.chromium.org/6323002/diff/40001/src/ia32/ic-ia32.cc File src/ia32/ic-ia32.cc (right): http://codereview.chromium.org/6323002/diff/40001/src/ia32/ic-ia32.cc#newcode775 src/ia32/ic-ia32.cc:775: // Check that the key is an array index, that is Uint32. This code looks more complicated than on ARM and IA32. Not sure I understand why this code would be faster than using basically the same code as on x64? http://codereview.chromium.org/6323002/diff/40001/src/ia32/ic-ia32.cc#newcode787 src/ia32/ic-ia32.cc:787: __ mov(ecx, FieldOperand(edx, JSObject::kElementsOffset)); Need a JSObject check. http://codereview.chromium.org/6323002/diff/40001/src/ic.cc File src/ic.cc (right): http://codereview.chromium.org/6323002/diff/40001/src/ic.cc#newcode1202 src/ic.cc:1202: stub = pixel_array_stub(); Let's remove the pixel array code in the generic stub now that we have a special IC stub? http://codereview.chromium.org/6323002/diff/40001/src/x64/ic-x64.cc File src/x64/ic-x64.cc (right): http://codereview.chromium.org/6323002/diff/40001/src/x64/ic-x64.cc#newcode780 src/x64/ic-x64.cc:780: __ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset)); JSObject check needed. http://codereview.chromium.org/6323002/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
