Disable elimination of unreachable code after HSoftDeopts
authorjkummerow@chromium.org <jkummerow@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 21 Jan 2013 14:11:25 +0000 (14:11 +0000)
committerjkummerow@chromium.org <jkummerow@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Mon, 21 Jan 2013 14:11:25 +0000 (14:11 +0000)
Review URL: https://codereview.chromium.org/12036011

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/flag-definitions.h
src/hydrogen.cc

index 5bf7df3..71ab693 100644 (file)
@@ -211,6 +211,8 @@ DEFINE_bool(array_index_dehoisting, true,
             "perform array index dehoisting")
 DEFINE_bool(dead_code_elimination, true, "use dead code elimination")
 DEFINE_bool(trace_dead_code_elimination, false, "trace dead code elimination")
+DEFINE_bool(unreachable_code_elimination, false,
+            "eliminate unreachable code (hidden behind soft deopts)")
 DEFINE_bool(track_allocation_sites, true,
             "Use allocation site info to reduce transitions")
 DEFINE_bool(trace_osr, false, "trace on-stack replacement")
index a4578ee..57ba465 100644 (file)
@@ -1267,6 +1267,7 @@ void HGraph::MarkAsDeoptimizingRecursively(HBasicBlock* block) {
 
 
 void HGraph::NullifyUnreachableInstructions() {
+  if (!FLAG_unreachable_code_elimination) return;
   int block_count = blocks_.length();
   for (int i = 0; i < block_count; ++i) {
     HBasicBlock* block = blocks_.at(i);