Reverting "minor perf. improvements"

Revert "minor perf. improvements"

This reverts commit 24bfd55a22.

broke the parser somehow; too early to optimize, let's get the other stuff running.
This commit is contained in:
Mihai Bazon
2012-09-03 10:26:23 +03:00
parent 596af60587
commit 1bf5928b54
2 changed files with 26 additions and 33 deletions

View File

@@ -748,7 +748,7 @@ function parse($TEXT, exigent_mode) {
function parenthesised() { function parenthesised() {
expect("("); expect("(");
var exp = expression(true); var exp = expression();
expect(")"); expect(")");
return exp; return exp;
}; };
@@ -756,7 +756,7 @@ function parse($TEXT, exigent_mode) {
function embed_tokens(parser) { function embed_tokens(parser) {
return function() { return function() {
var start = S.token; var start = S.token;
var expr = parser(); var expr = parser.apply(this, arguments);
var end = prev(); var end = prev();
expr.start = start; expr.start = start;
expr.end = end; expr.end = end;
@@ -933,9 +933,9 @@ function parse($TEXT, exigent_mode) {
function regular_for(init) { function regular_for(init) {
expect(";"); expect(";");
var test = is("punc", ";") ? null : expression(true); var test = is("punc", ";") ? null : expression();
expect(";"); expect(";");
var step = is("punc", ")") ? null : expression(true); var step = is("punc", ")") ? null : expression();
expect(")"); expect(")");
return new AST_For({ return new AST_For({
init : init, init : init,
@@ -947,7 +947,7 @@ function parse($TEXT, exigent_mode) {
function for_in(init) { function for_in(init) {
var lhs = init instanceof AST_Var ? init.definitions[0].name : null; var lhs = init instanceof AST_Var ? init.definitions[0].name : null;
var obj = expression(true); var obj = expression();
expect(")"); expect(")");
return new AST_ForIn({ return new AST_ForIn({
init : init, init : init,
@@ -957,20 +957,6 @@ function parse($TEXT, exigent_mode) {
}); });
}; };
var function_body = embed_tokens(function(){
++S.in_function;
var loop = S.in_loop;
var labels = S.labels;
S.in_directives = true;
S.in_loop = 0;
S.labels = [];
var a = block_(true);
--S.in_function;
S.in_loop = loop;
S.labels = labels;
return a;
});
var function_ = function(in_statement) { var function_ = function(in_statement) {
var name = is("name") ? as_symbol(in_statement var name = is("name") ? as_symbol(in_statement
? AST_SymbolDefun ? AST_SymbolDefun
@@ -989,7 +975,19 @@ function parse($TEXT, exigent_mode) {
next(); next();
return a; return a;
})(true, []), })(true, []),
body: function_body() body: embed_tokens(function(){
++S.in_function;
var loop = S.in_loop;
var labels = S.labels;
S.in_directives = true;
S.in_loop = 0;
S.labels = [];
var a = block_(true);
--S.in_function;
S.in_loop = loop;
S.labels = labels;
return a;
})()
}); });
}; };
@@ -1034,7 +1032,7 @@ function parse($TEXT, exigent_mode) {
cur = []; cur = [];
branch = new AST_Case({ branch = new AST_Case({
start : prog1(S.token, next), start : prog1(S.token, next),
expression : expression(true), expression : expression(),
body : cur body : cur
}); });
a.push(branch); a.push(branch);
@@ -1189,7 +1187,7 @@ function parse($TEXT, exigent_mode) {
switch (start.value) { switch (start.value) {
case "(": case "(":
next(); next();
var ex = expression(true); var ex = expression();
ex.start = start; ex.start = start;
ex.end = S.token; ex.end = S.token;
expect(")"); expect(")");
@@ -1333,7 +1331,7 @@ function parse($TEXT, exigent_mode) {
} }
if (is("punc", "[")) { if (is("punc", "[")) {
next(); next();
var prop = expression(true); var prop = expression();
expect("]"); expect("]");
return subscripts(new AST_Sub({ return subscripts(new AST_Sub({
start : start, start : start,
@@ -1453,6 +1451,8 @@ function parse($TEXT, exigent_mode) {
}; };
var expression = function(commas, no_in) { var expression = function(commas, no_in) {
if (arguments.length == 0)
commas = true;
var start = S.token; var start = S.token;
var expr = maybe_assign(no_in); var expr = maybe_assign(no_in);
if (commas && is("punc", ",")) { if (commas && is("punc", ",")) {

View File

@@ -46,12 +46,11 @@ function curry(f) {
return function() { return f.apply(this, args.concat(slice(arguments))); }; return function() { return f.apply(this, args.concat(slice(arguments))); };
}; };
function prog1(ret, f1, f2, f3) { function prog1(ret) {
if (ret instanceof Function) if (ret instanceof Function)
ret = ret(); ret = ret();
if (f1) f1(); for (var i = 1, n = arguments.length; --n > 0; ++i)
if (f2) f2(); arguments[i]();
if (f3) f3();
return ret; return ret;
}; };
@@ -170,9 +169,3 @@ function string_template(text, props) {
return props[p]; return props[p];
}); });
}; };
function time_it(name, cont) {
var t1 = new Date().getTime();
try { return cont(); }
finally { sys.debug("// " + name + ": " + ((new Date().getTime() - t1) / 1000).toFixed(3) + " sec."); }
};