Index: src/compiler/code-generator.cc |
diff --git a/src/compiler/code-generator.cc b/src/compiler/code-generator.cc |
index 081dde913fc2b59c2a931b27e3ba98679343d249..d19d21fa4a50f97707cef83542553534379e1889 100644 |
--- a/src/compiler/code-generator.cc |
+++ b/src/compiler/code-generator.cc |
@@ -96,12 +96,29 @@ Handle<Code> CodeGenerator::GenerateCode() { |
if (FLAG_code_comments) { |
// TODO(titzer): these code comments are a giant memory leak. |
Vector<char> buffer = Vector<char>::New(200); |
- SNPrintF(buffer, "-- B%d start%s%s%s%s --", block->rpo_number().ToInt(), |
- block->IsDeferred() ? " (deferred)" : "", |
- block->needs_frame() ? "" : " (no frame)", |
- block->must_construct_frame() ? " (construct frame)" : "", |
- block->must_deconstruct_frame() ? " (deconstruct frame)" : ""); |
- masm()->RecordComment(buffer.start()); |
+ char* buffer_start = buffer.start(); |
+ |
+ int next = SNPrintF( |
+ buffer, "-- B%d start%s%s%s%s", block->rpo_number().ToInt(), |
+ block->IsDeferred() ? " (deferred)" : "", |
+ block->needs_frame() ? "" : " (no frame)", |
+ block->must_construct_frame() ? " (construct frame)" : "", |
+ block->must_deconstruct_frame() ? " (deconstruct frame)" : ""); |
+ |
+ buffer = buffer.SubVector(next, buffer.length()); |
+ |
+ if (block->IsLoopHeader()) { |
+ next = |
+ SNPrintF(buffer, " (loop up to %d)", block->loop_end().ToInt()); |
+ buffer = buffer.SubVector(next, buffer.length()); |
+ } |
+ if (block->loop_header().IsValid()) { |
+ next = |
+ SNPrintF(buffer, " (in loop %d)", block->loop_header().ToInt()); |
+ buffer = buffer.SubVector(next, buffer.length()); |
+ } |
+ SNPrintF(buffer, " --"); |
+ masm()->RecordComment(buffer_start); |
} |
masm()->bind(GetLabel(current_block_)); |
for (int i = block->code_start(); i < block->code_end(); ++i) { |