Index: src/x64/lithium-codegen-x64.cc |
diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc |
index f04654532bfbcd70df33717c22e3c5845d1eeec1..bf0dd5e315ec5594b08eb8fa58de2593195d9bc3 100644 |
--- a/src/x64/lithium-codegen-x64.cc |
+++ b/src/x64/lithium-codegen-x64.cc |
@@ -495,37 +495,40 @@ void LCodeGen::PopulateDeoptimizationLiteralsWithInlinedFunctions() { |
} |
-void LCodeGen::RecordSafepoint(LPointerMap* pointers, |
- int deoptimization_index) { |
+void LCodeGen::RecordSafepoint( |
+ LPointerMap* pointers, |
+ Safepoint::Kind kind, |
+ int arguments, |
+ int deoptimization_index) { |
const ZoneList<LOperand*>* operands = pointers->operands(); |
Safepoint safepoint = safepoints_.DefineSafepoint(masm(), |
- deoptimization_index); |
+ kind, arguments, deoptimization_index); |
for (int i = 0; i < operands->length(); i++) { |
LOperand* pointer = operands->at(i); |
if (pointer->IsStackSlot()) { |
safepoint.DefinePointerSlot(pointer->index()); |
+ } else if (pointer->IsRegister() && (kind & Safepoint::kWithRegisters)) { |
+ safepoint.DefinePointerRegister(ToRegister(pointer)); |
} |
} |
+ if (kind & Safepoint::kWithRegisters) { |
+ // Register rsi always contains a pointer to the context. |
+ safepoint.DefinePointerRegister(rsi); |
+ } |
+} |
+ |
+ |
+void LCodeGen::RecordSafepoint(LPointerMap* pointers, |
+ int deoptimization_index) { |
+ RecordSafepoint(pointers, Safepoint::kSimple, 0, deoptimization_index); |
} |
void LCodeGen::RecordSafepointWithRegisters(LPointerMap* pointers, |
int arguments, |
int deoptimization_index) { |
- const ZoneList<LOperand*>* operands = pointers->operands(); |
- Safepoint safepoint = |
- safepoints_.DefineSafepointWithRegisters( |
- masm(), arguments, deoptimization_index); |
- for (int i = 0; i < operands->length(); i++) { |
- LOperand* pointer = operands->at(i); |
- if (pointer->IsStackSlot()) { |
- safepoint.DefinePointerSlot(pointer->index()); |
- } else if (pointer->IsRegister()) { |
- safepoint.DefinePointerRegister(ToRegister(pointer)); |
- } |
- } |
- // Register rsi always contains a pointer to the context. |
- safepoint.DefinePointerRegister(rsi); |
+ RecordSafepoint(pointers, Safepoint::kWithRegisters, arguments, |
+ deoptimization_index); |
} |