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