Index: src/compiler.h |
diff --git a/src/compiler.h b/src/compiler.h |
index f63475cfa96a780bf2c590f9b63de6d3f58f71a3..3802016883027ecbaf528f87bbe12fc7ce8ad427 100644 |
--- a/src/compiler.h |
+++ b/src/compiler.h |
@@ -45,6 +45,12 @@ enum ParseRestriction { |
ONLY_SINGLE_FUNCTION_LITERAL // Only a single FunctionLiteral expression. |
}; |
+enum CachedDataMode { |
+ NO_CACHED_DATA, |
+ CONSUME_CACHED_DATA, |
+ PRODUCE_CACHED_DATA |
+}; |
+ |
struct OffsetRange { |
OffsetRange(int from, int to) : from(from), to(to) {} |
int from; |
@@ -77,7 +83,10 @@ class CompilationInfo { |
Handle<Script> script() const { return script_; } |
HydrogenCodeStub* code_stub() const {return code_stub_; } |
v8::Extension* extension() const { return extension_; } |
- ScriptDataImpl* pre_parse_data() const { return pre_parse_data_; } |
+ ScriptDataImpl** cached_data() const { return cached_data_; } |
+ CachedDataMode cached_data_mode() const { |
+ return cached_data_mode_; |
+ } |
Handle<Context> context() const { return context_; } |
BailoutId osr_ast_id() const { return osr_ast_id_; } |
Handle<Code> unoptimized_code() const { return unoptimized_code_; } |
@@ -180,9 +189,15 @@ class CompilationInfo { |
ASSERT(!is_lazy()); |
extension_ = extension; |
} |
- void SetPreParseData(ScriptDataImpl* pre_parse_data) { |
- ASSERT(!is_lazy()); |
- pre_parse_data_ = pre_parse_data; |
+ void SetCachedData(ScriptDataImpl** cached_data, |
+ CachedDataMode cached_data_mode) { |
+ cached_data_mode_ = cached_data_mode; |
+ if (cached_data_mode == NO_CACHED_DATA) { |
+ cached_data_ = NULL; |
+ } else { |
+ ASSERT(!is_lazy()); |
+ cached_data_ = cached_data; |
+ } |
} |
void SetContext(Handle<Context> context) { |
context_ = context; |
@@ -397,7 +412,8 @@ class CompilationInfo { |
// Fields possibly needed for eager compilation, NULL by default. |
v8::Extension* extension_; |
- ScriptDataImpl* pre_parse_data_; |
+ ScriptDataImpl** cached_data_; |
+ CachedDataMode cached_data_mode_; |
// The context of the caller for eval code, and the global context for a |
// global script. Will be a null handle otherwise. |
@@ -617,15 +633,17 @@ class Compiler : public AllStatic { |
int scope_position); |
// Compile a String source within a context. |
- static Handle<SharedFunctionInfo> CompileScript(Handle<String> source, |
- Handle<Object> script_name, |
- int line_offset, |
- int column_offset, |
- bool is_shared_cross_origin, |
- Handle<Context> context, |
- v8::Extension* extension, |
- ScriptDataImpl* pre_data, |
- NativesFlag is_natives_code); |
+ static Handle<SharedFunctionInfo> CompileScript( |
+ Handle<String> source, |
+ Handle<Object> script_name, |
+ int line_offset, |
+ int column_offset, |
+ bool is_shared_cross_origin, |
+ Handle<Context> context, |
+ v8::Extension* extension, |
+ ScriptDataImpl** cached_data, |
+ CachedDataMode cached_data_mode, |
+ NativesFlag is_natives_code); |
// Create a shared function info object (the code may be lazily compiled). |
static Handle<SharedFunctionInfo> BuildFunctionInfo(FunctionLiteral* node, |