Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Unified Diff: Source/WebCore/bindings/dart/DartIsolate.h

Issue 9837116: DOM wrappers that are not retained from Dart should be collected. (Closed) Base URL: svn://svn.chromium.org/multivm/trunk/webkit
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/WebCore/bindings/dart/DartIsolate.h
diff --git a/Source/WebCore/bindings/dart/DartIsolate.h b/Source/WebCore/bindings/dart/DartIsolate.h
index 8950deed5fd9ec1b1e2183e3d623184502bc3265..c11fc860da57b825c1dbb1f71eced5fe07da3f03 100644
--- a/Source/WebCore/bindings/dart/DartIsolate.h
+++ b/Source/WebCore/bindings/dart/DartIsolate.h
@@ -31,6 +31,7 @@
#define DartIsolate_h
#include <dart_api.h>
+#include <wtf/HashMap.h>
#include <wtf/RefPtr.h>
#include <wtf/ThreadSafeRefCounted.h>
@@ -74,10 +75,34 @@ public:
RefPtr<DartIsolate> m_isolate;
};
+ Dart_Handle createWeakPersistentHandle(Dart_Handle object, void* peer, Dart_WeakPersistentHandleFinalizer);
+
private:
DartIsolate(Dart_Isolate);
Dart_Isolate m_isolate;
+
+ static void weakCallbackWrapper(Dart_Handle object, void* peer);
Anton Muhin 2012/03/28 18:03:23 do you really need a map here? it looks like all
podivilov 2012/03/28 18:20:05 I will need to dispose persistent handles in some
+
+ struct WeakCallbackData
+ {
+ WeakCallbackData()
+ : peer(0)
+ , weakCallback(0)
+ {
+ }
+
+ WeakCallbackData(void* peer, Dart_WeakPersistentHandleFinalizer weakCallback)
+ : peer(peer)
+ , weakCallback(weakCallback)
+ {
+ }
+
+ void* peer;
+ Dart_WeakPersistentHandleFinalizer weakCallback;
+ };
+ typedef HashMap<Dart_Handle, WeakCallbackData> WeakCallbackMap;
+ WeakCallbackMap m_weakCallbackMap;
};

Powered by Google App Engine
This is Rietveld 408576698