| Index: src/ia32/builtins-ia32.cc
|
| diff --git a/src/ia32/builtins-ia32.cc b/src/ia32/builtins-ia32.cc
|
| index 5cbecc22bafd2aa8099bb8ab2a4e08da8a056bdf..ea8d62b47d381620ea64ebd058f725ddbf09f057 100644
|
| --- a/src/ia32/builtins-ia32.cc
|
| +++ b/src/ia32/builtins-ia32.cc
|
| @@ -117,12 +117,9 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
| {
|
| FrameScope scope(masm, StackFrame::CONSTRUCT);
|
|
|
| - if (create_memento) {
|
| - __ AssertUndefinedOrAllocationSite(ebx);
|
| - __ push(ebx);
|
| - }
|
| -
|
| // Preserve the incoming parameters on the stack.
|
| + __ AssertUndefinedOrAllocationSite(ebx);
|
| + __ push(ebx);
|
| __ SmiTag(eax);
|
| __ push(eax);
|
| __ push(edi);
|
| @@ -254,7 +251,8 @@ static void Generate_JSConstructStubHelper(MacroAssembler* masm,
|
| __ mov(Operand(esi, AllocationMemento::kMapOffset),
|
| factory->allocation_memento_map());
|
| // Get the cell or undefined.
|
| - __ mov(edx, Operand(esp, kPointerSize*2));
|
| + __ mov(edx, Operand(esp, 3 * kPointerSize));
|
| + __ AssertUndefinedOrAllocationSite(edx);
|
| __ mov(Operand(esi, AllocationMemento::kAllocationSiteOffset),
|
| edx);
|
| } else {
|
| @@ -422,12 +420,13 @@ void Builtins::Generate_JSConstructStubForDerived(MacroAssembler* masm) {
|
| // -- edx: original constructor
|
| // -----------------------------------
|
|
|
| - // TODO(dslomov): support pretenuring
|
| - CHECK(!FLAG_pretenuring_call_new);
|
| -
|
| {
|
| FrameScope frame_scope(masm, StackFrame::CONSTRUCT);
|
|
|
| + // Preserve allocation site.
|
| + __ AssertUndefinedOrAllocationSite(ebx);
|
| + __ push(ebx);
|
| +
|
| // Preserve actual arguments count.
|
| __ SmiTag(eax);
|
| __ push(eax);
|
|
|