From b7549196daa287b421bcea1ab547ca0b07f561e7 Mon Sep 17 00:00:00 2001 From: Christian Williams Date: Mon, 12 Oct 2009 21:23:57 -0500 Subject: [PATCH] Blocks which complete synchronously have the completion de-nested. Big speed improvement, not quite sure why yet. --- src/Queue.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Queue.js b/src/Queue.js index 061c222..18300d3 100644 --- a/src/Queue.js +++ b/src/Queue.js @@ -29,12 +29,20 @@ jasmine.Queue.prototype.isRunning = function() { return this.running; }; -var nestLevel = 0; +jasmine.Queue.UNROLL = true; jasmine.Queue.prototype.next_ = function() { var self = this; if (self.index < self.blocks.length) { - self.blocks[self.index].execute(function () { + var calledSynchronously = true; + var completedSynchronously = false; + + var onComplete = function () { + if (jasmine.Queue.UNROLL && calledSynchronously) { + completedSynchronously = true; + return; + } + self.offset = 0; self.index++; @@ -47,7 +55,13 @@ jasmine.Queue.prototype.next_ = function() { } else { self.next_(); } - }); + }; + self.blocks[self.index].execute(onComplete); + + calledSynchronously = false; + if (completedSynchronously) { + onComplete(); + } } else { self.running = false; if (self.onComplete) {