Commit e7ba4791 authored by dcarney's avatar dcarney Committed by Commit bot

simplify GlobalValueMap calls to DisposeWeak

BUG=

Review URL: https://codereview.chromium.org/1074153002

Cr-Commit-Position: refs/heads/master@{#27750}
parent 277be506
...@@ -134,9 +134,8 @@ class DefaultGlobalMapTraits : public StdMapTraits<K, V> { ...@@ -134,9 +134,8 @@ class DefaultGlobalMapTraits : public StdMapTraits<K, V> {
} }
static void DisposeCallbackData(WeakCallbackInfoType* data) {} static void DisposeCallbackData(WeakCallbackInfoType* data) {}
static void Dispose(Isolate* isolate, Global<V> value, K key) {} static void Dispose(Isolate* isolate, Global<V> value, K key) {}
static void DisposeWeak(Isolate* isolate, // This is a second pass callback, so SetSecondPassCallback cannot be called.
const WeakCallbackInfo<WeakCallbackInfoType>& data, static void DisposeWeak(const WeakCallbackInfo<WeakCallbackInfoType>& data) {}
K key) {}
private: private:
template <typename T> template <typename T>
...@@ -453,7 +452,7 @@ class GlobalValueMap : public PersistentValueMapBase<K, V, Traits> { ...@@ -453,7 +452,7 @@ class GlobalValueMap : public PersistentValueMapBase<K, V, Traits> {
: WeakCallbackType::kParameter; : WeakCallbackType::kParameter;
Local<V> value(Local<V>::New(this->isolate(), *persistent)); Local<V> value(Local<V>::New(this->isolate(), *persistent));
persistent->template SetWeak<typename Traits::WeakCallbackDataType>( persistent->template SetWeak<typename Traits::WeakCallbackDataType>(
Traits::WeakCallbackParameter(this, key, value), WeakCallback, Traits::WeakCallbackParameter(this, key, value), FirstWeakCallback,
callback_type); callback_type);
} }
PersistentContainerValue old_value = PersistentContainerValue old_value =
...@@ -472,16 +471,20 @@ class GlobalValueMap : public PersistentValueMapBase<K, V, Traits> { ...@@ -472,16 +471,20 @@ class GlobalValueMap : public PersistentValueMapBase<K, V, Traits> {
} }
private: private:
static void WeakCallback( static void FirstWeakCallback(
const WeakCallbackInfo<typename Traits::WeakCallbackDataType>& data) { const WeakCallbackInfo<typename Traits::WeakCallbackDataType>& data) {
if (Traits::kCallbackType != kNotWeak) { if (Traits::kCallbackType != kNotWeak) {
GlobalValueMap<K, V, Traits>* persistentValueMap = auto map = Traits::MapFromWeakCallbackInfo(data);
Traits::MapFromWeakCallbackInfo(data);
K key = Traits::KeyFromWeakCallbackInfo(data); K key = Traits::KeyFromWeakCallbackInfo(data);
persistentValueMap->RemoveWeak(key); map->RemoveWeak(key);
Traits::DisposeWeak(data.GetIsolate(), data, key); data.SetSecondPassCallback(SecondWeakCallback);
} }
} }
static void SecondWeakCallback(
const WeakCallbackInfo<typename Traits::WeakCallbackDataType>& data) {
Traits::DisposeWeak(data);
}
}; };
......
...@@ -3353,8 +3353,8 @@ class PhantomStdMapTraits : public v8::StdMapTraits<K, V> { ...@@ -3353,8 +3353,8 @@ class PhantomStdMapTraits : public v8::StdMapTraits<K, V> {
v8::Object::GetAlignedPointerFromInternalField(value, 0)); v8::Object::GetAlignedPointerFromInternalField(value, 0));
} }
static void DisposeWeak( static void DisposeWeak(
v8::Isolate* isolate, const v8::WeakCallbackInfo<WeakCallbackDataType>& info) {
const v8::WeakCallbackInfo<WeakCallbackDataType>& info, K key) { K key = KeyFromWeakCallbackInfo(info);
CHECK_EQ(IntKeyToVoidPointer(key), info.GetInternalField(0)); CHECK_EQ(IntKeyToVoidPointer(key), info.GetInternalField(0));
DisposeCallbackData(info.GetParameter()); DisposeCallbackData(info.GetParameter());
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment