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

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

Issue 186003002: Pass in the isolate parameter to the weak persistent callback handler so that (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/io_buffer.h ('k') | runtime/lib/typed_data.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 /* 1 /*
2 * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 * Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 * for details. All rights reserved. Use of this source code is governed by a 3 * for details. All rights reserved. Use of this source code is governed by a
4 * BSD-style license that can be found in the LICENSE file. 4 * BSD-style license that can be found in the LICENSE file.
5 */ 5 */
6 6
7 #ifndef INCLUDE_DART_API_H_ 7 #ifndef INCLUDE_DART_API_H_
8 #define INCLUDE_DART_API_H_ 8 #define INCLUDE_DART_API_H_
9 9
10 /** \mainpage Dart Embedding API Reference 10 /** \mainpage Dart Embedding API Reference
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 #include <assert.h> 66 #include <assert.h>
67 67
68 /* 68 /*
69 * ======= 69 * =======
70 * Handles 70 * Handles
71 * ======= 71 * =======
72 */ 72 */
73 73
74 /** 74 /**
75 * An isolate is the unit of concurrency in Dart. Each isolate has
76 * its own memory and thread of control. No state is shared between
77 * isolates. Instead, isolates communicate by message passing.
78 *
79 * Each thread keeps track of its current isolate, which is the
80 * isolate which is ready to execute on the current thread. The
81 * current isolate may be NULL, in which case no isolate is ready to
82 * execute. Most of the Dart apis require there to be a current
83 * isolate in order to function without error. The current isolate is
84 * set by any call to Dart_CreateIsolate or Dart_EnterIsolate.
85 */
86 typedef struct _Dart_Isolate* Dart_Isolate;
87
88 /**
75 * An object reference managed by the Dart VM garbage collector. 89 * An object reference managed by the Dart VM garbage collector.
76 * 90 *
77 * Because the garbage collector may move objects, it is unsafe to 91 * Because the garbage collector may move objects, it is unsafe to
78 * refer to objects directly. Instead, we refer to objects through 92 * refer to objects directly. Instead, we refer to objects through
79 * handles, which are known to the garbage collector and updated 93 * handles, which are known to the garbage collector and updated
80 * automatically when the object is moved. Handles should be passed 94 * automatically when the object is moved. Handles should be passed
81 * by value (except in cases like out-parameters) and should never be 95 * by value (except in cases like out-parameters) and should never be
82 * allocated on the heap. 96 * allocated on the heap.
83 * 97 *
84 * Most functions in the Dart Embedding API return a handle. When a 98 * Most functions in the Dart Embedding API return a handle. When a
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 * The type Dart_Handle represents a handle (both local and persistent). 202 * The type Dart_Handle represents a handle (both local and persistent).
189 * The type Dart_PersistentHandle is a Dart_Handle and it is used to 203 * The type Dart_PersistentHandle is a Dart_Handle and it is used to
190 * document that a persistent handle is expected as a parameter to a call 204 * document that a persistent handle is expected as a parameter to a call
191 * or the return value from a call is a persistent handle. 205 * or the return value from a call is a persistent handle.
192 */ 206 */
193 typedef struct _Dart_Handle* Dart_Handle; 207 typedef struct _Dart_Handle* Dart_Handle;
194 typedef Dart_Handle Dart_PersistentHandle; 208 typedef Dart_Handle Dart_PersistentHandle;
195 typedef struct _Dart_WeakPersistentHandle* Dart_WeakPersistentHandle; 209 typedef struct _Dart_WeakPersistentHandle* Dart_WeakPersistentHandle;
196 210
197 typedef void (*Dart_WeakPersistentHandleFinalizer)( 211 typedef void (*Dart_WeakPersistentHandleFinalizer)(
212 Dart_Isolate isolate,
198 Dart_WeakPersistentHandle handle, 213 Dart_WeakPersistentHandle handle,
199 void* peer); 214 void* peer);
200 typedef void (*Dart_PeerFinalizer)(void* peer); 215 typedef void (*Dart_PeerFinalizer)(void* peer);
201 216
202 /** 217 /**
203 * Is this an error handle? 218 * Is this an error handle?
204 * 219 *
205 * Requires there to be a current isolate. 220 * Requires there to be a current isolate.
206 */ 221 */
207 DART_EXPORT bool Dart_IsError(Dart_Handle handle); 222 DART_EXPORT bool Dart_IsError(Dart_Handle handle);
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 * 454 *
440 * \return Success if the weak persistent handle was 455 * \return Success if the weak persistent handle was
441 * created. Otherwise, returns an error. 456 * created. Otherwise, returns an error.
442 */ 457 */
443 DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle( 458 DART_EXPORT Dart_WeakPersistentHandle Dart_NewWeakPersistentHandle(
444 Dart_Handle object, 459 Dart_Handle object,
445 void* peer, 460 void* peer,
446 Dart_WeakPersistentHandleFinalizer callback); 461 Dart_WeakPersistentHandleFinalizer callback);
447 462
448 DART_EXPORT void Dart_DeleteWeakPersistentHandle( 463 DART_EXPORT void Dart_DeleteWeakPersistentHandle(
464 Dart_Isolate isolate,
449 Dart_WeakPersistentHandle object); 465 Dart_WeakPersistentHandle object);
450 466
451 /** 467 /**
452 * Allocates a prologue weak persistent handle for an object. 468 * Allocates a prologue weak persistent handle for an object.
453 * 469 *
454 * Prologue weak persistent handles are similar to weak persistent 470 * Prologue weak persistent handles are similar to weak persistent
455 * handles but exhibit different behavior during garbage collections 471 * handles but exhibit different behavior during garbage collections
456 * that invoke the prologue and epilogue callbacks. While weak 472 * that invoke the prologue and epilogue callbacks. While weak
457 * persistent handles always weakly reference their referents, 473 * persistent handles always weakly reference their referents,
458 * prologue weak persistent handles weakly reference their referents 474 * prologue weak persistent handles weakly reference their referents
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
593 /** 609 /**
594 * Gets the version string for the Dart VM. 610 * Gets the version string for the Dart VM.
595 * 611 *
596 * The version of the Dart VM can be accessed without initializing the VM. 612 * The version of the Dart VM can be accessed without initializing the VM.
597 * 613 *
598 * \return The version string for the embedded Dart VM. 614 * \return The version string for the embedded Dart VM.
599 */ 615 */
600 DART_EXPORT const char* Dart_VersionString(); 616 DART_EXPORT const char* Dart_VersionString();
601 617
602 /** 618 /**
603 * An isolate is the unit of concurrency in Dart. Each isolate has
604 * its own memory and thread of control. No state is shared between
605 * isolates. Instead, isolates communicate by message passing.
606 *
607 * Each thread keeps track of its current isolate, which is the
608 * isolate which is ready to execute on the current thread. The
609 * current isolate may be NULL, in which case no isolate is ready to
610 * execute. Most of the Dart apis require there to be a current
611 * isolate in order to function without error. The current isolate is
612 * set by any call to Dart_CreateIsolate or Dart_EnterIsolate.
613 */
614 typedef struct _Dart_Isolate* Dart_Isolate;
615
616 /**
617 * An isolate creation and initialization callback function. 619 * An isolate creation and initialization callback function.
618 * 620 *
619 * This callback, provided by the embedder, is called when the vm 621 * This callback, provided by the embedder, is called when the vm
620 * needs to create an isolate. The callback should create an isolate 622 * needs to create an isolate. The callback should create an isolate
621 * by calling Dart_CreateIsolate and load any scripts required for 623 * by calling Dart_CreateIsolate and load any scripts required for
622 * execution. 624 * execution.
623 * 625 *
624 * When the function returns false, it is the responsibility of this 626 * When the function returns false, it is the responsibility of this
625 * function to ensure that Dart_ShutdownIsolate has been called if 627 * function to ensure that Dart_ShutdownIsolate has been called if
626 * required (for example, if the isolate was created successfully by 628 * required (for example, if the isolate was created successfully by
(...skipping 1916 matching lines...) Expand 10 before | Expand all | Expand 10 after
2543 * NOTE: If multiple callbacks with the same name are registered, only the 2545 * NOTE: If multiple callbacks with the same name are registered, only the
2544 * last callback registered will be remembered. 2546 * last callback registered will be remembered.
2545 */ 2547 */
2546 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( 2548 DART_EXPORT void Dart_RegisterRootServiceRequestCallback(
2547 const char* name, 2549 const char* name,
2548 Dart_ServiceRequestCallback callback, 2550 Dart_ServiceRequestCallback callback,
2549 void* user_data); 2551 void* user_data);
2550 2552
2551 2553
2552 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */ 2554 #endif /* INCLUDE_DART_API_H_ */ /* NOLINT */
OLDNEW
« no previous file with comments | « runtime/bin/io_buffer.h ('k') | runtime/lib/typed_data.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698