Index: include/v8.h |
diff --git a/include/v8.h b/include/v8.h |
index 214bf9f2f73774389aed83f1135713556dbbb1cb..dde44a1fb6e8e65bf4482ee3517b566de6ef8a4f 100644 |
--- a/include/v8.h |
+++ b/include/v8.h |
@@ -1097,25 +1097,49 @@ class V8_EXPORT ScriptCompiler { |
* UnboundScript. |
*/ |
struct V8_EXPORT CachedData { |
- CachedData() : data(NULL), length(0) {} |
+ enum BufferPolicy { |
+ BufferNotOwned, |
+ BufferOwned |
+ }; |
+ |
+ CachedData() : data(NULL), length(0), buffer_policy(BufferNotOwned) {} |
// Caller keeps the ownership of data and guarantees that the data stays |
// alive long enough. |
Sven Panne
2014/03/19 12:04:52
I think the comment is out of date. Furthermore, w
marja
2014/03/19 12:23:48
Updated the comment to be:
If buffer_policy is Bu
|
- CachedData(const uint8_t* data, int length) : data(data), length(length) {} |
+ CachedData(const uint8_t* data, int length, |
+ BufferPolicy buffer_policy = BufferNotOwned); |
+ ~CachedData(); |
// TODO(marja): Async compilation; add constructors which take a callback |
// which will be called when V8 no longer needs the data. |
const uint8_t* data; |
int length; |
+ BufferPolicy buffer_policy; |
+ |
+ private: |
+ // Prevent copying. Not implemented. |
+ CachedData(const CachedData&); |
}; |
/** |
* Source code which can be then compiled to a UnboundScript or |
* BoundScript. |
*/ |
- struct V8_EXPORT Source { |
+ class V8_EXPORT Source { |
+ public: |
+ // Source takes ownership of CachedData. |
Source(Local<String> source_string, const ScriptOrigin& origin, |
- const CachedData& cached_data = CachedData()); |
- Source(Local<String> source_string, |
- const CachedData& cached_data = CachedData()); |
+ CachedData* cached_data = NULL); |
+ Source(Local<String> source_string, CachedData* cached_data = NULL); |
+ ~Source(); |
+ |
+ // Ownership of the CachedData or its buffers is *not* transferred to the |
+ // caller. The CachedData object is alive as long as the Source object is |
+ // alive. |
+ const CachedData* GetCachedData() const; |
+ |
+ private: |
+ friend class ScriptCompiler; |
+ // Prevent copying. Not implemented. |
+ Source(const Source&); |
Local<String> source_string; |
@@ -1125,8 +1149,10 @@ class V8_EXPORT ScriptCompiler { |
Handle<Integer> resource_column_offset; |
Handle<Boolean> resource_is_shared_cross_origin; |
- // Cached data from previous compilation (if any). |
- CachedData cached_data; |
+ // Cached data from previous compilation (if any), or generated during |
+ // compilation (if the generate_cached_data flag is passed to |
+ // ScriptCompiler). |
+ CachedData* cached_data; |
}; |
enum CompileOptions { |
@@ -1142,7 +1168,7 @@ class V8_EXPORT ScriptCompiler { |
* bound to a context). |
*/ |
static Local<UnboundScript> CompileUnbound( |
- Isolate* isolate, const Source& source, |
+ Isolate* isolate, Source* source, |
CompileOptions options = kNoCompileOptions); |
/** |
@@ -1157,7 +1183,7 @@ class V8_EXPORT ScriptCompiler { |
* context. |
*/ |
static Local<Script> Compile( |
- Isolate* isolate, const Source& source, |
+ Isolate* isolate, Source* source, |
CompileOptions options = kNoCompileOptions); |
}; |