https://bugs.webkit.org/show_bug.cgi?id=85022
Reviewed by Nate Chapin.
The objective is to pass Isolate around in V8 bindings.
This patch passes Isolate to getDOMXXXMap().
Also this patch removes DOMMap::getDOMDataStore() and
DOMData::getDefalutStore(), since the indirection by the
methods is redundant. This is not for performance
optimization but just for refactoring.
No tests. No change in behavior.
* bindings/v8/DOMData.cpp:
(WebCore::DOMData::getCurrentStore):
* bindings/v8/DOMData.h:
(DOMData):
* bindings/v8/V8DOMMap.cpp:
(WebCore::getDOMNodeMap):
(WebCore::getActiveDOMNodeMap):
(WebCore::getDOMObjectMap):
(WebCore::getActiveDOMObjectMap):
(WebCore::removeAllDOMObjects):
* bindings/v8/V8DOMMap.h:
(WebCore):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@115495
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
2012-04-26 Kentaro Hara <haraken@chromium.org>
+ [V8] Pass Isolate to getDOMXXXMap()
+ https://bugs.webkit.org/show_bug.cgi?id=85022
+
+ Reviewed by Nate Chapin.
+
+ The objective is to pass Isolate around in V8 bindings.
+ This patch passes Isolate to getDOMXXXMap().
+
+ Also this patch removes DOMMap::getDOMDataStore() and
+ DOMData::getDefalutStore(), since the indirection by the
+ methods is redundant. This is not for performance
+ optimization but just for refactoring.
+
+ No tests. No change in behavior.
+
+ * bindings/v8/DOMData.cpp:
+ (WebCore::DOMData::getCurrentStore):
+ * bindings/v8/DOMData.h:
+ (DOMData):
+ * bindings/v8/V8DOMMap.cpp:
+ (WebCore::getDOMNodeMap):
+ (WebCore::getActiveDOMNodeMap):
+ (WebCore::getDOMObjectMap):
+ (WebCore::getActiveDOMObjectMap):
+ (WebCore::removeAllDOMObjects):
+ * bindings/v8/V8DOMMap.h:
+ (WebCore):
+
+2012-04-26 Kentaro Hara <haraken@chromium.org>
+
[V8] Pass Isolate to V8BindingPerIsolateData::current()
https://bugs.webkit.org/show_bug.cgi?id=85023
namespace WebCore {
-static StaticDOMDataStore& getDefaultStore()
+DOMDataStore& DOMData::getCurrentStore(v8::Isolate* isolate)
{
DEFINE_STATIC_LOCAL(StaticDOMDataStore, defaultStore, ());
- return defaultStore;
-}
-
-DOMDataStore& DOMData::getCurrentStore()
-{
V8BindingPerIsolateData* data = V8BindingPerIsolateData::current();
if (UNLIKELY(data->domDataStore() != 0))
return *data->domDataStore();
V8IsolatedContext* context = V8IsolatedContext::getEntered();
if (UNLIKELY(context != 0))
return *context->world()->domDataStore();
- return getDefaultStore();
+ return defaultStore;
}
void DOMData::derefObject(WrapperTypeInfo* type, void* domObject)
static void removeObjectsFromWrapperMap(DOMDataStore* store, AbstractWeakReferenceMap<T, v8::Object>& domMap);
- static DOMDataStore& getCurrentStore();
+ static DOMDataStore& getCurrentStore(v8::Isolate* = 0);
private:
DOMData();
static void derefObject(WrapperTypeInfo* type, void* domObject);
V8BindingPerIsolateData::current()->unregisterDOMDataStore(m_store.get());
}
-static inline DOMDataStore& getDOMDataStore()
-{
- return DOMData::getCurrentStore();
-}
-
void enableFasterDOMStoreAccess()
{
}
-DOMNodeMapping& getDOMNodeMap()
+DOMNodeMapping& getDOMNodeMap(v8::Isolate* isolate)
{
- return getDOMDataStore().domNodeMap();
+ return DOMData::getCurrentStore(isolate).domNodeMap();
}
-DOMNodeMapping& getActiveDOMNodeMap()
+DOMNodeMapping& getActiveDOMNodeMap(v8::Isolate* isolate)
{
- return getDOMDataStore().activeDomNodeMap();
+ return DOMData::getCurrentStore(isolate).activeDomNodeMap();
}
-DOMWrapperMap<void>& getDOMObjectMap()
+DOMWrapperMap<void>& getDOMObjectMap(v8::Isolate* isolate)
{
- return getDOMDataStore().domObjectMap();
+ return DOMData::getCurrentStore(isolate).domObjectMap();
}
-DOMWrapperMap<void>& getActiveDOMObjectMap()
+DOMWrapperMap<void>& getActiveDOMObjectMap(v8::Isolate* isolate)
{
- return getDOMDataStore().activeDomObjectMap();
+ return DOMData::getCurrentStore(isolate).activeDomObjectMap();
}
void removeAllDOMObjects()
{
- DOMDataStore& store = getDOMDataStore();
+ DOMDataStore& store = DOMData::getCurrentStore();
v8::HandleScope scope;
};
// A map from DOM node to its JS wrapper.
- DOMNodeMapping& getDOMNodeMap();
- DOMNodeMapping& getActiveDOMNodeMap();
+ DOMNodeMapping& getDOMNodeMap(v8::Isolate* = 0);
+ DOMNodeMapping& getActiveDOMNodeMap(v8::Isolate* = 0);
void visitDOMNodes(DOMWrapperMap<Node>::Visitor*);
void visitActiveDOMNodes(DOMWrapperMap<Node>::Visitor*);
// A map from a DOM object (non-node) to its JS wrapper. This map does not contain the DOM objects which can have pending activity (active dom objects).
- DOMWrapperMap<void>& getDOMObjectMap();
+ DOMWrapperMap<void>& getDOMObjectMap(v8::Isolate* = 0);
void visitDOMObjects(DOMWrapperMap<void>::Visitor*);
// A map from a DOM object to its JS wrapper for DOM objects which can have pending activity.
- DOMWrapperMap<void>& getActiveDOMObjectMap();
+ DOMWrapperMap<void>& getActiveDOMObjectMap(v8::Isolate* = 0);
void visitActiveDOMObjects(DOMWrapperMap<void>::Visitor*);
// This should be called to remove all DOM objects associated with the current thread when it is tearing down.