X87: Refactor bailout reasons and disable optimization in more cases.

port r24161.

original commit message:
  Refactor bailout reasons and disable optimization in more cases.

BUG=
R=weiliang.lin@intel.com

Review URL: https://codereview.chromium.org/597913002

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24190 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 8e6e09c1
...@@ -472,12 +472,6 @@ LPlatformChunk* LChunkBuilder::Build() { ...@@ -472,12 +472,6 @@ LPlatformChunk* LChunkBuilder::Build() {
} }
void LChunkBuilder::Abort(BailoutReason reason) {
info()->set_bailout_reason(reason);
status_ = ABORTED;
}
LUnallocated* LChunkBuilder::ToUnallocated(Register reg) { LUnallocated* LChunkBuilder::ToUnallocated(Register reg) {
return new(zone()) LUnallocated(LUnallocated::FIXED_REGISTER, return new(zone()) LUnallocated(LUnallocated::FIXED_REGISTER,
Register::ToAllocationIndex(reg)); Register::ToAllocationIndex(reg));
...@@ -2534,7 +2528,7 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) { ...@@ -2534,7 +2528,7 @@ LInstruction* LChunkBuilder::DoUnknownOSRValue(HUnknownOSRValue* instr) {
} else { } else {
spill_index = env_index - instr->environment()->first_local_index(); spill_index = env_index - instr->environment()->first_local_index();
if (spill_index > LUnallocated::kMaxFixedSlotIndex) { if (spill_index > LUnallocated::kMaxFixedSlotIndex) {
Abort(kNotEnoughSpillSlotsForOsr); Retry(kNotEnoughSpillSlotsForOsr);
spill_index = 0; spill_index = 0;
} }
if (spill_index == 0) { if (spill_index == 0) {
......
...@@ -2760,17 +2760,11 @@ class LPlatformChunk FINAL : public LChunk { ...@@ -2760,17 +2760,11 @@ class LPlatformChunk FINAL : public LChunk {
class LChunkBuilder FINAL : public LChunkBuilderBase { class LChunkBuilder FINAL : public LChunkBuilderBase {
public: public:
LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator)
: LChunkBuilderBase(graph->zone()), : LChunkBuilderBase(info, graph),
chunk_(NULL),
info_(info),
graph_(graph),
status_(UNUSED),
current_instruction_(NULL), current_instruction_(NULL),
current_block_(NULL), current_block_(NULL),
next_block_(NULL), next_block_(NULL),
allocator_(allocator) { } allocator_(allocator) {}
Isolate* isolate() const { return graph_->isolate(); }
// Build the sequence for the graph. // Build the sequence for the graph.
LPlatformChunk* Build(); LPlatformChunk* Build();
...@@ -2800,24 +2794,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase { ...@@ -2800,24 +2794,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase {
LInstruction* DoFlooringDivI(HMathFloorOfDiv* instr); LInstruction* DoFlooringDivI(HMathFloorOfDiv* instr);
private: 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. // Methods for getting operands for Use / Define / Temp.
LUnallocated* ToUnallocated(Register reg); LUnallocated* ToUnallocated(Register reg);
LUnallocated* ToUnallocated(X87Register reg); LUnallocated* ToUnallocated(X87Register reg);
...@@ -2911,10 +2887,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase { ...@@ -2911,10 +2887,6 @@ class LChunkBuilder FINAL : public LChunkBuilderBase {
LOperand* GetStoreKeyedValueOperand(HStoreKeyed* instr); LOperand* GetStoreKeyedValueOperand(HStoreKeyed* instr);
LPlatformChunk* chunk_;
CompilationInfo* info_;
HGraph* const graph_;
Status status_;
HInstruction* current_instruction_; HInstruction* current_instruction_;
HBasicBlock* current_block_; HBasicBlock* current_block_;
HBasicBlock* next_block_; HBasicBlock* next_block_;
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define V8_X87_MACRO_ASSEMBLER_X87_H_ #define V8_X87_MACRO_ASSEMBLER_X87_H_
#include "src/assembler.h" #include "src/assembler.h"
#include "src/bailout-reason.h"
#include "src/frames.h" #include "src/frames.h"
#include "src/globals.h" #include "src/globals.h"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment