| Index: src/ia32/full-codegen-ia32.cc
|
| ===================================================================
|
| --- src/ia32/full-codegen-ia32.cc (revision 7540)
|
| +++ src/ia32/full-codegen-ia32.cc (working copy)
|
| @@ -193,13 +193,19 @@
|
| Operand(ebp, StandardFrameConstants::kCallerSPOffset + offset));
|
| __ push(edx);
|
| __ push(Immediate(Smi::FromInt(scope()->num_parameters())));
|
| - // Arguments to ArgumentsAccessStub:
|
| + // Arguments to ArgumentsAccessStub and/or New...:
|
| // function, receiver address, parameter count.
|
| // The stub will rewrite receiver and parameter count if the previous
|
| // stack frame was an arguments adapter frame.
|
| - ArgumentsAccessStub stub(
|
| - is_strict_mode() ? ArgumentsAccessStub::NEW_STRICT
|
| - : ArgumentsAccessStub::NEW_NON_STRICT);
|
| + ArgumentsAccessStub::Type type;
|
| + if (is_strict_mode()) {
|
| + type = ArgumentsAccessStub::NEW_STRICT;
|
| + } else if (function()->has_duplicate_parameters()) {
|
| + type = ArgumentsAccessStub::NEW_NON_STRICT_SLOW;
|
| + } else {
|
| + type = ArgumentsAccessStub::NEW_NON_STRICT_FAST;
|
| + }
|
| + ArgumentsAccessStub stub(type);
|
| __ CallStub(&stub);
|
|
|
| Move(arguments->AsSlot(), eax, ebx, edx);
|
|
|