Index: src/compiler/pipeline.cc |
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
index 87a5370293e29b9904b5746c3921b6b792fafcd7..333382aaf3a36b75be87b5b40b1d25680c9cc978 100644 |
--- a/src/compiler/pipeline.cc |
+++ b/src/compiler/pipeline.cc |
@@ -6,6 +6,7 @@ |
#include "src/base/platform/elapsed-timer.h" |
#include "src/compiler/ast-graph-builder.h" |
+#include "src/compiler/basic-block-instrumentor.h" |
#include "src/compiler/change-lowering.h" |
#include "src/compiler/code-generator.h" |
#include "src/compiler/graph-replay.h" |
@@ -315,6 +316,8 @@ Handle<Code> Pipeline::GenerateCode() { |
VerifyAndPrintGraph(&graph, "Lowered generic"); |
} |
+ source_positions.RemoveDecorator(); |
+ |
Handle<Code> code = Handle<Code>::null(); |
{ |
// Compute a schedule. |
@@ -381,6 +384,11 @@ Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph, |
DCHECK_NOT_NULL(schedule); |
CHECK(SupportedBackend()); |
+ BasicBlockProfiler::Data* profiler_data = NULL; |
+ if (FLAG_turbo_profiling) { |
+ profiler_data = BasicBlockInstrumentor::Instrument(info_, graph, schedule); |
+ } |
+ |
InstructionSequence sequence(linkage, graph, schedule); |
// Select and schedule instructions covering the scheduled graph. |
@@ -417,7 +425,15 @@ Handle<Code> Pipeline::GenerateCode(Linkage* linkage, Graph* graph, |
// Generate native sequence. |
CodeGenerator generator(&sequence); |
- return generator.GenerateCode(); |
+ Handle<Code> code = generator.GenerateCode(); |
+ if (profiler_data != NULL) { |
+#if ENABLE_DISASSEMBLER |
+ OStringStream os; |
+ code->Disassemble(NULL, os); |
+ profiler_data->SetCode(&os); |
+#endif |
+ } |
+ return code; |
} |