Updated. Kevin, please let me know if this is OK.

Cheers
Martin


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) {
On 2011/03/15 09:58:40, Lasse Reichstein wrote:
Could you get these values from methods on ArgumentsAccessStub that
switch on
the type_?

Done.

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.
On 2011/03/15 09:58:40, Lasse Reichstein wrote:
These are swapped because length is the only one requiring an
in-object field
now?

Yes. We always have length, calee is only on non-strict arguments
objects.

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) {
On 2011/03/15 09:58:40, Lasse Reichstein wrote:
Save the is_strict_callee boolean as a variable, and use it both above
and here,
instead of checking a derived value here.

Done.

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);
On 2011/03/15 09:58:40, Lasse Reichstein wrote:
use
   FieldOperand(eax, JSObject::kHeaderSize +
Heap::arguments_callee_index *
kPointerSize)
instead of implicitly duplicating the constant in the expression.

Done, although the new code is less pretty :( especially in arm version
where the only way to achieve <80 lines was to introduce additional
local

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);
On 2011/03/15 09:58:40, Lasse Reichstein wrote:
Ditto here. Just do
FieldOperand(eax, JSObject::kHeaderSize + Heap::arguments_length_index
*
kPointerSize)

Done.

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");
On 2011/03/15 09:58:40, Lasse Reichstein wrote:
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?

Correct. That part is not yet implemented.

http://codereview.chromium.org/6698015/diff/6001/src/code-stubs.h
File src/code-stubs.h (right):

http://codereview.chromium.org/6698015/diff/6001/src/code-stubs.h#newcode684
src/code-stubs.h:684: }
This is tragic. Using ?: results in linker not being able to find the
kArguments* constants. Unless I am missing something it smells like gcc
bug... so I had to resort to if .. else to work around it. It didn't
make difference whether the code was in inline method or not.

http://codereview.chromium.org/6698015/

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to