Index: src/x64/lithium-codegen-x64.h |
=================================================================== |
--- src/x64/lithium-codegen-x64.h (revision 9984) |
+++ src/x64/lithium-codegen-x64.h (working copy) |
@@ -60,6 +60,7 @@ |
status_(UNUSED), |
deferred_(8), |
osr_pc_offset_(-1), |
+ last_lazy_deopt_pc_(0), |
resolver_(this), |
expected_safepoint_kind_(Safepoint::kSimple) { |
PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
@@ -98,8 +99,8 @@ |
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); |
@@ -135,7 +136,6 @@ |
HGraph* graph() const { return chunk_->graph(); } |
int GetNextEmittedBlock(int block); |
- LInstruction* GetNextInstruction(); |
void EmitClassOfTest(Label* if_true, |
Label* if_false, |
@@ -200,10 +200,11 @@ |
void LoadHeapObject(Register result, Handle<HeapObject> object); |
- void RegisterLazyDeoptimization(LInstruction* instr, |
- SafepointMode safepoint_mode, |
- int argc); |
- void RegisterEnvironmentForDeoptimization(LEnvironment* environment); |
+ void RecordSafepointWithLazyDeopt(LInstruction* instr, |
+ SafepointMode safepoint_mode, |
+ int argc); |
+ void RegisterEnvironmentForDeoptimization(LEnvironment* environment, |
+ Safepoint::DeoptMode mode); |
void DeoptimizeIf(Condition cc, LEnvironment* environment); |
void AddToTranslation(Translation* translation, |
@@ -237,16 +238,13 @@ |
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 RecordPosition(int position); |
- int LastSafepointEnd() { |
- return static_cast<int>(safepoints_.GetPcAfterGap()); |
- } |
static Condition TokenToCondition(Token::Value op, bool is_unsigned); |
void EmitGoto(int block); |
@@ -292,6 +290,8 @@ |
Address address; |
}; |
+ void EnsureSpaceForLazyDeopt(); |
+ |
LChunk* const chunk_; |
MacroAssembler* const masm_; |
CompilationInfo* const info_; |
@@ -308,6 +308,7 @@ |
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. |