Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(387)

Unified Diff: src/debug/debug.cc

Issue 2169463002: [debugger] use absolute source positions for break locations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: address comment Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/debug/debug.h ('k') | src/debug/debug.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/debug/debug.cc
diff --git a/src/debug/debug.cc b/src/debug/debug.cc
index 38e56ca6ca10666b0e6730627491d5c181ed7c93..00f1c793338010166a9d63a27d6a05db2ca320be 100644
--- a/src/debug/debug.cc
+++ b/src/debug/debug.cc
@@ -86,11 +86,11 @@ BreakLocation::BreakLocation(Handle<DebugInfo> debug_info, DebugBreakType type,
SharedFunctionInfo* shared = debug_info->shared();
if (shared->HasSourceCode()) {
return_position =
- std::max(shared->end_position() - shared->start_position() - 1, 0);
+ std::max(shared->end_position() - 1, shared->start_position());
}
// TODO(yangguo): find out why return position is wrong for liveedit.
position_ = return_position;
- statement_position = return_position;
+ statement_position_ = return_position;
}
}
@@ -104,10 +104,10 @@ BreakLocation::Iterator* BreakLocation::GetIterator(
}
BreakLocation::Iterator::Iterator(Handle<DebugInfo> debug_info)
- : debug_info_(debug_info),
- break_index_(-1),
- position_(1),
- statement_position_(1) {}
+ : debug_info_(debug_info), break_index_(-1) {
+ position_ = debug_info->shared()->start_position();
+ statement_position_ = position_;
+}
BreakLocation::CodeIterator::CodeIterator(Handle<DebugInfo> debug_info,
BreakLocatorType type)
@@ -115,8 +115,7 @@ BreakLocation::CodeIterator::CodeIterator(Handle<DebugInfo> debug_info,
reloc_iterator_(debug_info->abstract_code()->GetCode(),
GetModeMask(type)),
source_position_iterator_(
- debug_info->abstract_code()->GetCode()->source_position_table()),
- start_position_(debug_info_->shared()->start_position()) {
+ debug_info->abstract_code()->GetCode()->source_position_table()) {
// There is at least one break location.
DCHECK(!Done());
Next();
@@ -150,7 +149,7 @@ void BreakLocation::CodeIterator::Next() {
int offset = code_offset();
while (!source_position_iterator_.done() &&
source_position_iterator_.code_offset() <= offset) {
- position_ = source_position_iterator_.source_position() - start_position_;
+ position_ = source_position_iterator_.source_position();
if (source_position_iterator_.is_statement()) {
statement_position_ = position_;
}
@@ -189,8 +188,7 @@ BreakLocation::BytecodeArrayIterator::BytecodeArrayIterator(
source_position_iterator_(debug_info->abstract_code()
->GetBytecodeArray()
->source_position_table()),
- break_locator_type_(type),
- start_position_(debug_info->shared()->start_position()) {
+ break_locator_type_(type) {
// There is at least one break location.
DCHECK(!Done());
Next();
@@ -204,7 +202,7 @@ void BreakLocation::BytecodeArrayIterator::Next() {
if (!first) source_position_iterator_.Advance();
first = false;
if (Done()) return;
- position_ = source_position_iterator_.source_position() - start_position_;
+ position_ = source_position_iterator_.source_position();
if (source_position_iterator_.is_statement()) {
statement_position_ = position_;
}
@@ -806,28 +804,22 @@ bool Debug::SetBreakPointForScript(Handle<Script> script,
// Find position within function. The script position might be before the
// source position of the first function.
- int position;
if (shared->start_position() > *source_position) {
- position = 0;
- } else {
- position = *source_position - shared->start_position();
+ *source_position = shared->start_position();
}
Handle<DebugInfo> debug_info(shared->GetDebugInfo());
- // Source positions starts with zero.
- DCHECK(position >= 0);
// Find the break point and change it.
BreakLocation location =
- BreakLocation::FromPosition(debug_info, position, alignment);
+ BreakLocation::FromPosition(debug_info, *source_position, alignment);
location.SetBreakPoint(break_point_object);
feature_tracker()->Track(DebugFeatureTracker::kBreakPoint);
- position = (alignment == STATEMENT_ALIGNED) ? location.statement_position()
- : location.position();
-
- *source_position = position + shared->start_position();
+ *source_position = (alignment == STATEMENT_ALIGNED)
+ ? location.statement_position()
+ : location.position();
// At least one active break point now.
DCHECK(debug_info->GetBreakPointCount() > 0);
« no previous file with comments | « src/debug/debug.h ('k') | src/debug/debug.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698