From 33b859739c6fe64da5703fe2e3e12bc5907cba32 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Mon, 15 Dec 2014 09:54:20 +0100 Subject: updated history --- history.txt | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'history.txt') diff --git a/history.txt b/history.txt index edbf4d0..a7b88af 100755 --- a/history.txt +++ b/history.txt @@ -2394,3 +2394,7 @@ ______ 141211 ------ * Threads: yield after each cycle in the experimental “forEach” primitive + +141215 +------ +* New Swedish translation! Yay!! Thanks, Erik A Olsson! -- cgit v1.3.1 From 777498a9f416a8a383e435d19a41f7bdae8ad048 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Wed, 17 Dec 2014 08:12:35 +0100 Subject: Experimental “processes” count watcher MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (hidden in dev mode) --- history.txt | 4 ++++ objects.js | 27 +++++++++++++++++++++++++-- store.js | 5 +++-- 3 files changed, 32 insertions(+), 4 deletions(-) (limited to 'history.txt') diff --git a/history.txt b/history.txt index a7b88af..2f82c32 100755 --- a/history.txt +++ b/history.txt @@ -2398,3 +2398,7 @@ ______ 141215 ------ * New Swedish translation! Yay!! Thanks, Erik A Olsson! + +141217 +------ +* Objects, Store: Experimental “processes” count watcher (hidden in dev mode) diff --git a/objects.js b/objects.js index 7277719..b155b05 100644 --- a/objects.js +++ b/objects.js @@ -125,7 +125,7 @@ PrototypeHatBlockMorph*/ // Global stuff //////////////////////////////////////////////////////// -modules.objects = '2014-December-04'; +modules.objects = '2014-December-17'; var SpriteMorph; var StageMorph; @@ -793,6 +793,12 @@ SpriteMorph.prototype.initBlocks = function () { category: 'sensing', spec: 'frames' }, + reportThreadCount: { + dev: true, + type: 'reporter', + category: 'sensing', + spec: 'processes' + }, doAsk: { type: 'command', category: 'sensing', @@ -1918,6 +1924,8 @@ SpriteMorph.prototype.blockTemplates = function (category) { txt.setColor(this.paletteTextColor); blocks.push(txt); blocks.push('-'); + blocks.push(watcherToggle('reportThreadCount')); + blocks.push(block('reportThreadCount')); blocks.push(block('colorFiltered')); blocks.push(block('reportStackSize')); blocks.push(block('reportFrameCount')); @@ -3579,6 +3587,16 @@ SpriteMorph.prototype.reportMouseY = function () { return 0; }; +// SpriteMorph thread count (for debugging) + +SpriteMorph.prototype.reportThreadCount = function () { + var stage = this.parentThatIsA(StageMorph); + if (stage) { + return stage.threads.processes.length; + } + return 0; +}; + // SpriteMorph variable watchers (for palette checkbox toggling) SpriteMorph.prototype.findVariableWatcher = function (varName) { @@ -5059,6 +5077,8 @@ StageMorph.prototype.blockTemplates = function (category) { txt.setColor(this.paletteTextColor); blocks.push(txt); blocks.push('-'); + blocks.push(watcherToggle('reportThreadCount')); + blocks.push(block('reportThreadCount')); blocks.push(block('colorFiltered')); blocks.push(block('reportStackSize')); blocks.push(block('reportFrameCount')); @@ -5509,6 +5529,9 @@ StageMorph.prototype.watcherFor = StageMorph.prototype.getLastAnswer = SpriteMorph.prototype.getLastAnswer; +StageMorph.prototype.reportThreadCount + = SpriteMorph.prototype.reportThreadCount; + // StageMorph message broadcasting StageMorph.prototype.allMessageNames @@ -6757,7 +6780,7 @@ WatcherMorph.prototype.object = function () { WatcherMorph.prototype.isGlobal = function (selector) { return contains( ['getLastAnswer', 'getLastMessage', 'getTempo', 'getTimer', - 'reportMouseX', 'reportMouseY'], + 'reportMouseX', 'reportMouseY', 'reportThreadCount'], selector ); }; diff --git a/store.js b/store.js index 7b2b7e1..8cbc10f 100644 --- a/store.js +++ b/store.js @@ -61,7 +61,7 @@ SyntaxElementMorph, Variable*/ // Global stuff //////////////////////////////////////////////////////// -modules.store = '2014-December-06'; +modules.store = '2014-December-17'; // XML_Serializer /////////////////////////////////////////////////////// @@ -267,7 +267,8 @@ SnapSerializer.prototype.watcherLabels = { getTimer: 'timer', getCostumeIdx: 'costume #', reportMouseX: 'mouse x', - reportMouseY: 'mouse y' + reportMouseY: 'mouse y', + reportThreadCount: 'processes' }; // SnapSerializer instance creation: -- cgit v1.3.1 From fc256e9e727bfe85fbf885cc65afa3b152430c71 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Wed, 17 Dec 2014 09:41:21 +0100 Subject: Remove terminated processes from expired clones --- history.txt | 1 + threads.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) (limited to 'history.txt') diff --git a/history.txt b/history.txt index 2f82c32..1ec5c83 100755 --- a/history.txt +++ b/history.txt @@ -2402,3 +2402,4 @@ ______ 141217 ------ * Objects, Store: Experimental “processes” count watcher (hidden in dev mode) +* Threads: Remove terminated processes from expired clones diff --git a/threads.js b/threads.js index b80ee9e..6078f5b 100644 --- a/threads.js +++ b/threads.js @@ -83,7 +83,7 @@ ArgLabelMorph, localize, XML_Element, hex_sha512*/ // Global stuff //////////////////////////////////////////////////////// -modules.threads = '2014-December-11'; +modules.threads = '2014-December-17'; var ThreadManager; var Process; @@ -234,7 +234,7 @@ ThreadManager.prototype.removeTerminatedProcesses = function () { // and un-highlight their scripts var remaining = []; this.processes.forEach(function (proc) { - if (!proc.isRunning() && !proc.errorFlag && !proc.isDead) { + if ((!proc.isRunning() && !proc.errorFlag) || proc.isDead) { if (proc.topBlock instanceof BlockMorph) { proc.topBlock.removeHighlight(); } -- cgit v1.3.1 From b31df39d7f126eaa303c8dae1cf6a14c739a2cc5 Mon Sep 17 00:00:00 2001 From: jmoenig Date: Wed, 17 Dec 2014 12:35:13 +0100 Subject: Let “zombifying” scripts access receivers’ local vars MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- history.txt | 1 + threads.js | 1 + 2 files changed, 2 insertions(+) (limited to 'history.txt') diff --git a/history.txt b/history.txt index 1ec5c83..6d6f0ff 100755 --- a/history.txt +++ b/history.txt @@ -2403,3 +2403,4 @@ ______ ------ * Objects, Store: Experimental “processes” count watcher (hidden in dev mode) * Threads: Remove terminated processes from expired clones +* Threads: Let “zombifying” scripts access receivers’ local vars diff --git a/threads.js b/threads.js index 6078f5b..791d81c 100644 --- a/threads.js +++ b/threads.js @@ -2546,6 +2546,7 @@ Process.prototype.reportContextFor = function (context, otherObj) { if (result.outerContext) { result.outerContext = copy(result.outerContext); result.outerContext.receiver = otherObj; + result.outerContext.variables.parentFrame = otherObj.variables; } return result; }; -- cgit v1.3.1