| Index: src/parser.h
|
| diff --git a/src/parser.h b/src/parser.h
|
| index 1650cba52123278ef9a61affa38e4890ce57ea89..2feb8fd84646d817b9f6cd0bf0fed092fce05211 100644
|
| --- a/src/parser.h
|
| +++ b/src/parser.h
|
| @@ -62,10 +62,14 @@ class FunctionEntry BASE_EMBEDDED {
|
| // Wrapper around ScriptData to provide parser-specific functionality.
|
| class ParseData {
|
| public:
|
| - explicit ParseData(ScriptData* script_data) : script_data_(script_data) {
|
| - CHECK(IsAligned(script_data->length(), sizeof(unsigned)));
|
| - CHECK(IsSane());
|
| + static ParseData* FromCachedData(ScriptData* cached_data) {
|
| + ParseData* pd = new ParseData(cached_data);
|
| + if (pd->IsSane()) return pd;
|
| + cached_data->Reject();
|
| + delete pd;
|
| + return NULL;
|
| }
|
| +
|
| void Initialize();
|
| FunctionEntry GetFunctionEntry(int start);
|
| int FunctionCount();
|
| @@ -77,6 +81,8 @@ class ParseData {
|
| }
|
|
|
| private:
|
| + explicit ParseData(ScriptData* script_data) : script_data_(script_data) {}
|
| +
|
| bool IsSane();
|
| unsigned Magic();
|
| unsigned Version();
|
| @@ -688,6 +694,13 @@ class Parser : public ParserBase<ParserTraits> {
|
| ScriptCompiler::CompileOptions compile_options() const {
|
| return info_->compile_options();
|
| }
|
| + bool consume_cached_parse_data() const {
|
| + return compile_options() == ScriptCompiler::kConsumeParserCache &&
|
| + cached_parse_data_ != NULL;
|
| + }
|
| + bool produce_cached_parse_data() const {
|
| + return compile_options() == ScriptCompiler::kProduceParserCache;
|
| + }
|
| Scope* DeclarationScope(VariableMode mode) {
|
| return IsLexicalVariableMode(mode)
|
| ? scope_ : scope_->DeclarationScope();
|
|
|