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