| Index: src/arm/lithium-codegen-arm.h
|
| diff --git a/src/arm/lithium-codegen-arm.h b/src/arm/lithium-codegen-arm.h
|
| index 3016b451d29f785fed74c144c2332bf36a59195c..cbd89ca93ba9fd011d13427ddcfdc6bc1e0bc8ec 100644
|
| --- a/src/arm/lithium-codegen-arm.h
|
| +++ b/src/arm/lithium-codegen-arm.h
|
| @@ -32,6 +32,7 @@
|
|
|
| #include "arm/lithium-gap-resolver-arm.h"
|
| #include "deoptimizer.h"
|
| +#include "lithium-codegen.h"
|
| #include "safepoint-table.h"
|
| #include "scopes.h"
|
| #include "v8utils.h"
|
| @@ -43,26 +44,18 @@ namespace internal {
|
| class LDeferredCode;
|
| class SafepointGenerator;
|
|
|
| -class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| +class LCodeGen: public LCodeGenBase {
|
| public:
|
| LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info)
|
| - : zone_(info->zone()),
|
| - chunk_(static_cast<LPlatformChunk*>(chunk)),
|
| - masm_(assembler),
|
| - info_(info),
|
| - current_block_(-1),
|
| - current_instruction_(-1),
|
| - instructions_(chunk->instructions()),
|
| + : LCodeGenBase(chunk, assembler, info),
|
| deoptimizations_(4, info->zone()),
|
| deopt_jump_table_(4, info->zone()),
|
| deoptimization_literals_(8, info->zone()),
|
| inlined_function_count_(0),
|
| scope_(info->scope()),
|
| - status_(UNUSED),
|
| translations_(info->zone()),
|
| deferred_(8, info->zone()),
|
| osr_pc_offset_(-1),
|
| - last_lazy_deopt_pc_(0),
|
| frame_is_built_(false),
|
| safepoints_(info->zone()),
|
| resolver_(this),
|
| @@ -72,14 +65,6 @@ class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| }
|
|
|
|
|
| - // Simple accessors.
|
| - MacroAssembler* masm() const { return masm_; }
|
| - CompilationInfo* info() const { return info_; }
|
| - Isolate* isolate() const { return info_->isolate(); }
|
| - Factory* factory() const { return isolate()->factory(); }
|
| - Heap* heap() const { return isolate()->heap(); }
|
| - Zone* zone() const { return zone_; }
|
| -
|
| int LookupDestination(int block_id) const {
|
| return chunk()->LookupDestination(block_id);
|
| }
|
| @@ -178,30 +163,15 @@ class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| #undef DECLARE_DO
|
|
|
| private:
|
| - enum Status {
|
| - UNUSED,
|
| - GENERATING,
|
| - DONE,
|
| - ABORTED
|
| - };
|
| -
|
| - bool is_unused() const { return status_ == UNUSED; }
|
| - bool is_generating() const { return status_ == GENERATING; }
|
| - bool is_done() const { return status_ == DONE; }
|
| - bool is_aborted() const { return status_ == ABORTED; }
|
| -
|
| StrictModeFlag strict_mode_flag() const {
|
| return info()->is_classic_mode() ? kNonStrictMode : kStrictMode;
|
| }
|
|
|
| - LPlatformChunk* chunk() const { return chunk_; }
|
| Scope* scope() const { return scope_; }
|
| - HGraph* graph() const { return chunk()->graph(); }
|
|
|
| Register scratch0() { return r9; }
|
| LowDwVfpRegister double_scratch0() { return kScratchDoubleReg; }
|
|
|
| - int GetNextEmittedBlock() const;
|
| LInstruction* GetNextInstruction();
|
|
|
| void EmitClassOfTest(Label* if_true,
|
| @@ -214,14 +184,12 @@ class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| int GetStackSlotCount() const { return chunk()->spill_slot_count(); }
|
|
|
| void Abort(BailoutReason reason);
|
| - void FPRINTF_CHECKING Comment(const char* format, ...);
|
|
|
| void AddDeferredCode(LDeferredCode* code) { deferred_.Add(code, zone()); }
|
|
|
| // Code generation passes. Returns true if code generation should
|
| // continue.
|
| bool GeneratePrologue();
|
| - bool GenerateBody();
|
| bool GenerateDeferredCode();
|
| bool GenerateDeoptJumpTable();
|
| bool GenerateSafepointTable();
|
| @@ -323,7 +291,7 @@ class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| int arguments,
|
| Safepoint::DeoptMode mode);
|
| void RecordPosition(int position);
|
| - void RecordAndUpdatePosition(int position);
|
| + void RecordAndUpdatePosition(int position) V8_OVERRIDE;
|
|
|
| static Condition TokenToCondition(Token::Value op, bool is_unsigned);
|
| void EmitGoto(int block);
|
| @@ -385,7 +353,7 @@ class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| Register scratch,
|
| LEnvironment* environment);
|
|
|
| - void EnsureSpaceForLazyDeopt();
|
| + void EnsureSpaceForLazyDeopt(int space_needed) V8_OVERRIDE;
|
| void DoLoadKeyedExternalArray(LLoadKeyed* instr);
|
| void DoLoadKeyedFixedDoubleArray(LLoadKeyed* instr);
|
| void DoLoadKeyedFixedArray(LLoadKeyed* instr);
|
| @@ -393,24 +361,14 @@ class LCodeGen V8_FINAL BASE_EMBEDDED {
|
| void DoStoreKeyedFixedDoubleArray(LStoreKeyed* instr);
|
| void DoStoreKeyedFixedArray(LStoreKeyed* instr);
|
|
|
| - Zone* zone_;
|
| - LPlatformChunk* const chunk_;
|
| - MacroAssembler* const masm_;
|
| - CompilationInfo* const info_;
|
| -
|
| - int current_block_;
|
| - int current_instruction_;
|
| - const ZoneList<LInstruction*>* instructions_;
|
| ZoneList<LEnvironment*> deoptimizations_;
|
| ZoneList<Deoptimizer::JumpTableEntry> deopt_jump_table_;
|
| ZoneList<Handle<Object> > deoptimization_literals_;
|
| int inlined_function_count_;
|
| Scope* const scope_;
|
| - Status status_;
|
| TranslationBuffer translations_;
|
| ZoneList<LDeferredCode*> deferred_;
|
| int osr_pc_offset_;
|
| - int last_lazy_deopt_pc_;
|
| bool frame_is_built_;
|
|
|
| // Builder that keeps track of safepoints in the code. The table
|
|
|