LGTM if Kevin agrees.
http://codereview.chromium.org/6698015/diff/1/src/arm/code-stubs-arm.cc File src/arm/code-stubs-arm.cc (right): http://codereview.chromium.org/6698015/diff/1/src/arm/code-stubs-arm.cc#newcode4807 src/arm/code-stubs-arm.cc:4807: int arguments_object_size) { Could you get these values from methods on ArgumentsAccessStub that switch on the type_? http://codereview.chromium.org/6698015/diff/1/src/bootstrapper.cc File src/bootstrapper.cc (right): http://codereview.chromium.org/6698015/diff/1/src/bootstrapper.cc#newcode998 src/bootstrapper.cc:998: // callee must be added as the second property. These are swapped because length is the only one requiring an in-object field now? http://codereview.chromium.org/6698015/diff/1/src/heap.cc File src/heap.cc (right): http://codereview.chromium.org/6698015/diff/1/src/heap.cc#newcode2942 src/heap.cc:2942: if (arguments_object_size == kArgumentsObjectSize) { Save the is_strict_callee boolean as a variable, and use it both above and here, instead of checking a derived value here. http://codereview.chromium.org/6698015/diff/1/src/ia32/code-stubs-ia32.cc File src/ia32/code-stubs-ia32.cc (right): http://codereview.chromium.org/6698015/diff/1/src/ia32/code-stubs-ia32.cc#newcode3660 src/ia32/code-stubs-ia32.cc:3660: __ mov(FieldOperand(eax, JSObject::kHeaderSize + kPointerSize), ebx); use FieldOperand(eax, JSObject::kHeaderSize + Heap::arguments_callee_index * kPointerSize) instead of implicitly duplicating the constant in the expression. http://codereview.chromium.org/6698015/diff/1/src/ia32/code-stubs-ia32.cc#newcode3666 src/ia32/code-stubs-ia32.cc:3666: __ mov(FieldOperand(eax, JSObject::kHeaderSize), ecx); Ditto here. Just do FieldOperand(eax, JSObject::kHeaderSize + Heap::arguments_length_index * kPointerSize) http://codereview.chromium.org/6698015/diff/1/test/mjsunit/strict-mode.js File test/mjsunit/strict-mode.js (right): http://codereview.chromium.org/6698015/diff/1/test/mjsunit/strict-mode.js#newcode1061 test/mjsunit/strict-mode.js:1061: CheckPillDescriptor(args, "callee"); How about a strict function calling a non-strict function that returns arguments? This should still poison caller (but not callee according to 10.6, [[Get]], step 3.b). I think that might not be implemented yet, correct? http://codereview.chromium.org/6698015/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
