Index: src/mips/lithium-codegen-mips.h |
diff --git a/src/mips/lithium-codegen-mips.h b/src/mips/lithium-codegen-mips.h |
index f9c013c1f5d2bb4cbf8f7cf1cd2ec60c4e0508d6..fd9ff9b7100c000412c03dcb3fe49892126f53db 100644 |
--- a/src/mips/lithium-codegen-mips.h |
+++ b/src/mips/lithium-codegen-mips.h |
@@ -58,6 +58,7 @@ class LCodeGen BASE_EMBEDDED { |
status_(UNUSED), |
deferred_(8), |
osr_pc_offset_(-1), |
+ last_lazy_deopt_pc_(0), |
resolver_(this), |
expected_safepoint_kind_(Safepoint::kSimple) { |
PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
@@ -112,8 +113,8 @@ class LCodeGen BASE_EMBEDDED { |
void DoDeferredStackCheck(LStackCheck* instr); |
void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); |
void DoDeferredStringCharFromCode(LStringCharFromCode* instr); |
- void DoDeferredLInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
- Label* map_check); |
+ void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, |
+ Label* map_check); |
// Parallel move support. |
void DoParallelMove(LParallelMove* move); |
@@ -216,10 +217,11 @@ class LCodeGen BASE_EMBEDDED { |
void LoadHeapObject(Register result, Handle<HeapObject> object); |
- void RegisterLazyDeoptimization(LInstruction* instr, |
- SafepointMode safepoint_mode); |
+ void RecordSafepointWithLazyDeopt(LInstruction* instr, |
+ SafepointMode safepoint_mode); |
- void RegisterEnvironmentForDeoptimization(LEnvironment* environment); |
+ void RegisterEnvironmentForDeoptimization(LEnvironment* environment, |
+ Safepoint::DeoptMode mode); |
void DeoptimizeIf(Condition cc, |
LEnvironment* environment, |
Register src1, |
@@ -251,19 +253,16 @@ class LCodeGen BASE_EMBEDDED { |
void RecordSafepoint(LPointerMap* pointers, |
Safepoint::Kind kind, |
int arguments, |
- int deoptimization_index); |
- void RecordSafepoint(LPointerMap* pointers, int deoptimization_index); |
- void RecordSafepoint(int deoptimization_index); |
+ Safepoint::DeoptMode mode); |
+ void RecordSafepoint(LPointerMap* pointers, Safepoint::DeoptMode mode); |
+ void RecordSafepoint(Safepoint::DeoptMode mode); |
void RecordSafepointWithRegisters(LPointerMap* pointers, |
int arguments, |
- int deoptimization_index); |
+ Safepoint::DeoptMode mode); |
void RecordSafepointWithRegistersAndDoubles(LPointerMap* pointers, |
int arguments, |
- int deoptimization_index); |
+ Safepoint::DeoptMode mode); |
void RecordPosition(int position); |
- int LastSafepointEnd() { |
- return static_cast<int>(safepoints_.GetPcAfterGap()); |
- } |
static Condition TokenToCondition(Token::Value op, bool is_unsigned); |
void EmitGoto(int block); |
@@ -320,6 +319,8 @@ class LCodeGen BASE_EMBEDDED { |
Address address; |
}; |
+ void EnsureSpaceForLazyDeopt(); |
+ |
LChunk* const chunk_; |
MacroAssembler* const masm_; |
CompilationInfo* const info_; |
@@ -336,6 +337,7 @@ class LCodeGen BASE_EMBEDDED { |
TranslationBuffer translations_; |
ZoneList<LDeferredCode*> deferred_; |
int osr_pc_offset_; |
+ int last_lazy_deopt_pc_; |
// Builder that keeps track of safepoints in the code. The table |
// itself is emitted at the end of the generated code. |