v8/test/mjsunit/debug-stepin-construct-call.js
yangguo 8965b683ce Debugger: use debug break slot to break on call.
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}
2015-07-10 08:49:31 +00:00

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);