X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fv8%2Fsrc%2Fcompiler%2Fcode-generator.h;h=2184a8405d5757993010ca8ab68aaecf4d78e565;hb=1afa4dd80ef85af7c90efaea6959db1d92330844;hp=ddc2f9adb6fd55abd8ae91612cdc069bf4a42454;hpb=90762837333c13ccf56f2ad88e4481fc71e8d281;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/v8/src/compiler/code-generator.h b/src/v8/src/compiler/code-generator.h index ddc2f9a..2184a84 100644 --- a/src/v8/src/compiler/code-generator.h +++ b/src/v8/src/compiler/code-generator.h @@ -17,33 +17,32 @@ namespace v8 { namespace internal { namespace compiler { +class Linkage; + // Generates native code for a sequence of instructions. class CodeGenerator FINAL : public GapResolver::Assembler { public: - explicit CodeGenerator(InstructionSequence* code); + explicit CodeGenerator(Frame* frame, Linkage* linkage, + InstructionSequence* code, CompilationInfo* info); // Generate native code. Handle GenerateCode(); InstructionSequence* code() const { return code_; } - Frame* frame() const { return code()->frame(); } - Graph* graph() const { return code()->graph(); } + Frame* frame() const { return frame_; } Isolate* isolate() const { return zone()->isolate(); } - Linkage* linkage() const { return code()->linkage(); } - Schedule* schedule() const { return code()->schedule(); } + Linkage* linkage() const { return linkage_; } private: MacroAssembler* masm() { return &masm_; } GapResolver* resolver() { return &resolver_; } SafepointTableBuilder* safepoints() { return &safepoints_; } Zone* zone() const { return code()->zone(); } + CompilationInfo* info() const { return info_; } // Checks if {block} will appear directly after {current_block_} when // assembling code, in which case, a fall-through can be used. - bool IsNextInAssemblyOrder(const BasicBlock* block) const { - return block->rpo_number_ == (current_block_->rpo_number_ + 1) && - block->deferred_ == current_block_->deferred_; - } + bool IsNextInAssemblyOrder(BasicBlock::RpoNumber block) const; // Record a safepoint with the given pointer map. void RecordSafepoint(PointerMap* pointers, Safepoint::Kind kind, @@ -96,7 +95,7 @@ class CodeGenerator FINAL : public GapResolver::Assembler { Translation* translation, size_t frame_state_offset, OutputFrameStateCombine state_combine); void AddTranslationForOperand(Translation* translation, Instruction* instr, - InstructionOperand* op); + InstructionOperand* op, MachineType type); void AddNopForSmiCodeInlining(); void EnsureSpaceForLazyDeopt(); void MarkLazyDeoptSite(); @@ -119,8 +118,11 @@ class CodeGenerator FINAL : public GapResolver::Assembler { int pc_offset_; }; - InstructionSequence* code_; - BasicBlock* current_block_; + Frame* const frame_; + Linkage* const linkage_; + InstructionSequence* const code_; + CompilationInfo* const info_; + BasicBlock::RpoNumber current_block_; SourcePosition current_source_position_; MacroAssembler masm_; GapResolver resolver_;