From 33ddb37ba33464d8bf3bf204084b825e3fb35204 Mon Sep 17 00:00:00 2001 From: "svenpanne@chromium.org" <svenpanne@chromium.org> Date: Fri, 19 Sep 2014 11:06:59 +0000 Subject: [PATCH] Removed confusing defensive programming in GenerateJumpTable. For a given address/type pair we should always find a deoptimization bailout ID, otherwise something is wrong. This was already asserted on ARM, but we now do this consistently on all platforms. Removed some usesless naming creativity on the way. R=jarin@chromium.org Review URL: https://codereview.chromium.org/587473003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/arm/lithium-codegen-arm.cc | 11 ++++------- src/arm/lithium-codegen-arm.h | 2 +- src/arm64/lithium-codegen-arm64.cc | 7 ++----- src/ia32/lithium-codegen-ia32.cc | 7 ++----- src/mips/lithium-codegen-mips.cc | 11 ++++------- src/mips/lithium-codegen-mips.h | 2 +- src/mips64/lithium-codegen-mips64.cc | 16 +++++----------- src/mips64/lithium-codegen-mips64.h | 2 +- src/x64/lithium-codegen-x64.cc | 7 ++----- src/x87/lithium-codegen-x87.cc | 7 ++----- 10 files changed, 24 insertions(+), 48 deletions(-) diff --git a/src/arm/lithium-codegen-arm.cc b/src/arm/lithium-codegen-arm.cc index b20f8b080b..11b170b738 100644 --- a/src/arm/lithium-codegen-arm.cc +++ b/src/arm/lithium-codegen-arm.cc @@ -52,11 +52,8 @@ bool LCodeGen::GenerateCode() { // the frame (that is done in GeneratePrologue). FrameScope frame_scope(masm_, StackFrame::NONE); - return GeneratePrologue() && - GenerateBody() && - GenerateDeferredCode() && - GenerateDeoptJumpTable() && - GenerateSafepointTable(); + return GeneratePrologue() && GenerateBody() && GenerateDeferredCode() && + GenerateJumpTable() && GenerateSafepointTable(); } @@ -313,7 +310,7 @@ bool LCodeGen::GenerateDeferredCode() { } -bool LCodeGen::GenerateDeoptJumpTable() { +bool LCodeGen::GenerateJumpTable() { // Check that the jump table is accessible from everywhere in the function // code, i.e. that offsets to the table can be encoded in the 24bit signed // immediate of a branch instruction. @@ -343,7 +340,7 @@ bool LCodeGen::GenerateDeoptJumpTable() { DCHECK(type == deopt_jump_table_[0].bailout_type); Address entry = table_entry->address; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - DCHECK(id != Deoptimizer::kNotDeoptimizationEntry); + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); DeoptComment(table_entry->mnemonic, table_entry->reason); diff --git a/src/arm/lithium-codegen-arm.h b/src/arm/lithium-codegen-arm.h index a08768c0df..ca8c563029 100644 --- a/src/arm/lithium-codegen-arm.h +++ b/src/arm/lithium-codegen-arm.h @@ -172,7 +172,7 @@ class LCodeGen: public LCodeGenBase { void GenerateBodyInstructionPre(LInstruction* instr) OVERRIDE; bool GeneratePrologue(); bool GenerateDeferredCode(); - bool GenerateDeoptJumpTable(); + bool GenerateJumpTable(); bool GenerateSafepointTable(); // Generates the custom OSR entrypoint and sets the osr_pc_offset. diff --git a/src/arm64/lithium-codegen-arm64.cc b/src/arm64/lithium-codegen-arm64.cc index b08321577a..a7ea29b9f3 100644 --- a/src/arm64/lithium-codegen-arm64.cc +++ b/src/arm64/lithium-codegen-arm64.cc @@ -842,11 +842,8 @@ bool LCodeGen::GenerateJumpTable() { Deoptimizer::BailoutType type = table_entry->bailout_type; Address entry = table_entry->address; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - if (id == Deoptimizer::kNotDeoptimizationEntry) { - Comment(";;; jump table entry %d.", i); - } else { - Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); - } + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); + Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); DeoptComment(table_entry->mnemonic, table_entry->reason); // Second-level deopt table entries are contiguous and small, so instead diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc index c11d74f11c..259fbf0c39 100644 --- a/src/ia32/lithium-codegen-ia32.cc +++ b/src/ia32/lithium-codegen-ia32.cc @@ -388,11 +388,8 @@ bool LCodeGen::GenerateJumpTable() { Address entry = table_entry->address; Deoptimizer::BailoutType type = table_entry->bailout_type; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - if (id == Deoptimizer::kNotDeoptimizationEntry) { - Comment(";;; jump table entry %d.", i); - } else { - Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); - } + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); + Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); DeoptComment(table_entry->mnemonic, table_entry->reason); if (table_entry->needs_frame) { DCHECK(!info()->saves_caller_doubles()); diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc index 6d73c831eb..089fc5cf3c 100644 --- a/src/mips/lithium-codegen-mips.cc +++ b/src/mips/lithium-codegen-mips.cc @@ -76,11 +76,8 @@ bool LCodeGen::GenerateCode() { // the frame (that is done in GeneratePrologue). FrameScope frame_scope(masm_, StackFrame::NONE); - return GeneratePrologue() && - GenerateBody() && - GenerateDeferredCode() && - GenerateDeoptJumpTable() && - GenerateSafepointTable(); + return GeneratePrologue() && GenerateBody() && GenerateDeferredCode() && + GenerateJumpTable() && GenerateSafepointTable(); } @@ -326,7 +323,7 @@ bool LCodeGen::GenerateDeferredCode() { } -bool LCodeGen::GenerateDeoptJumpTable() { +bool LCodeGen::GenerateJumpTable() { if (deopt_jump_table_.length() > 0) { Label needs_frame, call_deopt_entry; @@ -343,7 +340,7 @@ bool LCodeGen::GenerateDeoptJumpTable() { DCHECK(type == deopt_jump_table_[0].bailout_type); Address entry = deopt_jump_table_[i].address; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - DCHECK(id != Deoptimizer::kNotDeoptimizationEntry); + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); // Second-level deopt table entries are contiguous and small, so instead diff --git a/src/mips/lithium-codegen-mips.h b/src/mips/lithium-codegen-mips.h index ca25c89119..f5087a9a6e 100644 --- a/src/mips/lithium-codegen-mips.h +++ b/src/mips/lithium-codegen-mips.h @@ -172,7 +172,7 @@ class LCodeGen: public LCodeGenBase { void GenerateBodyInstructionPre(LInstruction* instr) OVERRIDE; bool GeneratePrologue(); bool GenerateDeferredCode(); - bool GenerateDeoptJumpTable(); + bool GenerateJumpTable(); bool GenerateSafepointTable(); // Generates the custom OSR entrypoint and sets the osr_pc_offset. diff --git a/src/mips64/lithium-codegen-mips64.cc b/src/mips64/lithium-codegen-mips64.cc index 965486cb24..de619d6a8f 100644 --- a/src/mips64/lithium-codegen-mips64.cc +++ b/src/mips64/lithium-codegen-mips64.cc @@ -51,11 +51,8 @@ bool LCodeGen::GenerateCode() { // the frame (that is done in GeneratePrologue). FrameScope frame_scope(masm_, StackFrame::NONE); - return GeneratePrologue() && - GenerateBody() && - GenerateDeferredCode() && - GenerateDeoptJumpTable() && - GenerateSafepointTable(); + return GeneratePrologue() && GenerateBody() && GenerateDeferredCode() && + GenerateJumpTable() && GenerateSafepointTable(); } @@ -302,7 +299,7 @@ bool LCodeGen::GenerateDeferredCode() { } -bool LCodeGen::GenerateDeoptJumpTable() { +bool LCodeGen::GenerateJumpTable() { if (deopt_jump_table_.length() > 0) { Comment(";;; -------------------- Jump table --------------------"); } @@ -315,11 +312,8 @@ bool LCodeGen::GenerateDeoptJumpTable() { Address entry = deopt_jump_table_[i].address; Deoptimizer::BailoutType type = deopt_jump_table_[i].bailout_type; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - if (id == Deoptimizer::kNotDeoptimizationEntry) { - Comment(";;; jump table entry %d.", i); - } else { - Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); - } + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); + Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); __ li(t9, Operand(ExternalReference::ForDeoptEntry(entry))); if (deopt_jump_table_[i].needs_frame) { DCHECK(!info()->saves_caller_doubles()); diff --git a/src/mips64/lithium-codegen-mips64.h b/src/mips64/lithium-codegen-mips64.h index b2193ae8af..3207f19fb9 100644 --- a/src/mips64/lithium-codegen-mips64.h +++ b/src/mips64/lithium-codegen-mips64.h @@ -173,7 +173,7 @@ class LCodeGen: public LCodeGenBase { void GenerateBodyInstructionPre(LInstruction* instr) OVERRIDE; bool GeneratePrologue(); bool GenerateDeferredCode(); - bool GenerateDeoptJumpTable(); + bool GenerateJumpTable(); bool GenerateSafepointTable(); // Generates the custom OSR entrypoint and sets the osr_pc_offset. diff --git a/src/x64/lithium-codegen-x64.cc b/src/x64/lithium-codegen-x64.cc index 46456a1ef6..15003a9645 100644 --- a/src/x64/lithium-codegen-x64.cc +++ b/src/x64/lithium-codegen-x64.cc @@ -308,11 +308,8 @@ bool LCodeGen::GenerateJumpTable() { Address entry = table_entry->address; Deoptimizer::BailoutType type = table_entry->bailout_type; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - if (id == Deoptimizer::kNotDeoptimizationEntry) { - Comment(";;; jump table entry %d.", i); - } else { - Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); - } + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); + Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); DeoptComment(table_entry->mnemonic, table_entry->reason); if (table_entry->needs_frame) { DCHECK(!info()->saves_caller_doubles()); diff --git a/src/x87/lithium-codegen-x87.cc b/src/x87/lithium-codegen-x87.cc index ac67bb2f74..ded2cd94ae 100644 --- a/src/x87/lithium-codegen-x87.cc +++ b/src/x87/lithium-codegen-x87.cc @@ -369,11 +369,8 @@ bool LCodeGen::GenerateJumpTable() { Address entry = table_entry->address; Deoptimizer::BailoutType type = table_entry->bailout_type; int id = Deoptimizer::GetDeoptimizationId(isolate(), entry, type); - if (id == Deoptimizer::kNotDeoptimizationEntry) { - Comment(";;; jump table entry %d.", i); - } else { - Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); - } + DCHECK_NE(Deoptimizer::kNotDeoptimizationEntry, id); + Comment(";;; jump table entry %d: deoptimization bailout %d.", i, id); DeoptComment(table_entry->mnemonic, table_entry->reason); if (table_entry->needs_frame) { DCHECK(!info()->saves_caller_doubles());