MIPS: Don't emit code for instructions that are hiding behind an HSoftDeoptimize

Port r13412 (36df819b)

BUG=
TEST=

Review URL: https://codereview.chromium.org/12022005
Patch from Akos Palfi <palfia@homejinni.com>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 8a6221b1
...@@ -5620,6 +5620,11 @@ void LCodeGen::DoDeoptimize(LDeoptimize* instr) { ...@@ -5620,6 +5620,11 @@ void LCodeGen::DoDeoptimize(LDeoptimize* instr) {
} }
void LCodeGen::DoDummyUse(LDummyUse* instr) {
// Nothing to see here, move on!
}
void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) { void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
Register object = ToRegister(instr->object()); Register object = ToRegister(instr->object());
Register key = ToRegister(instr->key()); Register key = ToRegister(instr->key());
......
...@@ -682,6 +682,11 @@ LInstruction* LChunkBuilder::DoBlockEntry(HBlockEntry* instr) { ...@@ -682,6 +682,11 @@ LInstruction* LChunkBuilder::DoBlockEntry(HBlockEntry* instr) {
} }
LInstruction* LChunkBuilder::DoDummyUse(HDummyUse* instr) {
return DefineAsRegister(new(zone()) LDummyUse(UseAny(instr->value())));
}
LInstruction* LChunkBuilder::DoSoftDeoptimize(HSoftDeoptimize* instr) { LInstruction* LChunkBuilder::DoSoftDeoptimize(HSoftDeoptimize* instr) {
return AssignEnvironment(new(zone()) LDeoptimize); return AssignEnvironment(new(zone()) LDeoptimize);
} }
......
...@@ -93,6 +93,7 @@ class LCodeGen; ...@@ -93,6 +93,7 @@ class LCodeGen;
V(Deoptimize) \ V(Deoptimize) \
V(DivI) \ V(DivI) \
V(DoubleToI) \ V(DoubleToI) \
V(DummyUse) \
V(ElementsKind) \ V(ElementsKind) \
V(FastLiteral) \ V(FastLiteral) \
V(FixedArrayBaseLength) \ V(FixedArrayBaseLength) \
...@@ -401,6 +402,15 @@ class LLazyBailout: public LTemplateInstruction<0, 0, 0> { ...@@ -401,6 +402,15 @@ class LLazyBailout: public LTemplateInstruction<0, 0, 0> {
}; };
class LDummyUse: public LTemplateInstruction<1, 1, 0> {
public:
explicit LDummyUse(LOperand* value) {
inputs_[0] = value;
}
DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use")
};
class LDeoptimize: public LTemplateInstruction<0, 0, 0> { class LDeoptimize: public LTemplateInstruction<0, 0, 0> {
public: public:
DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize") DECLARE_CONCRETE_INSTRUCTION(Deoptimize, "deoptimize")
......
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