OLD | NEW |
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 VM_DART_API_IMPL_H_ | 5 #ifndef VM_DART_API_IMPL_H_ |
6 #define VM_DART_API_IMPL_H_ | 6 #define VM_DART_API_IMPL_H_ |
7 | 7 |
8 #include "vm/allocation.h" | 8 #include "vm/allocation.h" |
9 #include "vm/native_arguments.h" | 9 #include "vm/native_arguments.h" |
10 #include "vm/object.h" | 10 #include "vm/object.h" |
11 | 11 |
12 namespace dart { | 12 namespace dart { |
13 | 13 |
14 DECLARE_FLAG(bool, trace_api); | |
15 | |
16 class ApiLocalScope; | 14 class ApiLocalScope; |
17 class ApiState; | 15 class ApiState; |
18 class FinalizablePersistentHandle; | 16 class FinalizablePersistentHandle; |
19 class LocalHandle; | 17 class LocalHandle; |
20 class PersistentHandle; | 18 class PersistentHandle; |
21 class ReusableObjectHandleScope; | 19 class ReusableObjectHandleScope; |
22 | 20 |
23 const char* CanonicalFunction(const char* func); | 21 const char* CanonicalFunction(const char* func); |
24 | 22 |
25 #define CURRENT_FUNC CanonicalFunction(__FUNCTION__) | 23 #define CURRENT_FUNC CanonicalFunction(__FUNCTION__) |
26 | 24 |
27 #if defined(DEBUG) | |
28 #define TRACE_API_CALL(name) \ | |
29 if (FLAG_trace_api) { \ | |
30 OS::Print("Calling API func: %s\n", name); \ | |
31 } | |
32 #else | |
33 #define TRACE_API_CALL(name) | |
34 #endif | |
35 | |
36 | |
37 // Checks that the current isolate is not NULL. | 25 // Checks that the current isolate is not NULL. |
38 #define CHECK_ISOLATE(isolate) \ | 26 #define CHECK_ISOLATE(isolate) \ |
39 do { \ | 27 do { \ |
40 TRACE_API_CALL(CURRENT_FUNC); \ | |
41 if ((isolate) == NULL) { \ | 28 if ((isolate) == NULL) { \ |
42 FATAL1("%s expects there to be a current isolate. Did you " \ | 29 FATAL1("%s expects there to be a current isolate. Did you " \ |
43 "forget to call Dart_CreateIsolate or Dart_EnterIsolate?", \ | 30 "forget to call Dart_CreateIsolate or Dart_EnterIsolate?", \ |
44 CURRENT_FUNC); \ | 31 CURRENT_FUNC); \ |
45 } \ | 32 } \ |
46 } while (0) | 33 } while (0) |
47 | 34 |
48 // Checks that the current isolate is NULL. | 35 // Checks that the current isolate is NULL. |
49 #define CHECK_NO_ISOLATE(isolate) \ | 36 #define CHECK_NO_ISOLATE(isolate) \ |
50 do { \ | 37 do { \ |
51 TRACE_API_CALL(CURRENT_FUNC); \ | |
52 if ((isolate) != NULL) { \ | 38 if ((isolate) != NULL) { \ |
53 FATAL1("%s expects there to be no current isolate. Did you " \ | 39 FATAL1("%s expects there to be no current isolate. Did you " \ |
54 "forget to call Dart_ExitIsolate?", CURRENT_FUNC); \ | 40 "forget to call Dart_ExitIsolate?", CURRENT_FUNC); \ |
55 } \ | 41 } \ |
56 } while (0) | 42 } while (0) |
57 | 43 |
58 // Checks that the current isolate is not NULL and that it has an API scope. | 44 // Checks that the current isolate is not NULL and that it has an API scope. |
59 #define CHECK_API_SCOPE(thread) \ | 45 #define CHECK_API_SCOPE(thread) \ |
60 do { \ | 46 do { \ |
61 Thread* tmpT = (thread); \ | 47 Thread* tmpT = (thread); \ |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 return Api::NewError("%s: Cannot load after Dart_Precompile", \ | 289 return Api::NewError("%s: Cannot load after Dart_Precompile", \ |
304 CURRENT_FUNC); \ | 290 CURRENT_FUNC); \ |
305 } \ | 291 } \ |
306 | 292 |
307 #define ASSERT_CALLBACK_STATE(thread) \ | 293 #define ASSERT_CALLBACK_STATE(thread) \ |
308 ASSERT(thread->no_callback_scope_depth() == 0) | 294 ASSERT(thread->no_callback_scope_depth() == 0) |
309 | 295 |
310 } // namespace dart. | 296 } // namespace dart. |
311 | 297 |
312 #endif // VM_DART_API_IMPL_H_ | 298 #endif // VM_DART_API_IMPL_H_ |
OLD | NEW |