Commit bead2448 authored by yangguo's avatar yangguo Committed by Commit bot

[debugger] remove frame argument for prepare step.

The third argument optionally specifies the frame from which to step.
This feature is not used and not well tested.

R=jkummerow@chromium.org
BUG=chromium:569835
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#32865}
parent 1362f935
...@@ -493,7 +493,7 @@ void Debug::Break(Arguments args, JavaScriptFrame* frame) { ...@@ -493,7 +493,7 @@ void Debug::Break(Arguments args, JavaScriptFrame* frame) {
// Clear queue // Clear queue
thread_local_.queued_step_count_ = 0; thread_local_.queued_step_count_ = 0;
PrepareStep(StepNext, step_count, StackFrame::NO_ID); PrepareStep(StepNext, step_count);
} else { } else {
// Notify the debug event listeners. // Notify the debug event listeners.
OnDebugBreak(break_points_hit, false); OnDebugBreak(break_points_hit, false);
...@@ -531,7 +531,7 @@ void Debug::Break(Arguments args, JavaScriptFrame* frame) { ...@@ -531,7 +531,7 @@ void Debug::Break(Arguments args, JavaScriptFrame* frame) {
ClearStepping(); ClearStepping();
// Set up for the remaining steps. // Set up for the remaining steps.
PrepareStep(step_action, step_count, StackFrame::NO_ID); PrepareStep(step_action, step_count);
} }
} }
...@@ -833,9 +833,7 @@ void Debug::PrepareStepOnThrow() { ...@@ -833,9 +833,7 @@ void Debug::PrepareStepOnThrow() {
} }
void Debug::PrepareStep(StepAction step_action, void Debug::PrepareStep(StepAction step_action, int step_count) {
int step_count,
StackFrame::Id frame_id) {
HandleScope scope(isolate_); HandleScope scope(isolate_);
DCHECK(in_debug_scope()); DCHECK(in_debug_scope());
...@@ -844,15 +842,11 @@ void Debug::PrepareStep(StepAction step_action, ...@@ -844,15 +842,11 @@ void Debug::PrepareStep(StepAction step_action,
// any. The debug frame will only be present if execution was stopped due to // any. The debug frame will only be present if execution was stopped due to
// hitting a break point. In other situations (e.g. unhandled exception) the // hitting a break point. In other situations (e.g. unhandled exception) the
// debug frame is not present. // debug frame is not present.
StackFrame::Id id = break_frame_id(); StackFrame::Id frame_id = break_frame_id();
if (id == StackFrame::NO_ID) { // If there is no JavaScript stack don't do anything.
// If there is no JavaScript stack don't do anything. if (frame_id == StackFrame::NO_ID) return;
return;
} JavaScriptFrameIterator frames_it(isolate_, frame_id);
if (frame_id != StackFrame::NO_ID) {
id = frame_id;
}
JavaScriptFrameIterator frames_it(isolate_, id);
JavaScriptFrame* frame = frames_it.frame(); JavaScriptFrame* frame = frames_it.frame();
feature_tracker()->Track(DebugFeatureTracker::kStepping); feature_tracker()->Track(DebugFeatureTracker::kStepping);
......
...@@ -408,9 +408,7 @@ class Debug { ...@@ -408,9 +408,7 @@ class Debug {
bool IsBreakOnException(ExceptionBreakType type); bool IsBreakOnException(ExceptionBreakType type);
// Stepping handling. // Stepping handling.
void PrepareStep(StepAction step_action, void PrepareStep(StepAction step_action, int step_count);
int step_count,
StackFrame::Id frame_id);
void PrepareStepIn(Handle<JSFunction> function); void PrepareStepIn(Handle<JSFunction> function);
void PrepareStepOnThrow(); void PrepareStepOnThrow();
void ClearStepping(); void ClearStepping();
......
...@@ -943,17 +943,11 @@ function ExecutionState(break_id) { ...@@ -943,17 +943,11 @@ function ExecutionState(break_id) {
this.selected_frame = 0; this.selected_frame = 0;
} }
ExecutionState.prototype.prepareStep = function(opt_action, opt_count, ExecutionState.prototype.prepareStep = function(opt_action, opt_count) {
opt_callframe) {
var action = Debug.StepAction.StepIn; var action = Debug.StepAction.StepIn;
if (!IS_UNDEFINED(opt_action)) action = TO_NUMBER(opt_action); if (!IS_UNDEFINED(opt_action)) action = TO_NUMBER(opt_action);
var count = opt_count ? TO_NUMBER(opt_count) : 1; var count = opt_count ? TO_NUMBER(opt_count) : 1;
var callFrameId = 0; return %PrepareStep(this.break_id, action, count);
if (!IS_UNDEFINED(opt_callframe)) {
callFrameId = opt_callframe.details_.frameId();
}
return %PrepareStep(this.break_id, action, count, callFrameId);
}; };
ExecutionState.prototype.evaluateGlobal = function(source, disable_break, ExecutionState.prototype.evaluateGlobal = function(source, disable_break,
......
...@@ -1212,7 +1212,7 @@ RUNTIME_FUNCTION(Runtime_IsBreakOnException) { ...@@ -1212,7 +1212,7 @@ RUNTIME_FUNCTION(Runtime_IsBreakOnException) {
// of frames to step down. // of frames to step down.
RUNTIME_FUNCTION(Runtime_PrepareStep) { RUNTIME_FUNCTION(Runtime_PrepareStep) {
HandleScope scope(isolate); HandleScope scope(isolate);
DCHECK(args.length() == 4); DCHECK(args.length() == 3);
CONVERT_NUMBER_CHECKED(int, break_id, Int32, args[0]); CONVERT_NUMBER_CHECKED(int, break_id, Int32, args[0]);
RUNTIME_ASSERT(isolate->debug()->CheckExecutionState(break_id)); RUNTIME_ASSERT(isolate->debug()->CheckExecutionState(break_id));
...@@ -1220,15 +1220,6 @@ RUNTIME_FUNCTION(Runtime_PrepareStep) { ...@@ -1220,15 +1220,6 @@ RUNTIME_FUNCTION(Runtime_PrepareStep) {
return isolate->Throw(isolate->heap()->illegal_argument_string()); return isolate->Throw(isolate->heap()->illegal_argument_string());
} }
CONVERT_NUMBER_CHECKED(int, wrapped_frame_id, Int32, args[3]);
StackFrame::Id frame_id;
if (wrapped_frame_id == 0) {
frame_id = StackFrame::NO_ID;
} else {
frame_id = DebugFrameHelper::UnwrapFrameId(wrapped_frame_id);
}
// Get the step action and check validity. // Get the step action and check validity.
StepAction step_action = static_cast<StepAction>(NumberToInt32(args[1])); StepAction step_action = static_cast<StepAction>(NumberToInt32(args[1]));
if (step_action != StepIn && step_action != StepNext && if (step_action != StepIn && step_action != StepNext &&
...@@ -1236,11 +1227,6 @@ RUNTIME_FUNCTION(Runtime_PrepareStep) { ...@@ -1236,11 +1227,6 @@ RUNTIME_FUNCTION(Runtime_PrepareStep) {
return isolate->Throw(isolate->heap()->illegal_argument_string()); return isolate->Throw(isolate->heap()->illegal_argument_string());
} }
if (frame_id != StackFrame::NO_ID && step_action != StepNext &&
step_action != StepOut) {
return isolate->ThrowIllegalOperation();
}
// Get the number of steps. // Get the number of steps.
int step_count = NumberToInt32(args[2]); int step_count = NumberToInt32(args[2]);
if (step_count < 1) { if (step_count < 1) {
...@@ -1252,7 +1238,7 @@ RUNTIME_FUNCTION(Runtime_PrepareStep) { ...@@ -1252,7 +1238,7 @@ RUNTIME_FUNCTION(Runtime_PrepareStep) {
// Prepare step. // Prepare step.
isolate->debug()->PrepareStep(static_cast<StepAction>(step_action), isolate->debug()->PrepareStep(static_cast<StepAction>(step_action),
step_count, frame_id); step_count);
return isolate->heap()->undefined_value(); return isolate->heap()->undefined_value();
} }
......
...@@ -183,7 +183,7 @@ namespace internal { ...@@ -183,7 +183,7 @@ namespace internal {
F(ClearBreakPoint, 1, 1) \ F(ClearBreakPoint, 1, 1) \
F(ChangeBreakOnException, 2, 1) \ F(ChangeBreakOnException, 2, 1) \
F(IsBreakOnException, 1, 1) \ F(IsBreakOnException, 1, 1) \
F(PrepareStep, 4, 1) \ F(PrepareStep, 3, 1) \
F(ClearStepping, 0, 1) \ F(ClearStepping, 0, 1) \
F(DebugEvaluate, 6, 1) \ F(DebugEvaluate, 6, 1) \
F(DebugEvaluateGlobal, 4, 1) \ F(DebugEvaluateGlobal, 4, 1) \
......
...@@ -341,7 +341,7 @@ static void ChangeBreakOnExceptionFromJS(v8::Isolate* isolate, bool caught, ...@@ -341,7 +341,7 @@ static void ChangeBreakOnExceptionFromJS(v8::Isolate* isolate, bool caught,
// Prepare to step to next break location. // Prepare to step to next break location.
static void PrepareStep(StepAction step_action) { static void PrepareStep(StepAction step_action) {
v8::internal::Debug* debug = CcTest::i_isolate()->debug(); v8::internal::Debug* debug = CcTest::i_isolate()->debug();
debug->PrepareStep(step_action, 1, StackFrame::NO_ID); debug->PrepareStep(step_action, 1);
} }
......
...@@ -53,8 +53,8 @@ function h() { ...@@ -53,8 +53,8 @@ function h() {
} }
} }
function TestCase(frame_index, step_count, expected_final_state) { function TestCase(step_count, expected_final_state) {
print("Test case, parameters " + frame_index + "/" + step_count); print("Test case, step count: " + step_count);
var listener_exception = null; var listener_exception = null;
var state_snapshot; var state_snapshot;
...@@ -68,12 +68,7 @@ function TestCase(frame_index, step_count, expected_final_state) { ...@@ -68,12 +68,7 @@ function TestCase(frame_index, step_count, expected_final_state) {
if (event == Debug.DebugEvent.Break) { if (event == Debug.DebugEvent.Break) {
if (listener_state == 0) { if (listener_state == 0) {
Debug.clearBreakPoint(bp); Debug.clearBreakPoint(bp);
var context_frame; exec_state.prepareStep(Debug.StepAction.StepNext, step_count);
if (frame_index !== undefined) {
context_frame = exec_state.frame(frame_index);
}
exec_state.prepareStep(Debug.StepAction.StepNext,
step_count, context_frame);
listener_state = 1; listener_state = 1;
} else if (listener_state == 1) { } else if (listener_state == 1) {
state_snapshot = String(state); state_snapshot = String(state);
...@@ -107,26 +102,8 @@ function TestCase(frame_index, step_count, expected_final_state) { ...@@ -107,26 +102,8 @@ function TestCase(frame_index, step_count, expected_final_state) {
// Warm-up -- make sure all is compiled and ready for breakpoint. // Warm-up -- make sure all is compiled and ready for breakpoint.
h(); h();
TestCase(0, "0,0,-1");
// Stepping in the default (top) frame. TestCase(1, "0,0,-1");
TestCase(undefined, 0, "0,0,-1"); TestCase(2, "0,0,0");
TestCase(undefined, 1, "0,0,-1"); TestCase(5, "0,0,1");
TestCase(undefined, 2, "0,0,0"); TestCase(8, "0,0,2");
TestCase(undefined, 5, "0,0,1");
TestCase(undefined, 8, "0,0,3");
// Stepping in the frame #0 (should be exactly the same as above).
TestCase(0, 0, "0,0,-1");
TestCase(0, 1, "0,0,-1");
TestCase(0, 2, "0,0,0");
TestCase(0, 5, "0,0,1");
TestCase(0, 8, "0,0,3");
// Stepping in the frame #1.
TestCase(1, 0, "0,0,3");
TestCase(1, 3, "0,1,3");
TestCase(1, 7, "0,3,3");
// Stepping in the frame #2.
TestCase(2, 3, "1,3,3");
TestCase(2, 7, "3,3,3");
...@@ -30,11 +30,6 @@ ...@@ -30,11 +30,6 @@
# All tests in the bug directory are expected to fail. # All tests in the bug directory are expected to fail.
'bugs/*': [FAIL], 'bugs/*': [FAIL],
##############################################################################
# Flaky tests.
# BUG(v8:2921).
'debug-step-4-in-frame': [PASS, FAIL, SLOW],
############################################################################## ##############################################################################
# Fails. # Fails.
'regress/regress-1119': [FAIL], 'regress/regress-1119': [FAIL],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment