Index: src/ia32/lithium-codegen-ia32.h |
=================================================================== |
--- src/ia32/lithium-codegen-ia32.h (revision 9984) |
+++ src/ia32/lithium-codegen-ia32.h (working copy) |
@@ -61,7 +61,7 @@ |
dynamic_frame_alignment_(false), |
deferred_(8), |
osr_pc_offset_(-1), |
- deoptimization_reloc_size(), |
+ last_lazy_deopt_pc_(0), |
resolver_(this), |
expected_safepoint_kind_(Safepoint::kSimple) { |
PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
@@ -101,8 +101,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); |
@@ -144,7 +144,6 @@ |
HGraph* graph() const { return chunk_->graph(); } |
int GetNextEmittedBlock(int block); |
- LInstruction* GetNextInstruction(); |
void EmitClassOfTest(Label* if_true, |
Label* if_false, |
@@ -210,10 +209,11 @@ |
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); |
void AddToTranslation(Translation* translation, |
@@ -248,16 +248,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); |
@@ -291,6 +288,7 @@ |
Register object, |
Handle<Map> type, |
Handle<String> name); |
+ void EnsureSpaceForLazyDeopt(); |
LChunk* const chunk_; |
MacroAssembler* const masm_; |
@@ -308,14 +306,8 @@ |
TranslationBuffer translations_; |
ZoneList<LDeferredCode*> deferred_; |
int osr_pc_offset_; |
+ int last_lazy_deopt_pc_; |
- struct DeoptimizationRelocSize { |
- int min_size; |
- int last_pc_offset; |
- }; |
- |
- DeoptimizationRelocSize deoptimization_reloc_size; |
- |
// Builder that keeps track of safepoints in the code. The table |
// itself is emitted at the end of the generated code. |
SafepointTableBuilder safepoints_; |