| 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);
 | 
| 
 |