From def9a9ee678b44dd9d5749f76d9e5e36c325a8bd Mon Sep 17 00:00:00 2001 From: yann300 Date: Mon, 9 Jan 2017 13:58:11 +0100 Subject: [PATCH] fix step over back, step over forward --- src/trace/traceStepManager.js | 10 ++++++---- test-browser/vmdebugger.js | 14 +++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/trace/traceStepManager.js b/src/trace/traceStepManager.js index a95d5050de..8571b4fea5 100644 --- a/src/trace/traceStepManager.js +++ b/src/trace/traceStepManager.js @@ -8,7 +8,7 @@ function TraceStepManager (_traceAnalyser) { TraceStepManager.prototype.isCallInstruction = function (index) { var state = this.traceAnalyser.trace[index] - return traceHelper.isCallInstruction(state) + return traceHelper.isCallInstruction(state) && !traceHelper.isCallToPrecompiledContract(index, this.traceAnalyser.trace) } TraceStepManager.prototype.isReturnInstruction = function (index) { @@ -17,8 +17,9 @@ TraceStepManager.prototype.isReturnInstruction = function (index) { } TraceStepManager.prototype.findStepOverBack = function (currentStep) { - if (this.isReturnInstruction(currentStep - 1)) { - return this.traceAnalyser.traceCache.calls[currentStep].call - 1 + if (this.isReturnInstruction(currentStep)) { + var call = util.findCall(currentStep, this.traceAnalyser.traceCache.callsTree.call) + return call.start > 0 ? call.start - 1 : 0 } else { return currentStep > 0 ? currentStep - 1 : 0 } @@ -26,7 +27,8 @@ TraceStepManager.prototype.findStepOverBack = function (currentStep) { TraceStepManager.prototype.findStepOverForward = function (currentStep) { if (this.isCallInstruction(currentStep)) { - return this.traceAnalyser.traceCache.calls[currentStep + 1].return + var call = util.findCall(currentStep + 1, this.traceAnalyser.traceCache.callsTree.call) + return call.return + 1 < this.traceAnalyser.trace.length ? call.return + 1 : this.traceAnalyser.trace.length - 1 } else { return this.traceAnalyser.trace.length >= currentStep + 1 ? currentStep + 1 : currentStep } diff --git a/test-browser/vmdebugger.js b/test-browser/vmdebugger.js index 8b074acab6..da35da8d89 100644 --- a/test-browser/vmdebugger.js +++ b/test-browser/vmdebugger.js @@ -130,15 +130,19 @@ function stepping (browser) { .click('#intoforward') .click('#overforward') .assertCurrentSelectedItem('007 MLOAD') - .click('#overback') - .click('#overback') - .click('#overback') - .click('#overback') - .click('#overback') + .click('#intoback') + .click('#intoback') + .click('#intoback') + .click('#intoback') + .click('#intoback') .click('#overforward') .assertCurrentSelectedItem('182 PUSH1 01') .click('#overforward') .assertCurrentSelectedItem('184 PUSH1 00') + .click('#intoback') + .click('#intoback') + .click('#overback') + .assertCurrentSelectedItem('181 CREATE') return browser }