From 0a5113b69fe05c7c4e9c9f1239d4d4e587b6ea55 Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Mon, 10 Mar 2014 07:42:09 +0000 Subject: [PATCH] Skip unreachable blocks when looking for next emitted block. Goto does not emit a jump if the target is the next emitted block. However, if there is an unreachable block between Goto and the jump target, we still emit a jump even though the unreachable block is not actually emitted. That jump is unnecessary. R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/174883002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@19739 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/lithium-codegen.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lithium-codegen.cc b/src/lithium-codegen.cc index 6d76b35c22..a7dc6842c4 100644 --- a/src/lithium-codegen.cc +++ b/src/lithium-codegen.cc @@ -142,6 +142,7 @@ void LCodeGenBase::Comment(const char* format, ...) { int LCodeGenBase::GetNextEmittedBlock() const { for (int i = current_block_ + 1; i < graph()->blocks()->length(); ++i) { + if (!graph()->blocks()->at(i)->IsReachable()) continue; if (!chunk_->GetLabel(i)->HasReplacement()) return i; } return -1;