| 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; | 
| } | 
|  | 
|  | 
|  |