Index: runtime/vm/dart_api_impl.cc |
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc |
index d56cb0f5b8f25948cdb9a5fc6ab1244c0a2fd909..42ec49c3d302d6e69ce5f87975528872f57c1da5 100644 |
--- a/runtime/vm/dart_api_impl.cc |
+++ b/runtime/vm/dart_api_impl.cc |
@@ -120,7 +120,7 @@ static bool GetNativeStringArgument(NativeArguments* arguments, |
*str = NULL; |
return true; |
} |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
*peer = NULL; |
REUSABLE_OBJECT_HANDLESCOPE(isolate); |
@@ -147,7 +147,7 @@ static bool GetNativeIntegerArgument(NativeArguments* arguments, |
if (Api::GetNativeIntegerArgument(arguments, arg_index, value)) { |
return true; |
} |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
REUSABLE_OBJECT_HANDLESCOPE(isolate); |
Object& obj = isolate->ObjectHandle(); |
@@ -173,7 +173,7 @@ static bool GetNativeUnsignedIntegerArgument(NativeArguments* arguments, |
*value = static_cast<uint64_t>(arg_value); |
return true; |
} |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
REUSABLE_OBJECT_HANDLESCOPE(isolate); |
Object& obj = isolate->ObjectHandle(); |
@@ -197,7 +197,7 @@ static bool GetNativeDoubleArgument(NativeArguments* arguments, |
if (Api::GetNativeDoubleArgument(arguments, arg_index, value)) { |
return true; |
} |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
REUSABLE_OBJECT_HANDLESCOPE(isolate); |
Object& obj = isolate->ObjectHandle(); |
@@ -223,7 +223,7 @@ static Dart_Handle GetNativeFieldsOfArgument(NativeArguments* arguments, |
field_values)) { |
return Api::Success(); |
} |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
REUSABLE_OBJECT_HANDLESCOPE(isolate); |
Object& obj = isolate->ObjectHandle(); |
@@ -488,7 +488,7 @@ bool Api::StringGetPeerHelper(NativeArguments* arguments, |
return true; |
} |
if (cid == kOneByteStringCid || cid == kTwoByteStringCid) { |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
*peer = isolate->heap()->GetPeer(raw_obj); |
return (*peer != 0); |
} |
@@ -2707,7 +2707,8 @@ static RawObject* ResolveConstructor(const char* current_func, |
static RawObject* ThrowArgumentError(const char* exception_message) { |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
// Lookup the class ArgumentError in dart:core. |
const String& lib_url = String::Handle(String::New("dart:core")); |
const String& class_name = String::Handle(String::New("ArgumentError")); |
@@ -2765,7 +2766,7 @@ static RawObject* ThrowArgumentError(const char* exception_message) { |
state->UnwindScopes(isolate->top_exit_frame_info()); |
saved_exception = &Instance::Handle(raw_exception); |
} |
- Exceptions::Throw(isolate, *saved_exception); |
+ Exceptions::Throw(thread, *saved_exception); |
const String& message = String::Handle( |
String::New("Exception was not thrown, internal error")); |
return ApiError::New(message); |
@@ -4437,7 +4438,8 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container, |
// --- Exceptions ---- |
DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) { |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
CHECK_CALLBACK_STATE(isolate); |
{ |
@@ -4464,14 +4466,15 @@ DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) { |
state->UnwindScopes(isolate->top_exit_frame_info()); |
saved_exception = &Instance::Handle(raw_exception); |
} |
- Exceptions::Throw(isolate, *saved_exception); |
+ Exceptions::Throw(thread, *saved_exception); |
return Api::NewError("Exception was not thrown, internal error"); |
} |
DART_EXPORT Dart_Handle Dart_ReThrowException(Dart_Handle exception, |
Dart_Handle stacktrace) { |
- Isolate* isolate = Isolate::Current(); |
+ Thread* thread = Thread::Current(); |
+ Isolate* isolate = thread->isolate(); |
CHECK_ISOLATE(isolate); |
CHECK_CALLBACK_STATE(isolate); |
{ |
@@ -4506,7 +4509,7 @@ DART_EXPORT Dart_Handle Dart_ReThrowException(Dart_Handle exception, |
saved_exception = &Instance::Handle(raw_exception); |
saved_stacktrace = &Stacktrace::Handle(raw_stacktrace); |
} |
- Exceptions::ReThrow(isolate, *saved_exception, *saved_stacktrace); |
+ Exceptions::ReThrow(thread, *saved_exception, *saved_stacktrace); |
return Api::NewError("Exception was not re thrown, internal error"); |
} |
@@ -4598,7 +4601,7 @@ DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj, |
DART_EXPORT void* Dart_GetNativeIsolateData(Dart_NativeArguments args) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
return isolate->init_callback_data(); |
} |
@@ -4610,7 +4613,7 @@ DART_EXPORT Dart_Handle Dart_GetNativeArguments( |
const Dart_NativeArgument_Descriptor* argument_descriptors, |
Dart_NativeArgument_Value* arg_values) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
- ASSERT(arguments->isolate() == Isolate::Current()); |
+ ASSERT(arguments->thread()->isolate() == Isolate::Current()); |
if (arg_values == NULL) { |
RETURN_NULL_ERROR(arg_values); |
} |
@@ -4720,7 +4723,7 @@ DART_EXPORT Dart_Handle Dart_GetNativeArguments( |
} |
case Dart_NativeArgument_kInstance: { |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
ASSERT(isolate->api_state() && |
isolate->api_state()->top_scope() != NULL); |
@@ -4747,7 +4750,8 @@ DART_EXPORT Dart_Handle Dart_GetNativeArgument(Dart_NativeArguments args, |
"%s: argument 'index' out of range. Expected 0..%d but saw %d.", |
CURRENT_FUNC, arguments->NativeArgCount() - 1, index); |
} |
- return Api::NewHandle(arguments->isolate(), arguments->NativeArgAt(index)); |
+ return Api::NewHandle(arguments->thread()->isolate(), |
+ arguments->NativeArgAt(index)); |
} |
@@ -4783,7 +4787,7 @@ DART_EXPORT Dart_Handle Dart_GetNativeFieldsOfArgument( |
DART_EXPORT Dart_Handle Dart_GetNativeReceiver(Dart_NativeArguments args, |
intptr_t* value) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
- ASSERT(arguments->isolate() == Isolate::Current()); |
+ ASSERT(arguments->thread()->isolate() == Isolate::Current()); |
if (value == NULL) { |
RETURN_NULL_ERROR(value); |
} |
@@ -4865,7 +4869,7 @@ DART_EXPORT Dart_Handle Dart_GetNativeDoubleArgument(Dart_NativeArguments args, |
DART_EXPORT void Dart_SetReturnValue(Dart_NativeArguments args, |
Dart_Handle retval) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
- ASSERT(arguments->isolate() == Isolate::Current()); |
+ ASSERT(arguments->thread()->isolate() == Isolate::Current()); |
if ((retval != Api::Null()) && (!Api::IsInstance(retval))) { |
const Object& ret_obj = Object::Handle(Api::UnwrapHandle(retval)); |
FATAL1("Return value check failed: saw '%s' expected a dart Instance.", |
@@ -4880,7 +4884,7 @@ DART_EXPORT void Dart_SetWeakHandleReturnValue(Dart_NativeArguments args, |
Dart_WeakPersistentHandle rval) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
#if defined(DEBUG) |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
ASSERT(isolate->api_state() != NULL && |
(isolate->api_state()->IsValidWeakPersistentHandle(rval) || |
@@ -4944,12 +4948,12 @@ DART_EXPORT void Dart_SetBooleanReturnValue(Dart_NativeArguments args, |
DART_EXPORT void Dart_SetIntegerReturnValue(Dart_NativeArguments args, |
int64_t retval) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
- ASSERT(arguments->isolate() == Isolate::Current()); |
+ ASSERT(arguments->thread()->isolate() == Isolate::Current()); |
if (Smi::IsValid(retval)) { |
Api::SetSmiReturnValue(arguments, static_cast<intptr_t>(retval)); |
} else { |
// Slow path for Mints and Bigints. |
- ASSERT_CALLBACK_STATE(arguments->isolate()); |
+ ASSERT_CALLBACK_STATE(arguments->thread()->isolate()); |
Api::SetIntegerReturnValue(arguments, retval); |
} |
} |
@@ -4959,7 +4963,7 @@ DART_EXPORT void Dart_SetDoubleReturnValue(Dart_NativeArguments args, |
double retval) { |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
#if defined(DEBUG) |
- Isolate* isolate = arguments->isolate(); |
+ Isolate* isolate = arguments->thread()->isolate(); |
ASSERT(isolate == Isolate::Current()); |
ASSERT_CALLBACK_STATE(isolate); |
#endif |