Index: src/profiler/cpu-profiler.cc |
diff --git a/src/profiler/cpu-profiler.cc b/src/profiler/cpu-profiler.cc |
index 50558f77d50d344a7a730eea4b4243738a66f476..22030bfc71ad61287c7bb156471763116506b94d 100644 |
--- a/src/profiler/cpu-profiler.cc |
+++ b/src/profiler/cpu-profiler.cc |
@@ -287,8 +287,15 @@ void CpuProfiler::CodeCreateEvent(Logger::LogEventsAndTags tag, |
} |
} |
} else { |
- DCHECK(abstract_code->IsBytecodeArray()); |
- // TODO(rmcilroy): source position tracking for bytecode arrays. |
+ BytecodeArray* bytecode = abstract_code->GetBytecodeArray(); |
+ line_table = new JITLineInfoTable(); |
+ interpreter::SourcePositionTableIterator it( |
+ bytecode->source_position_table()); |
+ for (; !it.done(); it.Advance()) { |
+ int line_number = script->GetLineNumber(it.source_position()) + 1; |
+ int pc_offset = it.bytecode_offset() + BytecodeArray::kHeaderSize; |
+ line_table->SetPosition(pc_offset, line_number); |
+ } |
} |
} |
rec->entry = profiles_->NewCodeEntry( |