Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index de52fadda939f9e5c93be34d664355dab12ec445..bf83f05a062f32ff17fdb3051fc1cd5b4db87099 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -6045,19 +6045,22 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) { |
__ push(Immediate(Smi::FromInt(size))); |
} |
+ int flags = AllocateDoubleAlignFlag::encode( |
+ instr->hydrogen()->MustAllocateDoubleAligned()); |
if (instr->hydrogen()->IsOldPointerSpaceAllocation()) { |
ASSERT(!instr->hydrogen()->IsOldDataSpaceAllocation()); |
ASSERT(!instr->hydrogen()->IsNewSpaceAllocation()); |
- CallRuntimeFromDeferred( |
- Runtime::kAllocateInOldPointerSpace, 1, instr, instr->context()); |
+ flags = AllocateTargetSpace::update(flags, OLD_POINTER_SPACE); |
} else if (instr->hydrogen()->IsOldDataSpaceAllocation()) { |
ASSERT(!instr->hydrogen()->IsNewSpaceAllocation()); |
- CallRuntimeFromDeferred( |
- Runtime::kAllocateInOldDataSpace, 1, instr, instr->context()); |
+ flags = AllocateTargetSpace::update(flags, OLD_DATA_SPACE); |
} else { |
- CallRuntimeFromDeferred( |
- Runtime::kAllocateInNewSpace, 1, instr, instr->context()); |
+ flags = AllocateTargetSpace::update(flags, NEW_SPACE); |
} |
+ __ push(Immediate(Smi::FromInt(flags))); |
+ |
+ CallRuntimeFromDeferred( |
+ Runtime::kAllocateInTargetSpace, 2, instr, instr->context()); |
__ StoreToSafepointRegisterSlot(result, eax); |
} |