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

Side by Side Diff: runtime/include/dart_api.h

Issue 8984006: Implement weak persistent handles in the Dart API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address review comments Created 9 years 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | runtime/vm/dart_api_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef INCLUDE_DART_API_H_ 5 #ifndef INCLUDE_DART_API_H_
6 #define INCLUDE_DART_API_H_ 6 #define INCLUDE_DART_API_H_
7 7
8 /** \mainpage Dart Embedding API Reference 8 /** \mainpage Dart Embedding API Reference
9 * 9 *
10 * Dart is a class-based programming language for creating structured 10 * Dart is a class-based programming language for creating structured
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 * otherwise indicated, callers should assume that all functions in 88 * otherwise indicated, callers should assume that all functions in
89 * the Dart embedding api return local handles. 89 * the Dart embedding api return local handles.
90 * 90 *
91 * Persistent handles are allocated within the current isolate. They 91 * Persistent handles are allocated within the current isolate. They
92 * can be used to store objects across scopes. Persistent handles have 92 * can be used to store objects across scopes. Persistent handles have
93 * the lifetime of the current isolate unless they are explicitly 93 * the lifetime of the current isolate unless they are explicitly
94 * deallocated (see Dart_DeletePersistentHandle). 94 * deallocated (see Dart_DeletePersistentHandle).
95 */ 95 */
96 typedef struct _Dart_Handle* Dart_Handle; 96 typedef struct _Dart_Handle* Dart_Handle;
97 97
98 typedef void (*Dart_PeerFinalizer)(void* peer);
Ivan Posva 2011/12/20 01:32:34 As discussed we should add the Dart_Handle to this
99
98 /** 100 /**
99 * Is this an error handle? 101 * Is this an error handle?
100 * 102 *
101 * Requires there to be a current isolate. 103 * Requires there to be a current isolate.
102 */ 104 */
103 DART_EXPORT bool Dart_IsError(const Dart_Handle& handle); 105 DART_EXPORT bool Dart_IsError(const Dart_Handle& handle);
104 106
105 /** 107 /**
106 * Gets the error message from an error handle. 108 * Gets the error message from an error handle.
107 * 109 *
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 DART_EXPORT Dart_Handle Dart_NewPersistentHandle(Dart_Handle object); 199 DART_EXPORT Dart_Handle Dart_NewPersistentHandle(Dart_Handle object);
198 200
199 /** 201 /**
200 * Deallocates a persistent handle. 202 * Deallocates a persistent handle.
201 * 203 *
202 * Requires there to be a current isolate. 204 * Requires there to be a current isolate.
203 */ 205 */
204 DART_EXPORT void Dart_DeletePersistentHandle(Dart_Handle object); 206 DART_EXPORT void Dart_DeletePersistentHandle(Dart_Handle object);
205 207
206 /** 208 /**
207 * Takes a persistent handle and makes it weak. 209 * Allocates a weak persistent handle for an object.
208 * 210 *
209 * UNIMPLEMENTED. 211 * This handle has the lifetime of the current isolate unless it is
212 * explicitly deallocated by calling Dart_DeletePersistentHandle.
210 * 213 *
211 * Requires there to be a current isolate. 214 * Requires there to be a current isolate.
212 */ 215 */
213 DART_EXPORT Dart_Handle Dart_MakeWeakPersistentHandle(Dart_Handle object); 216 DART_EXPORT Dart_Handle Dart_NewWeakPersistentHandle(
214 // TODO(turnidge): Needs a "near death" callback here. 217 Dart_Handle object,
215 // TODO(turnidge): Add IsWeak, Clear, etc. 218 void* peer,
219 Dart_PeerFinalizer callback);
216 220
217 /** 221 /**
218 * Takes a weak persistent handle and makes it non-weak. 222 * Is this object a weak persistent handle?
219 *
220 * UNIMPLEMENTED.
221 * 223 *
222 * Requires there to be a current isolate. 224 * Requires there to be a current isolate.
223 */ 225 */
224 DART_EXPORT Dart_Handle Dart_MakePersistentHandle(Dart_Handle object); 226 DART_EXPORT bool Dart_IsWeakPersistentHandle(Dart_Handle object);
225 227
226 // --- Initialization and Globals --- 228 // --- Initialization and Globals ---
227 229
228 /** 230 /**
229 * An isolate creation and initialization callback function. 231 * An isolate creation and initialization callback function.
230 * 232 *
231 * This callback, provided by the embedder, is called when an isolate needs 233 * This callback, provided by the embedder, is called when an isolate needs
232 * to be created. The callback should create an isolate and load the 234 * to be created. The callback should create an isolate and load the
233 * required scripts for execution. 235 * required scripts for execution.
234 * 236 *
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 * 880 *
879 * \param value An array of 32-bit codepoints. 881 * \param value An array of 32-bit codepoints.
880 * \param length The length of the codepoints array. 882 * \param length The length of the codepoints array.
881 * 883 *
882 * \return The String object if no error occurs. Otherwise returns 884 * \return The String object if no error occurs. Otherwise returns
883 * an error handle. 885 * an error handle.
884 */ 886 */
885 DART_EXPORT Dart_Handle Dart_NewString32(const uint32_t* codepoints, 887 DART_EXPORT Dart_Handle Dart_NewString32(const uint32_t* codepoints,
886 intptr_t length); 888 intptr_t length);
887 889
888
889 typedef void (*Dart_PeerFinalizer)(void* peer);
890
891 /** 890 /**
892 * Is this object an external String? 891 * Is this object an external String?
893 * 892 *
894 * An external String is a String which references a fixed array of 893 * An external String is a String which references a fixed array of
895 * codepoints which is external to the Dart heap. 894 * codepoints which is external to the Dart heap.
896 */ 895 */
897 DART_EXPORT bool Dart_IsExternalString(Dart_Handle object); 896 DART_EXPORT bool Dart_IsExternalString(Dart_Handle object);
898 897
899 /** 898 /**
900 * Retrieves the peer pointer associated with an external String. 899 * Retrieves the peer pointer associated with an external String.
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after
1385 1384
1386 // --- Profiling support ---- 1385 // --- Profiling support ----
1387 1386
1388 // External pprof support for gathering and dumping symbolic 1387 // External pprof support for gathering and dumping symbolic
1389 // information that can be used for better profile reports for 1388 // information that can be used for better profile reports for
1390 // dynamically generated code. 1389 // dynamically generated code.
1391 DART_EXPORT void Dart_InitPprofSupport(); 1390 DART_EXPORT void Dart_InitPprofSupport();
1392 DART_EXPORT void Dart_GetPprofSymbolInfo(void** buffer, int* buffer_size); 1391 DART_EXPORT void Dart_GetPprofSymbolInfo(void** buffer, int* buffer_size);
1393 1392
1394 #endif // INCLUDE_DART_API_H_ 1393 #endif // INCLUDE_DART_API_H_
OLDNEW
« no previous file with comments | « no previous file | runtime/vm/dart_api_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698