Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(963)

Unified Diff: runtime/vm/dart_api_impl.cc

Issue 1401643002: Remove isolate parameter when allocating handles (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Sync Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/dart_api_impl.h ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/dart_api_impl.cc
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index e434f08cd16d702fc2e99eb2e77386f9c465121e..78f107a467c08e164bbda7fd7c1f9cac93e5a4f2 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -85,11 +85,11 @@ const char* CanonicalFunction(const char* func) {
// or not. An assertion is raised if a type is not canonicalized.
class FunctionVisitor : public ObjectVisitor {
public:
- explicit FunctionVisitor(Isolate* isolate) :
- ObjectVisitor(isolate),
- classHandle_(Class::Handle(isolate)),
- funcHandle_(Function::Handle(isolate)),
- typeHandle_(AbstractType::Handle(isolate)) {}
+ explicit FunctionVisitor(Thread* thread) :
+ ObjectVisitor(thread->isolate()),
+ classHandle_(Class::Handle(thread->zone())),
+ funcHandle_(Function::Handle(thread->zone())),
+ typeHandle_(AbstractType::Handle(thread->zone())) {}
void VisitObject(RawObject* obj) {
if (obj->IsFunction()) {
@@ -397,13 +397,13 @@ RawObject* Api::UnwrapHandle(Dart_Handle object) {
#define DEFINE_UNWRAP(type) \
- const type& Api::Unwrap##type##Handle(Isolate* iso, \
+ const type& Api::Unwrap##type##Handle(Zone* zone, \
Dart_Handle dart_handle) { \
- const Object& obj = Object::Handle(iso, Api::UnwrapHandle(dart_handle)); \
+ const Object& obj = Object::Handle(zone, Api::UnwrapHandle(dart_handle)); \
if (obj.Is##type()) { \
return type::Cast(obj); \
} \
- return type::Handle(iso); \
+ return type::Handle(zone ); \
}
CLASS_LIST_FOR_HANDLES(DEFINE_UNWRAP)
#undef DEFINE_UNWRAP
@@ -830,9 +830,9 @@ DART_EXPORT Dart_Handle Dart_NewUnhandledExceptionError(Dart_Handle exception) {
if ((class_id == kApiErrorCid) || (class_id == kLanguageErrorCid)) {
obj = String::New(::Dart_GetError(exception));
} else {
- obj = Api::UnwrapInstanceHandle(I, exception).raw();
+ obj = Api::UnwrapInstanceHandle(Z, exception).raw();
if (obj.IsNull()) {
- RETURN_TYPE_ERROR(I, exception, Instance);
+ RETURN_TYPE_ERROR(Z, exception, Instance);
}
}
const Stacktrace& stacktrace = Stacktrace::Handle(Z);
@@ -841,9 +841,11 @@ DART_EXPORT Dart_Handle Dart_NewUnhandledExceptionError(Dart_Handle exception) {
DART_EXPORT Dart_Handle Dart_PropagateError(Dart_Handle handle) {
- Isolate* isolate = Isolate::Current();
+ Thread* thread = Thread::Current();
+ Isolate* isolate = thread->isolate();
{
- const Object& obj = Object::Handle(isolate, Api::UnwrapHandle(handle));
+ const Object& obj = Object::Handle(thread->zone(),
+ Api::UnwrapHandle(handle));
if (!obj.IsError()) {
return Api::NewError(
"%s expects argument 'handle' to be an error handle. "
@@ -867,9 +869,11 @@ DART_EXPORT Dart_Handle Dart_PropagateError(Dart_Handle handle) {
// that GC won't touch the raw error object before creating a valid
// handle for it in the surviving zone.
NoSafepointScope no_safepoint;
- RawError* raw_error = Api::UnwrapErrorHandle(isolate, handle).raw();
+ RawError* raw_error = Api::UnwrapErrorHandle(thread->zone(), handle).raw();
state->UnwindScopes(isolate->top_exit_frame_info());
- error = &Error::Handle(isolate, raw_error);
+ // Note that thread's zone is different here than at the beginning of this
+ // function.
+ error = &Error::Handle(thread->zone(), raw_error);
}
Exceptions::PropagateError(*error);
UNREACHABLE();
@@ -1530,7 +1534,7 @@ DART_EXPORT Dart_Handle Dart_CreateSnapshot(
}
I->heap()->CollectAllGarbage();
#if defined(DEBUG)
- FunctionVisitor check_canonical(I);
+ FunctionVisitor check_canonical(T);
I->heap()->IterateObjects(&check_canonical);
#endif // #if defined(DEBUG).
@@ -1572,7 +1576,7 @@ static Dart_Handle createLibrarySnapshot(Dart_Handle library,
}
I->heap()->CollectAllGarbage();
#if defined(DEBUG)
- FunctionVisitor check_canonical(I);
+ FunctionVisitor check_canonical(T);
I->heap()->IterateObjects(&check_canonical);
#endif // #if defined(DEBUG).
ScriptSnapshotWriter writer(buffer, ApiReallocate);
@@ -1757,9 +1761,9 @@ DART_EXPORT Dart_Handle Dart_SendPortGetId(Dart_Handle port,
Dart_Port* port_id) {
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const SendPort& send_port = Api::UnwrapSendPortHandle(I, port);
+ const SendPort& send_port = Api::UnwrapSendPortHandle(Z, port);
if (send_port.IsNull()) {
- RETURN_TYPE_ERROR(I, port, SendPort);
+ RETURN_TYPE_ERROR(Z, port, SendPort);
}
if (port_id == NULL) {
RETURN_NULL_ERROR(port_id);
@@ -1882,10 +1886,10 @@ DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object,
bool* value) {
DARTSCOPE(Thread::Current());
- const Type& type_obj = Api::UnwrapTypeHandle(I, type);
+ const Type& type_obj = Api::UnwrapTypeHandle(Z, type);
if (type_obj.IsNull()) {
*value = false;
- RETURN_TYPE_ERROR(I, type, Type);
+ RETURN_TYPE_ERROR(Z, type, Type);
}
if (!type_obj.IsFinalized()) {
return Api::NewError(
@@ -1896,10 +1900,10 @@ DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object,
*value = false;
return Api::Success();
}
- const Instance& instance = Api::UnwrapInstanceHandle(I, object);
+ const Instance& instance = Api::UnwrapInstanceHandle(Z, object);
if (instance.IsNull()) {
*value = false;
- RETURN_TYPE_ERROR(I, object, Instance);
+ RETURN_TYPE_ERROR(Z, object, Instance);
}
CHECK_CALLBACK_STATE(I);
Error& malformed_type_error = Error::Handle(Z);
@@ -2069,7 +2073,7 @@ DART_EXPORT Dart_Handle Dart_InstanceGetType(Dart_Handle instance) {
return Api::NewHandle(I, I->object_store()->null_type());
}
if (!obj.IsInstance()) {
- RETURN_TYPE_ERROR(I, instance, Instance);
+ RETURN_TYPE_ERROR(Z, instance, Instance);
}
const Type& type = Type::Handle(Instance::Cast(obj).GetType());
return Api::NewHandle(I, type.Canonicalize());
@@ -2091,9 +2095,9 @@ DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer,
}
// Slow path for Mints and Bigints.
DARTSCOPE(thread);
- const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer);
+ const Integer& int_obj = Api::UnwrapIntegerHandle(Z, integer);
if (int_obj.IsNull()) {
- RETURN_TYPE_ERROR(isolate, integer, Integer);
+ RETURN_TYPE_ERROR(Z, integer, Integer);
}
ASSERT(!Bigint::Cast(int_obj).FitsIntoInt64());
*fits = false;
@@ -2113,9 +2117,9 @@ DART_EXPORT Dart_Handle Dart_IntegerFitsIntoUint64(Dart_Handle integer,
}
// Slow path for Mints and Bigints.
DARTSCOPE(thread);
- const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer);
+ const Integer& int_obj = Api::UnwrapIntegerHandle(Z, integer);
if (int_obj.IsNull()) {
- RETURN_TYPE_ERROR(isolate, integer, Integer);
+ RETURN_TYPE_ERROR(Z, integer, Integer);
}
ASSERT(!int_obj.IsSmi());
if (int_obj.IsMint()) {
@@ -2170,9 +2174,9 @@ DART_EXPORT Dart_Handle Dart_IntegerToInt64(Dart_Handle integer,
}
// Slow path for Mints and Bigints.
DARTSCOPE(thread);
- const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer);
+ const Integer& int_obj = Api::UnwrapIntegerHandle(Z, integer);
if (int_obj.IsNull()) {
- RETURN_TYPE_ERROR(isolate, integer, Integer);
+ RETURN_TYPE_ERROR(Z, integer, Integer);
}
ASSERT(!int_obj.IsSmi());
if (int_obj.IsMint()) {
@@ -2205,9 +2209,9 @@ DART_EXPORT Dart_Handle Dart_IntegerToUint64(Dart_Handle integer,
}
// Slow path for Mints and Bigints.
DARTSCOPE(thread);
- const Integer& int_obj = Api::UnwrapIntegerHandle(isolate, integer);
+ const Integer& int_obj = Api::UnwrapIntegerHandle(Z, integer);
if (int_obj.IsNull()) {
- RETURN_TYPE_ERROR(isolate, integer, Integer);
+ RETURN_TYPE_ERROR(Z, integer, Integer);
}
if (int_obj.IsSmi()) {
ASSERT(int_obj.IsNegative());
@@ -2234,9 +2238,9 @@ static uword BigintAllocate(intptr_t size) {
DART_EXPORT Dart_Handle Dart_IntegerToHexCString(Dart_Handle integer,
const char** value) {
DARTSCOPE(Thread::Current());
- const Integer& int_obj = Api::UnwrapIntegerHandle(I, integer);
+ const Integer& int_obj = Api::UnwrapIntegerHandle(Z, integer);
if (int_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, integer, Integer);
+ RETURN_TYPE_ERROR(Z, integer, Integer);
}
if (int_obj.IsSmi() || int_obj.IsMint()) {
const Bigint& bigint = Bigint::Handle(Z,
@@ -2259,9 +2263,9 @@ DART_EXPORT Dart_Handle Dart_NewDouble(double value) {
DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle double_obj,
double* value) {
DARTSCOPE(Thread::Current());
- const Double& obj = Api::UnwrapDoubleHandle(I, double_obj);
+ const Double& obj = Api::UnwrapDoubleHandle(Z, double_obj);
if (obj.IsNull()) {
- RETURN_TYPE_ERROR(I, double_obj, Double);
+ RETURN_TYPE_ERROR(Z, double_obj, Double);
}
*value = obj.value();
return Api::Success();
@@ -2292,9 +2296,9 @@ DART_EXPORT Dart_Handle Dart_NewBoolean(bool value) {
DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle boolean_obj,
bool* value) {
DARTSCOPE(Thread::Current());
- const Bool& obj = Api::UnwrapBoolHandle(I, boolean_obj);
+ const Bool& obj = Api::UnwrapBoolHandle(Z, boolean_obj);
if (obj.IsNull()) {
- RETURN_TYPE_ERROR(I, boolean_obj, Bool);
+ RETURN_TYPE_ERROR(Z, boolean_obj, Bool);
}
*value = obj.value();
return Api::Success();
@@ -2310,7 +2314,7 @@ DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* len) {
ReusableObjectHandleScope reused_obj_handle(thread);
const String& str_obj = Api::UnwrapStringHandle(reused_obj_handle, str);
if (str_obj.IsNull()) {
- RETURN_TYPE_ERROR(thread->isolate(), str, String);
+ RETURN_TYPE_ERROR(thread->zone(), str, String);
}
*len = str_obj.Length();
return Api::Success();
@@ -2413,9 +2417,9 @@ DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle object,
if (cstr == NULL) {
RETURN_NULL_ERROR(cstr);
}
- const String& str_obj = Api::UnwrapStringHandle(I, object);
+ const String& str_obj = Api::UnwrapStringHandle(Z, object);
if (str_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, object, String);
+ RETURN_TYPE_ERROR(Z, object, String);
}
intptr_t string_length = Utf8::Length(str_obj);
char* res = Api::TopScope(I)->zone()->Alloc<char>(string_length + 1);
@@ -2440,9 +2444,9 @@ DART_EXPORT Dart_Handle Dart_StringToUTF8(Dart_Handle str,
if (length == NULL) {
RETURN_NULL_ERROR(length);
}
- const String& str_obj = Api::UnwrapStringHandle(I, str);
+ const String& str_obj = Api::UnwrapStringHandle(Z, str);
if (str_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, str, String);
+ RETURN_TYPE_ERROR(Z, str, String);
}
intptr_t str_len = Utf8::Length(str_obj);
*utf8_array = Api::TopScope(I)->zone()->Alloc<uint8_t>(str_len);
@@ -2465,9 +2469,9 @@ DART_EXPORT Dart_Handle Dart_StringToLatin1(Dart_Handle str,
if (length == NULL) {
RETURN_NULL_ERROR(length);
}
- const String& str_obj = Api::UnwrapStringHandle(I, str);
+ const String& str_obj = Api::UnwrapStringHandle(Z, str);
if (str_obj.IsNull() || !str_obj.IsOneByteString()) {
- RETURN_TYPE_ERROR(I, str, String);
+ RETURN_TYPE_ERROR(Z, str, String);
}
intptr_t str_len = str_obj.Length();
intptr_t copy_len = (str_len > *length) ? *length : str_len;
@@ -2486,9 +2490,9 @@ DART_EXPORT Dart_Handle Dart_StringToUTF16(Dart_Handle str,
uint16_t* utf16_array,
intptr_t* length) {
DARTSCOPE(Thread::Current());
- const String& str_obj = Api::UnwrapStringHandle(I, str);
+ const String& str_obj = Api::UnwrapStringHandle(Z, str);
if (str_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, str, String);
+ RETURN_TYPE_ERROR(Z, str, String);
}
intptr_t str_len = str_obj.Length();
intptr_t copy_len = (str_len > *length) ? *length : str_len;
@@ -2507,7 +2511,7 @@ DART_EXPORT Dart_Handle Dart_StringStorageSize(Dart_Handle str,
ReusableObjectHandleScope reused_obj_handle(thread);
const String& str_obj = Api::UnwrapStringHandle(reused_obj_handle, str);
if (str_obj.IsNull()) {
- RETURN_TYPE_ERROR(thread->isolate(), str, String);
+ RETURN_TYPE_ERROR(thread->zone(), str, String);
}
if (size == NULL) {
RETURN_NULL_ERROR(size);
@@ -2523,12 +2527,12 @@ DART_EXPORT Dart_Handle Dart_MakeExternalString(Dart_Handle str,
void* peer,
Dart_PeerFinalizer cback) {
DARTSCOPE(Thread::Current());
- const String& str_obj = Api::UnwrapStringHandle(I, str);
+ const String& str_obj = Api::UnwrapStringHandle(Z, str);
if (str_obj.IsExternal()) {
return str; // String is already an external string.
}
if (str_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, str, String);
+ RETURN_TYPE_ERROR(Z, str, String);
}
if (array == NULL) {
RETURN_NULL_ERROR(array);
@@ -2578,7 +2582,7 @@ DART_EXPORT Dart_Handle Dart_StringGetProperties(Dart_Handle object,
ReusableObjectHandleScope reused_obj_handle(thread);
const String& str = Api::UnwrapStringHandle(reused_obj_handle, object);
if (str.IsNull()) {
- RETURN_TYPE_ERROR(thread->isolate(), object, String);
+ RETURN_TYPE_ERROR(thread->zone(), object, String);
}
if (str.IsExternal()) {
*peer = str.GetPeer();
@@ -2775,7 +2779,7 @@ DART_EXPORT Dart_Handle Dart_ListGetRange(Dart_Handle list,
const type& array = type::Cast(obj); \
const Object& value_obj = Object::Handle(Z, Api::UnwrapHandle(value)); \
if (!value_obj.IsNull() && !value_obj.IsInstance()) { \
- RETURN_TYPE_ERROR(I, value, Instance); \
+ RETURN_TYPE_ERROR(Z, value, Instance); \
} \
if ((index >= 0) && (index < array.Length())) { \
array.SetAt(index, value_obj); \
@@ -2814,7 +2818,7 @@ DART_EXPORT Dart_Handle Dart_ListSetAt(Dart_Handle list,
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(I, value, Instance);
+ RETURN_TYPE_ERROR(Z, value, Instance);
}
const Array& args = Array::Handle(Z, Array::New(kNumArgs));
args.SetAt(0, instance);
@@ -2839,11 +2843,12 @@ static RawObject* ResolveConstructor(const char* current_func,
static RawObject* ThrowArgumentError(const char* exception_message) {
Thread* thread = Thread::Current();
Isolate* isolate = thread->isolate();
+ Zone* zone = thread->zone();
// 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"));
const Library& lib =
- Library::Handle(isolate, Library::LookupLibrary(lib_url));
+ Library::Handle(zone, Library::LookupLibrary(lib_url));
if (lib.IsNull()) {
const String& message = String::Handle(
String::NewFormatted("%s: library '%s' not found.",
@@ -2851,15 +2856,15 @@ static RawObject* ThrowArgumentError(const char* exception_message) {
return ApiError::New(message);
}
const Class& cls = Class::Handle(
- isolate, lib.LookupClassAllowPrivate(class_name));
+ zone, lib.LookupClassAllowPrivate(class_name));
ASSERT(!cls.IsNull());
- Object& result = Object::Handle(isolate);
+ Object& result = Object::Handle(zone);
String& dot_name = String::Handle(String::New("."));
String& constr_name = String::Handle(String::Concat(class_name, dot_name));
result = ResolveConstructor(CURRENT_FUNC, cls, class_name, constr_name, 1);
if (result.IsError()) return result.raw();
ASSERT(result.IsFunction());
- Function& constructor = Function::Handle(isolate);
+ Function& constructor = Function::Handle(zone);
constructor ^= result.raw();
if (!constructor.IsGenerativeConstructor()) {
const String& message = String::Handle(
@@ -2867,12 +2872,11 @@ static RawObject* ThrowArgumentError(const char* exception_message) {
CURRENT_FUNC, class_name.ToCString()));
return ApiError::New(message);
}
- Instance& exception = Instance::Handle(isolate);
+ Instance& exception = Instance::Handle(zone);
exception = Instance::New(cls);
- const Array& args = Array::Handle(isolate, Array::New(3));
+ const Array& args = Array::Handle(zone, Array::New(3));
args.SetAt(0, exception);
- args.SetAt(1,
- Smi::Handle(isolate, Smi::New(Function::kCtorPhaseAll)));
+ args.SetAt(1, Smi::Handle(zone, Smi::New(Function::kCtorPhaseAll)));
args.SetAt(2, String::Handle(String::New(exception_message)));
result = DartEntry::InvokeFunction(constructor, args);
if (result.IsError()) return result.raw();
@@ -3268,11 +3272,11 @@ DART_EXPORT Dart_TypedData_Type Dart_GetTypeOfExternalTypedData(
}
if (RawObject::IsTypedDataViewClassId(class_id)) {
// Check if data object of the view is external.
- Isolate* isolate = Isolate::Current();
- const Instance& view_obj = Api::UnwrapInstanceHandle(isolate, object);
+ Zone* zone = Thread::Current()->zone();
+ const Instance& view_obj = Api::UnwrapInstanceHandle(zone, object);
ASSERT(!view_obj.IsNull());
const Instance& data_obj =
- Instance::Handle(isolate, TypedDataView::Data(view_obj));
+ Instance::Handle(zone, TypedDataView::Data(view_obj));
if (ExternalTypedData::IsExternalTypedData(data_obj)) {
return GetType(class_id);
}
@@ -3281,14 +3285,14 @@ DART_EXPORT Dart_TypedData_Type Dart_GetTypeOfExternalTypedData(
}
-static RawObject* GetByteDataConstructor(Isolate* isolate,
+static RawObject* GetByteDataConstructor(Thread* thread,
const String& constructor_name,
intptr_t num_args) {
const Library& lib =
- Library::Handle(isolate->object_store()->typed_data_library());
+ Library::Handle(thread->isolate()->object_store()->typed_data_library());
ASSERT(!lib.IsNull());
const Class& cls = Class::Handle(
- isolate, lib.LookupClassAllowPrivate(Symbols::ByteData()));
+ thread->zone(), lib.LookupClassAllowPrivate(Symbols::ByteData()));
ASSERT(!cls.IsNull());
return ResolveConstructor(CURRENT_FUNC,
cls,
@@ -3298,20 +3302,22 @@ static RawObject* GetByteDataConstructor(Isolate* isolate,
}
-static Dart_Handle NewByteData(Isolate* isolate, intptr_t length) {
+static Dart_Handle NewByteData(Thread* thread, intptr_t length) {
CHECK_LENGTH(length, TypedData::MaxElements(kTypedDataInt8ArrayCid));
- Object& result = Object::Handle(isolate);
- result = GetByteDataConstructor(isolate, Symbols::ByteDataDot(), 1);
+ Isolate* isolate = thread->isolate();
+ Zone* zone = thread->zone();
+ Object& result = Object::Handle(zone);
+ result = GetByteDataConstructor(thread, Symbols::ByteDataDot(), 1);
ASSERT(!result.IsNull());
ASSERT(result.IsFunction());
const Function& factory = Function::Cast(result);
ASSERT(!factory.IsGenerativeConstructor());
// Create the argument list.
- const Array& args = Array::Handle(isolate, Array::New(2));
+ const Array& args = Array::Handle(zone, Array::New(2));
// Factories get type arguments.
args.SetAt(0, Object::null_type_arguments());
- args.SetAt(1, Smi::Handle(isolate, Smi::New(length)));
+ args.SetAt(1, Smi::Handle(zone, Smi::New(length)));
// Invoke the constructor and return the new object.
result = DartEntry::InvokeFunction(factory, args);
@@ -3329,11 +3335,13 @@ static Dart_Handle NewTypedData(Isolate* isolate,
static Dart_Handle NewExternalTypedData(
- Isolate* isolate, intptr_t cid, void* data, intptr_t length) {
+ Thread* thread, intptr_t cid, void* data, intptr_t length) {
CHECK_LENGTH(length, ExternalTypedData::MaxElements(cid));
+ Isolate* isolate = thread->isolate();
+ Zone* zone = thread->zone();
intptr_t bytes = length * ExternalTypedData::ElementSizeInBytes(cid);
const ExternalTypedData& result = ExternalTypedData::Handle(
- isolate,
+ zone,
ExternalTypedData::New(cid,
reinterpret_cast<uint8_t*>(data),
length,
@@ -3343,14 +3351,16 @@ static Dart_Handle NewExternalTypedData(
static Dart_Handle NewExternalByteData(
- Isolate* isolate, void* data, intptr_t length) {
+ Thread* thread, void* data, intptr_t length) {
+ Zone* zone = thread->zone();
+ Isolate* isolate = thread->isolate();
Dart_Handle ext_data = NewExternalTypedData(
- isolate, kExternalTypedDataUint8ArrayCid, data, length);
+ thread, kExternalTypedDataUint8ArrayCid, data, length);
if (::Dart_IsError(ext_data)) {
return ext_data;
}
- Object& result = Object::Handle(isolate);
- result = GetByteDataConstructor(isolate, Symbols::ByteDataDot_view(), 3);
+ Object& result = Object::Handle(zone);
+ result = GetByteDataConstructor(thread, Symbols::ByteDataDot_view(), 3);
ASSERT(!result.IsNull());
ASSERT(result.IsFunction());
const Function& factory = Function::Cast(result);
@@ -3358,13 +3368,13 @@ static Dart_Handle NewExternalByteData(
// Create the argument list.
const intptr_t num_args = 3;
- const Array& args = Array::Handle(isolate, Array::New(num_args + 1));
+ const Array& args = Array::Handle(zone, Array::New(num_args + 1));
// Factories get type arguments.
args.SetAt(0, Object::null_type_arguments());
const ExternalTypedData& array =
- Api::UnwrapExternalTypedDataHandle(isolate, ext_data);
+ Api::UnwrapExternalTypedDataHandle(zone, ext_data);
args.SetAt(1, array);
- Smi& smi = Smi::Handle(isolate);
+ Smi& smi = Smi::Handle(zone);
smi = Smi::New(0);
args.SetAt(2, smi);
smi = Smi::New(length);
@@ -3383,7 +3393,7 @@ DART_EXPORT Dart_Handle Dart_NewTypedData(Dart_TypedData_Type type,
CHECK_CALLBACK_STATE(I);
switch (type) {
case Dart_TypedData_kByteData :
- return NewByteData(I, length);
+ return NewByteData(T, length);
case Dart_TypedData_kInt8 :
return NewTypedData(I, kTypedDataInt8ArrayCid, length);
case Dart_TypedData_kUint8 :
@@ -3428,42 +3438,42 @@ DART_EXPORT Dart_Handle Dart_NewExternalTypedData(
CHECK_CALLBACK_STATE(I);
switch (type) {
case Dart_TypedData_kByteData:
- return NewExternalByteData(I, data, length);
+ return NewExternalByteData(T, data, length);
case Dart_TypedData_kInt8:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataInt8ArrayCid, data, length);
case Dart_TypedData_kUint8:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataUint8ArrayCid, data, length);
case Dart_TypedData_kUint8Clamped:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataUint8ClampedArrayCid, data, length);
case Dart_TypedData_kInt16:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataInt16ArrayCid, data, length);
case Dart_TypedData_kUint16:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataUint16ArrayCid, data, length);
case Dart_TypedData_kInt32:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataInt32ArrayCid, data, length);
case Dart_TypedData_kUint32:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataUint32ArrayCid, data, length);
case Dart_TypedData_kInt64:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataInt64ArrayCid, data, length);
case Dart_TypedData_kUint64:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataUint64ArrayCid, data, length);
case Dart_TypedData_kFloat32:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataFloat32ArrayCid, data, length);
case Dart_TypedData_kFloat64:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataFloat64ArrayCid, data, length);
case Dart_TypedData_kFloat32x4:
- return NewExternalTypedData(I,
+ return NewExternalTypedData(T,
kExternalTypedDataFloat32x4ArrayCid, data, length);
default:
return Api::NewError("%s expects argument 'type' to be of"
@@ -3474,15 +3484,15 @@ DART_EXPORT Dart_Handle Dart_NewExternalTypedData(
}
-static RawObject* GetByteBufferConstructor(Isolate* isolate,
+static RawObject* GetByteBufferConstructor(Thread* thread,
const String& class_name,
const String& constructor_name,
intptr_t num_args) {
const Library& lib =
- Library::Handle(isolate->object_store()->typed_data_library());
+ Library::Handle(thread->isolate()->object_store()->typed_data_library());
ASSERT(!lib.IsNull());
const Class& cls = Class::Handle(
- isolate, lib.LookupClassAllowPrivate(class_name));
+ thread->zone(), lib.LookupClassAllowPrivate(class_name));
ASSERT(!cls.IsNull());
return ResolveConstructor(CURRENT_FUNC,
cls,
@@ -3498,10 +3508,10 @@ DART_EXPORT Dart_Handle Dart_NewByteBuffer(Dart_Handle typed_data) {
if (!RawObject::IsExternalTypedDataClassId(class_id) &&
!RawObject::IsTypedDataViewClassId(class_id) &&
!RawObject::IsTypedDataClassId(class_id)) {
- RETURN_TYPE_ERROR(I, typed_data, 'TypedData');
+ RETURN_TYPE_ERROR(Z, typed_data, 'TypedData');
}
Object& result = Object::Handle(Z);
- result = GetByteBufferConstructor(I,
+ result = GetByteBufferConstructor(T,
Symbols::_ByteBuffer(),
Symbols::_ByteBufferDot_New(),
1);
@@ -3566,7 +3576,7 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object,
if (!RawObject::IsExternalTypedDataClassId(class_id) &&
!RawObject::IsTypedDataViewClassId(class_id) &&
!RawObject::IsTypedDataClassId(class_id)) {
- RETURN_TYPE_ERROR(I, object, 'TypedData');
+ RETURN_TYPE_ERROR(Z, object, 'TypedData');
}
if (type == NULL) {
RETURN_NULL_ERROR(type);
@@ -3586,7 +3596,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(I, object);
+ Api::UnwrapExternalTypedDataHandle(Z, object);
ASSERT(!obj.IsNull());
length = obj.Length();
size_in_bytes = length * ExternalTypedData::ElementSizeInBytes(class_id);
@@ -3594,7 +3604,7 @@ 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(I, object);
+ const TypedData& obj = Api::UnwrapTypedDataHandle(Z, object);
ASSERT(!obj.IsNull());
length = obj.Length();
size_in_bytes = length * TypedData::ElementSizeInBytes(class_id);
@@ -3603,7 +3613,7 @@ DART_EXPORT Dart_Handle Dart_TypedDataAcquireData(Dart_Handle object,
data_tmp = obj.DataAddr(0);
} else {
ASSERT(RawObject::IsTypedDataViewClassId(class_id));
- const Instance& view_obj = Api::UnwrapInstanceHandle(I, object);
+ const Instance& view_obj = Api::UnwrapInstanceHandle(Z, object);
ASSERT(!view_obj.IsNull());
Smi& val = Smi::Handle();
val ^= TypedDataView::Length(view_obj);
@@ -3655,7 +3665,7 @@ DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object) {
if (!RawObject::IsExternalTypedDataClassId(class_id) &&
!RawObject::IsTypedDataViewClassId(class_id) &&
!RawObject::IsTypedDataClassId(class_id)) {
- RETURN_TYPE_ERROR(I, object, 'TypedData');
+ RETURN_TYPE_ERROR(Z, object, 'TypedData');
}
if (!RawObject::IsExternalTypedDataClassId(class_id)) {
T->DecrementNoSafepointScopeDepth();
@@ -3677,13 +3687,15 @@ DART_EXPORT Dart_Handle Dart_TypedDataReleaseData(Dart_Handle object) {
DART_EXPORT Dart_Handle Dart_GetDataFromByteBuffer(Dart_Handle object) {
- Isolate* isolate = Isolate::Current();
+ Thread* thread = Thread::Current();
+ Zone* zone = thread->zone();
+ Isolate* isolate = thread->isolate();
CHECK_ISOLATE(isolate);
intptr_t class_id = Api::ClassId(object);
if (class_id != kByteBufferCid) {
- RETURN_TYPE_ERROR(isolate, object, 'ByteBuffer');
+ RETURN_TYPE_ERROR(zone, object, 'ByteBuffer');
}
- const Instance& instance = Api::UnwrapInstanceHandle(isolate, object);
+ const Instance& instance = Api::UnwrapInstanceHandle(zone, object);
ASSERT(!instance.IsNull());
return Api::NewHandle(isolate, ByteBuffer::Data(instance));
}
@@ -3756,7 +3768,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(I, type, Type);
+ RETURN_TYPE_ERROR(Z, type, Type);
}
Type& type_obj = Type::Handle();
type_obj ^= unchecked_type.raw();
@@ -3779,7 +3791,7 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type,
} else if (result.IsString()) {
dot_name = String::Concat(Symbols::Dot(), String::Cast(result));
} else {
- RETURN_TYPE_ERROR(I, constructor_name, String);
+ RETURN_TYPE_ERROR(Z, constructor_name, String);
}
// Resolve the constructor.
@@ -3879,12 +3891,13 @@ DART_EXPORT Dart_Handle Dart_New(Dart_Handle type,
}
-static RawInstance* AllocateObject(Isolate* isolate, const Class& cls) {
+static RawInstance* AllocateObject(Thread* thread, const Class& cls) {
if (!cls.is_fields_marked_nullable()) {
// Mark all fields as nullable.
- Class& iterate_cls = Class::Handle(isolate, cls.raw());
- Field& field = Field::Handle(isolate);
- Array& fields = Array::Handle(isolate);
+ Zone* zone = thread->zone();
+ Class& iterate_cls = Class::Handle(zone, cls.raw());
+ Field& field = Field::Handle(zone);
+ Array& fields = Array::Handle(zone);
while (!iterate_cls.IsNull()) {
ASSERT(iterate_cls.is_finalized());
iterate_cls.set_is_fields_marked_nullable();
@@ -3909,10 +3922,10 @@ DART_EXPORT Dart_Handle Dart_Allocate(Dart_Handle type) {
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const Type& type_obj = Api::UnwrapTypeHandle(I, type);
+ const Type& type_obj = Api::UnwrapTypeHandle(Z, type);
// Get the class to instantiate.
if (type_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, type, Type);
+ RETURN_TYPE_ERROR(Z, type, Type);
}
const Class& cls = Class::Handle(Z, type_obj.type_class());
const Error& error = Error::Handle(Z, cls.EnsureIsFinalized(T));
@@ -3920,7 +3933,7 @@ DART_EXPORT Dart_Handle Dart_Allocate(Dart_Handle type) {
// An error occurred, return error object.
return Api::NewHandle(I, error.raw());
}
- return Api::NewHandle(I, AllocateObject(I, cls));
+ return Api::NewHandle(I, AllocateObject(T, cls));
}
@@ -3931,10 +3944,10 @@ DART_EXPORT Dart_Handle Dart_AllocateWithNativeFields(
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const Type& type_obj = Api::UnwrapTypeHandle(I, type);
+ const Type& type_obj = Api::UnwrapTypeHandle(Z, type);
// Get the class to instantiate.
if (type_obj.IsNull()) {
- RETURN_TYPE_ERROR(I, type, Type);
+ RETURN_TYPE_ERROR(Z, type, Type);
}
if (native_fields == NULL) {
RETURN_NULL_ERROR(native_fields);
@@ -3950,20 +3963,22 @@ DART_EXPORT Dart_Handle Dart_AllocateWithNativeFields(
"%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(Z, AllocateObject(I, cls));
+ const Instance& instance = Instance::Handle(Z, AllocateObject(T, cls));
instance.SetNativeFields(num_native_fields, native_fields);
return Api::NewHandle(I, instance.raw());
}
-static Dart_Handle SetupArguments(Isolate* isolate,
+static Dart_Handle SetupArguments(Thread* thread,
int num_args,
Dart_Handle* arguments,
int extra_args,
Array* args) {
+ Zone* zone = thread->zone();
+ Isolate* isolate = thread->isolate();
// Check for malformed arguments in the arguments list.
*args = Array::New(num_args + extra_args);
- Object& arg = Object::Handle(isolate);
+ Object& arg = Object::Handle(zone);
for (int i = 0; i < num_args; i++) {
arg = Api::UnwrapHandle(arguments[i]);
if (!arg.IsNull() && !arg.IsInstance()) {
@@ -3994,13 +4009,13 @@ DART_EXPORT Dart_Handle Dart_InvokeConstructor(Dart_Handle object,
"%s expects argument 'number_of_arguments' to be non-negative.",
CURRENT_FUNC);
}
- const String& constructor_name = Api::UnwrapStringHandle(I, name);
+ const String& constructor_name = Api::UnwrapStringHandle(Z, name);
if (constructor_name.IsNull()) {
- RETURN_TYPE_ERROR(I, name, String);
+ RETURN_TYPE_ERROR(Z, name, String);
}
- const Instance& instance = Api::UnwrapInstanceHandle(I, object);
+ const Instance& instance = Api::UnwrapInstanceHandle(Z, object);
if (instance.IsNull()) {
- RETURN_TYPE_ERROR(I, object, Instance);
+ RETURN_TYPE_ERROR(Z, object, Instance);
}
// Since we have allocated an object it would mean that the type
@@ -4038,7 +4053,7 @@ DART_EXPORT Dart_Handle Dart_InvokeConstructor(Dart_Handle object,
}
Dart_Handle result;
Array& args = Array::Handle(Z);
- result = SetupArguments(I,
+ result = SetupArguments(T,
number_of_arguments, arguments, extra_args, &args);
if (!::Dart_IsError(result)) {
args.SetAt(0, instance);
@@ -4066,9 +4081,9 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target,
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const String& function_name = Api::UnwrapStringHandle(I, name);
+ const String& function_name = Api::UnwrapStringHandle(Z, name);
if (function_name.IsNull()) {
- RETURN_TYPE_ERROR(I, name, String);
+ RETURN_TYPE_ERROR(Z, name, String);
}
if (number_of_arguments < 0) {
return Api::NewError(
@@ -4102,7 +4117,7 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target,
function_name.ToCString());
}
// Setup args and check for malformed arguments in the arguments list.
- result = SetupArguments(I, number_of_arguments, arguments, 0, &args);
+ result = SetupArguments(T, number_of_arguments, arguments, 0, &args);
if (!::Dart_IsError(result)) {
result = Api::NewHandle(I, DartEntry::InvokeFunction(function, args));
}
@@ -4119,7 +4134,7 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target,
Resolver::ResolveDynamic(instance, function_name, args_desc));
if (function.IsNull()) {
// Setup args and check for malformed arguments in the arguments list.
- result = SetupArguments(I,
+ result = SetupArguments(T,
number_of_arguments,
arguments,
1,
@@ -4137,7 +4152,7 @@ DART_EXPORT Dart_Handle Dart_Invoke(Dart_Handle target,
return result;
}
// Setup args and check for malformed arguments in the arguments list.
- result = SetupArguments(I, number_of_arguments, arguments, 1, &args);
+ result = SetupArguments(T, number_of_arguments, arguments, 1, &args);
if (!::Dart_IsError(result)) {
args.SetAt(0, instance);
result = Api::NewHandle(I, DartEntry::InvokeFunction(function, args));
@@ -4173,7 +4188,7 @@ 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(I, number_of_arguments, arguments, 0, &args);
+ result = SetupArguments(T, number_of_arguments, arguments, 0, &args);
if (!::Dart_IsError(result)) {
result = Api::NewHandle(I, DartEntry::InvokeFunction(function, args));
}
@@ -4191,9 +4206,9 @@ DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure,
Dart_Handle* arguments) {
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const Instance& closure_obj = Api::UnwrapInstanceHandle(I, closure);
+ const Instance& closure_obj = Api::UnwrapInstanceHandle(Z, closure);
if (closure_obj.IsNull() || !closure_obj.IsCallable(NULL)) {
- RETURN_TYPE_ERROR(I, closure, Instance);
+ RETURN_TYPE_ERROR(Z, closure, Instance);
}
if (number_of_arguments < 0) {
return Api::NewError(
@@ -4208,7 +4223,7 @@ DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure,
for (int i = 0; i < number_of_arguments; i++) {
obj = Api::UnwrapHandle(arguments[i]);
if (!obj.IsNull() && !obj.IsInstance()) {
- RETURN_TYPE_ERROR(I, arguments[i], Instance);
+ RETURN_TYPE_ERROR(Z, arguments[i], Instance);
}
args.SetAt(i + 1, obj);
}
@@ -4221,9 +4236,9 @@ DART_EXPORT Dart_Handle Dart_GetField(Dart_Handle container, Dart_Handle name) {
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const String& field_name = Api::UnwrapStringHandle(I, name);
+ const String& field_name = Api::UnwrapStringHandle(Z, name);
if (field_name.IsNull()) {
- RETURN_TYPE_ERROR(I, name, String);
+ RETURN_TYPE_ERROR(Z, name, String);
}
Field& field = Field::Handle(Z);
@@ -4342,15 +4357,15 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container,
DARTSCOPE(Thread::Current());
CHECK_CALLBACK_STATE(I);
- const String& field_name = Api::UnwrapStringHandle(I, name);
+ const String& field_name = Api::UnwrapStringHandle(Z, name);
if (field_name.IsNull()) {
- RETURN_TYPE_ERROR(I, name, String);
+ RETURN_TYPE_ERROR(Z, name, String);
}
// Since null is allowed for value, we don't use UnwrapInstanceHandle.
const Object& value_obj = Object::Handle(Z, Api::UnwrapHandle(value));
if (!value_obj.IsNull() && !value_obj.IsInstance()) {
- RETURN_TYPE_ERROR(I, value, Instance);
+ RETURN_TYPE_ERROR(Z, value, Instance);
}
Instance& value_instance = Instance::Handle(Z);
value_instance ^= value_obj.raw();
@@ -4492,13 +4507,14 @@ DART_EXPORT Dart_Handle Dart_SetField(Dart_Handle container,
DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) {
Thread* thread = Thread::Current();
+ Zone* zone = thread->zone();
Isolate* isolate = thread->isolate();
CHECK_ISOLATE(isolate);
CHECK_CALLBACK_STATE(isolate);
{
- const Instance& excp = Api::UnwrapInstanceHandle(isolate, exception);
+ const Instance& excp = Api::UnwrapInstanceHandle(zone, exception);
if (excp.IsNull()) {
- RETURN_TYPE_ERROR(isolate, exception, Instance);
+ RETURN_TYPE_ERROR(zone, exception, Instance);
}
}
if (isolate->top_exit_frame_info() == 0) {
@@ -4515,7 +4531,7 @@ DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) {
{
NoSafepointScope no_safepoint;
RawInstance* raw_exception =
- Api::UnwrapInstanceHandle(isolate, exception).raw();
+ Api::UnwrapInstanceHandle(zone, exception).raw();
state->UnwindScopes(isolate->top_exit_frame_info());
saved_exception = &Instance::Handle(raw_exception);
}
@@ -4527,17 +4543,18 @@ DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) {
DART_EXPORT Dart_Handle Dart_ReThrowException(Dart_Handle exception,
Dart_Handle stacktrace) {
Thread* thread = Thread::Current();
+ Zone* zone = thread->zone();
Isolate* isolate = thread->isolate();
CHECK_ISOLATE(isolate);
CHECK_CALLBACK_STATE(isolate);
{
- const Instance& excp = Api::UnwrapInstanceHandle(isolate, exception);
+ const Instance& excp = Api::UnwrapInstanceHandle(zone, exception);
if (excp.IsNull()) {
- RETURN_TYPE_ERROR(isolate, exception, Instance);
+ RETURN_TYPE_ERROR(zone, exception, Instance);
}
- const Instance& stk = Api::UnwrapInstanceHandle(isolate, stacktrace);
+ const Instance& stk = Api::UnwrapInstanceHandle(zone, stacktrace);
if (stk.IsNull()) {
- RETURN_TYPE_ERROR(isolate, stacktrace, Instance);
+ RETURN_TYPE_ERROR(zone, stacktrace, Instance);
}
}
if (isolate->top_exit_frame_info() == 0) {
@@ -4555,9 +4572,9 @@ DART_EXPORT Dart_Handle Dart_ReThrowException(Dart_Handle exception,
{
NoSafepointScope no_safepoint;
RawInstance* raw_exception =
- Api::UnwrapInstanceHandle(isolate, exception).raw();
+ Api::UnwrapInstanceHandle(zone, exception).raw();
RawStacktrace* raw_stacktrace =
- Api::UnwrapStacktraceHandle(isolate, stacktrace).raw();
+ Api::UnwrapStacktraceHandle(zone, stacktrace).raw();
state->UnwindScopes(isolate->top_exit_frame_info());
saved_exception = &Instance::Handle(raw_exception);
saved_stacktrace = &Stacktrace::Handle(raw_stacktrace);
@@ -4573,13 +4590,13 @@ DART_EXPORT Dart_Handle Dart_CreateNativeWrapperClass(Dart_Handle library,
Dart_Handle name,
int field_count) {
DARTSCOPE(Thread::Current());
- const String& cls_name = Api::UnwrapStringHandle(I, name);
+ const String& cls_name = Api::UnwrapStringHandle(Z, name);
if (cls_name.IsNull()) {
- RETURN_TYPE_ERROR(I, name, String);
+ RETURN_TYPE_ERROR(Z, name, String);
}
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
if (!Utils::IsUint(16, field_count)) {
return Api::NewError(
@@ -4605,7 +4622,7 @@ DART_EXPORT Dart_Handle Dart_GetNativeInstanceFieldCount(Dart_Handle obj,
ReusableObjectHandleScope reused_obj_handle(thread);
const Instance& instance = Api::UnwrapInstanceHandle(reused_obj_handle, obj);
if (instance.IsNull()) {
- RETURN_TYPE_ERROR(thread->isolate(), obj, Instance);
+ RETURN_TYPE_ERROR(thread->zone(), obj, Instance);
}
*count = instance.NumNativeFields();
return Api::Success();
@@ -4620,7 +4637,7 @@ DART_EXPORT Dart_Handle Dart_GetNativeInstanceField(Dart_Handle obj,
ReusableObjectHandleScope reused_obj_handle(thread);
const Instance& instance = Api::UnwrapInstanceHandle(reused_obj_handle, obj);
if (instance.IsNull()) {
- RETURN_TYPE_ERROR(thread->isolate(), obj, Instance);
+ RETURN_TYPE_ERROR(thread->zone(), obj, Instance);
}
if (!instance.IsValidNativeIndex(index)) {
return Api::NewError(
@@ -4636,9 +4653,9 @@ DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj,
int index,
intptr_t value) {
DARTSCOPE(Thread::Current());
- const Instance& instance = Api::UnwrapInstanceHandle(I, obj);
+ const Instance& instance = Api::UnwrapInstanceHandle(Z, obj);
if (instance.IsNull()) {
- RETURN_TYPE_ERROR(I, obj, Instance);
+ RETURN_TYPE_ERROR(Z, obj, Instance);
}
if (!instance.IsValidNativeIndex(index)) {
return Api::NewError(
@@ -4949,14 +4966,14 @@ DART_EXPORT void Dart_SetWeakHandleReturnValue(Dart_NativeArguments args,
RawString* Api::CallEnvironmentCallback(Isolate* isolate, const String& name) {
Scope api_scope(isolate);
Dart_EnvironmentCallback callback = isolate->environment_callback();
- String& result = String::Handle(isolate);
+ String& result = String::Handle(isolate->current_zone());
if (callback != NULL) {
Dart_Handle response = callback(Api::NewHandle(isolate, name.raw()));
if (::Dart_IsString(response)) {
result ^= Api::UnwrapHandle(response);
} else if (::Dart_IsError(response)) {
const Object& error =
- Object::Handle(isolate, Api::UnwrapHandle(response));
+ Object::Handle(isolate->current_zone(), Api::UnwrapHandle(response));
Exceptions::ThrowArgumentError(
String::Handle(String::New(Error::Cast(error).ToErrorCString())));
} else if (!::Dart_IsNull(response)) {
@@ -5046,7 +5063,8 @@ static void CompileSource(Isolate* isolate,
lib.SetLoadInProgress();
}
ASSERT(isolate != NULL);
- const Error& error = Error::Handle(isolate, Compiler::Compile(lib, script));
+ const Error& error =
+ Error::Handle(isolate->current_zone(), Compiler::Compile(lib, script));
if (error.IsNull()) {
*result = Api::NewHandle(isolate, lib.raw());
} else {
@@ -5063,13 +5081,13 @@ DART_EXPORT Dart_Handle Dart_LoadScript(Dart_Handle url,
intptr_t line_offset,
intptr_t column_offset) {
DARTSCOPE(Thread::Current());
- const String& url_str = Api::UnwrapStringHandle(I, url);
+ const String& url_str = Api::UnwrapStringHandle(Z, url);
if (url_str.IsNull()) {
- RETURN_TYPE_ERROR(I, url, String);
+ RETURN_TYPE_ERROR(Z, url, String);
}
- const String& source_str = Api::UnwrapStringHandle(I, source);
+ const String& source_str = Api::UnwrapStringHandle(Z, source);
if (source_str.IsNull()) {
- RETURN_TYPE_ERROR(I, source, String);
+ RETURN_TYPE_ERROR(Z, source, String);
}
Library& library = Library::Handle(Z, I->object_store()->root_library());
if (!library.IsNull()) {
@@ -5155,13 +5173,13 @@ DART_EXPORT Dart_Handle Dart_RootLibrary() {
DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library,
Dart_Handle class_name) {
DARTSCOPE(Thread::Current());
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
- const String& cls_name = Api::UnwrapStringHandle(I, class_name);
+ const String& cls_name = Api::UnwrapStringHandle(Z, class_name);
if (cls_name.IsNull()) {
- RETURN_TYPE_ERROR(I, class_name, String);
+ RETURN_TYPE_ERROR(Z, class_name, String);
}
const Class& cls = Class::Handle(Z, lib.LookupClassAllowPrivate(cls_name));
if (cls.IsNull()) {
@@ -5181,18 +5199,18 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library,
DARTSCOPE(Thread::Current());
// Validate the input arguments.
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
if (!lib.Loaded()) {
return Api::NewError(
"%s expects library argument 'library' to be loaded.",
CURRENT_FUNC);
}
- const String& name_str = Api::UnwrapStringHandle(I, class_name);
+ const String& name_str = Api::UnwrapStringHandle(Z, class_name);
if (name_str.IsNull()) {
- RETURN_TYPE_ERROR(I, class_name, String);
+ RETURN_TYPE_ERROR(Z, class_name, String);
}
const Class& cls = Class::Handle(Z, lib.LookupClassAllowPrivate(name_str));
if (cls.IsNull()) {
@@ -5219,9 +5237,9 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library,
number_of_type_arguments,
num_expected_type_arguments);
}
- const Array& array = Api::UnwrapArrayHandle(I, *type_arguments);
+ const Array& array = Api::UnwrapArrayHandle(Z, *type_arguments);
if (array.IsNull()) {
- RETURN_TYPE_ERROR(I, *type_arguments, Array);
+ RETURN_TYPE_ERROR(Z, *type_arguments, Array);
}
if (array.Length() != num_expected_type_arguments) {
return Api::NewError("Invalid type arguments specified, expected an "
@@ -5249,9 +5267,9 @@ DART_EXPORT Dart_Handle Dart_GetType(Dart_Handle library,
DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library) {
DARTSCOPE(Thread::Current());
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
const String& url = String::Handle(Z, lib.url());
ASSERT(!url.IsNull());
@@ -5261,9 +5279,9 @@ DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library) {
DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url) {
DARTSCOPE(Thread::Current());
- const String& url_str = Api::UnwrapStringHandle(I, url);
+ const String& url_str = Api::UnwrapStringHandle(Z, url);
if (url_str.IsNull()) {
- RETURN_TYPE_ERROR(I, url, String);
+ RETURN_TYPE_ERROR(Z, url, String);
}
const Library& library = Library::Handle(Z, Library::LookupLibrary(url_str));
if (library.IsNull()) {
@@ -5279,13 +5297,13 @@ DART_EXPORT Dart_Handle Dart_LibraryHandleError(Dart_Handle library_in,
Dart_Handle error_in) {
DARTSCOPE(Thread::Current());
- const Library& lib = Api::UnwrapLibraryHandle(I, library_in);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library_in);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library_in, Library);
+ RETURN_TYPE_ERROR(Z, library_in, Library);
}
- const Instance& err = Api::UnwrapInstanceHandle(I, error_in);
+ const Instance& err = Api::UnwrapInstanceHandle(Z, error_in);
if (err.IsNull()) {
- RETURN_TYPE_ERROR(I, error_in, Instance);
+ RETURN_TYPE_ERROR(Z, error_in, Instance);
}
CHECK_CALLBACK_STATE(I);
@@ -5307,13 +5325,13 @@ DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url,
intptr_t line_offset,
intptr_t column_offset) {
DARTSCOPE(Thread::Current());
- const String& url_str = Api::UnwrapStringHandle(I, url);
+ const String& url_str = Api::UnwrapStringHandle(Z, url);
if (url_str.IsNull()) {
- RETURN_TYPE_ERROR(I, url, String);
+ RETURN_TYPE_ERROR(Z, url, String);
}
- const String& source_str = Api::UnwrapStringHandle(I, source);
+ const String& source_str = Api::UnwrapStringHandle(Z, source);
if (source_str.IsNull()) {
- RETURN_TYPE_ERROR(I, source, String);
+ RETURN_TYPE_ERROR(Z, source, String);
}
if (line_offset < 0) {
return Api::NewError("%s: argument 'line_offset' must be positive number",
@@ -5366,20 +5384,20 @@ DART_EXPORT Dart_Handle Dart_LibraryImportLibrary(Dart_Handle library,
Dart_Handle import,
Dart_Handle prefix) {
DARTSCOPE(Thread::Current());
- const Library& library_vm = Api::UnwrapLibraryHandle(I, library);
+ const Library& library_vm = Api::UnwrapLibraryHandle(Z, library);
if (library_vm.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
- const Library& import_vm = Api::UnwrapLibraryHandle(I, import);
+ const Library& import_vm = Api::UnwrapLibraryHandle(Z, import);
if (import_vm.IsNull()) {
- RETURN_TYPE_ERROR(I, import, Library);
+ RETURN_TYPE_ERROR(Z, import, Library);
}
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(I, prefix, String);
+ RETURN_TYPE_ERROR(Z, prefix, String);
}
CHECK_CALLBACK_STATE(I);
CHECK_COMPILATION_ALLOWED(I);
@@ -5410,17 +5428,17 @@ DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library,
intptr_t line_offset,
intptr_t column_offset) {
DARTSCOPE(Thread::Current());
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
- const String& url_str = Api::UnwrapStringHandle(I, url);
+ const String& url_str = Api::UnwrapStringHandle(Z, url);
if (url_str.IsNull()) {
- RETURN_TYPE_ERROR(I, url, String);
+ RETURN_TYPE_ERROR(Z, url, String);
}
- const String& source_str = Api::UnwrapStringHandle(I, source);
+ const String& source_str = Api::UnwrapStringHandle(Z, source);
if (source_str.IsNull()) {
- RETURN_TYPE_ERROR(I, source, String);
+ RETURN_TYPE_ERROR(Z, source, String);
}
if (line_offset < 0) {
return Api::NewError("%s: argument 'line_offset' must be positive number",
@@ -5448,17 +5466,17 @@ DART_EXPORT Dart_Handle Dart_LibraryLoadPatch(Dart_Handle library,
Dart_Handle url,
Dart_Handle patch_source) {
DARTSCOPE(Thread::Current());
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
- const String& url_str = Api::UnwrapStringHandle(I, url);
+ const String& url_str = Api::UnwrapStringHandle(Z, url);
if (url_str.IsNull()) {
- RETURN_TYPE_ERROR(I, url, String);
+ RETURN_TYPE_ERROR(Z, url, String);
}
- const String& source_str = Api::UnwrapStringHandle(I, patch_source);
+ const String& source_str = Api::UnwrapStringHandle(Z, patch_source);
if (source_str.IsNull()) {
- RETURN_TYPE_ERROR(I, patch_source, String);
+ RETURN_TYPE_ERROR(Z, patch_source, String);
}
CHECK_CALLBACK_STATE(I);
CHECK_COMPILATION_ALLOWED(I);
@@ -5529,9 +5547,9 @@ DART_EXPORT Dart_Handle Dart_SetNativeResolver(
Dart_NativeEntryResolver resolver,
Dart_NativeEntrySymbol symbol) {
DARTSCOPE(Thread::Current());
- const Library& lib = Api::UnwrapLibraryHandle(I, library);
+ const Library& lib = Api::UnwrapLibraryHandle(Z, library);
if (lib.IsNull()) {
- RETURN_TYPE_ERROR(I, library, Library);
+ RETURN_TYPE_ERROR(Z, library, Library);
}
lib.set_native_entry_resolver(resolver);
lib.set_native_entry_symbol_resolver(symbol);
« no previous file with comments | « runtime/vm/dart_api_impl.h ('k') | runtime/vm/dart_api_impl_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698