From 710ded61eef4209a13887f5090a8a9880768f85f Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 27 Feb 2017 14:06:59 +0100 Subject: [PATCH] don't stop if previous is jump out and current jump dest --- src/code/breakpointManager.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/code/breakpointManager.js b/src/code/breakpointManager.js index 5201e7708f..50ad4d6510 100644 --- a/src/code/breakpointManager.js +++ b/src/code/breakpointManager.js @@ -56,10 +56,11 @@ class BreakpointManager { return trace[step].depth !== trace[step - 1].depth } - function hitLine (currentStep, sourceLocation, self) { + function hitLine (currentStep, sourceLocation, previousSourceLocation, self) { // isJumpDestInstruction -> returning from a internal function call // depthChange -> returning from an external call - if (helper.isJumpDestInstruction(self.debugger.traceManager.trace[currentStep]) || + // sourceLocation.start <= previousSourceLocation.start && ... -> previous src is contained in the current one + if (helper.isJumpDestInstruction(self.debugger.traceManager.trace[currentStep]) && previousSourceLocation.jump === 'o' || depthChange(currentStep, self.debugger.traceManager.trace)) { return false } else { @@ -85,7 +86,7 @@ class BreakpointManager { if (this.previousLine !== lineColumn.start.line) { if (direction === -1 && lineHadBreakpoint) { // TODO : improve this when we will build the correct structure before hand lineHadBreakpoint = false - if (hitLine(currentStep + 1, previousSourceLocation, this)) { + if (hitLine(currentStep + 1, previousSourceLocation, sourceLocation, this)) { return } } @@ -93,7 +94,7 @@ class BreakpointManager { if (this.hasBreakpointAtLine(sourceLocation.file, lineColumn.start.line)) { lineHadBreakpoint = true if (direction === 1) { - if (hitLine(currentStep, sourceLocation, this)) { + if (hitLine(currentStep, sourceLocation, previousSourceLocation, this)) { return } }