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/class_finalizer.h" | 10 #include "vm/class_finalizer.h" |
(...skipping 1695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1706 } | 1706 } |
1707 | 1707 |
1708 | 1708 |
1709 DART_EXPORT bool Dart_IsNull(Dart_Handle object) { | 1709 DART_EXPORT bool Dart_IsNull(Dart_Handle object) { |
1710 return Api::UnwrapHandle(object) == Object::null(); | 1710 return Api::UnwrapHandle(object) == Object::null(); |
1711 } | 1711 } |
1712 | 1712 |
1713 | 1713 |
1714 DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, | 1714 DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, |
1715 bool* value) { | 1715 bool* value) { |
1716 Isolate* isolate = Isolate::Current(); | 1716 Thread* thread = Thread::Current(); |
| 1717 Isolate* isolate = thread->isolate(); |
| 1718 Zone* zone = thread->zone(); |
1717 DARTSCOPE(isolate); | 1719 DARTSCOPE(isolate); |
1718 CHECK_CALLBACK_STATE(isolate); | 1720 CHECK_CALLBACK_STATE(isolate); |
1719 const Instance& expected = | 1721 const Instance& expected = |
1720 Instance::CheckedHandle(isolate, Api::UnwrapHandle(obj1)); | 1722 Instance::CheckedHandle(zone, Api::UnwrapHandle(obj1)); |
1721 const Instance& actual = | 1723 const Instance& actual = |
1722 Instance::CheckedHandle(isolate, Api::UnwrapHandle(obj2)); | 1724 Instance::CheckedHandle(zone, Api::UnwrapHandle(obj2)); |
1723 const Object& result = | 1725 const Object& result = |
1724 Object::Handle(isolate, DartLibraryCalls::Equals(expected, actual)); | 1726 Object::Handle(zone, DartLibraryCalls::Equals(expected, actual)); |
1725 if (result.IsBool()) { | 1727 if (result.IsBool()) { |
1726 *value = Bool::Cast(result).value(); | 1728 *value = Bool::Cast(result).value(); |
1727 return Api::Success(); | 1729 return Api::Success(); |
1728 } else if (result.IsError()) { | 1730 } else if (result.IsError()) { |
1729 return Api::NewHandle(isolate, result.raw()); | 1731 return Api::NewHandle(isolate, result.raw()); |
1730 } else { | 1732 } else { |
1731 return Api::NewError("Expected boolean result from =="); | 1733 return Api::NewError("Expected boolean result from =="); |
1732 } | 1734 } |
1733 } | 1735 } |
1734 | 1736 |
(...skipping 3265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5000 CompileSource(isolate, library, script, &result); | 5002 CompileSource(isolate, library, script, &result); |
5001 return result; | 5003 return result; |
5002 } | 5004 } |
5003 | 5005 |
5004 | 5006 |
5005 DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, | 5007 DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, |
5006 intptr_t buffer_len) { | 5008 intptr_t buffer_len) { |
5007 Isolate* isolate = Isolate::Current(); | 5009 Isolate* isolate = Isolate::Current(); |
5008 DARTSCOPE(isolate); | 5010 DARTSCOPE(isolate); |
5009 TIMERSCOPE(isolate, time_script_loading); | 5011 TIMERSCOPE(isolate, time_script_loading); |
| 5012 StackZone zone(isolate); |
5010 if (buffer == NULL) { | 5013 if (buffer == NULL) { |
5011 RETURN_NULL_ERROR(buffer); | 5014 RETURN_NULL_ERROR(buffer); |
5012 } | 5015 } |
5013 NoHeapGrowthControlScope no_growth_control; | 5016 NoHeapGrowthControlScope no_growth_control; |
5014 | 5017 |
5015 const Snapshot* snapshot = Snapshot::SetupFromBuffer(buffer); | 5018 const Snapshot* snapshot = Snapshot::SetupFromBuffer(buffer); |
5016 if (!snapshot->IsScriptSnapshot()) { | 5019 if (!snapshot->IsScriptSnapshot()) { |
5017 return Api::NewError("%s expects parameter 'buffer' to be a script type" | 5020 return Api::NewError("%s expects parameter 'buffer' to be a script type" |
5018 " snapshot.", CURRENT_FUNC); | 5021 " snapshot.", CURRENT_FUNC); |
5019 } | 5022 } |
5020 if (snapshot->length() != buffer_len) { | 5023 if (snapshot->length() != buffer_len) { |
5021 return Api::NewError("%s: 'buffer_len' of %" Pd " is not equal to %" Pd | 5024 return Api::NewError("%s: 'buffer_len' of %" Pd " is not equal to %" Pd |
5022 " which is the expected length in the snapshot.", | 5025 " which is the expected length in the snapshot.", |
5023 CURRENT_FUNC, buffer_len, snapshot->length()); | 5026 CURRENT_FUNC, buffer_len, snapshot->length()); |
5024 } | 5027 } |
5025 Library& library = | 5028 Library& library = |
5026 Library::Handle(isolate, isolate->object_store()->root_library()); | 5029 Library::Handle(isolate, isolate->object_store()->root_library()); |
5027 if (!library.IsNull()) { | 5030 if (!library.IsNull()) { |
5028 const String& library_url = String::Handle(isolate, library.url()); | 5031 const String& library_url = String::Handle(isolate, library.url()); |
5029 return Api::NewError("%s: A script has already been loaded from '%s'.", | 5032 return Api::NewError("%s: A script has already been loaded from '%s'.", |
5030 CURRENT_FUNC, library_url.ToCString()); | 5033 CURRENT_FUNC, library_url.ToCString()); |
5031 } | 5034 } |
5032 CHECK_CALLBACK_STATE(isolate); | 5035 CHECK_CALLBACK_STATE(isolate); |
5033 | 5036 |
5034 SnapshotReader reader(snapshot->content(), | 5037 SnapshotReader reader(snapshot->content(), |
5035 snapshot->length(), | 5038 snapshot->length(), |
5036 snapshot->kind(), | 5039 snapshot->kind(), |
5037 isolate); | 5040 isolate, |
| 5041 zone.GetZone()); |
5038 const Object& tmp = Object::Handle(isolate, reader.ReadScriptSnapshot()); | 5042 const Object& tmp = Object::Handle(isolate, reader.ReadScriptSnapshot()); |
5039 if (tmp.IsError()) { | 5043 if (tmp.IsError()) { |
5040 return Api::NewHandle(isolate, tmp.raw()); | 5044 return Api::NewHandle(isolate, tmp.raw()); |
5041 } | 5045 } |
5042 library ^= tmp.raw(); | 5046 library ^= tmp.raw(); |
5043 library.set_debuggable(true); | 5047 library.set_debuggable(true); |
5044 isolate->object_store()->set_root_library(library); | 5048 isolate->object_store()->set_root_library(library); |
5045 return Api::NewHandle(isolate, library.raw()); | 5049 return Api::NewHandle(isolate, library.raw()); |
5046 } | 5050 } |
5047 | 5051 |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5516 | 5520 |
5517 | 5521 |
5518 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( | 5522 DART_EXPORT void Dart_RegisterRootServiceRequestCallback( |
5519 const char* name, | 5523 const char* name, |
5520 Dart_ServiceRequestCallback callback, | 5524 Dart_ServiceRequestCallback callback, |
5521 void* user_data) { | 5525 void* user_data) { |
5522 Service::RegisterRootEmbedderCallback(name, callback, user_data); | 5526 Service::RegisterRootEmbedderCallback(name, callback, user_data); |
5523 } | 5527 } |
5524 | 5528 |
5525 } // namespace dart | 5529 } // namespace dart |
OLD | NEW |