diff options
| author | jmoenig <jens@moenig.org> | 2014-11-24 16:02:21 +0100 |
|---|---|---|
| committer | jmoenig <jens@moenig.org> | 2014-11-24 16:02:21 +0100 |
| commit | 4be96bb240ea8518fa95218cba7111846af93baa (patch) | |
| tree | f6ce849b98269f59635dfa17ca8ed8d7f7d958ef /threads.js | |
| parent | bd37771334e7c82f86aa99f7509f88dc6950b8c5 (diff) | |
| download | snap-byow-4be96bb240ea8518fa95218cba7111846af93baa.tar.gz snap-byow-4be96bb240ea8518fa95218cba7111846af93baa.zip | |
tail-call-elimination for reporters - experiment
(commented out, under construction)
Diffstat (limited to 'threads.js')
| -rw-r--r-- | threads.js | 28 |
1 files changed, 28 insertions, 0 deletions
@@ -548,6 +548,34 @@ Process.prototype.reportAnd = function (block) { } }; +/* + tail-call-elimination for reporters + ----------------------------------- + currently under construction, commented out for now + to activate add 'doReport' to the list of special forms + selectors in evaluateBlock() and comment out / remove + the current 'doReport' primitive in the "return" + section of the code + +Process.prototype.doReport = function (block) { + +// if (this.context.expression.partOfCustomCommand) { +// return this.doStopCustomBlock(); +// } + + var outer = this.context.outerContext; + while (this.context && this.context.expression !== 'exitReporter') { + if (this.context.expression === 'doStopWarping') { + this.doStopWarping(); + } else { + this.popContext(); + } + } + this.popContext(); + this.pushContext(block.inputs()[0], outer); +}; +*/ + // Process: Non-Block evaluation Process.prototype.evaluateMultiSlot = function (multiSlot, argCount) { |
