8965b683ce
Break point at calls are currently set via IC. To change this, we need to set debug break slots instead. We also need to distinguish those debug break slots as calls to support step-in. To implement this, we add a data field to debug break reloc info to indicate non-call debug breaks or in case of call debug breaks, the number of arguments. We can later use this to find the callee on the evaluation stack in Debug::PrepareStep. BUG=v8:4269 R=ulan@chromium.org LOG=N Review URL: https://codereview.chromium.org/1222093007 Cr-Commit-Position: refs/heads/master@{#29561}
43 lines
927 B
JavaScript
43 lines
927 B
JavaScript
// Copyright 2015 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 break_count = 0;
|
|
var exception = null;
|
|
|
|
function listener(event, exec_state, event_data, data) {
|
|
if (event != Debug.DebugEvent.Break) return;
|
|
try {
|
|
var source_line = exec_state.frame(0).sourceLineText();
|
|
print(source_line);
|
|
exec_state.prepareStep(Debug.StepAction.StepIn, 1);
|
|
break_count++;
|
|
} catch (e) {
|
|
exception = e;
|
|
}
|
|
}
|
|
|
|
var Debug = debug.Debug;
|
|
Debug.setListener(listener);
|
|
|
|
|
|
function f() {
|
|
this.x = 1;
|
|
}
|
|
|
|
function g() {
|
|
new f();
|
|
}
|
|
|
|
Debug.setBreakPoint(g, 6, Debug.BreakPositionAlignment.BreakPosition);
|
|
print(Debug.showBreakPoints(g, undefined,
|
|
Debug.BreakPositionAlignment.BreakPosition));
|
|
|
|
g();
|
|
Debug.setListener(null);
|
|
|
|
assertEquals(6, break_count);
|
|
assertNull(exception);
|