Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index f1cda629356adf9e8836e7ef3450068b1f84e151..ddb8f096afe1126ddd3e1e0f0365a94ec85ae02c 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -3498,22 +3498,23 @@ THREADED_TEST(UniquePersistent) { |
template<typename K, typename V> |
class WeakStdMapTraits : public v8::StdMapTraits<K, V> { |
public: |
- typedef typename v8::DefaultPersistentValueMapTraits<K, V>::Impl Impl; |
- static const bool kIsWeak = true; |
+ typedef typename v8::PersistentValueMap<K, V, WeakStdMapTraits<K, V> > |
+ MapType; |
+ static const v8::PersistentContainerCallbackType kCallbackType = v8::kWeak; |
struct WeakCallbackDataType { |
- Impl* impl; |
+ MapType* map; |
K key; |
}; |
static WeakCallbackDataType* WeakCallbackParameter( |
- Impl* impl, const K& key, Local<V> value) { |
+ MapType* map, const K& key, Local<V> value) { |
WeakCallbackDataType* data = new WeakCallbackDataType; |
- data->impl = impl; |
+ data->map = map; |
data->key = key; |
return data; |
} |
- static Impl* ImplFromWeakCallbackData( |
+ static MapType* MapFromWeakCallbackData( |
const v8::WeakCallbackData<V, WeakCallbackDataType>& data) { |
- return data.GetParameter()->impl; |
+ return data.GetParameter()->map; |
} |
static K KeyFromWeakCallbackData( |
const v8::WeakCallbackData<V, WeakCallbackDataType>& data) { |
@@ -3523,7 +3524,7 @@ class WeakStdMapTraits : public v8::StdMapTraits<K, V> { |
delete data; |
} |
static void Dispose(v8::Isolate* isolate, v8::UniquePersistent<V> value, |
- Impl* impl, K key) { } |
+ K key) { } |
}; |
@@ -3545,6 +3546,10 @@ static void TestPersistentValueMap() { |
CHECK_EQ(1, static_cast<int>(map.Size())); |
obj = map.Get(7); |
CHECK_EQ(expected, obj); |
+ { |
+ typename Map::PersistentValueReference ref = map.GetReference(7); |
+ CHECK_EQ(expected, ref.NewLocal(isolate)); |
+ } |
v8::UniquePersistent<v8::Object> removed = map.Remove(7); |
CHECK_EQ(0, static_cast<int>(map.Size())); |
CHECK(expected == removed); |
@@ -3554,6 +3559,15 @@ static void TestPersistentValueMap() { |
CHECK_EQ(1, static_cast<int>(map.Size())); |
map.Set(8, expected); |
CHECK_EQ(1, static_cast<int>(map.Size())); |
+ { |
+ typename Map::PersistentValueReference ref; |
+ Local<v8::Object> expected2 = v8::Object::New(isolate); |
+ removed = map.Set(8, |
+ v8::UniquePersistent<v8::Object>(isolate, expected2), &ref); |
+ CHECK_EQ(1, static_cast<int>(map.Size())); |
+ CHECK(expected == removed); |
+ CHECK_EQ(expected2, ref.NewLocal(isolate)); |
+ } |
} |
CHECK_EQ(initial_handle_count + 1, global_handles->global_handles_count()); |
if (map.IsWeak()) { |
@@ -3572,7 +3586,7 @@ TEST(PersistentValueMap) { |
TestPersistentValueMap<v8::StdPersistentValueMap<int, v8::Object> >(); |
// Custom traits with weak callbacks: |
- typedef v8::StdPersistentValueMap<int, v8::Object, |
+ typedef v8::PersistentValueMap<int, v8::Object, |
WeakStdMapTraits<int, v8::Object> > WeakPersistentValueMap; |
TestPersistentValueMap<WeakPersistentValueMap>(); |
} |