aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/framework.js8
-rw-r--r--src/intertyper.js2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/framework.js b/src/framework.js
index 8e65699d..495d0167 100644
--- a/src/framework.js
+++ b/src/framework.js
@@ -150,16 +150,13 @@ Substrate.prototype = {
that.checkInbox(actor);
if (actor.items.length == 0) return;
- var inputs = actor.items.slice(0);
+ var inputs = actor.items;
var outputs;
var currResultCount = that.results.length;
dprint('framework', 'Processing using ' + actor.name_ + ': ' + inputs.length);
- actor.items = []; // More may be added in process(); we'll get to them next time
- //var t = Date.now();
+ actor.items = [];
outputs = actor.process(inputs);
if (DEBUG_MEMORY) MemoryDebugger.tick('actor ' + actor.name_);
- //t = (Date.now()-t)/1000;
- //dprint('framework', 'Took ' + t + ' seconds.');
dprint('framework', 'New results: ' + (outputs.length + that.results.length - currResultCount) + ' out of ' + (that.results.length + outputs.length));
hadProcessing = true;
@@ -215,6 +212,7 @@ Actor.prototype = {
var ret = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
+ items[i] = null; // items may be very very large. Allow GCing to occur in the loop by releasing refs here
dprint('frameworkLines', 'Processing item for llvm line ' + item.lineNum);
Framework.currItem = item;
var outputs = this.processItem(item);
diff --git a/src/intertyper.js b/src/intertyper.js
index 61a244f3..637f780a 100644
--- a/src/intertyper.js
+++ b/src/intertyper.js
@@ -45,6 +45,8 @@ function intertyper(data, parseFunctions, baseLineNum) {
var unparsedFunctions = [];
for (var i = 0; i < lines.length; i++) {
var line = lines[i];
+ lines[i] = null; // lines may be very very large. Allow GCing to occur in the loop by releasing refs here
+
if (!parseFunctions && /^define .*/.test(line)) {
inFunction = true;
currFunctionLines = [];