| Index: Source/bindings/v8/DOMDataStore.h
|
| diff --git a/Source/bindings/v8/DOMDataStore.h b/Source/bindings/v8/DOMDataStore.h
|
| index d5f458de8167d8d3343196e4c60d8f2c2a939816..df77068c89159dbee703f13c40c4b7b172bce4a6 100644
|
| --- a/Source/bindings/v8/DOMDataStore.h
|
| +++ b/Source/bindings/v8/DOMDataStore.h
|
| @@ -51,7 +51,7 @@ public:
|
|
|
| static DOMDataStore* current(v8::Isolate*);
|
|
|
| - template<typename T, typename HolderContainer, typename Wrappable>
|
| + template<typename V8T, typename T, typename HolderContainer, typename Wrappable>
|
| static v8::Handle<v8::Object> getWrapperFast(T* object, const HolderContainer& container, Wrappable* holder)
|
| {
|
| // What we'd really like to check here is whether we're in the
|
| @@ -64,37 +64,37 @@ public:
|
| if (ScriptWrappable::wrapperCanBeStoredInObject(object)) {
|
| v8::Handle<v8::Object> result = ScriptWrappable::getUnsafeWrapperFromObject(object).handle();
|
| // Security: always guard against malicious tampering.
|
| - RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(result.IsEmpty() || result->GetAlignedPointerFromInternalField(v8DOMWrapperObjectIndex) == static_cast<void*>(object));
|
| + RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(result.IsEmpty() || result->GetAlignedPointerFromInternalField(v8DOMWrapperObjectIndex) == V8T::toInternalPointer(object));
|
| return result;
|
| }
|
| - return mainWorldStore()->m_wrapperMap.get(object);
|
| + return mainWorldStore()->m_wrapperMap.get(V8T::toInternalPointer(object));
|
| }
|
| - return current(container.GetIsolate())->get(object);
|
| + return current(container.GetIsolate())->template get<V8T>(object);
|
| }
|
|
|
| - template<typename T>
|
| + template<typename V8T, typename T>
|
| static v8::Handle<v8::Object> getWrapper(T* object, v8::Isolate* isolate)
|
| {
|
| if (ScriptWrappable::wrapperCanBeStoredInObject(object) && !canExistInWorker(object)) {
|
| if (LIKELY(!DOMWrapperWorld::isolatedWorldsExist())) {
|
| v8::Handle<v8::Object> result = ScriptWrappable::getUnsafeWrapperFromObject(object).handle();
|
| // Security: always guard against malicious tampering.
|
| - RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(result.IsEmpty() || result->GetAlignedPointerFromInternalField(v8DOMWrapperObjectIndex) == static_cast<void*>(object));
|
| + RELEASE_ASSERT_WITH_SECURITY_IMPLICATION(result.IsEmpty() || result->GetAlignedPointerFromInternalField(v8DOMWrapperObjectIndex) == V8T::toInternalPointer(object));
|
| return result;
|
| }
|
| }
|
| - return current(isolate)->get(object);
|
| + return current(isolate)->template get<V8T>(object);
|
| }
|
|
|
| - template<typename T>
|
| + template<typename V8T, typename T>
|
| static v8::Handle<v8::Object> getWrapperForMainWorld(T* object)
|
| {
|
| if (ScriptWrappable::wrapperCanBeStoredInObject(object))
|
| return ScriptWrappable::getUnsafeWrapperFromObject(object).handle();
|
| - return mainWorldStore()->get(object);
|
| + return mainWorldStore()->template get<V8T>(object);
|
| }
|
|
|
| - template<typename T>
|
| + template<typename V8T, typename T>
|
| static void setWrapper(T* object, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate, const WrapperConfiguration& configuration)
|
| {
|
| if (ScriptWrappable::wrapperCanBeStoredInObject(object) && !canExistInWorker(object)) {
|
| @@ -103,21 +103,21 @@ public:
|
| return;
|
| }
|
| }
|
| - return current(isolate)->set(object, wrapper, isolate, configuration);
|
| + return current(isolate)->template set<V8T>(object, wrapper, isolate, configuration);
|
| }
|
|
|
| - template<typename T>
|
| + template<typename V8T, typename T>
|
| inline v8::Handle<v8::Object> get(T* object)
|
| {
|
| if (ScriptWrappable::wrapperCanBeStoredInObject(object) && m_type == MainWorld)
|
| return ScriptWrappable::getUnsafeWrapperFromObject(object).handle();
|
| - return m_wrapperMap.get(object);
|
| + return m_wrapperMap.get(V8T::toInternalPointer(object));
|
| }
|
|
|
| void reportMemoryUsage(MemoryObjectInfo*) const;
|
|
|
| private:
|
| - template<typename T>
|
| + template<typename V8T, typename T>
|
| inline void set(T* object, v8::Handle<v8::Object> wrapper, v8::Isolate* isolate, const WrapperConfiguration& configuration)
|
| {
|
| ASSERT(!!object);
|
| @@ -126,7 +126,7 @@ private:
|
| ScriptWrappable::setWrapperInObject(object, wrapper, isolate, configuration);
|
| return;
|
| }
|
| - m_wrapperMap.set(object, wrapper, configuration);
|
| + m_wrapperMap.set(V8T::toInternalPointer(object), wrapper, configuration);
|
| }
|
|
|
| static DOMDataStore* mainWorldStore();
|
|
|