Chromium Code Reviews| Index: src/x64/lithium-codegen-x64.h |
| =================================================================== |
| --- src/x64/lithium-codegen-x64.h (revision 6414) |
| +++ src/x64/lithium-codegen-x64.h (working copy) |
| @@ -34,6 +34,7 @@ |
| #include "deoptimizer.h" |
| #include "safepoint-table.h" |
| #include "scopes.h" |
| +#include "x64/lithium-gap-resolver-x64.h" |
| namespace v8 { |
| namespace internal { |
| @@ -43,28 +44,6 @@ |
| class LGapNode; |
|
Kevin Millikin (Chromium)
2011/01/24 14:57:12
No need for this forward declaration anymore.
William Hesse
2011/01/26 10:05:57
Done.
|
| class SafepointGenerator; |
| -class LGapResolver BASE_EMBEDDED { |
| - public: |
| - LGapResolver(); |
| - const ZoneList<LMoveOperands>* Resolve(const ZoneList<LMoveOperands>* moves, |
| - LOperand* marker_operand); |
| - |
| - private: |
| - LGapNode* LookupNode(LOperand* operand); |
| - bool CanReach(LGapNode* a, LGapNode* b, int visited_id); |
| - bool CanReach(LGapNode* a, LGapNode* b); |
| - void RegisterMove(LMoveOperands move); |
| - void AddResultMove(LOperand* from, LOperand* to); |
| - void AddResultMove(LGapNode* from, LGapNode* to); |
| - void ResolveCycle(LGapNode* start, LOperand* marker_operand); |
| - |
| - ZoneList<LGapNode*> nodes_; |
| - ZoneList<LGapNode*> identified_cycles_; |
| - ZoneList<LMoveOperands> result_; |
| - int next_visited_id_; |
| -}; |
| - |
| - |
| class LCodeGen BASE_EMBEDDED { |
| public: |
| LCodeGen(LChunk* chunk, MacroAssembler* assembler, CompilationInfo* info) |
| @@ -80,10 +59,24 @@ |
| scope_(chunk->graph()->info()->scope()), |
| status_(UNUSED), |
| deferred_(8), |
| - osr_pc_offset_(-1) { |
| + osr_pc_offset_(-1), |
| + resolver_(this) { |
| PopulateDeoptimizationLiteralsWithInlinedFunctions(); |
| } |
| + // Simple accessors. |
| + MacroAssembler* masm() const { return masm_; } |
| + |
| + // Support for converting LOperands to assembler types. |
| + Register ToRegister(LOperand* op) const; |
| + XMMRegister ToDoubleRegister(LOperand* op) const; |
| + bool IsInteger32Constant(LConstantOperand* op) const; |
| + int ToInteger32(LConstantOperand* op) const; |
| + bool IsTaggedConstant(LConstantOperand* op) const; |
| + Handle<Object> ToHandle(LConstantOperand* op) const; |
| + Operand ToOperand(LOperand* op) const; |
| + |
| + |
| // Try to generate code for the entire chunk, but it may fail if the |
| // chunk contains constructs we cannot handle. Returns true if the |
| // code generation attempt succeeded. |
| @@ -129,7 +122,6 @@ |
| LChunk* chunk() const { return chunk_; } |
| Scope* scope() const { return scope_; } |
| HGraph* graph() const { return chunk_->graph(); } |
| - MacroAssembler* masm() const { return masm_; } |
| int GetNextEmittedBlock(int block); |
| LInstruction* GetNextInstruction(); |
| @@ -190,13 +182,6 @@ |
| Register ToRegister(int index) const; |
| XMMRegister ToDoubleRegister(int index) const; |
| - Register ToRegister(LOperand* op) const; |
| - XMMRegister ToDoubleRegister(LOperand* op) const; |
| - bool IsInteger32Constant(LConstantOperand* op) const; |
| - int ToInteger32(LConstantOperand* op) const; |
| - bool IsTaggedConstant(LConstantOperand* op) const; |
| - Handle<Object> ToHandle(LConstantOperand* op) const; |
| - Operand ToOperand(LOperand* op) const; |
| // Specific math operations - used from DoUnaryMathOperation. |
| void DoMathAbs(LUnaryMathOperation* instr); |