From a1fd6acc923db555c62f2fcf251d4b71f8569c4d Mon Sep 17 00:00:00 2001 From: David Majda Date: Fri, 6 Jul 2012 15:02:46 +0200 Subject: [PATCH] Do not compute |resultIndex| for "rule" nodes Computing |resultIndex| for their expressions is enough. --- src/compiler/passes/allocate-registers.js | 3 +-- src/compiler/passes/generate-code.js | 4 ++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/compiler/passes/allocate-registers.js b/src/compiler/passes/allocate-registers.js index aee8c50..c6e1d8d 100644 --- a/src/compiler/passes/allocate-registers.js +++ b/src/compiler/passes/allocate-registers.js @@ -42,7 +42,6 @@ PEG.compiler.passes.allocateRegisters = function(ast) { grammar: function(node, index) { each(node.rules, function(node) { - node.resultIndex = index; compute(node, index); }); }, @@ -51,7 +50,7 @@ PEG.compiler.passes.allocateRegisters = function(ast) { function(node, index) { var depth; - node.expression.resultIndex = node.resultIndex; + node.expression.resultIndex = index; depth = compute(node.expression, index); diff --git a/src/compiler/passes/generate-code.js b/src/compiler/passes/generate-code.js index 1575fc5..93c6a67 100644 --- a/src/compiler/passes/generate-code.js +++ b/src/compiler/passes/generate-code.js @@ -567,10 +567,10 @@ PEG.compiler.passes.generateCode = function(ast, options) { ' ', ' cache[cacheKey] = {', ' nextPos: #{posClone("pos")},', - ' result: #{r(node.resultIndex)}', + ' result: #{r(node.expression.resultIndex)}', ' };', ' #end', - ' return #{r(node.resultIndex)};', + ' return #{r(node.expression.resultIndex)};', '}' ], named: [