v8::Handle<v8::FunctionTemplate> V8PerIsolateData::privateTemplateIfExists(WrapperWorldType currentWorldType, void* privatePointer) { TemplateMap& templates = templateMap(currentWorldType); TemplateMap::iterator result = templates.find(privatePointer); if (result != templates.end()) return result->value.newLocal(m_isolate); return v8::Local<v8::FunctionTemplate>(); }
v8::Handle<v8::FunctionTemplate> V8PerIsolateData::privateTemplate(WrapperWorldType currentWorldType, void* privatePointer, v8::FunctionCallback callback, v8::Handle<v8::Value> data, v8::Handle<v8::Signature> signature, int length) { TemplateMap& templates = templateMap(currentWorldType); TemplateMap::iterator result = templates.find(privatePointer); if (result != templates.end()) return result->value.newLocal(m_isolate); v8::Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(callback, data, signature, length); templates.add(privatePointer, UnsafePersistent<v8::FunctionTemplate>(m_isolate, templ)); return templ; }
v8::Persistent<v8::FunctionTemplate> V8PerIsolateData::privateTemplate(WrapperWorldType currentWorldType, void* privatePointer, v8::InvocationCallback callback, v8::Handle<v8::Value> data, v8::Handle<v8::Signature> signature, int length) { v8::Persistent<v8::FunctionTemplate> privateTemplate; TemplateMap& templates = templateMap(currentWorldType); TemplateMap::iterator result = templates.find(privatePointer); if (result != templates.end()) return result->value; v8::Persistent<v8::FunctionTemplate> newPrivateTemplate = v8::Persistent<v8::FunctionTemplate>::New(m_isolate, v8::FunctionTemplate::New(callback, data, signature, length)); templates.add(privatePointer, newPrivateTemplate); return newPrivateTemplate; }
void V8PerIsolateData::setPrivateTemplate(WrapperWorldType currentWorldType, void* privatePointer, v8::Handle<v8::FunctionTemplate> templ) { templateMap(currentWorldType).add(privatePointer, UnsafePersistent<v8::FunctionTemplate>(m_isolate, templ)); }