aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.js
diff options
context:
space:
mode:
authorMisko Hevery2011-03-23 09:30:08 -0700
committerMisko Hevery2011-06-08 13:49:11 -0700
commit20ce797906bf20cfb1682a6bd1bb23c02aedc369 (patch)
treee5644672e5e904060e4d1848aa4a0134044ee3aa /src/parser.js
parentcc9f1fdf38bb179166212382b33e78255e669e73 (diff)
downloadangular.js-20ce797906bf20cfb1682a6bd1bb23c02aedc369.tar.bz2
performance improvement of single statement in parser
Diffstat (limited to 'src/parser.js')
-rw-r--r--src/parser.js22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/parser.js b/src/parser.js
index 6916a3f7..8d7e607c 100644
--- a/src/parser.js
+++ b/src/parser.js
@@ -325,15 +325,19 @@ function parser(text, json){
if (tokens.length > 0 && !peek('}', ')', ';', ']'))
statements.push(filterChain());
if (!expect(';')) {
- return function (self){
- var value;
- for ( var i = 0; i < statements.length; i++) {
- var statement = statements[i];
- if (statement)
- value = statement(self);
- }
- return value;
- };
+ // optimize for the common case where there is only one statement.
+ // TODO(size): maybe we should not support multiple statements?
+ return statements.length == 1
+ ? statements[0]
+ : function (self){
+ var value;
+ for ( var i = 0; i < statements.length; i++) {
+ var statement = statements[i];
+ if (statement)
+ value = statement(self);
+ }
+ return value;
+ };
}
}
}