performance improvement of single statement in parser

This commit is contained in:
Misko Hevery 2011-03-23 09:30:08 -07:00
parent cc9f1fdf38
commit 20ce797906

View file

@ -325,15 +325,19 @@ function parser(text, json){
if (tokens.length > 0 && !peek('}', ')', ';', ']')) if (tokens.length > 0 && !peek('}', ')', ';', ']'))
statements.push(filterChain()); statements.push(filterChain());
if (!expect(';')) { if (!expect(';')) {
return function (self){ // optimize for the common case where there is only one statement.
var value; // TODO(size): maybe we should not support multiple statements?
for ( var i = 0; i < statements.length; i++) { return statements.length == 1
var statement = statements[i]; ? statements[0]
if (statement) : function (self){
value = statement(self); var value;
} for ( var i = 0; i < statements.length; i++) {
return value; var statement = statements[i];
}; if (statement)
value = statement(self);
}
return value;
};
} }
} }
} }