Index: runtime/vm/dart_api_impl.cc |
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
index 151d669359707f99f0f6ffb86835f3d51c700b74..4981d8a31c99b115547c4d38fc298939df8f1a1d 100644 |
--- a/runtime/vm/dart_api_impl.cc |
+++ b/runtime/vm/dart_api_impl.cc |
@@ -45,6 +45,10 @@ |
namespace dart { |
+// Facilitate quick access to the current zone once we have the curren thread. |
+#define Z (T->zone()) |
+ |
+ |
DECLARE_FLAG(bool, load_deferred_eagerly); |
DECLARE_FLAG(bool, print_class_table); |
DECLARE_FLAG(bool, verify_handles); |
@@ -116,15 +120,15 @@ class FunctionVisitor : public ObjectVisitor { |
#endif // #if defined(DEBUG). |
-static RawInstance* GetListInstance(Isolate* isolate, const Object& obj) { |
+static RawInstance* GetListInstance(Zone* zone, const Object& obj) { |
if (obj.IsInstance()) { |
- const Library& core_lib = Library::Handle(Library::CoreLibrary()); |
+ const Library& core_lib = Library::Handle(zone, Library::CoreLibrary()); |
const Class& list_class = |
- Class::Handle(core_lib.LookupClass(Symbols::List())); |
+ Class::Handle(zone, core_lib.LookupClass(Symbols::List())); |
ASSERT(!list_class.IsNull()); |
const Instance& instance = Instance::Cast(obj); |
- const Class& obj_class = Class::Handle(isolate, obj.clazz()); |
- Error& malformed_type_error = Error::Handle(isolate); |
+ const Class& obj_class = Class::Handle(zone, obj.clazz()); |
+ Error& malformed_type_error = Error::Handle(zone); |
if (obj_class.IsSubtypeOf(Object::null_type_arguments(), |
list_class, |
Object::null_type_arguments(), |
@@ -136,15 +140,15 @@ static RawInstance* GetListInstance(Isolate* isolate, const Object& obj) { |
return Instance::null(); |
} |
-static RawInstance* GetMapInstance(Isolate* isolate, const Object& obj) { |
+static RawInstance* GetMapInstance(Zone* zone, const Object& obj) { |
if (obj.IsInstance()) { |
- const Library& core_lib = Library::Handle(Library::CoreLibrary()); |
+ const Library& core_lib = Library::Handle(zone, Library::CoreLibrary()); |
const Class& map_class = |
Class::Handle(core_lib.LookupClass(Symbols::Map())); |
ASSERT(!map_class.IsNull()); |
const Instance& instance = Instance::Cast(obj); |
- const Class& obj_class = Class::Handle(isolate, obj.clazz()); |
- Error& malformed_type_error = Error::Handle(isolate); |
+ const Class& obj_class = Class::Handle(zone, obj.clazz()); |
+ Error& malformed_type_error = Error::Handle(zone); |
if (obj_class.IsSubtypeOf(Object::null_type_arguments(), |
map_class, |
Object::null_type_arguments(), |
@@ -443,25 +447,22 @@ Dart_Isolate Api::CastIsolate(Isolate* isolate) { |
Dart_Handle Api::NewError(const char* format, ...) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- Zone* zone = thread->zone(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
va_list args; |
va_start(args, format); |
intptr_t len = OS::VSNPrint(NULL, 0, format, args); |
va_end(args); |
- char* buffer = zone->Alloc<char>(len + 1); |
+ char* buffer = Z->Alloc<char>(len + 1); |
va_list args2; |
va_start(args2, format); |
OS::VSNPrint(buffer, (len + 1), format, args2); |
va_end(args2); |
- const String& message = String::Handle(zone, String::New(buffer)); |
- return Api::NewHandle(isolate, ApiError::New(message)); |
+ const String& message = String::Handle(Z, String::New(buffer)); |
+ return Api::NewHandle(I, ApiError::New(message)); |
} |
@@ -745,14 +746,13 @@ DART_EXPORT bool Dart_IsFatalError(Dart_Handle object) { |
DART_EXPORT const char* Dart_GetError(Dart_Handle handle) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); |
if (obj.IsError()) { |
const Error& error = Error::Cast(obj); |
const char* str = error.ToErrorCString(); |
intptr_t len = strlen(str) + 1; |
- char* str_copy = Api::TopScope(isolate)->zone()->Alloc<char>(len); |
+ char* str_copy = Api::TopScope(I)->zone()->Alloc<char>(len); |
strncpy(str_copy, str, len); |
// Strip a possible trailing '\n'. |
if ((len > 1) && (str_copy[len - 2] == '\n')) { |
@@ -766,20 +766,18 @@ DART_EXPORT const char* Dart_GetError(Dart_Handle handle) { |
DART_EXPORT bool Dart_ErrorHasException(Dart_Handle handle) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); |
return obj.IsUnhandledException(); |
} |
DART_EXPORT Dart_Handle Dart_ErrorGetException(Dart_Handle handle) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); |
if (obj.IsUnhandledException()) { |
const UnhandledException& error = UnhandledException::Cast(obj); |
- return Api::NewHandle(isolate, error.exception()); |
+ return Api::NewHandle(I, error.exception()); |
} else if (obj.IsError()) { |
return Api::NewError("This error is not an unhandled exception error."); |
} else { |
@@ -789,12 +787,11 @@ DART_EXPORT Dart_Handle Dart_ErrorGetException(Dart_Handle handle) { |
DART_EXPORT Dart_Handle Dart_ErrorGetStacktrace(Dart_Handle handle) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); |
if (obj.IsUnhandledException()) { |
const UnhandledException& error = UnhandledException::Cast(obj); |
- return Api::NewHandle(isolate, error.stacktrace()); |
+ return Api::NewHandle(I, error.stacktrace()); |
} else if (obj.IsError()) { |
return Api::NewError("This error is not an unhandled exception error."); |
} else { |
@@ -806,32 +803,30 @@ DART_EXPORT Dart_Handle Dart_ErrorGetStacktrace(Dart_Handle handle) { |
// TODO(turnidge): This clones Api::NewError. I need to use va_copy to |
// fix this but not sure if it available on all of our builds. |
DART_EXPORT Dart_Handle Dart_NewApiError(const char* error) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- const String& message = String::Handle(isolate, String::New(error)); |
- return Api::NewHandle(isolate, ApiError::New(message)); |
+ const String& message = String::Handle(Z, String::New(error)); |
+ return Api::NewHandle(I, ApiError::New(message)); |
} |
DART_EXPORT Dart_Handle Dart_NewUnhandledExceptionError(Dart_Handle exception) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- Instance& obj = Instance::Handle(isolate); |
+ Instance& obj = Instance::Handle(Z); |
intptr_t class_id = Api::ClassId(exception); |
if ((class_id == kApiErrorCid) || (class_id == kLanguageErrorCid)) { |
obj = String::New(::Dart_GetError(exception)); |
} else { |
- obj = Api::UnwrapInstanceHandle(isolate, exception).raw(); |
+ obj = Api::UnwrapInstanceHandle(I, exception).raw(); |
if (obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, exception, Instance); |
+ RETURN_TYPE_ERROR(I, exception, Instance); |
} |
} |
- const Stacktrace& stacktrace = Stacktrace::Handle(isolate); |
- return Api::NewHandle(isolate, UnhandledException::New(obj, stacktrace)); |
+ const Stacktrace& stacktrace = Stacktrace::Handle(Z); |
+ return Api::NewHandle(I, UnhandledException::New(obj, stacktrace)); |
} |
@@ -883,34 +878,32 @@ DART_EXPORT void _Dart_ReportErrorHandle(const char* file, |
DART_EXPORT Dart_Handle Dart_ToString(Dart_Handle object) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object)); |
if (obj.IsString()) { |
- return Api::NewHandle(isolate, obj.raw()); |
+ return Api::NewHandle(I, obj.raw()); |
} else if (obj.IsInstance()) { |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
const Instance& receiver = Instance::Cast(obj); |
- return Api::NewHandle(isolate, DartLibraryCalls::ToString(receiver)); |
+ return Api::NewHandle(I, DartLibraryCalls::ToString(receiver)); |
} else { |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// This is a VM internal object. Call the C++ method of printing. |
- return Api::NewHandle(isolate, String::New(obj.ToCString())); |
+ return Api::NewHandle(I, String::New(obj.ToCString())); |
} |
} |
DART_EXPORT bool Dart_IdentityEquals(Dart_Handle obj1, Dart_Handle obj2) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
{ |
NoSafepointScope no_safepoint_scope; |
if (Api::UnwrapHandle(obj1) == Api::UnwrapHandle(obj2)) { |
return true; |
} |
} |
- const Object& object1 = Object::Handle(isolate, Api::UnwrapHandle(obj1)); |
- const Object& object2 = Object::Handle(isolate, Api::UnwrapHandle(obj2)); |
+ const Object& object1 = Object::Handle(Z, Api::UnwrapHandle(obj1)); |
+ const Object& object2 = Object::Handle(Z, Api::UnwrapHandle(obj2)); |
if (object1.IsInstance() && object2.IsInstance()) { |
return Instance::Cast(object1).IsIdenticalTo(Instance::Cast(object2)); |
} |
@@ -919,29 +912,27 @@ DART_EXPORT bool Dart_IdentityEquals(Dart_Handle obj1, Dart_Handle obj2) { |
DART_EXPORT uint64_t Dart_IdentityHash(Dart_Handle obj) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
- const Object& object = Object::Handle(isolate, Api::UnwrapHandle(obj)); |
+ const Object& object = Object::Handle(Z, Api::UnwrapHandle(obj)); |
if (!object.IsInstance() && !object.IsNull()) { |
return 0; |
} |
- const Library& libcore = Library::Handle(isolate, Library::CoreLibrary()); |
- const String& function_name = String::Handle(isolate, |
+ const Library& libcore = Library::Handle(Z, Library::CoreLibrary()); |
+ const String& function_name = String::Handle(Z, |
String::New("identityHashCode")); |
const Function& function = |
- Function::Handle(isolate, |
- libcore.LookupFunctionAllowPrivate(function_name)); |
+ Function::Handle(Z, libcore.LookupFunctionAllowPrivate(function_name)); |
if (function.IsNull()) { |
UNREACHABLE(); |
return 0; |
} |
- const Array& arguments = Array::Handle(isolate, Array::New(1)); |
+ const Array& arguments = Array::Handle(Z, Array::New(1)); |
arguments.SetAt(0, object); |
const Object& result = |
- Object::Handle(isolate, DartEntry::InvokeFunction(function, arguments)); |
+ Object::Handle(Z, DartEntry::InvokeFunction(function, arguments)); |
if (result.IsSmi()) { |
return Smi::Cast(result).Value(); |
@@ -986,11 +977,10 @@ DART_EXPORT Dart_Handle Dart_HandleFromWeakPersistent( |
DART_EXPORT Dart_PersistentHandle Dart_NewPersistentHandle(Dart_Handle object) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- ApiState* state = isolate->api_state(); |
+ DARTSCOPE(Thread::Current()); |
+ ApiState* state = I->api_state(); |
ASSERT(state != NULL); |
- const Object& old_ref = Object::Handle(isolate, Api::UnwrapHandle(object)); |
+ const Object& old_ref = Object::Handle(Z, Api::UnwrapHandle(object)); |
PersistentHandle* new_ref = state->persistent_handles().AllocateHandle(); |
new_ref->set_raw(old_ref); |
return new_ref->apiHandle(); |
@@ -999,12 +989,11 @@ DART_EXPORT Dart_PersistentHandle Dart_NewPersistentHandle(Dart_Handle object) { |
DART_EXPORT void Dart_SetPersistentHandle(Dart_PersistentHandle obj1, |
Dart_Handle obj2) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- ApiState* state = isolate->api_state(); |
+ DARTSCOPE(Thread::Current()); |
+ ApiState* state = I->api_state(); |
ASSERT(state != NULL); |
ASSERT(state->IsValidPersistentHandle(obj1)); |
- const Object& obj2_ref = Object::Handle(isolate, Api::UnwrapHandle(obj2)); |
+ const Object& obj2_ref = Object::Handle(Z, Api::UnwrapHandle(obj2)); |
PersistentHandle* obj1_ref = PersistentHandle::Cast(obj1); |
obj1_ref->set_raw(obj2_ref); |
} |
@@ -1365,18 +1354,18 @@ DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
vm_flags.CopyTo(&api_flags); |
flags = &api_flags; |
} |
- Isolate* isolate = Dart::CreateIsolate(isolate_name, *flags); |
+ Isolate* I = Dart::CreateIsolate(isolate_name, *flags); |
free(isolate_name); |
{ |
- StackZone zone(isolate); |
- HANDLESCOPE(isolate); |
+ Thread* T = Thread::Current(); |
+ StackZone zone(T); |
+ HANDLESCOPE(T); |
// We enter an API scope here as InitializeIsolate could compile some |
// bootstrap library files which call out to a tag handler that may create |
// Api Handles when an error is encountered. |
Dart_EnterScope(); |
const Error& error_obj = |
- Error::Handle(isolate, |
- Dart::InitializeIsolate(snapshot, callback_data)); |
+ Error::Handle(Z, Dart::InitializeIsolate(snapshot, callback_data)); |
if (error_obj.IsNull()) { |
#if defined(DART_NO_SNAPSHOT) |
if (FLAG_check_function_fingerprints) { |
@@ -1385,8 +1374,8 @@ DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
#endif // defined(DART_NO_SNAPSHOT). |
// We exit the API scope entered above. |
Dart_ExitScope(); |
- START_TIMER(isolate, time_total_runtime); |
- return Api::CastIsolate(isolate); |
+ START_TIMER(I, time_total_runtime); |
+ return Api::CastIsolate(I); |
} |
*error = strdup(error_obj.ToErrorCString()); |
// We exit the API scope entered above. |
@@ -1398,14 +1387,15 @@ DART_EXPORT Dart_Isolate Dart_CreateIsolate(const char* script_uri, |
DART_EXPORT void Dart_ShutdownIsolate() { |
- Isolate* isolate = Isolate::Current(); |
- CHECK_ISOLATE(isolate); |
+ Thread* T = Thread::Current(); |
+ Isolate* I = T->isolate(); |
+ CHECK_ISOLATE(I); |
{ |
- StackZone zone(isolate); |
- HandleScope handle_scope(isolate); |
+ StackZone zone(T); |
+ HandleScope handle_scope(T); |
Dart::RunShutdownCallback(); |
} |
- STOP_TIMER(isolate, time_total_runtime); |
+ STOP_TIMER(I, time_total_runtime); |
Dart::ShutdownIsolate(); |
} |
@@ -1434,9 +1424,8 @@ DART_EXPORT void* Dart_IsolateData(Dart_Isolate isolate) { |
DART_EXPORT Dart_Handle Dart_DebugName() { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- return Api::NewHandle(isolate, String::New(isolate->name())); |
+ DARTSCOPE(Thread::Current()); |
+ return Api::NewHandle(I, String::New(I->name())); |
} |
@@ -1512,10 +1501,8 @@ DART_EXPORT Dart_Handle Dart_CreateSnapshot( |
uint8_t** isolate_snapshot_buffer, |
intptr_t* isolate_snapshot_size) { |
ASSERT(FLAG_load_deferred_eagerly); |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_creating_snapshot); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_creating_snapshot); |
if (vm_isolate_snapshot_buffer != NULL && |
vm_isolate_snapshot_size == NULL) { |
RETURN_NULL_ERROR(vm_isolate_snapshot_size); |
@@ -1527,18 +1514,18 @@ DART_EXPORT Dart_Handle Dart_CreateSnapshot( |
RETURN_NULL_ERROR(isolate_snapshot_size); |
} |
// Finalize all classes if needed. |
- Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate); |
+ Dart_Handle state = Api::CheckAndFinalizePendingClasses(I); |
if (::Dart_IsError(state)) { |
return state; |
} |
- isolate->heap()->CollectAllGarbage(); |
+ I->heap()->CollectAllGarbage(); |
#if defined(DEBUG) |
- FunctionVisitor check_canonical(isolate); |
- isolate->heap()->IterateObjects(&check_canonical); |
+ FunctionVisitor check_canonical(I); |
+ I->heap()->IterateObjects(&check_canonical); |
#endif // #if defined(DEBUG). |
// Since this is only a snapshot the root library should not be set. |
- isolate->object_store()->set_root_library(Library::Handle(isolate)); |
+ I->object_store()->set_root_library(Library::Handle(Z)); |
FullSnapshotWriter writer(vm_isolate_snapshot_buffer, |
isolate_snapshot_buffer, |
ApiReallocate, |
@@ -1553,10 +1540,8 @@ DART_EXPORT Dart_Handle Dart_CreateSnapshot( |
static Dart_Handle createLibrarySnapshot(Dart_Handle library, |
uint8_t** buffer, |
intptr_t* size) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_creating_snapshot); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_creating_snapshot); |
if (buffer == NULL) { |
RETURN_NULL_ERROR(buffer); |
} |
@@ -1564,20 +1549,20 @@ static Dart_Handle createLibrarySnapshot(Dart_Handle library, |
RETURN_NULL_ERROR(size); |
} |
// Finalize all classes if needed. |
- Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate); |
+ Dart_Handle state = Api::CheckAndFinalizePendingClasses(I); |
if (::Dart_IsError(state)) { |
return state; |
} |
- Library& lib = Library::Handle(isolate); |
+ Library& lib = Library::Handle(Z); |
if (library == Dart_Null()) { |
- lib ^= isolate->object_store()->root_library(); |
+ lib ^= I->object_store()->root_library(); |
} else { |
lib ^= Api::UnwrapHandle(library); |
} |
- isolate->heap()->CollectAllGarbage(); |
+ I->heap()->CollectAllGarbage(); |
#if defined(DEBUG) |
- FunctionVisitor check_canonical(isolate); |
- isolate->heap()->IterateObjects(&check_canonical); |
+ FunctionVisitor check_canonical(I); |
+ I->heap()->IterateObjects(&check_canonical); |
#endif // #if defined(DEBUG). |
ScriptSnapshotWriter writer(buffer, ApiReallocate); |
writer.WriteScriptSnapshot(lib); |
@@ -1660,9 +1645,10 @@ static void RunLoopDone(uword param) { |
DART_EXPORT Dart_Handle Dart_RunLoop() { |
- Isolate* isolate = Isolate::Current(); |
- CHECK_ISOLATE_SCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ Thread* T = Thread::Current(); |
+ Isolate* I = T->isolate(); |
+ CHECK_ISOLATE_SCOPE(I); |
+ CHECK_CALLBACK_STATE(I); |
Monitor monitor; |
MonitorLocker ml(&monitor); |
{ |
@@ -1671,22 +1657,21 @@ DART_EXPORT Dart_Handle Dart_RunLoop() { |
RunLoopData data; |
data.monitor = &monitor; |
data.done = false; |
- isolate->message_handler()->Run( |
+ I->message_handler()->Run( |
Dart::thread_pool(), |
NULL, RunLoopDone, reinterpret_cast<uword>(&data)); |
while (!data.done) { |
ml.Wait(); |
} |
} |
- if (isolate->object_store()->sticky_error() != Object::null()) { |
- Dart_Handle error = Api::NewHandle(isolate, |
- isolate->object_store()->sticky_error()); |
- isolate->object_store()->clear_sticky_error(); |
+ if (I->object_store()->sticky_error() != Object::null()) { |
+ Dart_Handle error = Api::NewHandle(I, I->object_store()->sticky_error()); |
+ I->object_store()->clear_sticky_error(); |
return error; |
} |
if (FLAG_print_class_table) { |
- HANDLESCOPE(isolate); |
- isolate->class_table()->Print(); |
+ HANDLESCOPE(T); |
+ I->class_table()->Print(); |
} |
return Api::Success(); |
} |
@@ -1738,12 +1723,11 @@ static uint8_t* allocator(uint8_t* ptr, intptr_t old_size, intptr_t new_size) { |
DART_EXPORT bool Dart_Post(Dart_Port port_id, Dart_Handle handle) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (port_id == ILLEGAL_PORT) { |
return false; |
} |
- const Object& object = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
+ const Object& object = Object::Handle(Z, Api::UnwrapHandle(handle)); |
uint8_t* data = NULL; |
MessageWriter writer(&data, &allocator, false); |
writer.WriteMessage(object); |
@@ -1754,26 +1738,24 @@ DART_EXPORT bool Dart_Post(Dart_Port port_id, Dart_Handle handle) { |
DART_EXPORT Dart_Handle Dart_NewSendPort(Dart_Port port_id) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
if (port_id == ILLEGAL_PORT) { |
return Api::NewError("%s: illegal port_id %" Pd64 ".", |
CURRENT_FUNC, |
port_id); |
} |
- return Api::NewHandle(isolate, SendPort::New(port_id)); |
+ return Api::NewHandle(I, SendPort::New(port_id)); |
} |
DART_EXPORT Dart_Handle Dart_SendPortGetId(Dart_Handle port, |
Dart_Port* port_id) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- const SendPort& send_port = Api::UnwrapSendPortHandle(isolate, port); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ const SendPort& send_port = Api::UnwrapSendPortHandle(I, port); |
if (send_port.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, port, SendPort); |
+ RETURN_TYPE_ERROR(I, port, SendPort); |
} |
if (port_id == NULL) { |
RETURN_NULL_ERROR(port_id); |
@@ -1869,22 +1851,19 @@ DART_EXPORT bool Dart_IsNull(Dart_Handle object) { |
DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, |
bool* value) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- Zone* zone = thread->zone(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
const Instance& expected = |
- Instance::CheckedHandle(zone, Api::UnwrapHandle(obj1)); |
+ Instance::CheckedHandle(Z, Api::UnwrapHandle(obj1)); |
const Instance& actual = |
- Instance::CheckedHandle(zone, Api::UnwrapHandle(obj2)); |
+ Instance::CheckedHandle(Z, Api::UnwrapHandle(obj2)); |
const Object& result = |
- Object::Handle(zone, DartLibraryCalls::Equals(expected, actual)); |
+ Object::Handle(Z, DartLibraryCalls::Equals(expected, actual)); |
if (result.IsBool()) { |
*value = Bool::Cast(result).value(); |
return Api::Success(); |
} else if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} else { |
return Api::NewError("Expected boolean result from =="); |
} |
@@ -1897,13 +1876,12 @@ DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, |
DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object, |
Dart_Handle type, |
bool* value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
- const Type& type_obj = Api::UnwrapTypeHandle(isolate, type); |
+ const Type& type_obj = Api::UnwrapTypeHandle(I, type); |
if (type_obj.IsNull()) { |
*value = false; |
- RETURN_TYPE_ERROR(isolate, type, Type); |
+ RETURN_TYPE_ERROR(I, type, Type); |
} |
if (!type_obj.IsFinalized()) { |
return Api::NewError( |
@@ -1914,13 +1892,13 @@ DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object, |
*value = false; |
return Api::Success(); |
} |
- const Instance& instance = Api::UnwrapInstanceHandle(isolate, object); |
+ const Instance& instance = Api::UnwrapInstanceHandle(I, object); |
if (instance.IsNull()) { |
*value = false; |
- RETURN_TYPE_ERROR(isolate, object, Instance); |
+ RETURN_TYPE_ERROR(I, object, Instance); |
} |
- CHECK_CALLBACK_STATE(isolate); |
- Error& malformed_type_error = Error::Handle(isolate); |
+ CHECK_CALLBACK_STATE(I); |
+ Error& malformed_type_error = Error::Handle(Z); |
*value = instance.IsInstanceOf(type_obj, |
Object::null_type_arguments(), |
&malformed_type_error); |
@@ -1987,18 +1965,16 @@ DART_EXPORT bool Dart_IsList(Dart_Handle object) { |
return true; |
} |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
- return GetListInstance(isolate, obj) != Instance::null(); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object)); |
+ return GetListInstance(Z, obj) != Instance::null(); |
} |
DART_EXPORT bool Dart_IsMap(Dart_Handle object) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
- return GetMapInstance(isolate, obj) != Instance::null(); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object)); |
+ return GetMapInstance(Z, obj) != Instance::null(); |
} |
@@ -2061,15 +2037,14 @@ DART_EXPORT bool Dart_IsByteBuffer(Dart_Handle handle) { |
DART_EXPORT bool Dart_IsFuture(Dart_Handle handle) { |
TRACE_API_CALL(CURRENT_FUNC); |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(handle)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(handle)); |
if (obj.IsInstance()) { |
const Class& future_class = |
- Class::Handle(isolate->object_store()->future_class()); |
+ Class::Handle(I->object_store()->future_class()); |
ASSERT(!future_class.IsNull()); |
- const Class& obj_class = Class::Handle(isolate, obj.clazz()); |
- Error& malformed_type_error = Error::Handle(isolate); |
+ const Class& obj_class = Class::Handle(Z, obj.clazz()); |
+ Error& malformed_type_error = Error::Handle(Z); |
bool is_future = obj_class.IsSubtypeOf(Object::null_type_arguments(), |
future_class, |
Object::null_type_arguments(), |
@@ -2084,17 +2059,16 @@ DART_EXPORT bool Dart_IsFuture(Dart_Handle handle) { |
// --- Instances ---- |
DART_EXPORT Dart_Handle Dart_InstanceGetType(Dart_Handle instance) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(instance)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(instance)); |
if (obj.IsNull()) { |
- return Api::NewHandle(isolate, isolate->object_store()->null_type()); |
+ return Api::NewHandle(I, I->object_store()->null_type()); |
} |
if (!obj.IsInstance()) { |
- RETURN_TYPE_ERROR(isolate, instance, Instance); |
+ RETURN_TYPE_ERROR(I, instance, Instance); |
} |
const Type& type = Type::Handle(Instance::Cast(obj).GetType()); |
- return Api::NewHandle(isolate, type.Canonicalize()); |
+ return Api::NewHandle(I, type.Canonicalize()); |
} |
@@ -2103,7 +2077,8 @@ DART_EXPORT Dart_Handle Dart_InstanceGetType(Dart_Handle instance) { |
DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, |
bool* fits) { |
// Fast path for Smis and Mints. |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
intptr_t class_id = Api::ClassId(integer); |
if (class_id == kSmiCid || class_id == kMintCid) { |
@@ -2111,7 +2086,7 @@ DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, |
return Api::Success(); |
} |
// Slow path for Mints and Bigints. |
- DARTSCOPE(isolate); |
+ DARTSCOPE(thread); |
const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer); |
if (int_obj.IsNull()) { |
RETURN_TYPE_ERROR(isolate, integer, Integer); |
@@ -2125,14 +2100,15 @@ DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, |
DART_EXPORT Dart_Handle Dart_IntegerFitsIntoUint64(Dart_Handle integer, |
bool* fits) { |
// Fast path for Smis. |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
if (Api::IsSmi(integer)) { |
*fits = (Api::SmiValue(integer) >= 0); |
return Api::Success(); |
} |
// Slow path for Mints and Bigints. |
- DARTSCOPE(isolate); |
+ DARTSCOPE(thread); |
const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer); |
if (int_obj.IsNull()) { |
RETURN_TYPE_ERROR(isolate, integer, Integer); |
@@ -2149,47 +2125,47 @@ DART_EXPORT Dart_Handle Dart_IntegerFitsIntoUint64(Dart_Handle integer, |
DART_EXPORT Dart_Handle Dart_NewInteger(int64_t value) { |
// Fast path for Smis. |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
if (Smi::IsValid(value)) { |
- NOHANDLESCOPE(isolate); |
+ NOHANDLESCOPE(thread); |
return Api::NewHandle(isolate, Smi::New(static_cast<intptr_t>(value))); |
} |
// Slow path for Mints and Bigints. |
- DARTSCOPE(isolate); |
+ DARTSCOPE(thread); |
CHECK_CALLBACK_STATE(isolate); |
return Api::NewHandle(isolate, Integer::New(value)); |
} |
DART_EXPORT Dart_Handle Dart_NewIntegerFromUint64(uint64_t value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, Integer::NewFromUint64(value)); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, Integer::NewFromUint64(value)); |
} |
DART_EXPORT Dart_Handle Dart_NewIntegerFromHexCString(const char* str) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- const String& str_obj = String::Handle(isolate, String::New(str)); |
- return Api::NewHandle(isolate, Integer::New(str_obj)); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ const String& str_obj = String::Handle(Z, String::New(str)); |
+ return Api::NewHandle(I, Integer::New(str_obj)); |
} |
DART_EXPORT Dart_Handle Dart_IntegerToInt64(Dart_Handle integer, |
int64_t* value) { |
// Fast path for Smis. |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
if (Api::IsSmi(integer)) { |
*value = Api::SmiValue(integer); |
return Api::Success(); |
} |
// Slow path for Mints and Bigints. |
- DARTSCOPE(isolate); |
+ DARTSCOPE(thread); |
const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer); |
if (int_obj.IsNull()) { |
RETURN_TYPE_ERROR(isolate, integer, Integer); |
@@ -2213,7 +2189,8 @@ DART_EXPORT Dart_Handle Dart_IntegerToInt64(Dart_Handle integer, |
DART_EXPORT Dart_Handle Dart_IntegerToUint64(Dart_Handle integer, |
uint64_t* value) { |
// Fast path for Smis. |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
if (Api::IsSmi(integer)) { |
intptr_t smi_value = Api::SmiValue(integer); |
@@ -2223,7 +2200,7 @@ DART_EXPORT Dart_Handle Dart_IntegerToUint64(Dart_Handle integer, |
} |
} |
// Slow path for Mints and Bigints. |
- DARTSCOPE(isolate); |
+ DARTSCOPE(thread); |
const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer); |
if (int_obj.IsNull()) { |
RETURN_TYPE_ERROR(isolate, integer, Integer); |
@@ -2252,14 +2229,13 @@ static uword BigintAllocate(intptr_t size) { |
DART_EXPORT Dart_Handle Dart_IntegerToHexCString(Dart_Handle integer, |
const char** value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer); |
+ DARTSCOPE(Thread::Current()); |
+ const Integer& int_obj = Api::UnwrapIntegerHandle(I, integer); |
if (int_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, integer, Integer); |
+ RETURN_TYPE_ERROR(I, integer, Integer); |
} |
if (int_obj.IsSmi() || int_obj.IsMint()) { |
- const Bigint& bigint = Bigint::Handle(isolate, |
+ const Bigint& bigint = Bigint::Handle(Z, |
Bigint::NewFromInt64(int_obj.AsInt64Value())); |
*value = bigint.ToHexCString(BigintAllocate); |
} else { |
@@ -2270,20 +2246,18 @@ DART_EXPORT Dart_Handle Dart_IntegerToHexCString(Dart_Handle integer, |
DART_EXPORT Dart_Handle Dart_NewDouble(double value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, Double::New(value)); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, Double::New(value)); |
} |
DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj, |
double* value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Double& obj = Api::UnwrapDoubleHandle(isolate, double_obj); |
+ DARTSCOPE(Thread::Current()); |
+ const Double& obj = Api::UnwrapDoubleHandle(I, double_obj); |
if (obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, double_obj, Double); |
+ RETURN_TYPE_ERROR(I, double_obj, Double); |
} |
*value = obj.value(); |
return Api::Success(); |
@@ -2313,11 +2287,10 @@ DART_EXPORT Dart_Handle Dart_NewBoolean(bool value) { |
DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle boolean_obj, |
bool* value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Bool& obj = Api::UnwrapBoolHandle(isolate, boolean_obj); |
+ DARTSCOPE(Thread::Current()); |
+ const Bool& obj = Api::UnwrapBoolHandle(I, boolean_obj); |
if (obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, boolean_obj, Bool); |
+ RETURN_TYPE_ERROR(I, boolean_obj, Bool); |
} |
*value = obj.value(); |
return Api::Success(); |
@@ -2341,20 +2314,18 @@ DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* len) { |
DART_EXPORT Dart_Handle Dart_NewStringFromCString(const char* str) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (str == NULL) { |
RETURN_NULL_ERROR(str); |
} |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, String::New(str)); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, String::New(str)); |
} |
DART_EXPORT Dart_Handle Dart_NewStringFromUTF8(const uint8_t* utf8_array, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (utf8_array == NULL && length != 0) { |
RETURN_NULL_ERROR(utf8_array); |
} |
@@ -2363,34 +2334,32 @@ DART_EXPORT Dart_Handle Dart_NewStringFromUTF8(const uint8_t* utf8_array, |
return Api::NewError("%s expects argument 'str' to be valid UTF-8.", |
CURRENT_FUNC); |
} |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, String::FromUTF8(utf8_array, length)); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, String::FromUTF8(utf8_array, length)); |
} |
DART_EXPORT Dart_Handle Dart_NewStringFromUTF16(const uint16_t* utf16_array, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (utf16_array == NULL && length != 0) { |
RETURN_NULL_ERROR(utf16_array); |
} |
CHECK_LENGTH(length, String::kMaxElements); |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, String::FromUTF16(utf16_array, length)); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, String::FromUTF16(utf16_array, length)); |
} |
DART_EXPORT Dart_Handle Dart_NewStringFromUTF32(const int32_t* utf32_array, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (utf32_array == NULL && length != 0) { |
RETURN_NULL_ERROR(utf32_array); |
} |
CHECK_LENGTH(length, String::kMaxElements); |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, String::FromUTF32(utf32_array, length)); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, String::FromUTF32(utf32_array, length)); |
} |
@@ -2399,19 +2368,18 @@ DART_EXPORT Dart_Handle Dart_NewExternalLatin1String( |
intptr_t length, |
void* peer, |
Dart_PeerFinalizer cback) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (latin1_array == NULL && length != 0) { |
RETURN_NULL_ERROR(latin1_array); |
} |
CHECK_LENGTH(length, String::kMaxElements); |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, |
String::NewExternal(latin1_array, |
length, |
peer, |
cback, |
- SpaceForExternal(isolate, length))); |
+ SpaceForExternal(I, length))); |
} |
@@ -2419,36 +2387,34 @@ DART_EXPORT Dart_Handle Dart_NewExternalUTF16String(const uint16_t* utf16_array, |
intptr_t length, |
void* peer, |
Dart_PeerFinalizer cback) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (utf16_array == NULL && length != 0) { |
RETURN_NULL_ERROR(utf16_array); |
} |
CHECK_LENGTH(length, String::kMaxElements); |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
intptr_t bytes = length * sizeof(*utf16_array); |
- return Api::NewHandle(isolate, |
+ return Api::NewHandle(I, |
String::NewExternal(utf16_array, |
length, |
peer, |
cback, |
- SpaceForExternal(isolate, bytes))); |
+ SpaceForExternal(I, bytes))); |
} |
DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle object, |
const char** cstr) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (cstr == NULL) { |
RETURN_NULL_ERROR(cstr); |
} |
- const String& str_obj = Api::UnwrapStringHandle(isolate, object); |
+ const String& str_obj = Api::UnwrapStringHandle(I, object); |
if (str_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, object, String); |
+ RETURN_TYPE_ERROR(I, object, String); |
} |
intptr_t string_length = Utf8::Length(str_obj); |
- char* res = Api::TopScope(isolate)->zone()->Alloc<char>(string_length + 1); |
+ char* res = Api::TopScope(I)->zone()->Alloc<char>(string_length + 1); |
if (res == NULL) { |
return Api::NewError("Unable to allocate memory"); |
} |
@@ -2463,20 +2429,19 @@ DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle object, |
DART_EXPORT Dart_Handle Dart_StringToUTF8(Dart_Handle str, |
uint8_t** utf8_array, |
intptr_t* length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (utf8_array == NULL) { |
RETURN_NULL_ERROR(utf8_array); |
} |
if (length == NULL) { |
RETURN_NULL_ERROR(length); |
} |
- const String& str_obj = Api::UnwrapStringHandle(isolate, str); |
+ const String& str_obj = Api::UnwrapStringHandle(I, str); |
if (str_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, str, String); |
+ RETURN_TYPE_ERROR(I, str, String); |
} |
intptr_t str_len = Utf8::Length(str_obj); |
- *utf8_array = Api::TopScope(isolate)->zone()->Alloc<uint8_t>(str_len); |
+ *utf8_array = Api::TopScope(I)->zone()->Alloc<uint8_t>(str_len); |
if (*utf8_array == NULL) { |
return Api::NewError("Unable to allocate memory"); |
} |
@@ -2489,17 +2454,16 @@ DART_EXPORT Dart_Handle Dart_StringToUTF8(Dart_Handle str, |
DART_EXPORT Dart_Handle Dart_StringToLatin1(Dart_Handle str, |
uint8_t* latin1_array, |
intptr_t* length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (latin1_array == NULL) { |
RETURN_NULL_ERROR(latin1_array); |
} |
if (length == NULL) { |
RETURN_NULL_ERROR(length); |
} |
- const String& str_obj = Api::UnwrapStringHandle(isolate, str); |
+ const String& str_obj = Api::UnwrapStringHandle(I, str); |
if (str_obj.IsNull() || !str_obj.IsOneByteString()) { |
- RETURN_TYPE_ERROR(isolate, str, String); |
+ RETURN_TYPE_ERROR(I, str, String); |
} |
intptr_t str_len = str_obj.Length(); |
intptr_t copy_len = (str_len > *length) ? *length : str_len; |
@@ -2517,11 +2481,10 @@ DART_EXPORT Dart_Handle Dart_StringToLatin1(Dart_Handle str, |
DART_EXPORT Dart_Handle Dart_StringToUTF16(Dart_Handle str, |
uint16_t* utf16_array, |
intptr_t* length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const String& str_obj = Api::UnwrapStringHandle(isolate, str); |
+ DARTSCOPE(Thread::Current()); |
+ const String& str_obj = Api::UnwrapStringHandle(I, str); |
if (str_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, str, String); |
+ RETURN_TYPE_ERROR(I, str, String); |
} |
intptr_t str_len = str_obj.Length(); |
intptr_t copy_len = (str_len > *length) ? *length : str_len; |
@@ -2555,14 +2518,13 @@ DART_EXPORT Dart_Handle Dart_MakeExternalString(Dart_Handle str, |
intptr_t length, |
void* peer, |
Dart_PeerFinalizer cback) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const String& str_obj = Api::UnwrapStringHandle(isolate, str); |
+ DARTSCOPE(Thread::Current()); |
+ const String& str_obj = Api::UnwrapStringHandle(I, str); |
if (str_obj.IsExternal()) { |
return str; // String is already an external string. |
} |
if (str_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, str, String); |
+ RETURN_TYPE_ERROR(I, str, String); |
} |
if (array == NULL) { |
RETURN_NULL_ERROR(array); |
@@ -2599,8 +2561,7 @@ DART_EXPORT Dart_Handle Dart_MakeExternalString(Dart_Handle str, |
} |
return str; |
} |
- return Api::NewHandle(isolate, |
- str_obj.MakeExternal(array, length, peer, cback)); |
+ return Api::NewHandle(I, str_obj.MakeExternal(array, length, peer, cback)); |
} |
@@ -2631,65 +2592,60 @@ DART_EXPORT Dart_Handle Dart_StringGetProperties(Dart_Handle object, |
// --- Lists --- |
DART_EXPORT Dart_Handle Dart_NewList(intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
CHECK_LENGTH(length, Array::kMaxElements); |
- CHECK_CALLBACK_STATE(isolate); |
- return Api::NewHandle(isolate, Array::New(length)); |
+ CHECK_CALLBACK_STATE(I); |
+ return Api::NewHandle(I, Array::New(length)); |
} |
-#define GET_LIST_LENGTH(isolate, type, obj, len) \ |
- type& array = type::Handle(isolate); \ |
+#define GET_LIST_LENGTH(zone, type, obj, len) \ |
+ type& array = type::Handle(zone); \ |
array ^= obj.raw(); \ |
*len = array.Length(); \ |
return Api::Success(); \ |
DART_EXPORT Dart_Handle Dart_ListLength(Dart_Handle list, intptr_t* len) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(list)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(list)); |
if (obj.IsError()) { |
// Pass through errors. |
return list; |
} |
if (obj.IsTypedData()) { |
- GET_LIST_LENGTH(isolate, TypedData, obj, len); |
+ GET_LIST_LENGTH(Z, TypedData, obj, len); |
} |
if (obj.IsArray()) { |
- GET_LIST_LENGTH(isolate, Array, obj, len); |
+ GET_LIST_LENGTH(Z, Array, obj, len); |
} |
if (obj.IsGrowableObjectArray()) { |
- GET_LIST_LENGTH(isolate, GrowableObjectArray, obj, len); |
+ GET_LIST_LENGTH(Z, GrowableObjectArray, obj, len); |
} |
if (obj.IsExternalTypedData()) { |
- GET_LIST_LENGTH(isolate, ExternalTypedData, obj, len); |
+ GET_LIST_LENGTH(Z, ExternalTypedData, obj, len); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// Now check and handle a dart object that implements the List interface. |
- const Instance& instance = |
- Instance::Handle(isolate, GetListInstance(isolate, obj)); |
+ const Instance& instance = Instance::Handle(Z, GetListInstance(Z, obj)); |
if (instance.IsNull()) { |
return Api::NewError("Object does not implement the List interface"); |
} |
- const String& name = String::Handle(Field::GetterName(Symbols::Length())); |
+ const String& name = String::Handle(Z, Field::GetterName(Symbols::Length())); |
const int kNumArgs = 1; |
ArgumentsDescriptor args_desc( |
- Array::Handle(ArgumentsDescriptor::New(kNumArgs))); |
+ Array::Handle(Z, ArgumentsDescriptor::New(kNumArgs))); |
const Function& function = |
- Function::Handle(isolate, Resolver::ResolveDynamic(instance, |
- name, |
- args_desc)); |
+ Function::Handle(Z, Resolver::ResolveDynamic(instance, name, args_desc)); |
if (function.IsNull()) { |
return Api::NewError("List object does not have a 'length' field."); |
} |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, instance); // Set up the receiver as the first argument. |
const Object& retval = |
- Object::Handle(isolate, DartEntry::InvokeFunction(function, args)); |
+ Object::Handle(Z, DartEntry::InvokeFunction(function, args)); |
if (retval.IsSmi()) { |
*len = Smi::Cast(retval).Value(); |
return Api::Success(); |
@@ -2713,7 +2669,7 @@ DART_EXPORT Dart_Handle Dart_ListLength(Dart_Handle list, intptr_t* len) { |
return Api::NewError("Length of List object is greater than the " |
"maximum value that 'len' parameter can hold"); |
} else if (retval.IsError()) { |
- return Api::NewHandle(isolate, retval.raw()); |
+ return Api::NewHandle(I, retval.raw()); |
} else { |
return Api::NewError("Length of List object is not an integer"); |
} |
@@ -2729,25 +2685,23 @@ DART_EXPORT Dart_Handle Dart_ListLength(Dart_Handle list, intptr_t* len) { |
DART_EXPORT Dart_Handle Dart_ListGetAt(Dart_Handle list, intptr_t index) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(list)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
- GET_LIST_ELEMENT(isolate, Array, obj, index); |
+ GET_LIST_ELEMENT(I, Array, obj, index); |
} else if (obj.IsGrowableObjectArray()) { |
- GET_LIST_ELEMENT(isolate, GrowableObjectArray, obj, index); |
+ GET_LIST_ELEMENT(I, GrowableObjectArray, obj, index); |
} else if (obj.IsError()) { |
return list; |
} else { |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// Check and handle a dart object that implements the List interface. |
- const Instance& instance = |
- Instance::Handle(isolate, GetListInstance(isolate, obj)); |
+ const Instance& instance = Instance::Handle(Z, GetListInstance(Z, obj)); |
if (!instance.IsNull()) { |
- return Api::NewHandle(isolate, Send1Arg( |
+ return Api::NewHandle(I, Send1Arg( |
instance, |
Symbols::IndexToken(), |
- Instance::Handle(isolate, Integer::New(index)))); |
+ Instance::Handle(Z, Integer::New(index)))); |
} |
return Api::NewError("Object does not implement the 'List' interface"); |
} |
@@ -2769,40 +2723,37 @@ DART_EXPORT Dart_Handle Dart_ListGetRange(Dart_Handle list, |
intptr_t offset, |
intptr_t length, |
Dart_Handle* result) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (result == NULL) { |
RETURN_NULL_ERROR(result); |
} |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(list)); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
- GET_LIST_RANGE(isolate, Array, obj, offset, length); |
+ GET_LIST_RANGE(I, Array, obj, offset, length); |
} else if (obj.IsGrowableObjectArray()) { |
- GET_LIST_RANGE(isolate, GrowableObjectArray, obj, offset, length); |
+ GET_LIST_RANGE(I, GrowableObjectArray, obj, offset, length); |
} else if (obj.IsError()) { |
return list; |
} else { |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// Check and handle a dart object that implements the List interface. |
- const Instance& instance = |
- Instance::Handle(isolate, GetListInstance(isolate, obj)); |
+ const Instance& instance = Instance::Handle(Z, GetListInstance(Z, obj)); |
if (!instance.IsNull()) { |
const intptr_t kNumArgs = 2; |
ArgumentsDescriptor args_desc( |
Array::Handle(ArgumentsDescriptor::New(kNumArgs))); |
- const Function& function = Function::Handle( |
- isolate, |
+ const Function& function = Function::Handle(Z, |
Resolver::ResolveDynamic(instance, |
Symbols::AssignIndexToken(), |
args_desc)); |
if (!function.IsNull()) { |
const Array& args = Array::Handle(Array::New(kNumArgs)); |
args.SetAt(0, instance); |
- Instance& index = Instance::Handle(isolate); |
+ Instance& index = Instance::Handle(Z); |
for (intptr_t i = 0; i < length; ++i) { |
index = Integer::New(i); |
args.SetAt(1, index); |
- Dart_Handle value = Api::NewHandle(isolate, |
+ Dart_Handle value = Api::NewHandle(I, |
DartEntry::InvokeFunction(function, args)); |
if (::Dart_IsError(value)) |
return value; |
@@ -2816,11 +2767,11 @@ DART_EXPORT Dart_Handle Dart_ListGetRange(Dart_Handle list, |
} |
-#define SET_LIST_ELEMENT(isolate, type, obj, index, value) \ |
+#define SET_LIST_ELEMENT(type, obj, index, value) \ |
const type& array = type::Cast(obj); \ |
- const Object& value_obj = Object::Handle(isolate, Api::UnwrapHandle(value)); \ |
+ const Object& value_obj = Object::Handle(Z, Api::UnwrapHandle(value)); \ |
if (!value_obj.IsNull() && !value_obj.IsInstance()) { \ |
- RETURN_TYPE_ERROR(isolate, value, Instance); \ |
+ RETURN_TYPE_ERROR(I, value, Instance); \ |
} \ |
if ((index >= 0) && (index < array.Length())) { \ |
array.SetAt(index, value_obj); \ |
@@ -2832,45 +2783,40 @@ DART_EXPORT Dart_Handle Dart_ListGetRange(Dart_Handle list, |
DART_EXPORT Dart_Handle Dart_ListSetAt(Dart_Handle list, |
intptr_t index, |
Dart_Handle value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(list)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(list)); |
// If the list is immutable we call into Dart for the indexed setter to |
// get the unsupported operation exception as the result. |
if (obj.IsArray() && !Array::Cast(obj).IsImmutable()) { |
- SET_LIST_ELEMENT(isolate, Array, obj, index, value); |
+ SET_LIST_ELEMENT(Array, obj, index, value); |
} else if (obj.IsGrowableObjectArray()) { |
- SET_LIST_ELEMENT(isolate, GrowableObjectArray, obj, index, value); |
+ SET_LIST_ELEMENT(GrowableObjectArray, obj, index, value); |
} else if (obj.IsError()) { |
return list; |
} else { |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// Check and handle a dart object that implements the List interface. |
- const Instance& instance = |
- Instance::Handle(isolate, GetListInstance(isolate, obj)); |
+ const Instance& instance = Instance::Handle(Z, GetListInstance(Z, obj)); |
if (!instance.IsNull()) { |
const intptr_t kNumArgs = 3; |
ArgumentsDescriptor args_desc( |
Array::Handle(ArgumentsDescriptor::New(kNumArgs))); |
- const Function& function = Function::Handle( |
- isolate, |
+ const Function& function = Function::Handle(Z, |
Resolver::ResolveDynamic(instance, |
Symbols::AssignIndexToken(), |
args_desc)); |
if (!function.IsNull()) { |
- const Integer& index_obj = |
- Integer::Handle(isolate, Integer::New(index)); |
- const Object& value_obj = |
- Object::Handle(isolate, Api::UnwrapHandle(value)); |
+ const Integer& index_obj = Integer::Handle(Z, Integer::New(index)); |
+ const Object& value_obj = Object::Handle(Z, Api::UnwrapHandle(value)); |
if (!value_obj.IsNull() && !value_obj.IsInstance()) { |
- RETURN_TYPE_ERROR(isolate, value, Instance); |
+ RETURN_TYPE_ERROR(I, value, Instance); |
} |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, instance); |
args.SetAt(1, index_obj); |
args.SetAt(2, value_obj); |
- return Api::NewHandle(isolate, DartEntry::InvokeFunction(function, |
+ return Api::NewHandle(I, DartEntry::InvokeFunction(function, |
args)); |
} |
} |
@@ -2953,16 +2899,15 @@ static RawObject* ThrowArgumentError(const char* exception_message) { |
} |
// TODO(sgjesse): value should always be smaller then 0xff. Add error handling. |
-#define GET_LIST_ELEMENT_AS_BYTES(isolate, type, obj, native_array, offset, \ |
- length) \ |
+#define GET_LIST_ELEMENT_AS_BYTES(type, obj, native_array, offset, length) \ |
const type& array = type::Cast(obj); \ |
if (Utils::RangeCheck(offset, length, array.Length())) { \ |
- Object& element = Object::Handle(isolate); \ |
+ Object& element = Object::Handle(Z); \ |
for (int i = 0; i < length; i++) { \ |
element = array.At(offset + i); \ |
if (!element.IsInteger()) { \ |
- return Api::NewHandle( \ |
- isolate, ThrowArgumentError("List contains non-int elements")); \ |
+ return Api::NewHandle(I, \ |
+ ThrowArgumentError("List contains non-int elements")); \ |
\ |
} \ |
const Integer& integer = Integer::Cast(element); \ |
@@ -2991,9 +2936,8 @@ DART_EXPORT Dart_Handle Dart_ListGetAsBytes(Dart_Handle list, |
intptr_t offset, |
uint8_t* native_array, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(list)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(list)); |
if (obj.IsTypedData()) { |
const TypedData& array = TypedData::Cast(obj); |
if (array.ElementSizeInBytes() == 1) { |
@@ -3036,48 +2980,38 @@ DART_EXPORT Dart_Handle Dart_ListGetAsBytes(Dart_Handle list, |
} |
} |
if (obj.IsArray()) { |
- GET_LIST_ELEMENT_AS_BYTES(isolate, |
- Array, |
- obj, |
- native_array, |
- offset, |
- length); |
+ GET_LIST_ELEMENT_AS_BYTES(Array, obj, native_array, offset, length); |
} |
if (obj.IsGrowableObjectArray()) { |
- GET_LIST_ELEMENT_AS_BYTES(isolate, |
- GrowableObjectArray, |
- obj, |
- native_array, |
- offset, |
- length); |
+ GET_LIST_ELEMENT_AS_BYTES( |
+ GrowableObjectArray, obj, native_array, offset, length); |
} |
if (obj.IsError()) { |
return list; |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// Check and handle a dart object that implements the List interface. |
const Instance& instance = |
- Instance::Handle(isolate, GetListInstance(isolate, obj)); |
+ Instance::Handle(Z, GetListInstance(Z, obj)); |
if (!instance.IsNull()) { |
const int kNumArgs = 2; |
ArgumentsDescriptor args_desc( |
Array::Handle(ArgumentsDescriptor::New(kNumArgs))); |
- const Function& function = Function::Handle( |
- isolate, |
+ const Function& function = Function::Handle(Z, |
Resolver::ResolveDynamic(instance, Symbols::IndexToken(), args_desc)); |
if (!function.IsNull()) { |
- Object& result = Object::Handle(isolate); |
- Integer& intobj = Integer::Handle(isolate); |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ Object& result = Object::Handle(Z); |
+ Integer& intobj = Integer::Handle(Z); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, instance); // Set up the receiver as the first argument. |
for (int i = 0; i < length; i++) { |
- HANDLESCOPE(isolate); |
+ HANDLESCOPE(T); |
intobj = Integer::New(offset + i); |
args.SetAt(1, intobj); |
result = DartEntry::InvokeFunction(function, args); |
if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} |
if (!result.IsInteger()) { |
return Api::NewError("%s expects the argument 'list' to be " |
@@ -3097,10 +3031,9 @@ DART_EXPORT Dart_Handle Dart_ListGetAsBytes(Dart_Handle list, |
} |
-#define SET_LIST_ELEMENT_AS_BYTES(isolate, type, obj, native_array, offset, \ |
- length) \ |
+#define SET_LIST_ELEMENT_AS_BYTES(type, obj, native_array, offset, length) \ |
const type& array = type::Cast(obj); \ |
- Integer& integer = Integer::Handle(isolate); \ |
+ Integer& integer = Integer::Handle(Z); \ |
if (Utils::RangeCheck(offset, length, array.Length())) { \ |
for (int i = 0; i < length; i++) { \ |
integer = Integer::New(native_array[i]); \ |
@@ -3115,9 +3048,8 @@ DART_EXPORT Dart_Handle Dart_ListSetAsBytes(Dart_Handle list, |
intptr_t offset, |
uint8_t* native_array, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(list)); |
+ DARTSCOPE(Thread::Current()); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(list)); |
if (obj.IsTypedData()) { |
const TypedData& array = TypedData::Cast(obj); |
if (array.ElementSizeInBytes() == 1) { |
@@ -3134,52 +3066,41 @@ DART_EXPORT Dart_Handle Dart_ListSetAsBytes(Dart_Handle list, |
if (obj.IsArray() && !Array::Cast(obj).IsImmutable()) { |
// If the list is immutable we call into Dart for the indexed setter to |
// get the unsupported operation exception as the result. |
- SET_LIST_ELEMENT_AS_BYTES(isolate, |
- Array, |
- obj, |
- native_array, |
- offset, |
- length); |
+ SET_LIST_ELEMENT_AS_BYTES(Array, obj, native_array, offset, length); |
} |
if (obj.IsGrowableObjectArray()) { |
- SET_LIST_ELEMENT_AS_BYTES(isolate, |
- GrowableObjectArray, |
- obj, |
- native_array, |
- offset, |
- length); |
+ SET_LIST_ELEMENT_AS_BYTES( |
+ GrowableObjectArray, obj, native_array, offset, length); |
} |
if (obj.IsError()) { |
return list; |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
// Check and handle a dart object that implements the List interface. |
- const Instance& instance = |
- Instance::Handle(isolate, GetListInstance(isolate, obj)); |
+ const Instance& instance = Instance::Handle(Z, GetListInstance(Z, obj)); |
if (!instance.IsNull()) { |
const int kNumArgs = 3; |
ArgumentsDescriptor args_desc( |
Array::Handle(ArgumentsDescriptor::New(kNumArgs))); |
- const Function& function = Function::Handle( |
- isolate, |
+ const Function& function = Function::Handle(Z, |
Resolver::ResolveDynamic(instance, |
Symbols::AssignIndexToken(), |
args_desc)); |
if (!function.IsNull()) { |
- Integer& indexobj = Integer::Handle(isolate); |
- Integer& valueobj = Integer::Handle(isolate); |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ Integer& indexobj = Integer::Handle(Z); |
+ Integer& valueobj = Integer::Handle(Z); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, instance); // Set up the receiver as the first argument. |
for (int i = 0; i < length; i++) { |
indexobj = Integer::New(offset + i); |
valueobj = Integer::New(native_array[i]); |
args.SetAt(1, indexobj); |
args.SetAt(2, valueobj); |
- const Object& result = Object::Handle( |
- isolate, DartEntry::InvokeFunction(function, args)); |
+ const Object& result = Object::Handle(Z, |
+ DartEntry::InvokeFunction(function, args)); |
if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} |
} |
return Api::Success(); |
@@ -3192,41 +3113,35 @@ DART_EXPORT Dart_Handle Dart_ListSetAsBytes(Dart_Handle list, |
// --- Maps --- |
DART_EXPORT Dart_Handle Dart_MapGetAt(Dart_Handle map, Dart_Handle key) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(map)); |
- const Instance& instance = |
- Instance::Handle(isolate, GetMapInstance(isolate, obj)); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(map)); |
+ const Instance& instance = Instance::Handle(Z, GetMapInstance(Z, obj)); |
if (!instance.IsNull()) { |
const Object& key_obj = Object::Handle(Api::UnwrapHandle(key)); |
if (!(key_obj.IsInstance() || key_obj.IsNull())) { |
return Api::NewError("Key is not an instance"); |
} |
- return Api::NewHandle(isolate, Send1Arg( |
- instance, |
- Symbols::IndexToken(), |
- Instance::Cast(key_obj))); |
+ return Api::NewHandle(I, |
+ Send1Arg(instance, Symbols::IndexToken(), Instance::Cast(key_obj))); |
} |
return Api::NewError("Object does not implement the 'Map' interface"); |
} |
DART_EXPORT Dart_Handle Dart_MapContainsKey(Dart_Handle map, Dart_Handle key) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(map)); |
- const Instance& instance = |
- Instance::Handle(isolate, GetMapInstance(isolate, obj)); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(map)); |
+ const Instance& instance = Instance::Handle(Z, GetMapInstance(Z, obj)); |
if (!instance.IsNull()) { |
- const Object& key_obj = Object::Handle(Api::UnwrapHandle(key)); |
+ const Object& key_obj = Object::Handle(Z, Api::UnwrapHandle(key)); |
if (!(key_obj.IsInstance() || key_obj.IsNull())) { |
return Api::NewError("Key is not an instance"); |
} |
- return Api::NewHandle(isolate, Send1Arg( |
+ return Api::NewHandle(I, Send1Arg( |
instance, |
- String::Handle(isolate, String::New("containsKey")), |
+ String::Handle(Z, String::New("containsKey")), |
Instance::Cast(key_obj))); |
} |
return Api::NewError("Object does not implement the 'Map' interface"); |
@@ -3234,19 +3149,17 @@ DART_EXPORT Dart_Handle Dart_MapContainsKey(Dart_Handle map, Dart_Handle key) { |
DART_EXPORT Dart_Handle Dart_MapKeys(Dart_Handle map) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- Object& obj = Object::Handle(isolate, Api::UnwrapHandle(map)); |
- Instance& instance = |
- Instance::Handle(isolate, GetMapInstance(isolate, obj)); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ Object& obj = Object::Handle(Z, Api::UnwrapHandle(map)); |
+ Instance& instance = Instance::Handle(Z, GetMapInstance(Z, obj)); |
if (!instance.IsNull()) { |
const Object& iterator = Object::Handle(Send0Arg( |
- instance, String::Handle(String::New("get:keys")))); |
+ instance, String::Handle(Z, String::New("get:keys")))); |
if (!iterator.IsInstance()) { |
- return Api::NewHandle(isolate, iterator.raw()); |
+ return Api::NewHandle(I, iterator.raw()); |
} |
- return Api::NewHandle(isolate, Send0Arg( |
+ return Api::NewHandle(I, Send0Arg( |
Instance::Cast(iterator), |
String::Handle(String::New("toList")))); |
} |
@@ -3462,36 +3375,35 @@ static Dart_Handle NewExternalByteData( |
DART_EXPORT Dart_Handle Dart_NewTypedData(Dart_TypedData_Type type, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
switch (type) { |
case Dart_TypedData_kByteData : |
- return NewByteData(isolate, length); |
+ return NewByteData(I, length); |
case Dart_TypedData_kInt8 : |
- return NewTypedData(isolate, kTypedDataInt8ArrayCid, length); |
+ return NewTypedData(I, kTypedDataInt8ArrayCid, length); |
case Dart_TypedData_kUint8 : |
- return NewTypedData(isolate, kTypedDataUint8ArrayCid, length); |
+ return NewTypedData(I, kTypedDataUint8ArrayCid, length); |
case Dart_TypedData_kUint8Clamped : |
- return NewTypedData(isolate, kTypedDataUint8ClampedArrayCid, length); |
+ return NewTypedData(I, kTypedDataUint8ClampedArrayCid, length); |
case Dart_TypedData_kInt16 : |
- return NewTypedData(isolate, kTypedDataInt16ArrayCid, length); |
+ return NewTypedData(I, kTypedDataInt16ArrayCid, length); |
case Dart_TypedData_kUint16 : |
- return NewTypedData(isolate, kTypedDataUint16ArrayCid, length); |
+ return NewTypedData(I, kTypedDataUint16ArrayCid, length); |
case Dart_TypedData_kInt32 : |
- return NewTypedData(isolate, kTypedDataInt32ArrayCid, length); |
+ return NewTypedData(I, kTypedDataInt32ArrayCid, length); |
case Dart_TypedData_kUint32 : |
- return NewTypedData(isolate, kTypedDataUint32ArrayCid, length); |
+ return NewTypedData(I, kTypedDataUint32ArrayCid, length); |
case Dart_TypedData_kInt64 : |
- return NewTypedData(isolate, kTypedDataInt64ArrayCid, length); |
+ return NewTypedData(I, kTypedDataInt64ArrayCid, length); |
case Dart_TypedData_kUint64 : |
- return NewTypedData(isolate, kTypedDataUint64ArrayCid, length); |
+ return NewTypedData(I, kTypedDataUint64ArrayCid, length); |
case Dart_TypedData_kFloat32 : |
- return NewTypedData(isolate, kTypedDataFloat32ArrayCid, length); |
+ return NewTypedData(I, kTypedDataFloat32ArrayCid, length); |
case Dart_TypedData_kFloat64 : |
- return NewTypedData(isolate, kTypedDataFloat64ArrayCid, length); |
+ return NewTypedData(I, kTypedDataFloat64ArrayCid, length); |
case Dart_TypedData_kFloat32x4: |
- return NewTypedData(isolate, kTypedDataFloat32x4ArrayCid, length); |
+ return NewTypedData(I, kTypedDataFloat32x4ArrayCid, length); |
default: |
return Api::NewError("%s expects argument 'type' to be of 'TypedData'", |
CURRENT_FUNC); |
@@ -3505,75 +3417,50 @@ DART_EXPORT Dart_Handle Dart_NewExternalTypedData( |
Dart_TypedData_Type type, |
void* data, |
intptr_t length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (data == NULL && length != 0) { |
RETURN_NULL_ERROR(data); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
switch (type) { |
case Dart_TypedData_kByteData: |
- return NewExternalByteData(isolate, data, length); |
+ return NewExternalByteData(I, data, length); |
case Dart_TypedData_kInt8: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataInt8ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataInt8ArrayCid, data, length); |
case Dart_TypedData_kUint8: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataUint8ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataUint8ArrayCid, data, length); |
case Dart_TypedData_kUint8Clamped: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataUint8ClampedArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataUint8ClampedArrayCid, data, length); |
case Dart_TypedData_kInt16: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataInt16ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataInt16ArrayCid, data, length); |
case Dart_TypedData_kUint16: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataUint16ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataUint16ArrayCid, data, length); |
case Dart_TypedData_kInt32: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataInt32ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataInt32ArrayCid, data, length); |
case Dart_TypedData_kUint32: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataUint32ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataUint32ArrayCid, data, length); |
case Dart_TypedData_kInt64: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataInt64ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataInt64ArrayCid, data, length); |
case Dart_TypedData_kUint64: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataUint64ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataUint64ArrayCid, data, length); |
case Dart_TypedData_kFloat32: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataFloat32ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataFloat32ArrayCid, data, length); |
case Dart_TypedData_kFloat64: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataFloat64ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataFloat64ArrayCid, data, length); |
case Dart_TypedData_kFloat32x4: |
- return NewExternalTypedData(isolate, |
- kExternalTypedDataFloat32x4ArrayCid, |
- data, |
- length); |
+ return NewExternalTypedData(I, |
+ kExternalTypedDataFloat32x4ArrayCid, data, length); |
default: |
return Api::NewError("%s expects argument 'type' to be of" |
" 'external TypedData'", CURRENT_FUNC); |
@@ -3602,16 +3489,15 @@ static RawObject* GetByteBufferConstructor(Isolate* isolate, |
DART_EXPORT Dart_Handle Dart_NewByteBuffer(Dart_Handle typed_data) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
intptr_t class_id = Api::ClassId(typed_data); |
if (!RawObject::IsExternalTypedDataClassId(class_id) && |
!RawObject::IsTypedDataViewClassId(class_id) && |
!RawObject::IsTypedDataClassId(class_id)) { |
- RETURN_TYPE_ERROR(isolate, typed_data, 'TypedData'); |
+ RETURN_TYPE_ERROR(I, typed_data, 'TypedData'); |
} |
- Object& result = Object::Handle(isolate); |
- result = GetByteBufferConstructor(isolate, |
+ Object& result = Object::Handle(Z); |
+ result = GetByteBufferConstructor(I, |
Symbols::_ByteBuffer(), |
Symbols::_ByteBufferDot_New(), |
1); |
@@ -3621,16 +3507,16 @@ DART_EXPORT Dart_Handle Dart_NewByteBuffer(Dart_Handle typed_data) { |
ASSERT(!factory.IsGenerativeConstructor()); |
// Create the argument list. |
- const Array& args = Array::Handle(isolate, Array::New(2)); |
+ const Array& args = Array::Handle(Z, Array::New(2)); |
// Factories get type arguments. |
args.SetAt(0, Object::null_type_arguments()); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(typed_data)); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(typed_data)); |
args.SetAt(1, obj); |
// Invoke the factory constructor and return the new object. |
result = DartEntry::InvokeFunction(factory, args); |
ASSERT(result.IsInstance() || result.IsNull() || result.IsError()); |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} |
@@ -3671,14 +3557,12 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, |
Dart_TypedData_Type* type, |
void** data, |
intptr_t* len) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
intptr_t class_id = Api::ClassId(object); |
if (!RawObject::IsExternalTypedDataClassId(class_id) && |
!RawObject::IsTypedDataViewClassId(class_id) && |
!RawObject::IsTypedDataClassId(class_id)) { |
- RETURN_TYPE_ERROR(isolate, object, 'TypedData'); |
+ RETURN_TYPE_ERROR(I, object, 'TypedData'); |
} |
if (type == NULL) { |
RETURN_NULL_ERROR(type); |
@@ -3698,7 +3582,7 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, |
// If it is an external typed data object just return the data field. |
if (RawObject::IsExternalTypedDataClassId(class_id)) { |
const ExternalTypedData& obj = |
- Api::UnwrapExternalTypedDataHandle(isolate, object); |
+ Api::UnwrapExternalTypedDataHandle(I, object); |
ASSERT(!obj.IsNull()); |
length = obj.Length(); |
size_in_bytes = length * ExternalTypedData::ElementSizeInBytes(class_id); |
@@ -3706,16 +3590,16 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, |
external = true; |
} else if (RawObject::IsTypedDataClassId(class_id)) { |
// Regular typed data object, set up some GC and API callback guards. |
- const TypedData& obj = Api::UnwrapTypedDataHandle(isolate, object); |
+ const TypedData& obj = Api::UnwrapTypedDataHandle(I, object); |
ASSERT(!obj.IsNull()); |
length = obj.Length(); |
size_in_bytes = length * TypedData::ElementSizeInBytes(class_id); |
- thread->IncrementNoSafepointScopeDepth(); |
- START_NO_CALLBACK_SCOPE(isolate); |
+ T->IncrementNoSafepointScopeDepth(); |
+ START_NO_CALLBACK_SCOPE(I); |
data_tmp = obj.DataAddr(0); |
} else { |
ASSERT(RawObject::IsTypedDataViewClassId(class_id)); |
- const Instance& view_obj = Api::UnwrapInstanceHandle(isolate, object); |
+ const Instance& view_obj = Api::UnwrapInstanceHandle(I, object); |
ASSERT(!view_obj.IsNull()); |
Smi& val = Smi::Handle(); |
val ^= TypedDataView::Length(view_obj); |
@@ -3724,8 +3608,8 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, |
val ^= TypedDataView::OffsetInBytes(view_obj); |
intptr_t offset_in_bytes = val.Value(); |
const Instance& obj = Instance::Handle(TypedDataView::Data(view_obj)); |
- thread->IncrementNoSafepointScopeDepth(); |
- START_NO_CALLBACK_SCOPE(isolate); |
+ T->IncrementNoSafepointScopeDepth(); |
+ START_NO_CALLBACK_SCOPE(I); |
if (TypedData::IsTypedData(obj)) { |
const TypedData& data_obj = TypedData::Cast(obj); |
data_tmp = data_obj.DataAddr(offset_in_bytes); |
@@ -3738,12 +3622,12 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, |
} |
if (FLAG_verify_acquired_data) { |
if (external) { |
- ASSERT(!isolate->heap()->Contains(reinterpret_cast<uword>(data_tmp))); |
+ ASSERT(!I->heap()->Contains(reinterpret_cast<uword>(data_tmp))); |
} else { |
- ASSERT(isolate->heap()->Contains(reinterpret_cast<uword>(data_tmp))); |
+ ASSERT(I->heap()->Contains(reinterpret_cast<uword>(data_tmp))); |
} |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
- WeakTable* table = isolate->api_state()->acquired_table(); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object)); |
+ WeakTable* table = I->api_state()->acquired_table(); |
intptr_t current = table->GetValue(obj.raw()); |
if (current != 0) { |
return Api::NewError("Data was already acquired for this object."); |
@@ -3762,22 +3646,20 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object, |
DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
intptr_t class_id = Api::ClassId(object); |
if (!RawObject::IsExternalTypedDataClassId(class_id) && |
!RawObject::IsTypedDataViewClassId(class_id) && |
!RawObject::IsTypedDataClassId(class_id)) { |
- RETURN_TYPE_ERROR(isolate, object, 'TypedData'); |
+ RETURN_TYPE_ERROR(I, object, 'TypedData'); |
} |
if (!RawObject::IsExternalTypedDataClassId(class_id)) { |
- thread->DecrementNoSafepointScopeDepth(); |
- END_NO_CALLBACK_SCOPE(isolate); |
+ T->DecrementNoSafepointScopeDepth(); |
+ END_NO_CALLBACK_SCOPE(I); |
} |
if (FLAG_verify_acquired_data) { |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(object)); |
- WeakTable* table = isolate->api_state()->acquired_table(); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(object)); |
+ WeakTable* table = I->api_state()->acquired_table(); |
intptr_t current = table->GetValue(obj.raw()); |
if (current == 0) { |
return Api::NewError("Data was not acquired for this object."); |
@@ -3857,10 +3739,9 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
Dart_Handle constructor_name, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- Object& result = Object::Handle(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ Object& result = Object::Handle(Z); |
if (number_of_arguments < 0) { |
return Api::NewError( |
@@ -3871,7 +3752,7 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
// Get the class to instantiate. |
Object& unchecked_type = Object::Handle(Api::UnwrapHandle(type)); |
if (unchecked_type.IsNull() || !unchecked_type.IsType()) { |
- RETURN_TYPE_ERROR(isolate, type, Type); |
+ RETURN_TYPE_ERROR(I, type, Type); |
} |
Type& type_obj = Type::Handle(); |
type_obj ^= unchecked_type.raw(); |
@@ -3880,21 +3761,21 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
"%s expects argument 'type' to be a fully resolved type.", |
CURRENT_FUNC); |
} |
- Class& cls = Class::Handle(isolate, type_obj.type_class()); |
+ Class& cls = Class::Handle(Z, type_obj.type_class()); |
TypeArguments& type_arguments = |
- TypeArguments::Handle(isolate, type_obj.arguments()); |
+ TypeArguments::Handle(Z, type_obj.arguments()); |
- const String& base_constructor_name = String::Handle(isolate, cls.Name()); |
+ const String& base_constructor_name = String::Handle(Z, cls.Name()); |
// And get the name of the constructor to invoke. |
- String& dot_name = String::Handle(isolate); |
+ String& dot_name = String::Handle(Z); |
result = Api::UnwrapHandle(constructor_name); |
if (result.IsNull()) { |
dot_name = Symbols::Dot().raw(); |
} else if (result.IsString()) { |
dot_name = String::Concat(Symbols::Dot(), String::Cast(result)); |
} else { |
- RETURN_TYPE_ERROR(isolate, constructor_name, String); |
+ RETURN_TYPE_ERROR(I, constructor_name, String); |
} |
// Resolve the constructor. |
@@ -3906,20 +3787,20 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
constr_name, |
number_of_arguments); |
if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} |
ASSERT(result.IsFunction()); |
- Function& constructor = Function::Handle(isolate); |
+ Function& constructor = Function::Handle(Z); |
constructor ^= result.raw(); |
- Instance& new_object = Instance::Handle(isolate); |
+ Instance& new_object = Instance::Handle(Z); |
if (constructor.IsRedirectingFactory()) { |
ClassFinalizer::ResolveRedirectingFactory(cls, constructor); |
Type& redirect_type = Type::Handle(constructor.RedirectionType()); |
constructor = constructor.RedirectionTarget(); |
if (constructor.IsNull()) { |
ASSERT(redirect_type.IsMalformed()); |
- return Api::NewHandle(isolate, redirect_type.error()); |
+ return Api::NewHandle(I, redirect_type.error()); |
} |
if (!redirect_type.IsInstantiated()) { |
@@ -3929,7 +3810,7 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
redirect_type ^= redirect_type.InstantiateFrom(type_arguments, |
&bound_error); |
if (!bound_error.IsNull()) { |
- return Api::NewHandle(isolate, bound_error.raw()); |
+ return Api::NewHandle(I, bound_error.raw()); |
} |
redirect_type ^= redirect_type.Canonicalize(); |
} |
@@ -3948,7 +3829,7 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
intptr_t arg_index = 0; |
int extra_args = (constructor.IsGenerativeConstructor() ? 2 : 1); |
const Array& args = |
- Array::Handle(isolate, Array::New(number_of_arguments + extra_args)); |
+ Array::Handle(Z, Array::New(number_of_arguments + extra_args)); |
if (constructor.IsGenerativeConstructor()) { |
// Constructors get the uninitialized object and a constructor phase. |
if (!type_arguments.IsNull()) { |
@@ -3958,18 +3839,17 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
new_object.SetTypeArguments(type_arguments); |
} |
args.SetAt(arg_index++, new_object); |
- args.SetAt(arg_index++, |
- Smi::Handle(isolate, Smi::New(Function::kCtorPhaseAll))); |
+ args.SetAt(arg_index++, Smi::Handle(Z, Smi::New(Function::kCtorPhaseAll))); |
} else { |
// Factories get type arguments. |
args.SetAt(arg_index++, type_arguments); |
} |
- Object& argument = Object::Handle(isolate); |
+ Object& argument = Object::Handle(Z); |
for (int i = 0; i < number_of_arguments; i++) { |
argument = Api::UnwrapHandle(arguments[i]); |
if (!argument.IsNull() && !argument.IsInstance()) { |
if (argument.IsError()) { |
- return Api::NewHandle(isolate, argument.raw()); |
+ return Api::NewHandle(I, argument.raw()); |
} else { |
return Api::NewError( |
"%s expects arguments[%d] to be an Instance handle.", |
@@ -3982,7 +3862,7 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
// Invoke the constructor and return the new object. |
result = DartEntry::InvokeFunction(constructor, args); |
if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} |
if (constructor.IsGenerativeConstructor()) { |
@@ -3991,7 +3871,7 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type, |
ASSERT(result.IsNull() || result.IsInstance()); |
new_object ^= result.raw(); |
} |
- return Api::NewHandle(isolate, new_object.raw()); |
+ return Api::NewHandle(I, new_object.raw()); |
} |
@@ -4022,22 +3902,21 @@ static RawInstance* AllocateObject(Isolate* isolate, const Class& cls) { |
DART_EXPORT Dart_Handle Dart_Allocate(Dart_Handle type) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- const Type& type_obj = Api::UnwrapTypeHandle(isolate, type); |
+ const Type& type_obj = Api::UnwrapTypeHandle(I, type); |
// Get the class to instantiate. |
if (type_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, type, Type); |
+ RETURN_TYPE_ERROR(I, type, Type); |
} |
- const Class& cls = Class::Handle(isolate, type_obj.type_class()); |
- const Error& error = Error::Handle(isolate, cls.EnsureIsFinalized(isolate)); |
+ const Class& cls = Class::Handle(Z, type_obj.type_class()); |
+ const Error& error = Error::Handle(Z, cls.EnsureIsFinalized(I)); |
if (!error.IsNull()) { |
// An error occurred, return error object. |
- return Api::NewHandle(isolate, error.raw()); |
+ return Api::NewHandle(I, error.raw()); |
} |
- return Api::NewHandle(isolate, AllocateObject(isolate, cls)); |
+ return Api::NewHandle(I, AllocateObject(I, cls)); |
} |
@@ -4045,33 +3924,31 @@ DART_EXPORT Dart_Handle Dart_AllocateWithNativeFields( |
Dart_Handle type, |
intptr_t num_native_fields, |
const intptr_t* native_fields) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- const Type& type_obj = Api::UnwrapTypeHandle(isolate, type); |
+ const Type& type_obj = Api::UnwrapTypeHandle(I, type); |
// Get the class to instantiate. |
if (type_obj.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, type, Type); |
+ RETURN_TYPE_ERROR(I, type, Type); |
} |
if (native_fields == NULL) { |
RETURN_NULL_ERROR(native_fields); |
} |
- const Class& cls = Class::Handle(isolate, type_obj.type_class()); |
- const Error& error = Error::Handle(isolate, cls.EnsureIsFinalized(isolate)); |
+ const Class& cls = Class::Handle(Z, type_obj.type_class()); |
+ const Error& error = Error::Handle(Z, cls.EnsureIsFinalized(I)); |
if (!error.IsNull()) { |
// An error occurred, return error object. |
- return Api::NewHandle(isolate, error.raw()); |
+ return Api::NewHandle(I, error.raw()); |
} |
if (num_native_fields != cls.num_native_fields()) { |
return Api::NewError( |
"%s: invalid number of native fields %" Pd " passed in, expected %d", |
CURRENT_FUNC, num_native_fields, cls.num_native_fields()); |
} |
- const Instance& instance = Instance::Handle(isolate, |
- AllocateObject(isolate, cls)); |
+ const Instance& instance = Instance::Handle(Z, AllocateObject(I, cls)); |
instance.SetNativeFields(num_native_fields, native_fields); |
- return Api::NewHandle(isolate, instance.raw()); |
+ return Api::NewHandle(I, instance.raw()); |
} |
@@ -4105,22 +3982,21 @@ DART_EXPORT Dart_Handle Dart_InvokeConstructor(Dart_Handle object, |
Dart_Handle name, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
if (number_of_arguments < 0) { |
return Api::NewError( |
"%s expects argument 'number_of_arguments' to be non-negative.", |
CURRENT_FUNC); |
} |
- const String& constructor_name = Api::UnwrapStringHandle(isolate, name); |
+ const String& constructor_name = Api::UnwrapStringHandle(I, name); |
if (constructor_name.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, name, String); |
+ RETURN_TYPE_ERROR(I, name, String); |
} |
- const Instance& instance = Api::UnwrapInstanceHandle(isolate, object); |
+ const Instance& instance = Api::UnwrapInstanceHandle(I, object); |
if (instance.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, object, Instance); |
+ RETURN_TYPE_ERROR(I, object, Instance); |
} |
// Since we have allocated an object it would mean that the type |
@@ -4129,18 +4005,18 @@ DART_EXPORT Dart_Handle Dart_InvokeConstructor(Dart_Handle object, |
// once for the same object. |
// Construct name of the constructor to invoke. |
- const Type& type_obj = Type::Handle(isolate, instance.GetType()); |
- const Class& cls = Class::Handle(isolate, type_obj.type_class()); |
- const String& class_name = String::Handle(isolate, cls.Name()); |
- const Array& strings = Array::Handle(Array::New(3)); |
+ const Type& type_obj = Type::Handle(Z, instance.GetType()); |
+ const Class& cls = Class::Handle(Z, type_obj.type_class()); |
+ const String& class_name = String::Handle(Z, cls.Name()); |
+ const Array& strings = Array::Handle(Z, Array::New(3)); |
strings.SetAt(0, class_name); |
strings.SetAt(1, Symbols::Dot()); |
strings.SetAt(2, constructor_name); |
- const String& dot_name = String::Handle(isolate, String::ConcatAll(strings)); |
+ const String& dot_name = String::Handle(Z, String::ConcatAll(strings)); |
const TypeArguments& type_arguments = |
- TypeArguments::Handle(isolate, type_obj.arguments()); |
+ TypeArguments::Handle(Z, type_obj.arguments()); |
const Function& constructor = |
- Function::Handle(isolate, cls.LookupFunctionAllowPrivate(dot_name)); |
+ Function::Handle(Z, cls.LookupFunctionAllowPrivate(dot_name)); |
const int extra_args = 2; |
if (!constructor.IsNull() && |
constructor.IsGenerativeConstructor() && |
@@ -4157,22 +4033,18 @@ DART_EXPORT Dart_Handle Dart_InvokeConstructor(Dart_Handle object, |
instance.SetTypeArguments(type_arguments); |
} |
Dart_Handle result; |
- Array& args = Array::Handle(isolate); |
- result = SetupArguments(isolate, |
- number_of_arguments, |
- arguments, |
- extra_args, |
- &args); |
+ Array& args = Array::Handle(Z); |
+ result = SetupArguments(I, |
+ number_of_arguments, arguments, extra_args, &args); |
if (!::Dart_IsError(result)) { |
args.SetAt(0, instance); |
- args.SetAt(1, Smi::Handle(isolate, Smi::New(Function::kCtorPhaseAll))); |
- const Object& retval = Object::Handle( |
- isolate, |
+ args.SetAt(1, Smi::Handle(Z, Smi::New(Function::kCtorPhaseAll))); |
+ const Object& retval = Object::Handle(Z, |
DartEntry::InvokeFunction(constructor, args)); |
if (retval.IsError()) { |
- result = Api::NewHandle(isolate, retval.raw()); |
+ result = Api::NewHandle(I, retval.raw()); |
} else { |
- result = Api::NewHandle(isolate, instance.raw()); |
+ result = Api::NewHandle(I, instance.raw()); |
} |
} |
return result; |
@@ -4187,29 +4059,27 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
Dart_Handle name, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
// TODO(turnidge): This is a bit simplistic. It overcounts when |
// other operations (gc, compilation) are active. |
- TIMERSCOPE(thread, time_dart_execution); |
+ TIMERSCOPE(T, time_dart_execution); |
- const String& function_name = Api::UnwrapStringHandle(isolate, name); |
+ const String& function_name = Api::UnwrapStringHandle(I, name); |
if (function_name.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, name, String); |
+ RETURN_TYPE_ERROR(I, name, String); |
} |
if (number_of_arguments < 0) { |
return Api::NewError( |
"%s expects argument 'number_of_arguments' to be non-negative.", |
CURRENT_FUNC); |
} |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(target)); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(target)); |
if (obj.IsError()) { |
return target; |
} |
Dart_Handle result; |
- Array& args = Array::Handle(isolate); |
+ Array& args = Array::Handle(Z); |
if (obj.IsType()) { |
if (!Type::Cast(obj).IsFinalized()) { |
return Api::NewError( |
@@ -4217,41 +4087,38 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
CURRENT_FUNC); |
} |
- const Class& cls = Class::Handle(isolate, Type::Cast(obj).type_class()); |
- const Function& function = Function::Handle( |
- isolate, |
+ const Class& cls = Class::Handle(Z, Type::Cast(obj).type_class()); |
+ const Function& function = Function::Handle(Z, |
Resolver::ResolveStaticAllowPrivate(cls, |
function_name, |
number_of_arguments, |
Object::empty_array())); |
if (function.IsNull()) { |
- const String& cls_name = String::Handle(isolate, cls.Name()); |
+ const String& cls_name = String::Handle(Z, cls.Name()); |
return Api::NewError("%s: did not find static method '%s.%s'.", |
CURRENT_FUNC, |
cls_name.ToCString(), |
function_name.ToCString()); |
} |
// Setup args and check for malformed arguments in the arguments list. |
- result = SetupArguments(isolate, number_of_arguments, arguments, 0, &args); |
+ result = SetupArguments(I, number_of_arguments, arguments, 0, &args); |
if (!::Dart_IsError(result)) { |
- result = Api::NewHandle(isolate, |
- DartEntry::InvokeFunction(function, args)); |
+ result = Api::NewHandle(I, DartEntry::InvokeFunction(function, args)); |
} |
return result; |
} else if (obj.IsNull() || obj.IsInstance()) { |
// Since we have allocated an object it would mean that the type of the |
// receiver is already resolved and finalized, hence it is not necessary |
// to check here. |
- Instance& instance = Instance::Handle(isolate); |
+ Instance& instance = Instance::Handle(Z); |
instance ^= obj.raw(); |
ArgumentsDescriptor args_desc( |
- Array::Handle(ArgumentsDescriptor::New(number_of_arguments + 1))); |
- const Function& function = Function::Handle( |
- isolate, |
+ Array::Handle(Z, ArgumentsDescriptor::New(number_of_arguments + 1))); |
+ const Function& function = Function::Handle(Z, |
Resolver::ResolveDynamic(instance, function_name, args_desc)); |
if (function.IsNull()) { |
// Setup args and check for malformed arguments in the arguments list. |
- result = SetupArguments(isolate, |
+ result = SetupArguments(I, |
number_of_arguments, |
arguments, |
1, |
@@ -4259,8 +4126,8 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
if (!::Dart_IsError(result)) { |
args.SetAt(0, instance); |
const Array& args_descriptor = |
- Array::Handle(ArgumentsDescriptor::New(args.Length())); |
- result = Api::NewHandle(isolate, |
+ Array::Handle(Z, ArgumentsDescriptor::New(args.Length())); |
+ result = Api::NewHandle(I, |
DartEntry::InvokeNoSuchMethod(instance, |
function_name, |
args, |
@@ -4269,11 +4136,10 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
return result; |
} |
// Setup args and check for malformed arguments in the arguments list. |
- result = SetupArguments(isolate, number_of_arguments, arguments, 1, &args); |
+ result = SetupArguments(I, number_of_arguments, arguments, 1, &args); |
if (!::Dart_IsError(result)) { |
args.SetAt(0, instance); |
- result = Api::NewHandle(isolate, |
- DartEntry::InvokeFunction(function, args)); |
+ result = Api::NewHandle(I, DartEntry::InvokeFunction(function, args)); |
} |
return result; |
} else if (obj.IsLibrary()) { |
@@ -4288,8 +4154,7 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
} |
const Function& function = |
- Function::Handle(isolate, |
- lib.LookupFunctionAllowPrivate(function_name)); |
+ Function::Handle(Z, lib.LookupFunctionAllowPrivate(function_name)); |
if (function.IsNull()) { |
return Api::NewError("%s: did not find top-level function '%s'.", |
CURRENT_FUNC, |
@@ -4297,7 +4162,7 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
} |
// LookupFunctionAllowPrivate does not check argument arity, so we |
// do it here. |
- String& error_message = String::Handle(); |
+ String& error_message = String::Handle(Z); |
if (!function.AreValidArgumentCounts(number_of_arguments, |
0, |
&error_message)) { |
@@ -4307,10 +4172,9 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
error_message.ToCString()); |
} |
// Setup args and check for malformed arguments in the arguments list. |
- result = SetupArguments(isolate, number_of_arguments, arguments, 0, &args); |
+ result = SetupArguments(I, number_of_arguments, arguments, 0, &args); |
if (!::Dart_IsError(result)) { |
- result = Api::NewHandle(isolate, |
- DartEntry::InvokeFunction(function, args)); |
+ result = Api::NewHandle(I, DartEntry::InvokeFunction(function, args)); |
} |
return result; |
} else { |
@@ -4324,12 +4188,11 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target, |
DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
- const Instance& closure_obj = Api::UnwrapInstanceHandle(isolate, closure); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
+ const Instance& closure_obj = Api::UnwrapInstanceHandle(I, closure); |
if (closure_obj.IsNull() || !closure_obj.IsCallable(NULL)) { |
- RETURN_TYPE_ERROR(isolate, closure, Instance); |
+ RETURN_TYPE_ERROR(I, closure, Instance); |
} |
if (number_of_arguments < 0) { |
return Api::NewError( |
@@ -4338,35 +4201,33 @@ DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure, |
} |
// Set up arguments to include the closure as the first argument. |
- const Array& args = Array::Handle(isolate, |
- Array::New(number_of_arguments + 1)); |
- Object& obj = Object::Handle(isolate); |
+ const Array& args = Array::Handle(Z, Array::New(number_of_arguments + 1)); |
+ Object& obj = Object::Handle(Z); |
args.SetAt(0, closure_obj); |
for (int i = 0; i < number_of_arguments; i++) { |
obj = Api::UnwrapHandle(arguments[i]); |
if (!obj.IsNull() && !obj.IsInstance()) { |
- RETURN_TYPE_ERROR(isolate, arguments[i], Instance); |
+ RETURN_TYPE_ERROR(I, arguments[i], Instance); |
} |
args.SetAt(i + 1, obj); |
} |
// Now try to invoke the closure. |
- return Api::NewHandle(isolate, DartEntry::InvokeClosure(args)); |
+ return Api::NewHandle(I, DartEntry::InvokeClosure(args)); |
} |
DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- const String& field_name = Api::UnwrapStringHandle(isolate, name); |
+ const String& field_name = Api::UnwrapStringHandle(I, name); |
if (field_name.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, name, String); |
+ RETURN_TYPE_ERROR(I, name, String); |
} |
- Field& field = Field::Handle(isolate); |
- Function& getter = Function::Handle(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(container)); |
+ Field& field = Field::Handle(Z); |
+ Function& getter = Function::Handle(Z); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(container)); |
if (obj.IsNull()) { |
return Api::NewError("%s expects argument 'container' to be non-null.", |
CURRENT_FUNC); |
@@ -4378,21 +4239,21 @@ DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) { |
} |
// To access a static field we may need to use the Field or the |
// getter Function. |
- Class& cls = Class::Handle(isolate, Type::Cast(obj).type_class()); |
+ Class& cls = Class::Handle(Z, Type::Cast(obj).type_class()); |
field = cls.LookupStaticField(field_name); |
if (field.IsNull() || field.IsUninitialized()) { |
const String& getter_name = |
- String::Handle(isolate, Field::GetterName(field_name)); |
+ String::Handle(Z, Field::GetterName(field_name)); |
getter = cls.LookupStaticFunctionAllowPrivate(getter_name); |
} |
if (!getter.IsNull()) { |
// Invoke the getter and return the result. |
- return Api::NewHandle( |
- isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); |
+ return Api::NewHandle(I, |
+ DartEntry::InvokeFunction(getter, Object::empty_array())); |
} else if (!field.IsNull()) { |
- return Api::NewHandle(isolate, field.value()); |
+ return Api::NewHandle(I, field.value()); |
} else { |
return Api::NewError("%s: did not find static field '%s'.", |
CURRENT_FUNC, field_name.ToCString()); |
@@ -4403,9 +4264,8 @@ DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) { |
// getter in any superclass and use that function to access the |
// field. |
const Instance& instance = Instance::Cast(obj); |
- Class& cls = Class::Handle(isolate, instance.clazz()); |
- String& getter_name = |
- String::Handle(isolate, Field::GetterName(field_name)); |
+ Class& cls = Class::Handle(Z, instance.clazz()); |
+ String& getter_name = String::Handle(Z, Field::GetterName(field_name)); |
while (!cls.IsNull()) { |
getter = cls.LookupDynamicFunctionAllowPrivate(getter_name); |
if (!getter.IsNull()) { |
@@ -4416,18 +4276,18 @@ DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) { |
// Invoke the getter and return the result. |
const int kNumArgs = 1; |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, instance); |
if (getter.IsNull()) { |
const Array& args_descriptor = |
- Array::Handle(ArgumentsDescriptor::New(args.Length())); |
- return Api::NewHandle(isolate, |
+ Array::Handle(Z, ArgumentsDescriptor::New(args.Length())); |
+ return Api::NewHandle(I, |
DartEntry::InvokeNoSuchMethod(instance, |
getter_name, |
args, |
args_descriptor)); |
} |
- return Api::NewHandle(isolate, DartEntry::InvokeFunction(getter, args)); |
+ return Api::NewHandle(I, DartEntry::InvokeFunction(getter, args)); |
} else if (obj.IsLibrary()) { |
// To access a top-level we may need to use the Field or the |
@@ -4444,23 +4304,23 @@ DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) { |
if (field.IsNull()) { |
// No field found and no ambiguity error. Check for a getter in the lib. |
const String& getter_name = |
- String::Handle(isolate, Field::GetterName(field_name)); |
+ String::Handle(Z, Field::GetterName(field_name)); |
getter = lib.LookupFunctionAllowPrivate(getter_name); |
} else if (!field.IsNull() && field.IsUninitialized()) { |
// A field was found. Check for a getter in the field's owner classs. |
- const Class& cls = Class::Handle(isolate, field.owner()); |
- const String& getter_name = |
- String::Handle(isolate, Field::GetterName(field_name)); |
+ const Class& cls = Class::Handle(Z, field.owner()); |
+ const String& getter_name = String::Handle(Z, |
+ Field::GetterName(field_name)); |
getter = cls.LookupStaticFunctionAllowPrivate(getter_name); |
} |
if (!getter.IsNull()) { |
// Invoke the getter and return the result. |
- return Api::NewHandle( |
- isolate, DartEntry::InvokeFunction(getter, Object::empty_array())); |
+ return Api::NewHandle(I, |
+ DartEntry::InvokeFunction(getter, Object::empty_array())); |
} |
if (!field.IsNull()) { |
- return Api::NewHandle(isolate, field.value()); |
+ return Api::NewHandle(I, field.value()); |
} |
return Api::NewError("%s: did not find top-level variable '%s'.", |
CURRENT_FUNC, field_name.ToCString()); |
@@ -4478,26 +4338,25 @@ DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) { |
DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
Dart_Handle name, |
Dart_Handle value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- const String& field_name = Api::UnwrapStringHandle(isolate, name); |
+ const String& field_name = Api::UnwrapStringHandle(I, name); |
if (field_name.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, name, String); |
+ RETURN_TYPE_ERROR(I, name, String); |
} |
// Since null is allowed for value, we don't use UnwrapInstanceHandle. |
- const Object& value_obj = Object::Handle(isolate, Api::UnwrapHandle(value)); |
+ const Object& value_obj = Object::Handle(Z, Api::UnwrapHandle(value)); |
if (!value_obj.IsNull() && !value_obj.IsInstance()) { |
- RETURN_TYPE_ERROR(isolate, value, Instance); |
+ RETURN_TYPE_ERROR(I, value, Instance); |
} |
- Instance& value_instance = Instance::Handle(isolate); |
+ Instance& value_instance = Instance::Handle(Z); |
value_instance ^= value_obj.raw(); |
- Field& field = Field::Handle(isolate); |
- Function& setter = Function::Handle(isolate); |
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(container)); |
+ Field& field = Field::Handle(Z); |
+ Function& setter = Function::Handle(Z); |
+ const Object& obj = Object::Handle(Z, Api::UnwrapHandle(container)); |
if (obj.IsNull()) { |
return Api::NewError("%s expects argument 'container' to be non-null.", |
CURRENT_FUNC); |
@@ -4510,24 +4369,23 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
// To access a static field we may need to use the Field or the |
// setter Function. |
- Class& cls = Class::Handle(isolate, Type::Cast(obj).type_class()); |
+ Class& cls = Class::Handle(Z, Type::Cast(obj).type_class()); |
field = cls.LookupStaticField(field_name); |
if (field.IsNull()) { |
- String& setter_name = |
- String::Handle(isolate, Field::SetterName(field_name)); |
+ String& setter_name = String::Handle(Z, Field::SetterName(field_name)); |
setter = cls.LookupStaticFunctionAllowPrivate(setter_name); |
} |
if (!setter.IsNull()) { |
// Invoke the setter and return the result. |
const int kNumArgs = 1; |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, value_instance); |
- const Object& result = |
- Object::Handle(isolate, DartEntry::InvokeFunction(setter, args)); |
+ const Object& result = Object::Handle(Z, |
+ DartEntry::InvokeFunction(setter, args)); |
if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} else { |
return Api::Success(); |
} |
@@ -4549,9 +4407,8 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
// setter in any superclass and use that function to access the |
// field. |
const Instance& instance = Instance::Cast(obj); |
- Class& cls = Class::Handle(isolate, instance.clazz()); |
- String& setter_name = |
- String::Handle(isolate, Field::SetterName(field_name)); |
+ Class& cls = Class::Handle(Z, instance.clazz()); |
+ String& setter_name = String::Handle(Z, Field::SetterName(field_name)); |
while (!cls.IsNull()) { |
field = cls.LookupInstanceField(field_name); |
if (!field.IsNull() && field.is_final()) { |
@@ -4567,19 +4424,18 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
// Invoke the setter and return the result. |
const int kNumArgs = 2; |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, instance); |
args.SetAt(1, value_instance); |
if (setter.IsNull()) { |
const Array& args_descriptor = |
- Array::Handle(ArgumentsDescriptor::New(args.Length())); |
- return Api::NewHandle(isolate, |
- DartEntry::InvokeNoSuchMethod(instance, |
- setter_name, |
- args, |
- args_descriptor)); |
+ Array::Handle(Z, ArgumentsDescriptor::New(args.Length())); |
+ return Api::NewHandle(I, DartEntry::InvokeNoSuchMethod(instance, |
+ setter_name, |
+ args, |
+ args_descriptor)); |
} |
- return Api::NewHandle(isolate, DartEntry::InvokeFunction(setter, args)); |
+ return Api::NewHandle(I, DartEntry::InvokeFunction(setter, args)); |
} else if (obj.IsLibrary()) { |
// To access a top-level we may need to use the Field or the |
@@ -4595,19 +4451,19 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
field = lib.LookupFieldAllowPrivate(field_name); |
if (field.IsNull()) { |
const String& setter_name = |
- String::Handle(isolate, Field::SetterName(field_name)); |
+ String::Handle(Z, Field::SetterName(field_name)); |
setter ^= lib.LookupFunctionAllowPrivate(setter_name); |
} |
if (!setter.IsNull()) { |
// Invoke the setter and return the result. |
const int kNumArgs = 1; |
- const Array& args = Array::Handle(isolate, Array::New(kNumArgs)); |
+ const Array& args = Array::Handle(Z, Array::New(kNumArgs)); |
args.SetAt(0, value_instance); |
const Object& result = |
- Object::Handle(isolate, DartEntry::InvokeFunction(setter, args)); |
+ Object::Handle(Z, DartEntry::InvokeFunction(setter, args)); |
if (result.IsError()) { |
- return Api::NewHandle(isolate, result.raw()); |
+ return Api::NewHandle(I, result.raw()); |
} |
return Api::Success(); |
} |
@@ -4715,30 +4571,29 @@ DART_EXPORT Dart_Handle Dart_ReThrowException(Dart_Handle exception, |
DART_EXPORT Dart_Handle Dart_CreateNativeWrapperClass(Dart_Handle library, |
Dart_Handle name, |
int field_count) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const String& cls_name = Api::UnwrapStringHandle(isolate, name); |
+ DARTSCOPE(Thread::Current()); |
+ const String& cls_name = Api::UnwrapStringHandle(I, name); |
if (cls_name.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, name, String); |
+ RETURN_TYPE_ERROR(I, name, String); |
} |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
if (!Utils::IsUint(16, field_count)) { |
return Api::NewError( |
"Invalid field_count passed to Dart_CreateNativeWrapperClass"); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
- String& cls_symbol = String::Handle(isolate, Symbols::New(cls_name)); |
- const Class& cls = Class::Handle( |
- isolate, Class::NewNativeWrapper(lib, cls_symbol, field_count)); |
+ String& cls_symbol = String::Handle(Z, Symbols::New(cls_name)); |
+ const Class& cls = Class::Handle(Z, |
+ Class::NewNativeWrapper(lib, cls_symbol, field_count)); |
if (cls.IsNull()) { |
return Api::NewError( |
"Unable to create native wrapper class : already exists"); |
} |
- return Api::NewHandle(isolate, cls.RareType()); |
+ return Api::NewHandle(I, cls.RareType()); |
} |
@@ -4779,11 +4634,10 @@ DART_EXPORT Dart_Handle Dart_GetNativeInstanceField(Dart_Handle obj, |
DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj, |
int index, |
intptr_t value) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Instance& instance = Api::UnwrapInstanceHandle(isolate, obj); |
+ DARTSCOPE(Thread::Current()); |
+ const Instance& instance = Api::UnwrapInstanceHandle(I, obj); |
if (instance.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, obj, Instance); |
+ RETURN_TYPE_ERROR(I, obj, Instance); |
} |
if (!instance.IsValidNativeIndex(index)) { |
return Api::NewError( |
@@ -5207,22 +5061,19 @@ DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url, |
Dart_Handle source, |
intptr_t line_offset, |
intptr_t column_offset) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_script_loading); |
- const String& url_str = Api::UnwrapStringHandle(isolate, url); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_script_loading); |
+ const String& url_str = Api::UnwrapStringHandle(I, url); |
if (url_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, url, String); |
+ RETURN_TYPE_ERROR(I, url, String); |
} |
- const String& source_str = Api::UnwrapStringHandle(isolate, source); |
+ const String& source_str = Api::UnwrapStringHandle(I, source); |
if (source_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, source, String); |
+ RETURN_TYPE_ERROR(I, source, String); |
} |
- Library& library = |
- Library::Handle(isolate, isolate->object_store()->root_library()); |
+ Library& library = Library::Handle(Z, I->object_store()->root_library()); |
if (!library.IsNull()) { |
- const String& library_url = String::Handle(isolate, library.url()); |
+ const String& library_url = String::Handle(Z, library.url()); |
return Api::NewError("%s: A script has already been loaded from '%s'.", |
CURRENT_FUNC, library_url.ToCString()); |
} |
@@ -5234,31 +5085,29 @@ DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url, |
return Api::NewError("%s: argument 'column_offset' must be positive number", |
CURRENT_FUNC); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
NoHeapGrowthControlScope no_growth_control; |
library = Library::New(url_str); |
library.set_debuggable(true); |
library.Register(); |
- isolate->object_store()->set_root_library(library); |
+ I->object_store()->set_root_library(library); |
- const Script& script = Script::Handle( |
- isolate, Script::New(url_str, source_str, RawScript::kScriptTag)); |
+ const Script& script = Script::Handle(Z, |
+ Script::New(url_str, source_str, RawScript::kScriptTag)); |
script.SetLocationOffset(line_offset, column_offset); |
Dart_Handle result; |
- CompileSource(isolate, library, script, &result); |
+ CompileSource(I, library, script, &result); |
return result; |
} |
DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, |
intptr_t buffer_len) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_script_loading); |
- StackZone zone(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_script_loading); |
+ StackZone zone(T); |
if (buffer == NULL) { |
RETURN_NULL_ERROR(buffer); |
} |
@@ -5274,28 +5123,24 @@ DART_EXPORT Dart_Handle Dart_LoadScriptFromSnapshot(const uint8_t* buffer, |
" which is the expected length in the snapshot.", |
CURRENT_FUNC, buffer_len, snapshot->length()); |
} |
- Library& library = |
- Library::Handle(isolate, isolate->object_store()->root_library()); |
+ Library& library = Library::Handle(Z, I->object_store()->root_library()); |
if (!library.IsNull()) { |
- const String& library_url = String::Handle(isolate, library.url()); |
+ const String& library_url = String::Handle(Z, library.url()); |
return Api::NewError("%s: A script has already been loaded from '%s'.", |
CURRENT_FUNC, library_url.ToCString()); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
ASSERT(snapshot->kind() == Snapshot::kScript); |
- ScriptSnapshotReader reader(snapshot->content(), |
- snapshot->length(), |
- isolate, |
- zone.GetZone()); |
- const Object& tmp = Object::Handle(isolate, reader.ReadScriptSnapshot()); |
+ ScriptSnapshotReader reader(snapshot->content(), snapshot->length(), T); |
+ const Object& tmp = Object::Handle(Z, reader.ReadScriptSnapshot()); |
if (tmp.IsError()) { |
- return Api::NewHandle(isolate, tmp.raw()); |
+ return Api::NewHandle(I, tmp.raw()); |
} |
library ^= tmp.raw(); |
library.set_debuggable(true); |
- isolate->object_store()->set_root_library(library); |
- return Api::NewHandle(isolate, library.raw()); |
+ I->object_store()->set_root_library(library); |
+ return Api::NewHandle(I, library.raw()); |
} |
@@ -5308,25 +5153,23 @@ DART_EXPORT Dart_Handle Dart_RootLibrary() { |
DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library, |
Dart_Handle class_name) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ DARTSCOPE(Thread::Current()); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
- const String& cls_name = Api::UnwrapStringHandle(isolate, class_name); |
+ const String& cls_name = Api::UnwrapStringHandle(I, class_name); |
if (cls_name.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, class_name, String); |
+ RETURN_TYPE_ERROR(I, class_name, String); |
} |
- const Class& cls = Class::Handle( |
- isolate, lib.LookupClassAllowPrivate(cls_name)); |
+ const Class& cls = Class::Handle(Z, lib.LookupClassAllowPrivate(cls_name)); |
if (cls.IsNull()) { |
// TODO(turnidge): Return null or error in this case? |
- const String& lib_name = String::Handle(isolate, lib.name()); |
+ const String& lib_name = String::Handle(Z, lib.name()); |
return Api::NewError("Class '%s' not found in library '%s'.", |
cls_name.ToCString(), lib_name.ToCString()); |
} |
- return Api::NewHandle(isolate, cls.RareType()); |
+ return Api::NewHandle(I, cls.RareType()); |
} |
@@ -5334,27 +5177,25 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library, |
Dart_Handle class_name, |
intptr_t number_of_type_arguments, |
Dart_Handle* type_arguments) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
// Validate the input arguments. |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
if (!lib.Loaded()) { |
return Api::NewError( |
"%s expects library argument 'library' to be loaded.", |
CURRENT_FUNC); |
} |
- const String& name_str = Api::UnwrapStringHandle(isolate, class_name); |
+ const String& name_str = Api::UnwrapStringHandle(I, class_name); |
if (name_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, class_name, String); |
+ RETURN_TYPE_ERROR(I, class_name, String); |
} |
- const Class& cls = |
- Class::Handle(isolate, lib.LookupClassAllowPrivate(name_str)); |
+ const Class& cls = Class::Handle(Z, lib.LookupClassAllowPrivate(name_str)); |
if (cls.IsNull()) { |
- const String& lib_name = String::Handle(isolate, lib.name()); |
+ const String& lib_name = String::Handle(Z, lib.name()); |
return Api::NewError("Type '%s' not found in library '%s'.", |
name_str.ToCString(), lib_name.ToCString()); |
} |
@@ -5363,7 +5204,7 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library, |
return Api::NewError("Invalid number of type arguments specified, " |
"got %" Pd " expected 0", number_of_type_arguments); |
} |
- return Api::NewHandle(isolate, Type::NewNonParameterizedType(cls)); |
+ return Api::NewHandle(I, Type::NewNonParameterizedType(cls)); |
} |
intptr_t num_expected_type_arguments = cls.NumTypeParameters(); |
TypeArguments& type_args_obj = TypeArguments::Handle(); |
@@ -5377,9 +5218,9 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library, |
number_of_type_arguments, |
num_expected_type_arguments); |
} |
- const Array& array = Api::UnwrapArrayHandle(isolate, *type_arguments); |
+ const Array& array = Api::UnwrapArrayHandle(I, *type_arguments); |
if (array.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, *type_arguments, Array); |
+ RETURN_TYPE_ERROR(I, *type_arguments, Array); |
} |
if (array.Length() != num_expected_type_arguments) { |
return Api::NewError("Invalid type arguments specified, expected an " |
@@ -5401,59 +5242,55 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library, |
Type::New(cls, type_args_obj, Scanner::kNoSourcePos)); |
instantiated_type ^= ClassFinalizer::FinalizeType( |
cls, instantiated_type, ClassFinalizer::kCanonicalize); |
- return Api::NewHandle(isolate, instantiated_type.raw()); |
+ return Api::NewHandle(I, instantiated_type.raw()); |
} |
DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ DARTSCOPE(Thread::Current()); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
- const String& url = String::Handle(isolate, lib.url()); |
+ const String& url = String::Handle(Z, lib.url()); |
ASSERT(!url.IsNull()); |
- return Api::NewHandle(isolate, url.raw()); |
+ return Api::NewHandle(I, url.raw()); |
} |
DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const String& url_str = Api::UnwrapStringHandle(isolate, url); |
+ DARTSCOPE(Thread::Current()); |
+ const String& url_str = Api::UnwrapStringHandle(I, url); |
if (url_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, url, String); |
+ RETURN_TYPE_ERROR(I, url, String); |
} |
- const Library& library = |
- Library::Handle(isolate, Library::LookupLibrary(url_str)); |
+ const Library& library = Library::Handle(Z, Library::LookupLibrary(url_str)); |
if (library.IsNull()) { |
return Api::NewError("%s: library '%s' not found.", |
CURRENT_FUNC, url_str.ToCString()); |
} else { |
- return Api::NewHandle(isolate, library.raw()); |
+ return Api::NewHandle(I, library.raw()); |
} |
} |
DART_EXPORT Dart_Handle Dart_LibraryHandleError(Dart_Handle library_in, |
Dart_Handle error_in) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library_in); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library_in); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library_in, Library); |
+ RETURN_TYPE_ERROR(I, library_in, Library); |
} |
- const Instance& err = Api::UnwrapInstanceHandle(isolate, error_in); |
+ const Instance& err = Api::UnwrapInstanceHandle(I, error_in); |
if (err.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, error_in, Instance); |
+ RETURN_TYPE_ERROR(I, error_in, Instance); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
const GrowableObjectArray& pending_deferred_loads = |
- GrowableObjectArray::Handle( |
- isolate->object_store()->pending_deferred_loads()); |
+ GrowableObjectArray::Handle(Z, |
+ I->object_store()->pending_deferred_loads()); |
for (intptr_t i = 0; i < pending_deferred_loads.Length(); i++) { |
if (pending_deferred_loads.At(i) == lib.raw()) { |
lib.SetLoadError(err); |
@@ -5468,17 +5305,15 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, |
Dart_Handle source, |
intptr_t line_offset, |
intptr_t column_offset) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_script_loading); |
- const String& url_str = Api::UnwrapStringHandle(isolate, url); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_script_loading); |
+ const String& url_str = Api::UnwrapStringHandle(I, url); |
if (url_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, url, String); |
+ RETURN_TYPE_ERROR(I, url, String); |
} |
- const String& source_str = Api::UnwrapStringHandle(isolate, source); |
+ const String& source_str = Api::UnwrapStringHandle(I, source); |
if (source_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, source, String); |
+ RETURN_TYPE_ERROR(I, source, String); |
} |
if (line_offset < 0) { |
return Api::NewError("%s: argument 'line_offset' must be positive number", |
@@ -5488,11 +5323,11 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, |
return Api::NewError("%s: argument 'column_offset' must be positive number", |
CURRENT_FUNC); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
NoHeapGrowthControlScope no_growth_control; |
- Library& library = Library::Handle(isolate, Library::LookupLibrary(url_str)); |
+ Library& library = Library::Handle(Z, Library::LookupLibrary(url_str)); |
if (library.IsNull()) { |
library = Library::New(url_str); |
library.Register(); |
@@ -5504,11 +5339,11 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, |
return Api::NewError("%s: library '%s' has already been loaded.", |
CURRENT_FUNC, url_str.ToCString()); |
} |
- const Script& script = Script::Handle( |
- isolate, Script::New(url_str, source_str, RawScript::kLibraryTag)); |
+ const Script& script = Script::Handle(Z, |
+ Script::New(url_str, source_str, RawScript::kLibraryTag)); |
script.SetLocationOffset(line_offset, column_offset); |
Dart_Handle result; |
- CompileSource(isolate, library, script, &result); |
+ CompileSource(I, library, script, &result); |
// Propagate the error out right now. |
if (::Dart_IsError(result)) { |
return result; |
@@ -5516,8 +5351,8 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, |
// If this is the dart:_builtin library, register it with the VM. |
if (url_str.Equals("dart:_builtin")) { |
- isolate->object_store()->set_builtin_library(library); |
- Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate); |
+ I->object_store()->set_builtin_library(library); |
+ Dart_Handle state = Api::CheckAndFinalizePendingClasses(I); |
if (::Dart_IsError(state)) { |
return state; |
} |
@@ -5529,29 +5364,26 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, |
DART_EXPORT Dart_Handle Dart_LibraryImportLibrary(Dart_Handle library, |
Dart_Handle import, |
Dart_Handle prefix) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Library& library_vm = Api::UnwrapLibraryHandle(isolate, library); |
+ DARTSCOPE(Thread::Current()); |
+ const Library& library_vm = Api::UnwrapLibraryHandle(I, library); |
if (library_vm.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
- const Library& import_vm = Api::UnwrapLibraryHandle(isolate, import); |
+ const Library& import_vm = Api::UnwrapLibraryHandle(I, import); |
if (import_vm.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, import, Library); |
+ RETURN_TYPE_ERROR(I, import, Library); |
} |
- const Object& prefix_object = |
- Object::Handle(isolate, Api::UnwrapHandle(prefix)); |
+ const Object& prefix_object = Object::Handle(Z, Api::UnwrapHandle(prefix)); |
const String& prefix_vm = prefix_object.IsNull() |
? Symbols::Empty() |
: String::Cast(prefix_object); |
if (prefix_vm.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, prefix, String); |
+ RETURN_TYPE_ERROR(I, prefix, String); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
- const String& prefix_symbol = |
- String::Handle(isolate, Symbols::New(prefix_vm)); |
- const Namespace& import_ns = Namespace::Handle( |
+ const String& prefix_symbol = String::Handle(Z, Symbols::New(prefix_vm)); |
+ const Namespace& import_ns = Namespace::Handle(Z, |
Namespace::New(import_vm, Object::null_array(), Object::null_array())); |
if (prefix_vm.Length() == 0) { |
library_vm.AddImport(import_ns); |
@@ -5575,21 +5407,19 @@ DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library, |
Dart_Handle source, |
intptr_t line_offset, |
intptr_t column_offset) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_script_loading); |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_script_loading); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
- const String& url_str = Api::UnwrapStringHandle(isolate, url); |
+ const String& url_str = Api::UnwrapStringHandle(I, url); |
if (url_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, url, String); |
+ RETURN_TYPE_ERROR(I, url, String); |
} |
- const String& source_str = Api::UnwrapStringHandle(isolate, source); |
+ const String& source_str = Api::UnwrapStringHandle(I, source); |
if (source_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, source, String); |
+ RETURN_TYPE_ERROR(I, source, String); |
} |
if (line_offset < 0) { |
return Api::NewError("%s: argument 'line_offset' must be positive number", |
@@ -5599,15 +5429,15 @@ DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library, |
return Api::NewError("%s: argument 'column_offset' must be positive number", |
CURRENT_FUNC); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
NoHeapGrowthControlScope no_growth_control; |
- const Script& script = Script::Handle( |
- isolate, Script::New(url_str, source_str, RawScript::kSourceTag)); |
+ const Script& script = Script::Handle(Z, |
+ Script::New(url_str, source_str, RawScript::kSourceTag)); |
script.SetLocationOffset(line_offset, column_offset); |
Dart_Handle result; |
- CompileSource(isolate, lib, script, &result); |
+ CompileSource(I, lib, script, &result); |
return result; |
} |
@@ -5615,30 +5445,28 @@ DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library, |
DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library, |
Dart_Handle url, |
Dart_Handle patch_source) { |
- Thread* thread = Thread::Current(); |
- Isolate* isolate = thread->isolate(); |
- DARTSCOPE(isolate); |
- TIMERSCOPE(thread, time_script_loading); |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ DARTSCOPE(Thread::Current()); |
+ TIMERSCOPE(T, time_script_loading); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
- const String& url_str = Api::UnwrapStringHandle(isolate, url); |
+ const String& url_str = Api::UnwrapStringHandle(I, url); |
if (url_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, url, String); |
+ RETURN_TYPE_ERROR(I, url, String); |
} |
- const String& source_str = Api::UnwrapStringHandle(isolate, patch_source); |
+ const String& source_str = Api::UnwrapStringHandle(I, patch_source); |
if (source_str.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, patch_source, String); |
+ RETURN_TYPE_ERROR(I, patch_source, String); |
} |
- CHECK_CALLBACK_STATE(isolate); |
+ CHECK_CALLBACK_STATE(I); |
NoHeapGrowthControlScope no_growth_control; |
- const Script& script = Script::Handle( |
- isolate, Script::New(url_str, source_str, RawScript::kPatchTag)); |
+ const Script& script = Script::Handle(Z, |
+ Script::New(url_str, source_str, RawScript::kPatchTag)); |
Dart_Handle result; |
- CompileSource(isolate, lib, script, &result); |
+ CompileSource(I, lib, script, &result); |
return result; |
} |
@@ -5646,17 +5474,16 @@ DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library, |
// Finalizes classes and invokes Dart core library function that completes |
// futures of loadLibrary calls (deferred library loading). |
DART_EXPORT Dart_Handle Dart_FinalizeLoading(bool complete_futures) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- CHECK_CALLBACK_STATE(isolate); |
+ DARTSCOPE(Thread::Current()); |
+ CHECK_CALLBACK_STATE(I); |
- isolate->DoneLoading(); |
+ I->DoneLoading(); |
// TODO(hausner): move the remaining code below (finalization and |
// invoing of _completeDeferredLoads) into Isolate::DoneLoading(). |
// Finalize all classes if needed. |
- Dart_Handle state = Api::CheckAndFinalizePendingClasses(isolate); |
+ Dart_Handle state = Api::CheckAndFinalizePendingClasses(I); |
if (::Dart_IsError(state)) { |
return state; |
} |
@@ -5666,31 +5493,29 @@ DART_EXPORT Dart_Handle Dart_FinalizeLoading(bool complete_futures) { |
// the new code, the debugger convert them to unresolved source breakpoints. |
// The code that completes the futures (invoked below) may call into the |
// newly loaded code and trigger one of these breakpoints. |
- isolate->debugger()->NotifyDoneLoading(); |
+ I->debugger()->NotifyDoneLoading(); |
// Notify mirrors that MirrorSystem.libraries needs to be recomputed. |
- const Library& libmirrors = |
- Library::Handle(isolate, Library::MirrorsLibrary()); |
- const Field& dirty_bit = Field::Handle(isolate, |
+ const Library& libmirrors = Library::Handle(Z, Library::MirrorsLibrary()); |
+ const Field& dirty_bit = Field::Handle(Z, |
libmirrors.LookupLocalField(String::Handle(String::New("dirty")))); |
ASSERT(!dirty_bit.IsNull() && dirty_bit.is_static()); |
dirty_bit.set_value(Bool::True()); |
if (complete_futures) { |
- const Library& corelib = Library::Handle(isolate, Library::CoreLibrary()); |
+ const Library& corelib = Library::Handle(Z, Library::CoreLibrary()); |
const String& function_name = |
- String::Handle(isolate, String::New("_completeDeferredLoads")); |
- const Function& function = |
- Function::Handle(isolate, |
- corelib.LookupFunctionAllowPrivate(function_name)); |
+ String::Handle(Z, String::New("_completeDeferredLoads")); |
+ const Function& function = Function::Handle(Z, |
+ corelib.LookupFunctionAllowPrivate(function_name)); |
ASSERT(!function.IsNull()); |
const Array& args = Array::empty_array(); |
const Object& res = |
- Object::Handle(isolate, DartEntry::InvokeFunction(function, args)); |
- isolate->object_store()->clear_pending_deferred_loads(); |
+ Object::Handle(Z, DartEntry::InvokeFunction(function, args)); |
+ I->object_store()->clear_pending_deferred_loads(); |
if (res.IsError() || res.IsUnhandledException()) { |
- return Api::NewHandle(isolate, res.raw()); |
+ return Api::NewHandle(I, res.raw()); |
} |
} |
return Api::Success(); |
@@ -5701,11 +5526,10 @@ DART_EXPORT Dart_Handle Dart_SetNativeResolver( |
Dart_Handle library, |
Dart_NativeEntryResolver resolver, |
Dart_NativeEntrySymbol symbol) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
- const Library& lib = Api::UnwrapLibraryHandle(isolate, library); |
+ DARTSCOPE(Thread::Current()); |
+ const Library& lib = Api::UnwrapLibraryHandle(I, library); |
if (lib.IsNull()) { |
- RETURN_TYPE_ERROR(isolate, library, Library); |
+ RETURN_TYPE_ERROR(I, library, Library); |
} |
lib.set_native_entry_resolver(resolver); |
lib.set_native_entry_symbol_resolver(symbol); |
@@ -5827,8 +5651,7 @@ DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id, |
const char* event_kind, |
const uint8_t* bytes, |
intptr_t bytes_length) { |
- Isolate* isolate = Isolate::Current(); |
- DARTSCOPE(isolate); |
+ DARTSCOPE(Thread::Current()); |
if (stream_id == NULL) { |
RETURN_NULL_ERROR(stream_id); |
} |
@@ -5842,7 +5665,7 @@ DART_EXPORT Dart_Handle Dart_ServiceSendDataEvent(const char* stream_id, |
return Api::NewError("%s expects argument 'bytes_length' to be >= 0.", |
CURRENT_FUNC); |
} |
- Service::SendEmbedderEvent(isolate, stream_id, event_kind, |
+ Service::SendEmbedderEvent(I, stream_id, event_kind, |
bytes, bytes_length); |
return Api::Success(); |
} |