From 7301ee52f78f905c5de15ac277b6206098331dec Mon Sep 17 00:00:00 2001 From: "balazs.kilvady@imgtec.com" Date: Wed, 24 Sep 2014 10:17:24 +0000 Subject: [PATCH] MIPS: Refactor bailout reasons and disable optimization in more cases. Port r24161 (008f335) BUG= R=dusan.milosavljevic@imgtec.com Review URL: https://codereview.chromium.org/593313004 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24175 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/mips/lithium-mips.cc | 8 +------- src/mips/lithium-mips.h | 32 ++------------------------------ src/mips64/lithium-mips64.cc | 8 +------- src/mips64/lithium-mips64.h | 32 ++------------------------------ 4 files changed, 6 insertions(+), 74 deletions(-) diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc index 904ffa5..1757d92 100644 --- a/src/mips/lithium-mips.cc +++ b/src/mips/lithium-mips.cc @@ -430,12 +430,6 @@ LPlatformChunk* LChunkBuilder::Build() { } -void LChunkBuilder::Abort(BailoutReason reason) { - info()->set_bailout_reason(reason); - status_ = ABORTED; -} - - LUnallocated* LChunkBuilder::ToUnallocated(Register reg) { return new(zone()) LUnallocated(LUnallocated::FIXED_REGISTER, Register::ToAllocationIndex(reg)); @@ -2425,7 +2419,7 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) { } else { spill_index = env_index - instr->environment()->first_local_index(); if (spill_index > LUnallocated::kMaxFixedSlotIndex) { - Abort(kTooManySpillSlotsNeededForOSR); + Retry(kTooManySpillSlotsNeededForOSR); spill_index = 0; } } diff --git a/src/mips/lithium-mips.h b/src/mips/lithium-mips.h index 3f18a17..36e5b57 100644 --- a/src/mips/lithium-mips.h +++ b/src/mips/lithium-mips.h @@ -2718,17 +2718,11 @@ class LPlatformChunk FINAL : public LChunk { class LChunkBuilder FINAL : public LChunkBuilderBase { public: LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) - : LChunkBuilderBase(graph->zone()), - chunk_(NULL), - info_(info), - graph_(graph), - status_(UNUSED), + : LChunkBuilderBase(info, graph), current_instruction_(NULL), current_block_(NULL), next_block_(NULL), - allocator_(allocator) { } - - Isolate* isolate() const { return graph_->isolate(); } + allocator_(allocator) {} // Build the sequence for the graph. LPlatformChunk* Build(); @@ -2762,24 +2756,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase { LInstruction* DoFlooringDivI(HMathFloorOfDiv* instr); private: - enum Status { - UNUSED, - BUILDING, - DONE, - ABORTED - }; - - LPlatformChunk* chunk() const { return chunk_; } - CompilationInfo* info() const { return info_; } - HGraph* graph() const { return graph_; } - - bool is_unused() const { return status_ == UNUSED; } - bool is_building() const { return status_ == BUILDING; } - bool is_done() const { return status_ == DONE; } - bool is_aborted() const { return status_ == ABORTED; } - - void Abort(BailoutReason reason); - // Methods for getting operands for Use / Define / Temp. LUnallocated* ToUnallocated(Register reg); LUnallocated* ToUnallocated(DoubleRegister reg); @@ -2865,10 +2841,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase { LInstruction* DoArithmeticT(Token::Value op, HBinaryOperation* instr); - LPlatformChunk* chunk_; - CompilationInfo* info_; - HGraph* const graph_; - Status status_; HInstruction* current_instruction_; HBasicBlock* current_block_; HBasicBlock* next_block_; diff --git a/src/mips64/lithium-mips64.cc b/src/mips64/lithium-mips64.cc index 214748c..4892611 100644 --- a/src/mips64/lithium-mips64.cc +++ b/src/mips64/lithium-mips64.cc @@ -430,12 +430,6 @@ LPlatformChunk* LChunkBuilder::Build() { } -void LChunkBuilder::Abort(BailoutReason reason) { - info()->set_bailout_reason(reason); - status_ = ABORTED; -} - - LUnallocated* LChunkBuilder::ToUnallocated(Register reg) { return new(zone()) LUnallocated(LUnallocated::FIXED_REGISTER, Register::ToAllocationIndex(reg)); @@ -2425,7 +2419,7 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) { } else { spill_index = env_index - instr->environment()->first_local_index(); if (spill_index > LUnallocated::kMaxFixedSlotIndex) { - Abort(kTooManySpillSlotsNeededForOSR); + Retry(kTooManySpillSlotsNeededForOSR); spill_index = 0; } } diff --git a/src/mips64/lithium-mips64.h b/src/mips64/lithium-mips64.h index 464cfa9..c6257a4 100644 --- a/src/mips64/lithium-mips64.h +++ b/src/mips64/lithium-mips64.h @@ -2702,17 +2702,11 @@ class LPlatformChunk FINAL : public LChunk { class LChunkBuilder FINAL : public LChunkBuilderBase { public: LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) - : LChunkBuilderBase(graph->zone()), - chunk_(NULL), - info_(info), - graph_(graph), - status_(UNUSED), + : LChunkBuilderBase(info, graph), current_instruction_(NULL), current_block_(NULL), next_block_(NULL), - allocator_(allocator) { } - - Isolate* isolate() const { return graph_->isolate(); } + allocator_(allocator) {} // Build the sequence for the graph. LPlatformChunk* Build(); @@ -2746,24 +2740,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase { LInstruction* DoFlooringDivI(HMathFloorOfDiv* instr); private: - enum Status { - UNUSED, - BUILDING, - DONE, - ABORTED - }; - - LPlatformChunk* chunk() const { return chunk_; } - CompilationInfo* info() const { return info_; } - HGraph* graph() const { return graph_; } - - bool is_unused() const { return status_ == UNUSED; } - bool is_building() const { return status_ == BUILDING; } - bool is_done() const { return status_ == DONE; } - bool is_aborted() const { return status_ == ABORTED; } - - void Abort(BailoutReason reason); - // Methods for getting operands for Use / Define / Temp. LUnallocated* ToUnallocated(Register reg); LUnallocated* ToUnallocated(DoubleRegister reg); @@ -2849,10 +2825,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase { LInstruction* DoArithmeticT(Token::Value op, HBinaryOperation* instr); - LPlatformChunk* chunk_; - CompilationInfo* info_; - HGraph* const graph_; - Status status_; HInstruction* current_instruction_; HBasicBlock* current_block_; HBasicBlock* next_block_; -- 2.7.4