@@ -6,9 +6,7 @@ import fr.inria.diverse.trace.gemoc.api.IMultiDimensionalTraceAddon
66import fr.obeo.dsl.debug.ide.event.IDSLDebugEventProcessor
77import java.util.ArrayList
88import java.util.Collections
9- import java.util.Comparator
109import java.util.List
11- import java.util.Map
1210import java.util.function.BiPredicate
1311import org.eclipse.core.runtime.IStatus
1412import org.eclipse.core.runtime.Status
@@ -17,7 +15,6 @@ import org.eclipse.jface.dialogs.ErrorDialog
1715import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider
1816import org.eclipse.xtext.naming.QualifiedName
1917import org.gemoc.execution.sequential.javaengine.ui.Activator
20- import org.gemoc.execution.sequential.javaengine.ui.debug.GenericSequentialModelDebugger.ToPushPop
2118import org.gemoc.executionframework.engine.core.AbstractSequentialExecutionEngine
2219import org.gemoc.executionframework.engine.core.EngineStoppedException
2320import org.gemoc.executionframework.engine.mse.MSE
@@ -178,13 +175,8 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
178175 private var List<Object > newStack
179176
180177 def private void doStuff (List<Object > path , boolean updateStack ) {
181- val Map<IStep ,List<IStep > > stepGraph = traceAddon. traceManager. getStepsForStates(0 ,traceAddon. traceManager. traceSize)
182- val rootSteps = stepGraph. keySet()
183- . filter[s|s. getParentStep() == null ]
184- . sortWith(new Comparator<IStep > () {
185- override int compare(IStep o1, IStep o2) {
186- return o1. getStartingIndex()- o2. getStartingIndex()
187- }})
178+ val List<IStep > rootSteps = traceAddon. traceManager. getStepsForStates(0 ,traceAddon. traceManager. traceSize)
179+
188180 val stepPath = new ArrayList
189181 val currentSteps = new ArrayList
190182 currentSteps. addAll(rootSteps)
@@ -193,19 +185,19 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
193185 currentSteps. clear
194186 if (step != null ) {
195187 stepPath. add(step)
196- currentSteps. addAll(stepGraph . get( step) )
188+ currentSteps. addAll(step. subSteps )
197189 }
198190 ]
199191
200192 val stepPathUnmodifiable = stepPath. unmodifiableView
201193
202- stepIntoResult = computeStepInto(stepGraph, stepPathUnmodifiable,rootSteps)
203- stepOverResult = computeStepOver(stepGraph, stepPathUnmodifiable,rootSteps)
204- stepReturnResult = computeStepReturn(stepGraph, stepPathUnmodifiable,rootSteps)
194+ stepIntoResult = computeStepInto(stepPathUnmodifiable,rootSteps)
195+ stepOverResult = computeStepOver(stepPathUnmodifiable,rootSteps)
196+ stepReturnResult = computeStepReturn(stepPathUnmodifiable,rootSteps)
205197
206- backIntoResult = computeBackInto(stepGraph, stepPathUnmodifiable,rootSteps)
207- backOverResult = computeBackOver(stepGraph, stepPathUnmodifiable,rootSteps)
208- backOutResult = computeBackOut(stepGraph, stepPathUnmodifiable,rootSteps)
198+ backIntoResult = computeBackInto(stepPathUnmodifiable,rootSteps)
199+ backOverResult = computeBackOver(stepPathUnmodifiable,rootSteps)
200+ backOutResult = computeBackOut(stepPathUnmodifiable,rootSteps)
209201
210202 var i = 0
211203 while (i < path. size && i < callStack. size && path. get(i) == callStack. get(i)) i++
@@ -216,13 +208,13 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
216208 callStack = stepPathUnmodifiable
217209 }
218210
219- def computeBackInto (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath , List<IStep > rootSteps ) {
211+ def computeBackInto (List<IStep > stepPath , List<IStep > rootSteps ) {
220212 var IStep result = null
221213 if (stepPath. size > 1 ) {
222214 val reversedPath = stepPath. reverseView
223215 val currentStep = reversedPath. get(0 )
224216 val parentStep = reversedPath. get(1 )
225- val parentSubSteps = stepGraph . get( parentStep)
217+ val parentSubSteps = parentStep. subSteps
226218 val idx = parentSubSteps. indexOf(currentStep)
227219 if (idx == 0 ) {
228220 // If the current step is the first in its parents substeps, return parent step
@@ -231,10 +223,10 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
231223 // Otherwise, return the deepest substep in the previous sibling step
232224 val previousStep = parentSubSteps. get(idx- 1 )
233225 var tmpStep = previousStep
234- var tmpSubSteps = stepGraph . get( tmpStep)
226+ var tmpSubSteps = tmpStep. subSteps
235227 while (! tmpSubSteps. empty) {
236228 tmpStep = tmpSubSteps. last
237- tmpSubSteps = stepGraph . get( tmpStep)
229+ tmpSubSteps = tmpStep. subSteps
238230 }
239231 result = tmpStep
240232 }
@@ -244,41 +236,41 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
244236 if (idx > 0 ) {
245237 val previousStep = rootSteps. get(idx- 1 )
246238 var tmpStep = previousStep
247- var tmpSubSteps = stepGraph . get( tmpStep)
239+ var tmpSubSteps = tmpStep. subSteps
248240 while (! tmpSubSteps. empty) {
249241 tmpStep = tmpSubSteps. last
250- tmpSubSteps = stepGraph . get( tmpStep)
242+ tmpSubSteps = tmpStep. subSteps
251243 }
252244 result = tmpStep
253245 }
254246 }
255247 return result
256248 }
257249
258- def computeBackOver (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath , List<IStep > rootSteps ) {
250+ def computeBackOver (List<IStep > stepPath , List<IStep > rootSteps ) {
259251 if (! stepPath. empty) {
260252 val reversedPath = stepPath. reverseView
261- return findPreviousStep(stepGraph, reversedPath,rootSteps,reversedPath. get(0 ),1 )
253+ return findPreviousStep(reversedPath,rootSteps,reversedPath. get(0 ),1 )
262254 }
263255 return null
264256 }
265257
266- def computeBackOut (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath , List<IStep > rootSteps ) {
258+ def computeBackOut (List<IStep > stepPath , List<IStep > rootSteps ) {
267259 if (stepPath. size > 1 ) {
268260 val reversedPath = stepPath. reverseView
269- return findPreviousStep(stepGraph, reversedPath,rootSteps,reversedPath. get(1 ),2 )
261+ return findPreviousStep(reversedPath,rootSteps,reversedPath. get(1 ),2 )
270262 }
271263 return null
272264 }
273265
274- def findPreviousStep (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath ,
266+ def findPreviousStep (List<IStep > stepPath ,
275267 List<IStep > rootSteps , IStep previousStep , int start ) {
276268 var IStep result = null
277269 var i = start
278270 var previous = previousStep
279271 while (result == null && i < stepPath. size) {
280272 val currentStep = stepPath. get(i)
281- val currentSubSteps = stepGraph . get( currentStep)
273+ val currentSubSteps = currentStep. subSteps
282274 var idx = currentSubSteps. indexOf(previous) - 1
283275 if (idx > 0 ) {
284276 result = currentSubSteps. get(idx)
@@ -296,14 +288,14 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
296288 return result
297289 }
298290
299- def findNextStep (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath ,
291+ def findNextStep (List<IStep > stepPath ,
300292 List<IStep > rootSteps , IStep previousStep , int start ) {
301293 var IStep result = null
302294 var i = start
303295 var previous = previousStep
304296 while (result == null && i < stepPath. size) {
305297 val currentStep = stepPath. get(i)
306- val currentSubSteps = stepGraph . get( currentStep)
298+ val currentSubSteps = currentStep. subSteps
307299 if (currentSubSteps. empty) {
308300 // No substep to step into, we thus have to explore the substeps of the parent step
309301 previous = currentStep
@@ -332,22 +324,22 @@ public class OmniscientGenericSequentialModelDebugger extends GenericSequentialM
332324 return result
333325 }
334326
335- def computeStepInto (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath , List<IStep > rootSteps ) {
336- return findNextStep(stepGraph, stepPath. reverseView,rootSteps,null ,0 )
327+ def computeStepInto (List<IStep > stepPath , List<IStep > rootSteps ) {
328+ return findNextStep(stepPath. reverseView,rootSteps,null ,0 )
337329 }
338330
339- def computeStepOver (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath , List<IStep > rootSteps ) {
331+ def computeStepOver (List<IStep > stepPath , List<IStep > rootSteps ) {
340332 if (! stepPath. empty) {
341333 val reversedPath = stepPath. reverseView
342- return findNextStep(stepGraph, reversedPath,rootSteps,reversedPath. get(0 ),1 )
334+ return findNextStep(reversedPath,rootSteps,reversedPath. get(0 ),1 )
343335 }
344336 return null
345337 }
346338
347- def computeStepReturn (Map< IStep , List< IStep > > stepGraph , List<IStep > stepPath , List<IStep > rootSteps ) {
339+ def computeStepReturn (List<IStep > stepPath , List<IStep > rootSteps ) {
348340 if (stepPath. size > 1 ) {
349341 val reversedPath = stepPath. reverseView
350- return findNextStep(stepGraph, reversedPath,rootSteps,reversedPath. get(1 ),2 )
342+ return findNextStep(reversedPath,rootSteps,reversedPath. get(1 ),2 )
351343 }
352344 return null
353345 }
0 commit comments