Index: src/arm/lithium-codegen-arm.cc |
diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
index 207dd8cdaa40550343a1d7a7a31fc6ff5bbc5bc7..5630c45cbb89286e6f2010c76e97b1940b311968 100644 |
--- a/src/arm/lithium-codegen-arm.cc |
+++ b/src/arm/lithium-codegen-arm.cc |
@@ -5473,19 +5473,22 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) { |
__ Push(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(Smi::FromInt(flags)); |
+ |
+ CallRuntimeFromDeferred( |
+ Runtime::kAllocateInTargetSpace, 2, instr, instr->context()); |
__ StoreToSafepointRegisterSlot(r0, result); |
} |