Revision: 13251
Author:   [email protected]
Date:     Thu Dec 20 03:53:42 2012
Log:      Refactoring only: Extracted method to print deopt location.

Review URL: https://codereview.chromium.org/11640041
http://code.google.com/p/v8/source/detail?r=13251

Modified:
 /branches/bleeding_edge/src/deoptimizer.cc
 /branches/bleeding_edge/src/objects.cc
 /branches/bleeding_edge/src/objects.h

=======================================
--- /branches/bleeding_edge/src/deoptimizer.cc  Thu Dec 20 01:47:09 2012
+++ /branches/bleeding_edge/src/deoptimizer.cc  Thu Dec 20 03:53:42 2012
@@ -529,26 +529,7 @@
   if (type == EAGER) {
     ASSERT(from == NULL);
     compiled_code_ = function_->code();
-    if (FLAG_trace_deopt && FLAG_code_comments) {
-      // Print instruction associated with this bailout.
-      const char* last_comment = NULL;
-      int mask = RelocInfo::ModeMask(RelocInfo::COMMENT)
-          | RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY);
-      for (RelocIterator it(compiled_code_, mask); !it.done(); it.next()) {
-        RelocInfo* info = it.rinfo();
-        if (info->rmode() == RelocInfo::COMMENT) {
-          last_comment = reinterpret_cast<const char*>(info->data());
-        }
-        if (info->rmode() == RelocInfo::RUNTIME_ENTRY) {
-          unsigned id = Deoptimizer::GetDeoptimizationId(
-              info->target_address(), Deoptimizer::EAGER);
-          if (id == bailout_id && last_comment != NULL) {
-            PrintF("            %s\n", last_comment);
-            break;
-          }
-        }
-      }
-    }
+    if (FLAG_trace_deopt) compiled_code_->PrintDeoptLocation(bailout_id);
   } else if (type == LAZY) {
compiled_code_ = isolate->deoptimizer_data()->FindDeoptimizingCode(from);
     if (compiled_code_ == NULL) {
=======================================
--- /branches/bleeding_edge/src/objects.cc      Thu Dec 20 01:20:37 2012
+++ /branches/bleeding_edge/src/objects.cc      Thu Dec 20 03:53:42 2012
@@ -9136,6 +9136,25 @@
   }
   return NULL;
 }
+
+
+void Code::PrintDeoptLocation(int bailout_id) {
+  const char* last_comment = NULL;
+  int mask = RelocInfo::ModeMask(RelocInfo::COMMENT)
+      | RelocInfo::ModeMask(RelocInfo::RUNTIME_ENTRY);
+  for (RelocIterator it(this, mask); !it.done(); it.next()) {
+    RelocInfo* info = it.rinfo();
+    if (info->rmode() == RelocInfo::COMMENT) {
+      last_comment = reinterpret_cast<const char*>(info->data());
+    } else if (last_comment != NULL &&
+               bailout_id == Deoptimizer::GetDeoptimizationId(
+                   info->target_address(), Deoptimizer::EAGER)) {
+      CHECK(info->rmode() == RelocInfo::RUNTIME_ENTRY);
+      PrintF("            %s\n", last_comment);
+      return;
+    }
+  }
+}


 #ifdef ENABLE_DISASSEMBLER
=======================================
--- /branches/bleeding_edge/src/objects.h       Thu Dec 20 01:20:37 2012
+++ /branches/bleeding_edge/src/objects.h       Thu Dec 20 03:53:42 2012
@@ -4528,6 +4528,8 @@
   static bool IsYoungSequence(byte* sequence);
   bool IsOld();

+  void PrintDeoptLocation(int bailout_id);
+
   // Max loop nesting marker used to postpose OSR. We don't take loop
   // nesting that is deeper than 5 levels into account.
   static const int kMaxLoopNestingMarker = 6;

--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to