From 2d43050a1c62a3e6a7ef5e0d286828adc72e4bb4 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Fri, 26 Sep 2014 11:11:01 -0700 Subject: Only memoize during inline parsing. This cuts the performance hit. With memoization, we get roughly constant behavior in the fuzztest. Without it, not. --- js/stmd.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'js') diff --git a/js/stmd.js b/js/stmd.js index 3da719f..221dbef 100755 --- a/js/stmd.js +++ b/js/stmd.js @@ -455,7 +455,7 @@ } } - if ((next_inline = this.parseInline())) { + if ((next_inline = this.parseInline(true))) { Array.prototype.push.apply(current, next_inline); } else { break; @@ -743,10 +743,10 @@ // Parse the next inline element in subject, advancing subject position // and returning the inline parsed. - var parseInline = function() { + var parseInline = function(memoize) { var startpos = this.pos; - var memoized = this.memo[startpos]; + var memoized = memoize && this.memo[startpos]; if (memoized) { this.pos = memoized.endpos; return memoized.inline; @@ -793,7 +793,7 @@ res = [{t: 'Str', c: c}]; } - if (res) { + if (res && memoize) { this.memo[startpos] = { inline: res, endpos: this.pos }; } -- cgit v1.2.3