Index: sky/engine/bindings/core/v8/V8PerIsolateData.cpp |
diff --git a/sky/engine/bindings/core/v8/V8PerIsolateData.cpp b/sky/engine/bindings/core/v8/V8PerIsolateData.cpp |
index a0910df7c13aa3cbe3abad1d2f435220c0d49b79..298fd854b4d0bee4c8152c08ac306f176b543f2a 100644 |
--- a/sky/engine/bindings/core/v8/V8PerIsolateData.cpp |
+++ b/sky/engine/bindings/core/v8/V8PerIsolateData.cpp |
@@ -86,6 +86,8 @@ V8PerIsolateData::V8PerIsolateData() |
V8PerIsolateData::~V8PerIsolateData() |
{ |
+ if (m_scriptRegexpScriptState) |
+ m_scriptRegexpScriptState->disposePerContextData(); |
if (isMainThread()) |
mainThreadPerIsolateData = 0; |
} |
@@ -156,6 +158,15 @@ void V8PerIsolateData::setDOMTemplate(void* domTemplateKey, v8::Handle<v8::Funct |
currentDOMTemplateMap().add(domTemplateKey, v8::Eternal<v8::FunctionTemplate>(isolate(), v8::Local<v8::FunctionTemplate>(templ))); |
} |
+v8::Local<v8::Context> V8PerIsolateData::ensureScriptRegexpContext() |
+{ |
+ if (!m_scriptRegexpScriptState) { |
+ v8::Local<v8::Context> context(v8::Context::New(isolate())); |
+ m_scriptRegexpScriptState = ScriptState::create(context, DOMWrapperWorld::create()); |
+ } |
+ return m_scriptRegexpScriptState->context(); |
+} |
+ |
bool V8PerIsolateData::hasInstance(const WrapperTypeInfo* info, v8::Handle<v8::Value> value) |
{ |
return hasInstance(info, value, m_domTemplateMapForMainWorld) |