Index: src/arm/lithium-codegen-arm.h |
=================================================================== |
--- src/arm/lithium-codegen-arm.h (revision 9984) |
+++ src/arm/lithium-codegen-arm.h (working copy) |
@@ -58,6 +58,7 @@ |
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 @@ |
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); |
@@ -215,10 +216,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, |
@@ -247,19 +249,16 @@ |
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); |
@@ -302,6 +301,8 @@ |
Address address; |
}; |
+ void EnsureSpaceForLazyDeopt(); |
+ |
LChunk* const chunk_; |
MacroAssembler* const masm_; |
CompilationInfo* const info_; |
@@ -318,6 +319,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. |