Merge V8 5.2.361.47 DO NOT MERGE
https://chromium.googlesource.com/v8/v8/+/5.2.361.47
FPIIM-449
Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/include/v8-util.h b/include/v8-util.h
index 73ec658..8133fdd 100644
--- a/include/v8-util.h
+++ b/include/v8-util.h
@@ -95,12 +95,12 @@
MapType* map, const K& key, Local<V> value) {
return NULL;
}
- static MapType* MapFromWeakCallbackData(
- const WeakCallbackData<V, WeakCallbackDataType>& data) {
+ static MapType* MapFromWeakCallbackInfo(
+ const WeakCallbackInfo<WeakCallbackDataType>& data) {
return NULL;
}
- static K KeyFromWeakCallbackData(
- const WeakCallbackData<V, WeakCallbackDataType>& data) {
+ static K KeyFromWeakCallbackInfo(
+ const WeakCallbackInfo<WeakCallbackDataType>& data) {
return K();
}
static void DisposeCallbackData(WeakCallbackDataType* data) { }
@@ -206,6 +206,17 @@
}
/**
+ * Call V8::RegisterExternallyReferencedObject with the map value for given
+ * key.
+ */
+ void RegisterExternallyReferencedObject(K& key) {
+ DCHECK(Contains(key));
+ V8::RegisterExternallyReferencedObject(
+ reinterpret_cast<internal::Object**>(FromVal(Traits::Get(&impl_, key))),
+ reinterpret_cast<internal::Isolate*>(GetIsolate()));
+ }
+
+ /**
* Return value for key and remove it from the map.
*/
Global<V> Remove(const K& key) {
@@ -402,11 +413,11 @@
private:
static void WeakCallback(
- const WeakCallbackData<V, typename Traits::WeakCallbackDataType>& data) {
+ const WeakCallbackInfo<typename Traits::WeakCallbackDataType>& data) {
if (Traits::kCallbackType != kNotWeak) {
PersistentValueMap<K, V, Traits>* persistentValueMap =
- Traits::MapFromWeakCallbackData(data);
- K key = Traits::KeyFromWeakCallbackData(data);
+ Traits::MapFromWeakCallbackInfo(data);
+ K key = Traits::KeyFromWeakCallbackInfo(data);
Traits::Dispose(data.GetIsolate(),
persistentValueMap->Remove(key).Pass(), key);
Traits::DisposeCallbackData(data.GetParameter());