Find breakpoint by PC rather than source position when clearing breakpoint

Current approach is to find breakpoint by the statement position that was used when setting breakpoint. This doesn't work when setting breakpoint by anything else but statement position.

(Question: could PC of existing breakpoint change, for example because of recompilation, or this approach is safe)

R=yangguo@chromium.org

Review URL: https://codereview.chromium.org/15685010

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15021 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
peter.rybin@gmail.com 2013-06-09 20:10:29 +00:00
parent 1bf85abffc
commit e79ba28aa8

View File

@ -1241,15 +1241,11 @@ void Debug::ClearBreakPoint(Handle<Object> break_point_object) {
// Get information in the break point.
BreakPointInfo* break_point_info = BreakPointInfo::cast(result);
Handle<DebugInfo> debug_info = node->debug_info();
Handle<SharedFunctionInfo> shared(debug_info->shared());
int source_position = break_point_info->statement_position()->value();
// Source positions starts with zero.
ASSERT(source_position >= 0);
// Find the break point and clear it.
BreakLocationIterator it(debug_info, SOURCE_BREAK_LOCATIONS);
it.FindBreakLocationFromPosition(source_position);
it.FindBreakLocationFromAddress(debug_info->code()->entry() +
break_point_info->code_position()->value());
it.ClearBreakPoint(break_point_object);
// If there are no more break points left remove the debug info for this