Index: src/compiler.cc |
diff --git a/src/compiler.cc b/src/compiler.cc |
index bf6d41d85402217ba4cadae2228a316788401f2d..a7580e415ab932ee087939c81f74544d9ed2c176 100755 |
--- a/src/compiler.cc |
+++ b/src/compiler.cc |
@@ -269,9 +269,20 @@ Handle<SharedFunctionInfo> Compiler::Compile(Handle<String> source, |
} |
if (result.is_null()) { |
- // No cache entry found. Do pre-parsing and compile the script. |
+ // No cache entry found. Do pre-parsing, if it makes sense, and compile |
+ // the script. |
+ // Building preparse data that is only used immediately after is only a |
+ // saving if we might skip building the AST for lazily compiled functions. |
+ // I.e., preparse data isn't relevant when the lazy flag is off, and |
+ // for small sources, odds are that there aren't many functions |
+ // that would be compiled lazily anyway, so we skip the preparse step |
+ // in that case too. |
+ // TODO(lrn): Maybe *only* collect function info, not symbol info, in |
+ // this case, since it's just replacing one hash-lookup with another. |
ScriptDataImpl* pre_data = input_pre_data; |
- if (pre_data == NULL && source_length >= FLAG_min_preparse_length) { |
+ if (pre_data == NULL |
+ && FLAG_lazy |
+ && source_length >= FLAG_min_preparse_length) { |
pre_data = PreParse(source, NULL, extension); |
} |