Index: src/arm64/lithium-codegen-arm64.cc |
diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc |
index e9f7837eab5642c420be4a36636ec97e58169a3b..40c5c4238f39187c8371bb9e96a3320eabb0fc01 100644 |
--- a/src/arm64/lithium-codegen-arm64.cc |
+++ b/src/arm64/lithium-codegen-arm64.cc |
@@ -839,11 +839,7 @@ bool LCodeGen::GenerateJumpTable() { |
Deoptimizer::JumpTableEntry* table_entry = jump_table_[i]; |
__ Bind(&table_entry->label); |
- Deoptimizer::BailoutType type = table_entry->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 |
@@ -1053,14 +1049,13 @@ void LCodeGen::DeoptimizeBranch( |
DeoptComment(reason); |
__ Call(entry, RelocInfo::RUNTIME_ENTRY); |
} else { |
+ Deoptimizer::JumpTableEntry* table_entry = |
+ new (zone()) Deoptimizer::JumpTableEntry(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 (jump_table_.is_empty() || (jump_table_.last()->address != entry) || |
- (jump_table_.last()->bailout_type != bailout_type) || |
- (jump_table_.last()->needs_frame != !frame_is_built_)) { |
- Deoptimizer::JumpTableEntry* table_entry = |
- new (zone()) Deoptimizer::JumpTableEntry(entry, reason, bailout_type, |
- !frame_is_built_); |
+ if (jump_table_.is_empty() || |
+ !table_entry->IsEquivalentTo(*jump_table_.last())) { |
jump_table_.Add(table_entry, zone()); |
} |
__ B(&jump_table_.last()->label, branch_type, reg, bit); |