Reverting "minor perf. improvements"
authorMihai Bazon <mihai@bazon.net>
Mon, 3 Sep 2012 07:26:23 +0000 (10:26 +0300)
committerMihai Bazon <mihai@bazon.net>
Mon, 3 Sep 2012 07:26:23 +0000 (10:26 +0300)
Revert "minor perf. improvements"

This reverts commit 24bfd55a22afd791d4a97694641831cfbd27fb14.

broke the parser somehow; too early to optimize, let's get the other stuff running.

lib/parse.js
lib/utils.js

index d689325..416c363 100644 (file)
@@ -748,7 +748,7 @@ function parse($TEXT, exigent_mode) {
 
     function parenthesised() {
         expect("(");
-        var exp = expression(true);
+        var exp = expression();
         expect(")");
         return exp;
     };
@@ -756,7 +756,7 @@ function parse($TEXT, exigent_mode) {
     function embed_tokens(parser) {
         return function() {
             var start = S.token;
-            var expr = parser();
+            var expr = parser.apply(this, arguments);
             var end = prev();
             expr.start = start;
             expr.end = end;
@@ -933,9 +933,9 @@ function parse($TEXT, exigent_mode) {
 
     function regular_for(init) {
         expect(";");
-        var test = is("punc", ";") ? null : expression(true);
+        var test = is("punc", ";") ? null : expression();
         expect(";");
-        var step = is("punc", ")") ? null : expression(true);
+        var step = is("punc", ")") ? null : expression();
         expect(")");
         return new AST_For({
             init      : init,
@@ -947,7 +947,7 @@ function parse($TEXT, exigent_mode) {
 
     function for_in(init) {
         var lhs = init instanceof AST_Var ? init.definitions[0].name : null;
-        var obj = expression(true);
+        var obj = expression();
         expect(")");
         return new AST_ForIn({
             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 name = is("name") ? as_symbol(in_statement
                                           ? AST_SymbolDefun
@@ -989,7 +975,19 @@ function parse($TEXT, exigent_mode) {
                 next();
                 return a;
             })(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 = [];
                 branch = new AST_Case({
                     start      : prog1(S.token, next),
-                    expression : expression(true),
+                    expression : expression(),
                     body       : cur
                 });
                 a.push(branch);
@@ -1189,7 +1187,7 @@ function parse($TEXT, exigent_mode) {
             switch (start.value) {
               case "(":
                 next();
-                var ex = expression(true);
+                var ex = expression();
                 ex.start = start;
                 ex.end = S.token;
                 expect(")");
@@ -1333,7 +1331,7 @@ function parse($TEXT, exigent_mode) {
         }
         if (is("punc", "[")) {
             next();
-            var prop = expression(true);
+            var prop = expression();
             expect("]");
             return subscripts(new AST_Sub({
                 start      : start,
@@ -1453,6 +1451,8 @@ function parse($TEXT, exigent_mode) {
     };
 
     var expression = function(commas, no_in) {
+        if (arguments.length == 0)
+            commas = true;
         var start = S.token;
         var expr = maybe_assign(no_in);
         if (commas && is("punc", ",")) {
index 1219429..dbd0079 100644 (file)
@@ -46,12 +46,11 @@ function curry(f) {
     return function() { return f.apply(this, args.concat(slice(arguments))); };
 };
 
-function prog1(ret, f1, f2, f3) {
+function prog1(ret) {
     if (ret instanceof Function)
         ret = ret();
-    if (f1) f1();
-    if (f2) f2();
-    if (f3) f3();
+    for (var i = 1, n = arguments.length; --n > 0; ++i)
+        arguments[i]();
     return ret;
 };
 
@@ -170,9 +169,3 @@ function string_template(text, props) {
         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."); }
-};