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:
46
lib/parse.js
46
lib/parse.js
@@ -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", ",")) {
|
||||||
|
|||||||
13
lib/utils.js
13
lib/utils.js
@@ -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."); }
|
|
||||||
};
|
|
||||||
|
|||||||
Reference in New Issue
Block a user