| 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.
|
|
|