Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index dc6ddf9f7e41595e10b58c033e04fdc4cd958e93..729ee4b286ac677951258928e1b007c05303f3c5 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -5231,19 +5231,21 @@ void LCodeGen::DoDeferredAllocate(LAllocate* instr) { |
__ Push(Smi::FromInt(size)); |
} |
+ int flags = 0; |
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(result, rax); |
} |