Commit 77165eb4 authored by yangguo's avatar yangguo Committed by Commit bot

[debug] change coverage API to use offset instead of line/column.

R=caseq@chromium.org, pfeldman@chromium.org
BUG=v8:5808

Review-Url: https://codereview.chromium.org/2733783002
Cr-Commit-Position: refs/heads/master@{#43662}
parent 18f169d4
...@@ -9549,20 +9549,8 @@ Local<String> CpuProfileNode::GetFunctionName() const { ...@@ -9549,20 +9549,8 @@ Local<String> CpuProfileNode::GetFunctionName() const {
} }
} }
debug::Coverage::FunctionData::FunctionData(i::CoverageFunction* function, int debug::Coverage::FunctionData::StartOffset() { return function_->start; }
Local<debug::Script> script) int debug::Coverage::FunctionData::EndOffset() { return function_->end; }
: function_(function) {
i::Handle<i::Script> i_script = v8::Utils::OpenHandle(*script);
i::Script::PositionInfo start;
i::Script::PositionInfo end;
i::Script::GetPositionInfo(i_script, function->start, &start,
i::Script::WITH_OFFSET);
i::Script::GetPositionInfo(i_script, function->end, &end,
i::Script::WITH_OFFSET);
start_ = Location(start.line, start.column);
end_ = Location(end.line, end.column);
}
uint32_t debug::Coverage::FunctionData::Count() { return function_->count; } uint32_t debug::Coverage::FunctionData::Count() { return function_->count; }
MaybeLocal<String> debug::Coverage::FunctionData::Name() { MaybeLocal<String> debug::Coverage::FunctionData::Name() {
...@@ -9579,7 +9567,7 @@ size_t debug::Coverage::ScriptData::FunctionCount() { ...@@ -9579,7 +9567,7 @@ size_t debug::Coverage::ScriptData::FunctionCount() {
debug::Coverage::FunctionData debug::Coverage::ScriptData::GetFunctionData( debug::Coverage::FunctionData debug::Coverage::ScriptData::GetFunctionData(
size_t i) { size_t i) {
return FunctionData(&script_->functions.at(i), GetScript()); return FunctionData(&script_->functions.at(i));
} }
debug::Coverage::~Coverage() { delete coverage_; } debug::Coverage::~Coverage() { delete coverage_; }
......
...@@ -1713,8 +1713,12 @@ void Shell::WriteLcovData(v8::Isolate* isolate, const char* file) { ...@@ -1713,8 +1713,12 @@ void Shell::WriteLcovData(v8::Isolate* isolate, const char* file) {
for (size_t j = 0; j < script_data.FunctionCount(); j++) { for (size_t j = 0; j < script_data.FunctionCount(); j++) {
debug::Coverage::FunctionData function_data = debug::Coverage::FunctionData function_data =
script_data.GetFunctionData(j); script_data.GetFunctionData(j);
int start_line = function_data.Start().GetLineNumber(); debug::Location start =
int end_line = function_data.End().GetLineNumber(); script->GetSourceLocation(function_data.StartOffset());
debug::Location end =
script->GetSourceLocation(function_data.EndOffset());
int start_line = start.GetLineNumber();
int end_line = end.GetLineNumber();
uint32_t count = function_data.Count(); uint32_t count = function_data.Count();
// Ensure space in the array. // Ensure space in the array.
lines.resize(std::max(static_cast<size_t>(end_line + 1), lines.size()), lines.resize(std::max(static_cast<size_t>(end_line + 1), lines.size()),
...@@ -1732,7 +1736,7 @@ void Shell::WriteLcovData(v8::Isolate* isolate, const char* file) { ...@@ -1732,7 +1736,7 @@ void Shell::WriteLcovData(v8::Isolate* isolate, const char* file) {
name_stream << ToSTLString(name); name_stream << ToSTLString(name);
} else { } else {
name_stream << "<" << start_line + 1 << "-"; name_stream << "<" << start_line + 1 << "-";
name_stream << function_data.Start().GetColumnNumber() << ">"; name_stream << start.GetColumnNumber() << ">";
} }
sink << "FN:" << start_line + 1 << "," << name_stream.str() << std::endl; sink << "FN:" << start_line + 1 << "," << name_stream.str() << std::endl;
sink << "FNDA:" << count << "," << name_stream.str() << std::endl; sink << "FNDA:" << count << "," << name_stream.str() << std::endl;
......
...@@ -218,17 +218,15 @@ class V8_EXPORT_PRIVATE Coverage { ...@@ -218,17 +218,15 @@ class V8_EXPORT_PRIVATE Coverage {
class V8_EXPORT_PRIVATE FunctionData { class V8_EXPORT_PRIVATE FunctionData {
public: public:
// 0-based line and colum numbers. int StartOffset();
Location Start() { return start_; } int EndOffset();
Location End() { return end_; }
uint32_t Count(); uint32_t Count();
MaybeLocal<String> Name(); MaybeLocal<String> Name();
private: private:
FunctionData(i::CoverageFunction* function, Local<debug::Script> script); explicit FunctionData(i::CoverageFunction* function)
: function_(function) {}
i::CoverageFunction* function_; i::CoverageFunction* function_;
Location start_;
Location end_;
friend class v8::debug::Coverage::ScriptData; friend class v8::debug::Coverage::ScriptData;
}; };
......
...@@ -852,6 +852,8 @@ ...@@ -852,6 +852,8 @@
{ "name": "startColumnNumber", "type": "integer", "description": "JavaScript script column number (0-based) for the range start." }, { "name": "startColumnNumber", "type": "integer", "description": "JavaScript script column number (0-based) for the range start." },
{ "name": "endLineNumber", "type": "integer", "description": "JavaScript script line number (0-based) for the range end." }, { "name": "endLineNumber", "type": "integer", "description": "JavaScript script line number (0-based) for the range end." },
{ "name": "endColumnNumber", "type": "integer", "description": "JavaScript script column number (0-based) for the range end." }, { "name": "endColumnNumber", "type": "integer", "description": "JavaScript script column number (0-based) for the range end." },
{ "name": "startOffset", "type": "integer", "description": "JavaScript script source offset for the range start." },
{ "name": "endOffset", "type": "integer", "description": "JavaScript script source offset for the range end." },
{ "name": "count", "type": "integer", "description": "Collected execution count of the source range." } { "name": "count", "type": "integer", "description": "Collected execution count of the source range." }
], ],
"experimental": true "experimental": true
......
...@@ -307,12 +307,17 @@ Response takeCoverage( ...@@ -307,12 +307,17 @@ Response takeCoverage(
ranges = protocol::Array<protocol::Profiler::CoverageRange>::create(); ranges = protocol::Array<protocol::Profiler::CoverageRange>::create();
// At this point we only have per-function coverage data, so there is // At this point we only have per-function coverage data, so there is
// only one range per function. // only one range per function.
ranges->addItem( v8::debug::Location start =
protocol::Profiler::CoverageRange::create() script->GetSourceLocation(function_data.StartOffset());
.setStartLineNumber(function_data.Start().GetLineNumber()) v8::debug::Location end =
.setStartColumnNumber(function_data.Start().GetColumnNumber()) script->GetSourceLocation(function_data.EndOffset());
.setEndLineNumber(function_data.End().GetLineNumber()) ranges->addItem(protocol::Profiler::CoverageRange::create()
.setEndColumnNumber(function_data.End().GetColumnNumber()) .setStartLineNumber(start.GetLineNumber())
.setStartColumnNumber(start.GetColumnNumber())
.setEndLineNumber(end.GetLineNumber())
.setEndColumnNumber(end.GetColumnNumber())
.setStartOffset(function_data.StartOffset())
.setEndOffset(function_data.EndOffset())
.setCount(function_data.Count()) .setCount(function_data.Count())
.build()); .build());
functions->addItem( functions->addItem(
......
...@@ -6650,16 +6650,22 @@ TEST(DebugCoverage) { ...@@ -6650,16 +6650,22 @@ TEST(DebugCoverage) {
CHECK_EQ(2u, script_data.FunctionCount()); CHECK_EQ(2u, script_data.FunctionCount());
v8::debug::Coverage::FunctionData function_data = v8::debug::Coverage::FunctionData function_data =
script_data.GetFunctionData(0); script_data.GetFunctionData(0);
CHECK_EQ(0, function_data.Start().GetLineNumber()); v8::debug::Location start =
CHECK_EQ(0, function_data.Start().GetColumnNumber()); script->GetSourceLocation(function_data.StartOffset());
CHECK_EQ(3, function_data.End().GetLineNumber()); v8::debug::Location end =
CHECK_EQ(4, function_data.End().GetColumnNumber()); script->GetSourceLocation(function_data.EndOffset());
CHECK_EQ(0, start.GetLineNumber());
CHECK_EQ(0, start.GetColumnNumber());
CHECK_EQ(3, end.GetLineNumber());
CHECK_EQ(4, end.GetColumnNumber());
CHECK_EQ(1, function_data.Count()); CHECK_EQ(1, function_data.Count());
function_data = script_data.GetFunctionData(1); function_data = script_data.GetFunctionData(1);
CHECK_EQ(0, function_data.Start().GetLineNumber()); start = script->GetSourceLocation(function_data.StartOffset());
CHECK_EQ(0, function_data.Start().GetColumnNumber()); end = script->GetSourceLocation(function_data.EndOffset());
CHECK_EQ(1, function_data.End().GetLineNumber()); CHECK_EQ(0, start.GetLineNumber());
CHECK_EQ(1, function_data.End().GetColumnNumber()); CHECK_EQ(0, start.GetColumnNumber());
CHECK_EQ(1, end.GetLineNumber());
CHECK_EQ(1, end.GetColumnNumber());
CHECK_EQ(2, function_data.Count()); CHECK_EQ(2, function_data.Count());
} }
...@@ -14,8 +14,10 @@ Running test: testPreciseBaseline ...@@ -14,8 +14,10 @@ Running test: testPreciseBaseline
count : 0 count : 0
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 4 endLineNumber : 4
endOffset : 73
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 1 startLineNumber : 1
startOffset : 1
} }
] ]
} }
...@@ -39,8 +41,10 @@ Running test: testPreciseBaseline ...@@ -39,8 +41,10 @@ Running test: testPreciseBaseline
count : 0 count : 0
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 4 endLineNumber : 4
endOffset : 73
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 1 startLineNumber : 1
startOffset : 1
} }
] ]
} }
...@@ -71,8 +75,10 @@ Running test: testPreciseCoverage ...@@ -71,8 +75,10 @@ Running test: testPreciseCoverage
count : 1 count : 1
endColumnNumber : 0 endColumnNumber : 0
endLineNumber : 9 endLineNumber : 9
endOffset : 119
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -83,8 +89,10 @@ Running test: testPreciseCoverage ...@@ -83,8 +89,10 @@ Running test: testPreciseCoverage
count : 15 count : 15
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 4 endLineNumber : 4
endOffset : 73
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 1 startLineNumber : 1
startOffset : 1
} }
] ]
} }
...@@ -95,8 +103,10 @@ Running test: testPreciseCoverage ...@@ -95,8 +103,10 @@ Running test: testPreciseCoverage
count : 1 count : 1
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 7 endLineNumber : 7
endOffset : 106
startColumnNumber : 1 startColumnNumber : 1
startLineNumber : 5 startLineNumber : 5
startOffset : 75
} }
] ]
} }
...@@ -113,8 +123,10 @@ Running test: testPreciseCoverage ...@@ -113,8 +123,10 @@ Running test: testPreciseCoverage
count : 1 count : 1
endColumnNumber : 11 endColumnNumber : 11
endLineNumber : 0 endLineNumber : 0
endOffset : 11
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -138,8 +150,10 @@ Running test: testPreciseCoverage ...@@ -138,8 +150,10 @@ Running test: testPreciseCoverage
count : 0 count : 0
endColumnNumber : 0 endColumnNumber : 0
endLineNumber : 9 endLineNumber : 9
endOffset : 119
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -150,8 +164,10 @@ Running test: testPreciseCoverage ...@@ -150,8 +164,10 @@ Running test: testPreciseCoverage
count : 0 count : 0
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 4 endLineNumber : 4
endOffset : 73
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 1 startLineNumber : 1
startOffset : 1
} }
] ]
} }
...@@ -162,8 +178,10 @@ Running test: testPreciseCoverage ...@@ -162,8 +178,10 @@ Running test: testPreciseCoverage
count : 0 count : 0
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 7 endLineNumber : 7
endOffset : 106
startColumnNumber : 1 startColumnNumber : 1
startLineNumber : 5 startLineNumber : 5
startOffset : 75
} }
] ]
} }
...@@ -180,8 +198,10 @@ Running test: testPreciseCoverage ...@@ -180,8 +198,10 @@ Running test: testPreciseCoverage
count : 0 count : 0
endColumnNumber : 11 endColumnNumber : 11
endLineNumber : 0 endLineNumber : 0
endOffset : 11
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -262,8 +282,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -262,8 +282,10 @@ Running test: testBestEffortCoveragePrecise
count : 1 count : 1
endColumnNumber : 0 endColumnNumber : 0
endLineNumber : 9 endLineNumber : 9
endOffset : 119
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -274,8 +296,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -274,8 +296,10 @@ Running test: testBestEffortCoveragePrecise
count : 15 count : 15
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 4 endLineNumber : 4
endOffset : 73
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 1 startLineNumber : 1
startOffset : 1
} }
] ]
} }
...@@ -286,8 +310,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -286,8 +310,10 @@ Running test: testBestEffortCoveragePrecise
count : 1 count : 1
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 7 endLineNumber : 7
endOffset : 106
startColumnNumber : 1 startColumnNumber : 1
startLineNumber : 5 startLineNumber : 5
startOffset : 75
} }
] ]
} }
...@@ -304,8 +330,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -304,8 +330,10 @@ Running test: testBestEffortCoveragePrecise
count : 1 count : 1
endColumnNumber : 11 endColumnNumber : 11
endLineNumber : 0 endLineNumber : 0
endOffset : 11
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -329,8 +357,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -329,8 +357,10 @@ Running test: testBestEffortCoveragePrecise
count : 1 count : 1
endColumnNumber : 0 endColumnNumber : 0
endLineNumber : 9 endLineNumber : 9
endOffset : 119
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
...@@ -341,8 +371,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -341,8 +371,10 @@ Running test: testBestEffortCoveragePrecise
count : 15 count : 15
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 4 endLineNumber : 4
endOffset : 73
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 1 startLineNumber : 1
startOffset : 1
} }
] ]
} }
...@@ -353,8 +385,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -353,8 +385,10 @@ Running test: testBestEffortCoveragePrecise
count : 1 count : 1
endColumnNumber : 1 endColumnNumber : 1
endLineNumber : 7 endLineNumber : 7
endOffset : 106
startColumnNumber : 1 startColumnNumber : 1
startLineNumber : 5 startLineNumber : 5
startOffset : 75
} }
] ]
} }
...@@ -371,8 +405,10 @@ Running test: testBestEffortCoveragePrecise ...@@ -371,8 +405,10 @@ Running test: testBestEffortCoveragePrecise
count : 1 count : 1
endColumnNumber : 11 endColumnNumber : 11
endLineNumber : 0 endLineNumber : 0
endOffset : 11
startColumnNumber : 0 startColumnNumber : 0
startLineNumber : 0 startLineNumber : 0
startOffset : 0
} }
] ]
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment