Index: runtime/include/dart_api.h |
=================================================================== |
--- runtime/include/dart_api.h (revision 23307) |
+++ runtime/include/dart_api.h (working copy) |
@@ -176,9 +176,12 @@ |
* deallocated (see Dart_DeletePersistentHandle). |
*/ |
typedef struct _Dart_Handle* Dart_Handle; |
+typedef struct _Dart_PersistentHandle* Dart_PersistentHandle; |
+typedef struct _Dart_WeakPersistentHandle* Dart_WeakPersistentHandle; |
-typedef void (*Dart_WeakPersistentHandleFinalizer)(Dart_Handle handle, |
- void* peer); |
+typedef void (*Dart_WeakPersistentHandleFinalizer)( |
+ Dart_WeakPersistentHandle handle, |
+ void* peer); |
typedef void (*Dart_PeerFinalizer)(void* peer); |
/** |
@@ -361,6 +364,17 @@ |
DART_EXPORT bool Dart_IdentityEquals(Dart_Handle obj1, Dart_Handle obj2); |
/** |
+ * Allocates a handle in the current scope from a persistent handle. |
+ */ |
+DART_EXPORT Dart_Handle Dart_HandleFromPersistent(Dart_PersistentHandle object); |
+ |
+/** |
+ * Allocates a handle in the current scope from a weak persistent handle. |
+ */ |
+DART_EXPORT Dart_Handle Dart_HandleFromWeakPersistent( |
+ Dart_WeakPersistentHandle object); |
+ |
+/** |
* Allocates a persistent handle for an object. |
* |
* This handle has the lifetime of the current isolate unless it is |
@@ -368,14 +382,14 @@ |
* |
* Requires there to be a current isolate. |
*/ |
-DART_EXPORT Dart_Handle Dart_NewPersistentHandle(Dart_Handle object); |
+DART_EXPORT Dart_PersistentHandle Dart_NewPersistentHandle(Dart_Handle object); |
/** |
* Deallocates a persistent handle. |
* |
* Requires there to be a current isolate. |
*/ |
-DART_EXPORT void Dart_DeletePersistentHandle(Dart_Handle object); |
+DART_EXPORT void Dart_DeletePersistentHandle(Dart_PersistentHandle object); |
/** |
* Allocates a weak persistent handle for an object. |
@@ -394,17 +408,13 @@ |
* \return Success if the weak persistent handle was |
* created. Otherwise, returns an error. |
*/ |
-DART_EXPORT Dart_Handle Dart_NewWeakPersistentHandle( |
+DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle( |
Dart_Handle object, |
void* peer, |
Dart_WeakPersistentHandleFinalizer callback); |
-/** |
- * Is this object a weak persistent handle? |
- * |
- * Requires there to be a current isolate. |
- */ |
-DART_EXPORT bool Dart_IsWeakPersistentHandle(Dart_Handle object); |
+DART_EXPORT void Dart_DeleteWeakPersistentHandle( |
+ Dart_WeakPersistentHandle object); |
/** |
* Allocates a prologue weak persistent handle for an object. |
@@ -432,7 +442,7 @@ |
* \return Success if the prologue weak persistent handle was created. |
* Otherwise, returns an error. |
*/ |
-DART_EXPORT Dart_Handle Dart_NewPrologueWeakPersistentHandle( |
+DART_EXPORT Dart_WeakPersistentHandle Dart_NewPrologueWeakPersistentHandle( |
Dart_Handle object, |
void* peer, |
Dart_WeakPersistentHandleFinalizer callback); |
@@ -442,7 +452,8 @@ |
* |
* Requires there to be a current isolate. |
*/ |
-DART_EXPORT bool Dart_IsPrologueWeakPersistentHandle(Dart_Handle object); |
+DART_EXPORT bool Dart_IsPrologueWeakPersistentHandle( |
+ Dart_WeakPersistentHandle object); |
/** |
* Constructs a set of weak references from the Cartesian product of |
@@ -459,10 +470,11 @@ |
* \return Success if the weak reference set could be created. |
* Otherwise, returns an error handle. |
*/ |
-DART_EXPORT Dart_Handle Dart_NewWeakReferenceSet(Dart_Handle* keys, |
- intptr_t num_keys, |
- Dart_Handle* values, |
- intptr_t num_values); |
+DART_EXPORT Dart_Handle Dart_NewWeakReferenceSet( |
+ Dart_WeakPersistentHandle* keys, |
+ intptr_t num_keys, |
+ Dart_WeakPersistentHandle* values, |
+ intptr_t num_values); |
// --- Garbage Collection Callbacks --- |
@@ -1766,20 +1778,11 @@ |
* WeakPersistentHandle which needs to be deleted in the specified callback |
* using Dart_DeletePersistentHandle. |
*/ |
-DART_EXPORT Dart_Handle Dart_NewExternalTypedData( |
- Dart_TypedData_Type type, |
- void* data, |
- intptr_t length, |
- void* peer, |
- Dart_WeakPersistentHandleFinalizer callback); |
+DART_EXPORT Dart_Handle Dart_NewExternalTypedData(Dart_TypedData_Type type, |
+ void* data, |
+ intptr_t length); |
/** |
- * Retrieves the peer pointer associated with an external TypedData object. |
- */ |
-DART_EXPORT Dart_Handle Dart_ExternalTypedDataGetPeer(Dart_Handle object, |
- void** peer); |
- |
-/** |
* Acquires access to the internal data address of a TypedData object. |
* |
* \param object The typed data object whose internal data address is to |