Chromium Code Reviews| Index: src/arm/lithium-codegen-arm.cc |
| diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc |
| index d4b90869fbcfd85afb8b88f1071a0ec18f9e1f91..18f70e82ac67d4167e273e849e9ee35859a65f19 100644 |
| --- a/src/arm/lithium-codegen-arm.cc |
| +++ b/src/arm/lithium-codegen-arm.cc |
| @@ -343,7 +343,6 @@ bool LCodeGen::GenerateDeoptJumpTable() { |
| } |
| Label table_start; |
| __ bind(&table_start); |
| - Label needs_frame_not_call; |
| Label needs_frame_is_call; |
| for (int i = 0; i < deopt_jump_table_.length(); i++) { |
| __ bind(&deopt_jump_table_[i].label); |
| @@ -357,45 +356,24 @@ bool LCodeGen::GenerateDeoptJumpTable() { |
| } |
| if (deopt_jump_table_[i].needs_frame) { |
| __ mov(ip, Operand(ExternalReference::ForDeoptEntry(entry))); |
| - if (type == Deoptimizer::LAZY) { |
| - if (needs_frame_is_call.is_bound()) { |
| - __ b(&needs_frame_is_call); |
| - } else { |
| - __ bind(&needs_frame_is_call); |
| - __ stm(db_w, sp, cp.bit() | fp.bit() | lr.bit()); |
| - // This variant of deopt can only be used with stubs. Since we don't |
| - // have a function pointer to install in the stack frame that we're |
| - // building, install a special marker there instead. |
| - ASSERT(info()->IsStub()); |
| - __ mov(scratch0(), Operand(Smi::FromInt(StackFrame::STUB))); |
| - __ push(scratch0()); |
| - __ add(fp, sp, Operand(2 * kPointerSize)); |
| - __ mov(lr, Operand(pc), LeaveCC, al); |
| - __ mov(pc, ip); |
| - } |
| + if (needs_frame_is_call.is_bound()) { |
| + __ b(&needs_frame_is_call); |
|
danno
2013/07/10 10:04:30
Here and else where, remove is_call from variable
titzer
2013/07/11 09:43:43
Done.
|
| } else { |
| - if (needs_frame_not_call.is_bound()) { |
| - __ b(&needs_frame_not_call); |
| - } else { |
| - __ bind(&needs_frame_not_call); |
| - __ stm(db_w, sp, cp.bit() | fp.bit() | lr.bit()); |
| - // This variant of deopt can only be used with stubs. Since we don't |
| - // have a function pointer to install in the stack frame that we're |
| - // building, install a special marker there instead. |
| - ASSERT(info()->IsStub()); |
| - __ mov(scratch0(), Operand(Smi::FromInt(StackFrame::STUB))); |
| - __ push(scratch0()); |
| - __ add(fp, sp, Operand(2 * kPointerSize)); |
| - __ mov(pc, ip); |
| - } |
| - } |
| - } else { |
| - if (type == Deoptimizer::LAZY) { |
| + __ bind(&needs_frame_is_call); |
| + __ stm(db_w, sp, cp.bit() | fp.bit() | lr.bit()); |
| + // This variant of deopt can only be used with stubs. Since we don't |
| + // have a function pointer to install in the stack frame that we're |
| + // building, install a special marker there instead. |
| + ASSERT(info()->IsStub()); |
| + __ mov(scratch0(), Operand(Smi::FromInt(StackFrame::STUB))); |
| + __ push(scratch0()); |
| + __ add(fp, sp, Operand(2 * kPointerSize)); |
| __ mov(lr, Operand(pc), LeaveCC, al); |
| - __ mov(pc, Operand(ExternalReference::ForDeoptEntry(entry))); |
| - } else { |
| - __ mov(pc, Operand(ExternalReference::ForDeoptEntry(entry))); |
| + __ mov(pc, ip); |
| } |
| + } else { |
| + __ mov(lr, Operand(pc), LeaveCC, al); |
| + __ mov(pc, Operand(ExternalReference::ForDeoptEntry(entry))); |
| } |
| masm()->CheckConstPool(false, false); |
| } |
| @@ -803,13 +781,8 @@ void LCodeGen::DeoptimizeIf(Condition cc, |
| } |
| ASSERT(info()->IsStub() || frame_is_built_); |
| - bool needs_lazy_deopt = info()->IsStub(); |
| if (cc == al && frame_is_built_) { |
| - if (needs_lazy_deopt) { |
| - __ Call(entry, RelocInfo::RUNTIME_ENTRY); |
| - } else { |
| - __ Jump(entry, RelocInfo::RUNTIME_ENTRY); |
| - } |
| + __ Call(entry, RelocInfo::RUNTIME_ENTRY); |
| } else { |
| // We often have several deopts to the same entry, reuse the last |
| // jump entry if this is the case. |