Index: src/mips/lithium-codegen-mips.cc |
diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc |
index 7f831be85e90da6a52b0012a2d2cbb607bd7b3fe..497d10f9ef1e97cb06413ba774c313722e409a62 100644 |
--- a/src/mips/lithium-codegen-mips.cc |
+++ b/src/mips/lithium-codegen-mips.cc |
@@ -324,25 +324,21 @@ bool LCodeGen::GenerateDeferredCode() { |
bool LCodeGen::GenerateJumpTable() { |
- if (deopt_jump_table_.length() > 0) { |
+ if (jump_table_.length() > 0) { |
Label needs_frame, call_deopt_entry; |
Comment(";;; -------------------- Jump table --------------------"); |
- Address base = deopt_jump_table_[0].address; |
+ Address base = jump_table_[0].address; |
Register entry_offset = t9; |
- int length = deopt_jump_table_.length(); |
+ int length = jump_table_.length(); |
for (int i = 0; i < length; i++) { |
- Deoptimizer::JumpTableEntry* table_entry = &deopt_jump_table_[i]; |
+ Deoptimizer::JumpTableEntry* table_entry = &jump_table_[i]; |
__ bind(&table_entry->label); |
- Deoptimizer::BailoutType type = table_entry->bailout_type; |
- DCHECK(type == deopt_jump_table_[0].bailout_type); |
+ DCHECK(table_entry->bailout_type == jump_table_[0].bailout_type); |
Address entry = table_entry->address; |
- int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); |
- DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); |
- Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); |
DeoptComment(table_entry->reason); |
// Second-level deopt table entries are contiguous and small, so instead |
@@ -872,17 +868,15 @@ void LCodeGen::DeoptimizeIf(Condition condition, LInstruction* instr, |
DeoptComment(reason); |
__ Call(entry, RelocInfo::RUNTIME_ENTRY, condition, src1, src2); |
} else { |
+ Deoptimizer::JumpTableEntry table_entry(entry, reason, bailout_type, |
+ !frame_is_built_); |
// We often have several deopts to the same entry, reuse the last |
// jump entry if this is the case. |
- if (deopt_jump_table_.is_empty() || |
- (deopt_jump_table_.last().address != entry) || |
- (deopt_jump_table_.last().bailout_type != bailout_type) || |
- (deopt_jump_table_.last().needs_frame != !frame_is_built_)) { |
- Deoptimizer::JumpTableEntry table_entry(entry, reason, bailout_type, |
- !frame_is_built_); |
- deopt_jump_table_.Add(table_entry, zone()); |
+ if (jump_table_.is_empty() || |
+ !table_entry.IsEquivalentTo(jump_table_.last())) { |
+ jump_table_.Add(table_entry, zone()); |
} |
- __ Branch(&deopt_jump_table_.last().label, condition, src1, src2); |
+ __ Branch(&jump_table_.last().label, condition, src1, src2); |
} |
} |