on master help sign in
Merge pull request #699 from michaelbjames/debugger-renaming
0b319a5Evan Czaplicki
runtime/Debugger.js+45−45
@@ -16,7 +16,7 @@ Elm.debuggerAttach = function(module, hotSwapState /* =undefined */) {
16 var wrappedModule = debugModule(module, runtime);
16 var wrappedModule = debugModule(module, runtime);
17 Elm.Debugger = debuggerInit(wrappedModule, runtime, hotSwapState);
17 Elm.Debugger = debuggerInit(wrappedModule, runtime, hotSwapState);
18 dispatchElmDebuggerInit();
18 dispatchElmDebuggerInit();
19− return wrappedModule.moduleInstance;
19+ return wrappedModule.debuggedModule;
20 }
20 }
21 };
21 };
22};
22};
@@ -40,7 +40,7 @@ function debugModule(module, runtime) {
40 var recordedEvents = [];
40 var recordedEvents = [];
41 var asyncCallbacks = [];
41 var asyncCallbacks = [];
42 var watchTracker = Elm.Native.Debug.make(runtime).watchTracker;
42 var watchTracker = Elm.Native.Debug.make(runtime).watchTracker;
43− var now = 0;
43+ var pauseTime = 0;
44
44
45 function wrapNotify(id, v) {
45 function wrapNotify(id, v) {
46 var timestep = runtime.timer.now();
46 var timestep = runtime.timer.now();
@@ -113,11 +113,11 @@ function debugModule(module, runtime) {
113 programPaused = true;
113 programPaused = true;
114 clearAsyncCallbacks();
114 clearAsyncCallbacks();
115 tracePath.stopRecording();
115 tracePath.stopRecording();
116− now = Date.now();
116+ pauseTime = Date.now();
117 }
117 }
118
118
119 function setContinue(position) {
119 function setContinue(position) {
120− var timerDelay = Date.now() - now;
120+ var timerDelay = Date.now() - pauseTime;
121 runtime.timer.addDelay(timerDelay);
121 runtime.timer.addDelay(timerDelay);
122 programPaused = false;
122 programPaused = false;
123 if (position > 0) {
123 if (position > 0) {
@@ -140,11 +140,11 @@ function debugModule(module, runtime) {
140 wrappedRuntime.runDelayed = wrapRunDelayed;
140 wrappedRuntime.runDelayed = wrapRunDelayed;
141
141
142 var assignedPropTracker = Object.create(wrappedRuntime);
142 var assignedPropTracker = Object.create(wrappedRuntime);
143− var moduleInstance = module.make(assignedPropTracker);
143+ var debuggedModule = module.make(assignedPropTracker);
144
144
145 // make sure the signal graph is actually a signal & extract the visual model
145 // make sure the signal graph is actually a signal & extract the visual model
146− if ( !('recv' in moduleInstance.main) ) {
146+ if ( !('recv' in debuggedModule.main) ) {
147− moduleInstance.main = Elm.Signal.make(runtime).constant(moduleInstance.main);
147+ debuggedModule.main = Elm.Signal.make(runtime).constant(debuggedModule.main);
148 }
148 }
149
149
150 // The main module stores imported modules onto the runtime.
150 // The main module stores imported modules onto the runtime.
@@ -154,13 +154,13 @@ function debugModule(module, runtime) {
154 runtime[key] = assignedPropTracker[key];
154 runtime[key] = assignedPropTracker[key];
155 });
155 });
156
156
157− var moduleNodes = flattenNodes(wrappedRuntime.inputs);
157+ var signalGraphNodes = flattenSignalGraph(wrappedRuntime.inputs);
158− var tracePath = tracePathInit(runtime, moduleInstance.main);
158+ var tracePath = tracePathInit(runtime, debuggedModule.main);
159
159
160 return {
160 return {
161− moduleInstance: moduleInstance,
161+ debuggedModule: debuggedModule,
162− moduleNodes: moduleNodes,
162+ signalGraphNodes: signalGraphNodes,
163− initialNodeValues: saveNodeValues(moduleNodes),
163+ initialSnapshot: snapshotSignalGraph(signalGraphNodes),
164 initialAsyncCallbacks: asyncCallbacks.slice(),
164 initialAsyncCallbacks: asyncCallbacks.slice(),
165 // API functions
165 // API functions
166 clearAsyncCallbacks: clearAsyncCallbacks,
166 clearAsyncCallbacks: clearAsyncCallbacks,
@@ -178,11 +178,11 @@ function debugModule(module, runtime) {
178}
178}
179
179
180function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
180function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
181− var eventCounter = 0;
181+ var currentEventIndex = 0;
182
182
183 function resetProgram() {
183 function resetProgram() {
184 debugModule.clearAsyncCallbacks();
184 debugModule.clearAsyncCallbacks();
185− restoreNodeValues(debugModule.moduleNodes, debugModule.initialNodeValues);
185+ restoreSnapshot(debugModule.signalGraphNodes, debugModule.initialSnapshot);
186 redrawGraphics();
186 redrawGraphics();
187 }
187 }
188
188
@@ -197,23 +197,23 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
197
197
198 function pauseProgram() {
198 function pauseProgram() {
199 debugModule.setPaused();
199 debugModule.setPaused();
200− eventCounter = debugModule.getRecordedEventsLength();
200+ currentEventIndex = debugModule.getRecordedEventsLength();
201 }
201 }
202
202
203 function continueProgram() {
203 function continueProgram() {
204 if (debugModule.getPaused())
204 if (debugModule.getPaused())
205 {
205 {
206− if(eventCounter === 0) {
206+ if(currentEventIndex === 0) {
207 restartProgram();
207 restartProgram();
208 return;
208 return;
209 }
209 }
210 resetProgram();
210 resetProgram();
211− var index = eventCounter;
211+ var continueIndex = currentEventIndex;
212− eventCounter = 0;
212+ currentEventIndex = 0;
213 debugModule.tracePath.clearTraces();
213 debugModule.tracePath.clearTraces();
214 debugModule.tracePath.startRecording();
214 debugModule.tracePath.startRecording();
215− stepTo(index);
215+ stepTo(continueIndex);
216− debugModule.setContinue(eventCounter);
216+ debugModule.setContinue(currentEventIndex);
217 }
217 }
218 }
218 }
219
219
@@ -227,19 +227,19 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
227 throw "Index out of bounds: " + index;
227 throw "Index out of bounds: " + index;
228 }
228 }
229
229
230− if (index < eventCounter) {
230+ if (index < currentEventIndex) {
231 resetProgram();
231 resetProgram();
232− eventCounter = 0;
232+ currentEventIndex = 0;
233 }
233 }
234
234
235− assert(index >= eventCounter, "index must be bad");
235+ assert(index >= currentEventIndex, "index must be bad");
236− while (eventCounter < index) {
236+ while (currentEventIndex < index) {
237− var nextEvent = debugModule.getRecordedEventAt(eventCounter);
237+ var nextEvent = debugModule.getRecordedEventAt(currentEventIndex);
238 runtime.notify(nextEvent.id, nextEvent.value, nextEvent.timestep);
238 runtime.notify(nextEvent.id, nextEvent.value, nextEvent.timestep);
239
239
240− eventCounter += 1;
240+ currentEventIndex += 1;
241 }
241 }
242− assert(eventCounter == index, "while loop didn't work");
242+ assert(currentEventIndex == index, "while loop didn't work");
243 }
243 }
244
244
245 function getMaxSteps() {
245 function getMaxSteps() {
@@ -258,20 +258,20 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
258 }
258 }
259
259
260 function redrawGraphics() {
260 function redrawGraphics() {
261− var main = debugModule.moduleInstance.main
261+ var main = debugModule.debuggedModule.main
262 for (var i = main.kids.length ; i-- ; ) {
262 for (var i = main.kids.length ; i-- ; ) {
263 main.kids[i].recv(runtime.timer.now(), true, main.id);
263 main.kids[i].recv(runtime.timer.now(), true, main.id);
264 }
264 }
265 }
265 }
266
266
267 function getHotSwapState() {
267 function getHotSwapState() {
268− var counter = eventCounter;
268+ var continueIndex = currentEventIndex;
269 if (!debugModule.getPaused()) {
269 if (!debugModule.getPaused()) {
270− counter = getMaxSteps();
270+ continueIndex = getMaxSteps();
271 }
271 }
272 return {
272 return {
273 recordedEvents: debugModule.copyRecordedEvents(),
273 recordedEvents: debugModule.copyRecordedEvents(),
274− eventCounter: counter
274+ currentEventIndex: continueIndex
275 };
275 };
276 }
276 }
277
277
@@ -296,11 +296,11 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
296 stepTo(getMaxSteps());
296 stepTo(getMaxSteps());
297 debugModule.tracePath.stopRecording();
297 debugModule.tracePath.stopRecording();
298
298
299− stepTo(hotSwapState.eventCounter);
299+ stepTo(hotSwapState.currentEventIndex);
300 if (paused) {
300 if (paused) {
301 debugModule.setPaused();
301 debugModule.setPaused();
302 } else {
302 } else {
303− debugModule.setContinue(hotSwapState.eventCounter);
303+ debugModule.setContinue(hotSwapState.currentEventIndex);
304 }
304 }
305 }
305 }
306
306
@@ -315,9 +315,9 @@ function debuggerInit(debugModule, runtime, hotSwapState /* =undefined */) {
315 getPaused: debugModule.getPaused,
315 getPaused: debugModule.getPaused,
316 getHotSwapState: getHotSwapState,
316 getHotSwapState: getHotSwapState,
317 dispose: dispose,
317 dispose: dispose,
318− allNodes: debugModule.moduleNodes,
318+ allNodes: debugModule.signalGraphNodes,
319 watchTracker: debugModule.watchTracker,
319 watchTracker: debugModule.watchTracker,
320− mainNode: debugModule.moduleInstance.main
320+ signalGraphMain: debugModule.debuggedModule.main
321 };
321 };
322
322
323 return elmDebugger;
323 return elmDebugger;
@@ -336,10 +336,10 @@ function Point(x, y) {
336 }
336 }
337}
337}
338
338
339−function tracePathInit(runtime, mainNode) {
339+function tracePathInit(runtime, signalGraphMain) {
340 var List = Elm.List.make(runtime);
340 var List = Elm.List.make(runtime);
341 var Signal = Elm.Signal.make(runtime);
341 var Signal = Elm.Signal.make(runtime);
342− var tracePathNode = A2(Signal.lift, graphicsUpdate, mainNode);
342+ var tracePathNode = A2(Signal.lift, graphicsUpdate, signalGraphMain);
343 var tracePathCanvas = createCanvas();
343 var tracePathCanvas = createCanvas();
344 var tracePositions = {};
344 var tracePositions = {};
345 var recordingTraces = true;
345 var recordingTraces = true;
@@ -474,10 +474,10 @@ function assert(bool, msg) {
474 }
474 }
475}
475}
476
476
477−function saveNodeValues(allNodes) {
477+function snapshotSignalGraph(signalGraphNodes) {
478 var nodeValues = [];
478 var nodeValues = [];
479
479
480− allNodes.forEach(function(node) {
480+ signalGraphNodes.forEach(function(node) {
481 nodeValues.push({ value: node.value, id: node.id });
481 nodeValues.push({ value: node.value, id: node.id });
482 });
482 });
483
483
@@ -485,18 +485,18 @@ function saveNodeValues(allNodes) {
485};
485};
486
486
487
487
488−function restoreNodeValues(allNodes, nodeStates) {
488+function restoreSnapshot(signalGraphNodes, snapshot) {
489− assert(allNodes.length == nodeStates.length, "saved program state has wrong length");
489+ assert(signalGraphNodes.length == snapshot.length, "saved program state has wrong length");
490− for (var i=0; i < allNodes.length; i++) {
490+ for (var i=0; i < signalGraphNodes.length; i++) {
491− var node = allNodes[i];
491+ var node = signalGraphNodes[i];
492− var state = nodeStates[i];
492+ var state = snapshot[i];
493 assert(node.id == state.id, "the nodes moved position");
493 assert(node.id == state.id, "the nodes moved position");
494
494
495 node.value = state.value;
495 node.value = state.value;
496 }
496 }
497}
497}
498
498
499−function flattenNodes(nodes) {
499+function flattenSignalGraph(nodes) {
500 var nodesById = {};
500 var nodesById = {};
501
501
502 function addAllToDict(node) {
502 function addAllToDict(node) {