Index: src/ia32/lithium-codegen-ia32.cc |
diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc |
index 3bfb10f80e8afc4e15ff2cbd9012f41d2f403823..29fe10994be64f5861ee455ce67e3842ddc6962b 100644 |
--- a/src/ia32/lithium-codegen-ia32.cc |
+++ b/src/ia32/lithium-codegen-ia32.cc |
@@ -566,37 +566,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 esi always contains a pointer to the context. |
+ safepoint.DefinePointerRegister(esi); |
+ } |
+} |
+ |
+ |
+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 esi always contains a pointer to the context. |
- safepoint.DefinePointerRegister(esi); |
+ RecordSafepoint(pointers, Safepoint::kWithRegisters, arguments, |
+ deoptimization_index); |
} |