Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index 8353bd81de72eaed68f0d5336f81dbd88feffc56..9b6e3fc4e1f5f482c2d50c8862a8058703b9595e 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -3364,6 +3364,11 @@ void HBasicBlock::FinishExit(HControlInstruction* instruction, |
} |
+OStream& operator<<(OStream& os, const HBasicBlock& b) { |
+ return os << "B" << b.block_id(); |
+} |
+ |
+ |
HGraph::HGraph(CompilationInfo* info) |
: isolate_(info->isolate()), |
next_block_id_(0), |
@@ -3438,13 +3443,10 @@ int HGraph::TraceInlinedFunction( |
if (!shared->script()->IsUndefined()) { |
Handle<Script> script(Script::cast(shared->script())); |
if (!script->source()->IsUndefined()) { |
- CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer()); |
- PrintF(tracing_scope.file(), |
- "--- FUNCTION SOURCE (%s) id{%d,%d} ---\n", |
- shared->DebugName()->ToCString().get(), |
- info()->optimization_id(), |
- id); |
- |
+ CodeTracer::Scope tracing_scopex(isolate()->GetCodeTracer()); |
+ OFStream os(tracing_scopex.file()); |
+ os << "--- FUNCTION SOURCE (" << shared->DebugName()->ToCString().get() |
+ << ") id{" << info()->optimization_id() << "," << id << "} ---\n"; |
{ |
ConsStringIteratorOp op; |
StringCharacterStream stream(String::cast(script->source()), |
@@ -3456,12 +3458,12 @@ int HGraph::TraceInlinedFunction( |
shared->end_position() - shared->start_position() + 1; |
for (int i = 0; i < source_len; i++) { |
if (stream.HasMore()) { |
- PrintF(tracing_scope.file(), "%c", stream.GetNext()); |
+ os.put(stream.GetNext()); |
} |
} |
} |
- PrintF(tracing_scope.file(), "\n--- END ---\n"); |
+ os << "\n--- END ---\n"; |
} |
} |
} |
@@ -3470,13 +3472,10 @@ int HGraph::TraceInlinedFunction( |
if (inline_id != 0) { |
CodeTracer::Scope tracing_scope(isolate()->GetCodeTracer()); |
- PrintF(tracing_scope.file(), "INLINE (%s) id{%d,%d} AS %d AT ", |
- shared->DebugName()->ToCString().get(), |
- info()->optimization_id(), |
- id, |
- inline_id); |
- position.PrintTo(tracing_scope.file()); |
- PrintF(tracing_scope.file(), "\n"); |
+ OFStream os(tracing_scope.file()); |
+ os << "INLINE (" << shared->DebugName()->ToCString().get() << ") id{" |
+ << info()->optimization_id() << "," << id << "} AS " << inline_id |
+ << " AT " << position << endl; |
} |
return inline_id; |
@@ -12038,32 +12037,24 @@ HEnvironment* HEnvironment::CopyForInlining( |
} |
-void HEnvironment::PrintTo(StringStream* stream) { |
- for (int i = 0; i < length(); i++) { |
- if (i == 0) stream->Add("parameters\n"); |
- if (i == parameter_count()) stream->Add("specials\n"); |
- if (i == parameter_count() + specials_count()) stream->Add("locals\n"); |
- if (i == parameter_count() + specials_count() + local_count()) { |
- stream->Add("expressions\n"); |
+OStream& operator<<(OStream& os, const HEnvironment& env) { |
+ for (int i = 0; i < env.length(); i++) { |
+ if (i == 0) os << "parameters\n"; |
+ if (i == env.parameter_count()) os << "specials\n"; |
+ if (i == env.parameter_count() + env.specials_count()) os << "locals\n"; |
+ if (i == env.parameter_count() + env.specials_count() + env.local_count()) { |
+ os << "expressions\n"; |
} |
- HValue* val = values_.at(i); |
- stream->Add("%d: ", i); |
+ HValue* val = env.values()->at(i); |
+ os << i << ": "; |
if (val != NULL) { |
- val->PrintNameTo(stream); |
+ os << val; |
} else { |
- stream->Add("NULL"); |
+ os << "NULL"; |
} |
- stream->Add("\n"); |
+ os << "\n"; |
} |
- PrintF("\n"); |
-} |
- |
- |
-void HEnvironment::PrintToStd() { |
- HeapStringAllocator string_allocator; |
- StringStream trace(&string_allocator); |
- PrintTo(&trace); |
- PrintF("%s", trace.ToCString().get()); |
+ return os << "\n"; |
} |
@@ -12178,11 +12169,9 @@ void HTracer::Trace(const char* name, HGraph* graph, LChunk* chunk) { |
for (int j = 0; j < total; ++j) { |
HPhi* phi = current->phis()->at(j); |
PrintIndent(); |
- trace_.Add("%d ", phi->merged_index()); |
- phi->PrintNameTo(&trace_); |
- trace_.Add(" "); |
- phi->PrintTo(&trace_); |
- trace_.Add("\n"); |
+ OStringStream os; |
+ os << phi->merged_index() << " " << NameOf(phi) << " " << *phi << "\n"; |
+ trace_.Add(os.c_str()); |
} |
} |
@@ -12192,21 +12181,18 @@ void HTracer::Trace(const char* name, HGraph* graph, LChunk* chunk) { |
HInstruction* instruction = it.Current(); |
int uses = instruction->UseCount(); |
PrintIndent(); |
- trace_.Add("0 %d ", uses); |
- instruction->PrintNameTo(&trace_); |
- trace_.Add(" "); |
- instruction->PrintTo(&trace_); |
+ OStringStream os; |
+ os << "0 " << uses << " " << NameOf(instruction) << " " << *instruction; |
if (FLAG_hydrogen_track_positions && |
instruction->has_position() && |
instruction->position().raw() != 0) { |
const HSourcePosition pos = instruction->position(); |
- trace_.Add(" pos:"); |
- if (pos.inlining_id() != 0) { |
- trace_.Add("%d_", pos.inlining_id()); |
- } |
- trace_.Add("%d", pos.position()); |
+ os << " pos:"; |
+ if (pos.inlining_id() != 0) os << pos.inlining_id() << "_"; |
+ os << pos.position(); |
} |
- trace_.Add(" <|@\n"); |
+ os << " <|@\n"; |
+ trace_.Add(os.c_str()); |
} |
} |
@@ -12224,10 +12210,9 @@ void HTracer::Trace(const char* name, HGraph* graph, LChunk* chunk) { |
trace_.Add("%d ", |
LifetimePosition::FromInstructionIndex(i).Value()); |
linstr->PrintTo(&trace_); |
- trace_.Add(" [hir:"); |
- linstr->hydrogen_value()->PrintNameTo(&trace_); |
- trace_.Add("]"); |
- trace_.Add(" <|@\n"); |
+ OStringStream os; |
+ os << " [hir:" << NameOf(linstr->hydrogen_value()) << "] <|@\n"; |
+ trace_.Add(os.c_str()); |
} |
} |
} |