Revision: 24697
Author: [email protected]
Date: Fri Oct 17 14:11:01 2014 UTC
Log: Fix break location calculation.
[email protected]
BUG=chromium:419663
LOG=Y
Review URL: https://codereview.chromium.org/658723005
https://code.google.com/p/v8/source/detail?r=24697
Added:
/branches/bleeding_edge/test/mjsunit/regress/regress-419663.js
Modified:
/branches/bleeding_edge/src/debug.cc
=======================================
--- /dev/null
+++ /branches/bleeding_edge/test/mjsunit/regress/regress-419663.js Fri Oct
17 14:11:01 2014 UTC
@@ -0,0 +1,37 @@
+// Copyright 2012 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --expose-debug-as debug
+
+var o = {
+ f: function(x) {
+ var a = x + 1;
+ o = 1;
+ }
+}
+
+function sentinel() {}
+
+var Debug = debug.Debug;
+
+Debug.setListener(function() {});
+
+var script = Debug.findScript(sentinel);
+
+// Used in Debug.setScriptBreakPointById.
+var p = Debug.findScriptSourcePosition(script, 9, 0);
+var q = Debug.setBreakPointByScriptIdAndPosition(script.id,
p).actual_position;
+var r = Debug.setBreakPointByScriptIdAndPosition(script.id,
q).actual_position;
+
+assertEquals(q, r);
+
+function assertLocation(p, l, c) {
+ var location = script.locationFromPosition(p, false);
+ assertEquals(l, location.line);
+ assertEquals(c, location.column);
+}
+
+assertLocation(p, 9, 0);
+assertLocation(q, 9, 4);
+assertLocation(r, 9, 4);
=======================================
--- /branches/bleeding_edge/src/debug.cc Tue Oct 7 16:11:31 2014 UTC
+++ /branches/bleeding_edge/src/debug.cc Fri Oct 17 14:11:01 2014 UTC
@@ -1096,7 +1096,7 @@
it.FindBreakLocationFromPosition(*source_position, STATEMENT_ALIGNED);
it.SetBreakPoint(break_point_object);
- *source_position = it.position();
+ *source_position = it.statement_position();
// At least one active break point now.
return debug_info->GetBreakPointCount() > 0;
@@ -1140,7 +1140,10 @@
it.FindBreakLocationFromPosition(position, alignment);
it.SetBreakPoint(break_point_object);
- *source_position = it.position() + shared->start_position();
+ position = (alignment == STATEMENT_ALIGNED) ? it.statement_position()
+ : it.position();
+
+ *source_position = position + shared->start_position();
// At least one active break point now.
DCHECK(debug_info->GetBreakPointCount() > 0);
@@ -1566,9 +1569,6 @@
case BREAK_POSITION_ALIGNED:
position = break_point_info->source_position();
break;
- default:
- UNREACHABLE();
- position = break_point_info->statement_position();
}
locations->set(count++, position);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.