| Index: src/ia32/lithium-codegen-ia32.h
|
| ===================================================================
|
| --- src/ia32/lithium-codegen-ia32.h (revision 6384)
|
| +++ src/ia32/lithium-codegen-ia32.h (working copy)
|
| @@ -34,6 +34,7 @@
|
| #include "deoptimizer.h"
|
| #include "safepoint-table.h"
|
| #include "scopes.h"
|
| +#include "ia32/lithium-gap-resolver-ia32.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -43,28 +44,6 @@
|
| class LGapNode;
|
| 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.
|
| + Operand ToOperand(LOperand* op) const;
|
| + Register ToRegister(LOperand* op) const;
|
| + XMMRegister ToDoubleRegister(LOperand* op) const;
|
| + Immediate ToImmediate(LOperand* op);
|
| +
|
| + // The operand denoting the second word (the one with a higher address) of
|
| + // a double stack slot.
|
| + Operand HighOperand(LOperand* op);
|
| +
|
| // 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();
|
| @@ -191,11 +183,7 @@
|
|
|
| Register ToRegister(int index) const;
|
| XMMRegister ToDoubleRegister(int index) const;
|
| - Register ToRegister(LOperand* op) const;
|
| - XMMRegister ToDoubleRegister(LOperand* op) const;
|
| int ToInteger32(LConstantOperand* op) const;
|
| - Operand ToOperand(LOperand* op) const;
|
| - Immediate ToImmediate(LOperand* op);
|
|
|
| // Specific math operations - used from DoUnaryMathOperation.
|
| void DoMathAbs(LUnaryMathOperation* instr);
|
|
|