Merge pull request #1648 from mzgoddard/stop-all-next-tick

Stop all next tick
This commit is contained in:
Karishma Chadha 2019-05-15 11:25:15 -04:00 committed by GitHub
commit 14d2820460
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 4 deletions

View file

@ -1844,8 +1844,12 @@ class Runtime extends EventEmitter {
} }
} }
this.targets = newTargets; this.targets = newTargets;
// Dispose all threads. // Dispose of the active thread.
this.threads.forEach(thread => this._stopThread(thread)); if (this.sequencer.activeThread !== null) {
this._stopThread(this.sequencer.activeThread);
}
// Remove all remaining threads from executing in the next tick.
this.threads = [];
} }
/** /**

View file

@ -51,6 +51,8 @@ class Sequencer {
* @type {!Runtime} * @type {!Runtime}
*/ */
this.runtime = runtime; this.runtime = runtime;
this.activeThread = null;
} }
/** /**
@ -97,8 +99,9 @@ class Sequencer {
numActiveThreads = 0; numActiveThreads = 0;
let stoppedThread = false; let stoppedThread = false;
// Attempt to run each thread one time. // Attempt to run each thread one time.
for (let i = 0; i < this.runtime.threads.length; i++) { const threads = this.runtime.threads;
const activeThread = this.runtime.threads[i]; for (let i = 0; i < threads.length; i++) {
const activeThread = this.activeThread = threads[i];
// Check if the thread is done so it is not executed. // Check if the thread is done so it is not executed.
if (activeThread.stack.length === 0 || if (activeThread.stack.length === 0 ||
activeThread.status === Thread.STATUS_DONE) { activeThread.status === Thread.STATUS_DONE) {
@ -165,6 +168,8 @@ class Sequencer {
} }
} }
this.activeThread = null;
return doneThreads; return doneThreads;
} }

Binary file not shown.