| 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_; | 
|  |