| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 #include "include/dart_api.h" | 5 #include "include/dart_api.h" |
| 6 #include "include/dart_mirrors_api.h" | 6 #include "include/dart_mirrors_api.h" |
| 7 #include "include/dart_native_api.h" | 7 #include "include/dart_native_api.h" |
| 8 | 8 |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 #include "vm/bigint_operations.h" | 10 #include "vm/bigint_operations.h" |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 44 DEFINE_FLAG(bool, check_function_fingerprints, false, | 44 DEFINE_FLAG(bool, check_function_fingerprints, false, |
| 45 "Check function fingerprints"); | 45 "Check function fingerprints"); |
| 46 DEFINE_FLAG(bool, trace_api, false, | 46 DEFINE_FLAG(bool, trace_api, false, |
| 47 "Trace invocation of API calls (debug mode only)"); | 47 "Trace invocation of API calls (debug mode only)"); |
| 48 DEFINE_FLAG(bool, load_async, true, "load source code asynchronously"); | 48 DEFINE_FLAG(bool, load_async, true, "load source code asynchronously"); |
| 49 | 49 |
| 50 ThreadLocalKey Api::api_native_key_ = Thread::kUnsetThreadLocalKey; | 50 ThreadLocalKey Api::api_native_key_ = Thread::kUnsetThreadLocalKey; |
| 51 Dart_Handle Api::true_handle_ = NULL; | 51 Dart_Handle Api::true_handle_ = NULL; |
| 52 Dart_Handle Api::false_handle_ = NULL; | 52 Dart_Handle Api::false_handle_ = NULL; |
| 53 Dart_Handle Api::null_handle_ = NULL; | 53 Dart_Handle Api::null_handle_ = NULL; |
| 54 Dart_Handle Api::empty_string_handle_ = NULL; |
| 54 | 55 |
| 55 | 56 |
| 56 const char* CanonicalFunction(const char* func) { | 57 const char* CanonicalFunction(const char* func) { |
| 57 if (strncmp(func, "dart::", 6) == 0) { | 58 if (strncmp(func, "dart::", 6) == 0) { |
| 58 return func + 6; | 59 return func + 6; |
| 59 } else { | 60 } else { |
| 60 return func; | 61 return func; |
| 61 } | 62 } |
| 62 } | 63 } |
| 63 | 64 |
| (...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 | 366 |
| 366 Dart_Handle Api::AcquiredError(Isolate* isolate) { | 367 Dart_Handle Api::AcquiredError(Isolate* isolate) { |
| 367 ASSERT(isolate != NULL); | 368 ASSERT(isolate != NULL); |
| 368 ApiState* state = isolate->api_state(); | 369 ApiState* state = isolate->api_state(); |
| 369 ASSERT(state != NULL); | 370 ASSERT(state != NULL); |
| 370 PersistentHandle* acquired_error_handle = state->AcquiredError(); | 371 PersistentHandle* acquired_error_handle = state->AcquiredError(); |
| 371 return reinterpret_cast<Dart_Handle>(acquired_error_handle); | 372 return reinterpret_cast<Dart_Handle>(acquired_error_handle); |
| 372 } | 373 } |
| 373 | 374 |
| 374 | 375 |
| 375 Dart_Handle Api::Null() { | |
| 376 return null_handle_; | |
| 377 } | |
| 378 | |
| 379 | |
| 380 Dart_Handle Api::True() { | |
| 381 return true_handle_; | |
| 382 } | |
| 383 | |
| 384 | |
| 385 Dart_Handle Api::False() { | |
| 386 return false_handle_; | |
| 387 } | |
| 388 | |
| 389 | |
| 390 ApiLocalScope* Api::TopScope(Isolate* isolate) { | 376 ApiLocalScope* Api::TopScope(Isolate* isolate) { |
| 391 ASSERT(isolate != NULL); | 377 ASSERT(isolate != NULL); |
| 392 ApiState* state = isolate->api_state(); | 378 ApiState* state = isolate->api_state(); |
| 393 ASSERT(state != NULL); | 379 ASSERT(state != NULL); |
| 394 ApiLocalScope* scope = state->top_scope(); | 380 ApiLocalScope* scope = state->top_scope(); |
| 395 ASSERT(scope != NULL); | 381 ASSERT(scope != NULL); |
| 396 return scope; | 382 return scope; |
| 397 } | 383 } |
| 398 | 384 |
| 399 | 385 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 411 ApiState* state = isolate->api_state(); | 397 ApiState* state = isolate->api_state(); |
| 412 ASSERT(state != NULL); | 398 ASSERT(state != NULL); |
| 413 ASSERT(true_handle_ == NULL); | 399 ASSERT(true_handle_ == NULL); |
| 414 true_handle_ = Api::InitNewHandle(isolate, Bool::True().raw()); | 400 true_handle_ = Api::InitNewHandle(isolate, Bool::True().raw()); |
| 415 | 401 |
| 416 ASSERT(false_handle_ == NULL); | 402 ASSERT(false_handle_ == NULL); |
| 417 false_handle_ = Api::InitNewHandle(isolate, Bool::False().raw()); | 403 false_handle_ = Api::InitNewHandle(isolate, Bool::False().raw()); |
| 418 | 404 |
| 419 ASSERT(null_handle_ == NULL); | 405 ASSERT(null_handle_ == NULL); |
| 420 null_handle_ = Api::InitNewHandle(isolate, Object::null()); | 406 null_handle_ = Api::InitNewHandle(isolate, Object::null()); |
| 407 |
| 408 ASSERT(empty_string_handle_ == NULL); |
| 409 empty_string_handle_ = Api::InitNewHandle(isolate, Symbols::Empty().raw()); |
| 421 } | 410 } |
| 422 | 411 |
| 423 | 412 |
| 424 bool Api::StringGetPeerHelper(NativeArguments* arguments, | 413 bool Api::StringGetPeerHelper(NativeArguments* arguments, |
| 425 int arg_index, | 414 int arg_index, |
| 426 void** peer) { | 415 void** peer) { |
| 427 NoGCScope no_gc_scope; | 416 NoGCScope no_gc_scope; |
| 428 RawObject* raw_obj = arguments->NativeArgAt(arg_index); | 417 RawObject* raw_obj = arguments->NativeArgAt(arg_index); |
| 429 if (!raw_obj->IsHeapObject()) { | 418 if (!raw_obj->IsHeapObject()) { |
| 430 return false; | 419 return false; |
| (...skipping 1235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1666 if (scope == NULL) return NULL; | 1655 if (scope == NULL) return NULL; |
| 1667 zone = scope->zone(); | 1656 zone = scope->zone(); |
| 1668 } | 1657 } |
| 1669 return reinterpret_cast<uint8_t*>(zone->AllocUnsafe(size)); | 1658 return reinterpret_cast<uint8_t*>(zone->AllocUnsafe(size)); |
| 1670 } | 1659 } |
| 1671 | 1660 |
| 1672 | 1661 |
| 1673 // --- Objects ---- | 1662 // --- Objects ---- |
| 1674 | 1663 |
| 1675 DART_EXPORT Dart_Handle Dart_Null() { | 1664 DART_EXPORT Dart_Handle Dart_Null() { |
| 1676 Isolate* isolate = Isolate::Current(); | 1665 ASSERT(Isolate::Current() != NULL); |
| 1677 CHECK_ISOLATE(isolate); | |
| 1678 return Api::Null(); | 1666 return Api::Null(); |
| 1679 } | 1667 } |
| 1680 | 1668 |
| 1681 | 1669 |
| 1670 DART_EXPORT Dart_Handle Dart_EmptyString() { |
| 1671 ASSERT(Isolate::Current() != NULL); |
| 1672 return Api::EmptyString(); |
| 1673 } |
| 1674 |
| 1675 |
| 1682 DART_EXPORT bool Dart_IsNull(Dart_Handle object) { | 1676 DART_EXPORT bool Dart_IsNull(Dart_Handle object) { |
| 1683 return Api::UnwrapHandle(object) == Object::null(); | 1677 return Api::UnwrapHandle(object) == Object::null(); |
| 1684 } | 1678 } |
| 1685 | 1679 |
| 1686 | 1680 |
| 1687 DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, | 1681 DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, |
| 1688 bool* value) { | 1682 bool* value) { |
| 1689 Isolate* isolate = Isolate::Current(); | 1683 Isolate* isolate = Isolate::Current(); |
| 1690 DARTSCOPE(isolate); | 1684 DARTSCOPE(isolate); |
| 1691 CHECK_CALLBACK_STATE(isolate); | 1685 CHECK_CALLBACK_STATE(isolate); |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2049 RETURN_TYPE_ERROR(isolate, double_obj, Double); | 2043 RETURN_TYPE_ERROR(isolate, double_obj, Double); |
| 2050 } | 2044 } |
| 2051 *value = obj.value(); | 2045 *value = obj.value(); |
| 2052 return Api::Success(); | 2046 return Api::Success(); |
| 2053 } | 2047 } |
| 2054 | 2048 |
| 2055 | 2049 |
| 2056 // --- Booleans ---- | 2050 // --- Booleans ---- |
| 2057 | 2051 |
| 2058 DART_EXPORT Dart_Handle Dart_True() { | 2052 DART_EXPORT Dart_Handle Dart_True() { |
| 2059 Isolate* isolate = Isolate::Current(); | 2053 ASSERT(Isolate::Current() != NULL); |
| 2060 CHECK_ISOLATE(isolate); | |
| 2061 return Api::True(); | 2054 return Api::True(); |
| 2062 } | 2055 } |
| 2063 | 2056 |
| 2064 | 2057 |
| 2065 DART_EXPORT Dart_Handle Dart_False() { | 2058 DART_EXPORT Dart_Handle Dart_False() { |
| 2066 Isolate* isolate = Isolate::Current(); | 2059 ASSERT(Isolate::Current() != NULL); |
| 2067 CHECK_ISOLATE(isolate); | |
| 2068 return Api::False(); | 2060 return Api::False(); |
| 2069 } | 2061 } |
| 2070 | 2062 |
| 2071 | 2063 |
| 2072 DART_EXPORT Dart_Handle Dart_NewBoolean(bool value) { | 2064 DART_EXPORT Dart_Handle Dart_NewBoolean(bool value) { |
| 2073 Isolate* isolate = Isolate::Current(); | 2065 Isolate* isolate = Isolate::Current(); |
| 2074 CHECK_ISOLATE(isolate); | 2066 CHECK_ISOLATE(isolate); |
| 2075 return value ? Api::True() : Api::False(); | 2067 return value ? Api::True() : Api::False(); |
| 2076 } | 2068 } |
| 2077 | 2069 |
| (...skipping 3003 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5081 | 5073 |
| 5082 | 5074 |
| 5083 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( | 5075 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( |
| 5084 const char* name, | 5076 const char* name, |
| 5085 Dart_ServiceRequestCallback callback, | 5077 Dart_ServiceRequestCallback callback, |
| 5086 void* user_data) { | 5078 void* user_data) { |
| 5087 Service::RegisterRootEmbedderCallback(name, callback, user_data); | 5079 Service::RegisterRootEmbedderCallback(name, callback, user_data); |
| 5088 } | 5080 } |
| 5089 | 5081 |
| 5090 } // namespace dart | 5082 } // namespace dart |
| OLD | NEW |