Index: runtime/vm/dart_api_impl.cc |
=================================================================== |
--- runtime/vm/dart_api_impl.cc (revision 1496) |
+++ runtime/vm/dart_api_impl.cc (working copy) |
@@ -55,17 +55,14 @@ |
DART_EXPORT bool Dart_IsError(const Dart_Handle& handle) { |
- ASSERT(Isolate::Current() != NULL); |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(handle)); |
return obj.IsApiError(); |
} |
DART_EXPORT bool Dart_ErrorHasException(Dart_Handle handle) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(handle)); |
if (obj.IsApiError()) { |
const ApiError& error = ApiError::CheckedHandle(obj.raw()); |
@@ -77,8 +74,7 @@ |
DART_EXPORT Dart_Handle Dart_ErrorGetException(Dart_Handle handle) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(handle)); |
if (obj.IsApiError()) { |
const ApiError& error = ApiError::CheckedHandle(obj.raw()); |
@@ -98,8 +94,7 @@ |
DART_EXPORT Dart_Handle Dart_ErrorGetStacktrace(Dart_Handle handle) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(handle)); |
if (obj.IsApiError()) { |
ApiError& failure = ApiError::Handle(); |
@@ -158,9 +153,8 @@ |
DART_EXPORT const char* Dart_GetError(const Dart_Handle& handle) { |
- ASSERT(Isolate::Current() != NULL); |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
+ |
const Object& obj = Object::Handle(Api::UnwrapHandle(handle)); |
if (!obj.IsApiError()) { |
return ""; |
@@ -192,8 +186,7 @@ |
// TODO(turnidge): This clonse Api::Error. 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_Error(const char* format, ...) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
va_list args; |
va_start(args, format); |
@@ -234,10 +227,9 @@ |
return reinterpret_cast<Dart_Isolate>(isolate); |
} else { |
{ |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(isolate); |
const String& error = |
- String::Handle(Isolate::Current()->object_store()->sticky_error()); |
+ String::Handle(isolate->object_store()->sticky_error()); |
// TODO(asiva): Need to return this as a error. |
OS::PrintErr(error.ToCString()); |
} |
@@ -311,8 +303,8 @@ |
DART_EXPORT Dart_Handle Dart_HandleMessage(Dart_Port dest_port, |
Dart_Port reply_port, |
Dart_Message dart_message) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
+ |
const Instance& msg = Instance::Handle(DeserializeMessage(dart_message)); |
const String& class_name = |
String::Handle(String::NewSymbol("ReceivePortImpl")); |
@@ -342,10 +334,9 @@ |
DART_EXPORT Dart_Handle Dart_RunLoop() { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
- |
Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
+ |
LongJump* base = isolate->long_jump_base(); |
LongJump jump; |
Dart_Handle result; |
@@ -364,13 +355,13 @@ |
// NOTE: Need to pass 'result' as a parameter here in order to avoid |
// warning: variable 'result' might be clobbered by 'longjmp' or 'vfork' |
// which shows up because of the use of setjmp. |
-static void CompileSource(const Library& lib, |
+static void CompileSource(Isolate* isolate, |
+ const Library& lib, |
const String& url, |
const String& source, |
RawScript::Kind kind, |
Dart_Handle* result) { |
const Script& script = Script::Handle(Script::New(url, source, kind)); |
- Isolate* isolate = Isolate::Current(); |
ASSERT(isolate != NULL); |
LongJump* base = isolate->long_jump_base(); |
LongJump jump; |
@@ -389,9 +380,7 @@ |
Dart_Handle source, |
Dart_LibraryTagHandler handler) { |
Isolate* isolate = Isolate::Current(); |
- ASSERT(isolate != NULL); |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(isolate); |
TIMERSCOPE(time_script_loading); |
const String& url_str = String::CheckedHandle(Api::UnwrapHandle(url)); |
const String& source_str = String::CheckedHandle(Api::UnwrapHandle(source)); |
@@ -404,17 +393,21 @@ |
library.Register(); |
isolate->object_store()->set_root_library(library); |
Dart_Handle result; |
- CompileSource(library, url_str, source_str, RawScript::kScript, &result); |
+ CompileSource(isolate, |
+ library, |
+ url_str, |
+ source_str, |
+ RawScript::kScript, |
+ &result); |
return result; |
} |
DEFINE_FLAG(bool, compile_all, false, "Eagerly compile all code."); |
-static void CompileAll(Dart_Handle* result) { |
+static void CompileAll(Isolate* isolate, Dart_Handle* result) { |
*result = Api::Success(); |
if (FLAG_compile_all) { |
- Isolate* isolate = Isolate::Current(); |
ASSERT(isolate != NULL); |
LongJump* base = isolate->long_jump_base(); |
LongJump jump; |
@@ -431,12 +424,12 @@ |
// Return error if isolate is in an inconsistent state. |
// Return NULL when no error condition exists. |
-static const char* CheckIsolateState() { |
+static const char* CheckIsolateState(Isolate* isolate) { |
if (!ClassFinalizer::FinalizePendingClasses()) { |
// Make a copy of the error message as the original message string |
// may get deallocated when we return back from the Dart API call. |
const String& err = |
- String::Handle(Isolate::Current()->object_store()->sticky_error()); |
+ String::Handle(isolate->object_store()->sticky_error()); |
const char* errmsg = err.ToCString(); |
intptr_t errlen = strlen(errmsg) + 1; |
char* msg = reinterpret_cast<char*>(Api::Allocate(errlen)); |
@@ -448,29 +441,27 @@ |
DART_EXPORT Dart_Handle Dart_CompileAll() { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
Dart_Handle result; |
- const char* msg = CheckIsolateState(); |
+ const char* msg = CheckIsolateState(isolate); |
if (msg != NULL) { |
return Api::Error(msg); |
} |
- CompileAll(&result); |
+ CompileAll(isolate, &result); |
return result; |
} |
DART_EXPORT bool Dart_IsLibrary(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsLibrary(); |
} |
DART_EXPORT Dart_Handle Dart_LibraryUrl(Dart_Handle library) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Library& lib = Library::CheckedHandle(Api::UnwrapHandle(library)); |
if (lib.IsNull()) { |
return Api::Error("Null library"); |
@@ -483,8 +474,7 @@ |
DART_EXPORT Dart_Handle Dart_LibraryImportLibrary(Dart_Handle library_in, |
Dart_Handle import_in) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Library& library = |
Library::CheckedHandle(Api::UnwrapHandle(library_in)); |
if (library.IsNull()) { |
@@ -498,8 +488,7 @@ |
DART_EXPORT Dart_Handle Dart_LookupLibrary(Dart_Handle url) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
String& url_str = String::Handle(); |
UNWRAP_NONNULL(url, url_str, String); |
const Library& library = Library::Handle(Library::LookupLibrary(url_str)); |
@@ -513,8 +502,8 @@ |
DART_EXPORT Dart_Handle Dart_LoadLibrary(Dart_Handle url, Dart_Handle source) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const String& url_str = String::CheckedHandle(Api::UnwrapHandle(url)); |
const String& source_str = String::CheckedHandle(Api::UnwrapHandle(source)); |
Library& library = Library::Handle(Library::LookupLibrary(url_str)); |
@@ -523,7 +512,12 @@ |
library.Register(); |
} |
Dart_Handle result; |
- CompileSource(library, url_str, source_str, RawScript::kLibrary, &result); |
+ CompileSource(isolate, |
+ library, |
+ url_str, |
+ source_str, |
+ RawScript::kLibrary, |
+ &result); |
return result; |
} |
@@ -531,14 +525,14 @@ |
DART_EXPORT Dart_Handle Dart_LoadSource(Dart_Handle library_in, |
Dart_Handle url_in, |
Dart_Handle source_in) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const String& url = String::CheckedHandle(Api::UnwrapHandle(url_in)); |
const String& source = String::CheckedHandle(Api::UnwrapHandle(source_in)); |
const Library& library = |
Library::CheckedHandle(Api::UnwrapHandle(library_in)); |
Dart_Handle result; |
- CompileSource(library, url, source, RawScript::kSource, &result); |
+ CompileSource(isolate, library, url, source, RawScript::kSource, &result); |
return result; |
} |
@@ -546,8 +540,7 @@ |
DART_EXPORT Dart_Handle Dart_SetNativeResolver( |
Dart_Handle library, |
Dart_NativeEntryResolver resolver) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Library& lib = Library::CheckedHandle(Api::UnwrapHandle(library)); |
if (lib.IsNull()) { |
return Api::Error("Invalid parameter, Unknown library specified"); |
@@ -558,8 +551,7 @@ |
DART_EXPORT Dart_Handle Dart_ToString(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
Object& result = Object::Handle(); |
if (obj.IsString()) { |
@@ -585,24 +577,21 @@ |
DART_EXPORT bool Dart_IsNull(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsNull(); |
} |
DART_EXPORT bool Dart_IsClosure(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsClosure(); |
} |
DART_EXPORT int64_t Dart_ClosureSmrck(Dart_Handle object) { |
- Zone zone; |
- HandleScope scope; |
+ DARTSCOPE(Isolate::Current()); |
const Closure& obj = Closure::CheckedHandle(Api::UnwrapHandle(object)); |
const Integer& smrck = Integer::Handle(obj.smrck()); |
return smrck.IsNull() ? 0 : smrck.AsInt64Value(); |
@@ -610,8 +599,7 @@ |
DART_EXPORT void Dart_ClosureSetSmrck(Dart_Handle object, int64_t value) { |
- Zone zone; |
- HandleScope scope; |
+ DARTSCOPE(Isolate::Current()); |
const Closure& obj = Closure::CheckedHandle(Api::UnwrapHandle(object)); |
const Integer& smrck = Integer::Handle(Integer::New(value)); |
obj.set_smrck(smrck); |
@@ -620,8 +608,7 @@ |
DART_EXPORT Dart_Handle Dart_ObjectEquals(Dart_Handle obj1, Dart_Handle obj2, |
bool* value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Instance& expected = Instance::CheckedHandle(Api::UnwrapHandle(obj1)); |
const Instance& actual = Instance::CheckedHandle(Api::UnwrapHandle(obj2)); |
const Instance& result = |
@@ -641,8 +628,7 @@ |
DART_EXPORT Dart_Handle Dart_IsSame(Dart_Handle obj1, Dart_Handle obj2, |
bool* value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& expected = Object::Handle(Api::UnwrapHandle(obj1)); |
const Object& actual = Object::Handle(Api::UnwrapHandle(obj2)); |
*value = (expected.raw() == actual.raw()); |
@@ -651,8 +637,7 @@ |
DART_EXPORT Dart_Handle Dart_GetClass(Dart_Handle library, Dart_Handle name) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& param = Object::Handle(Api::UnwrapHandle(name)); |
if (param.IsNull() || !param.IsString()) { |
return Api::Error("Invalid class name specified"); |
@@ -679,8 +664,8 @@ |
DART_EXPORT Dart_Handle Dart_ObjectIsType(Dart_Handle object, |
Dart_Handle clazz, |
bool* value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Class& cls = Class::CheckedHandle(Api::UnwrapHandle(clazz)); |
if (cls.IsNull()) { |
return Api::Error("instanceof check against null class"); |
@@ -689,7 +674,7 @@ |
Instance& instance = Instance::Handle(); |
instance ^= obj.raw(); |
// Finalize all classes. |
- const char* msg = CheckIsolateState(); |
+ const char* msg = CheckIsolateState(isolate); |
if (msg != NULL) { |
return Api::Error(msg); |
} |
@@ -701,32 +686,28 @@ |
// TODO(iposva): The argument should be an instance. |
DART_EXPORT bool Dart_IsNumber(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsNumber(); |
} |
DART_EXPORT bool Dart_IsInteger(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsInteger(); |
} |
DART_EXPORT Dart_Handle Dart_NewInteger(int64_t value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Integer& obj = Integer::Handle(Integer::New(value)); |
return Api::NewLocalHandle(obj); |
} |
DART_EXPORT Dart_Handle Dart_NewIntegerFromHexCString(const char* str) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const String& str_obj = String::Handle(String::New(str)); |
const Integer& obj = Integer::Handle(Integer::New(str_obj)); |
return Api::NewLocalHandle(obj); |
@@ -734,8 +715,7 @@ |
DART_EXPORT Dart_Handle Dart_IntegerValue(Dart_Handle integer, int64_t* value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(integer)); |
if (obj.IsSmi() || obj.IsMint()) { |
Integer& integer = Integer::Handle(); |
@@ -759,8 +739,7 @@ |
DART_EXPORT Dart_Handle Dart_IntegerValueHexCString(Dart_Handle integer, |
const char** value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(integer)); |
Bigint& bigint = Bigint::Handle(); |
if (obj.IsSmi() || obj.IsMint()) { |
@@ -781,8 +760,7 @@ |
DART_EXPORT Dart_Handle Dart_IntegerFitsIntoInt64(Dart_Handle integer, |
bool* fits) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(integer)); |
if (obj.IsSmi() || obj.IsMint()) { |
*fits = true; |
@@ -811,8 +789,7 @@ |
DART_EXPORT bool Dart_IsBoolean(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsBool(); |
} |
@@ -825,8 +802,7 @@ |
DART_EXPORT Dart_Handle Dart_BooleanValue(Dart_Handle bool_object, |
bool* value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(bool_object)); |
if (obj.IsBool()) { |
Bool& bool_obj = Bool::Handle(); |
@@ -839,24 +815,21 @@ |
DART_EXPORT bool Dart_IsDouble(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsDouble(); |
} |
DART_EXPORT Dart_Handle Dart_NewDouble(double value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Double& obj = Double::Handle(Double::New(value)); |
return Api::NewLocalHandle(obj); |
} |
DART_EXPORT Dart_Handle Dart_DoubleValue(Dart_Handle integer, double* result) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(integer)); |
if (obj.IsDouble()) { |
Double& double_obj = Double::Handle(); |
@@ -869,16 +842,14 @@ |
DART_EXPORT bool Dart_IsString(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsString(); |
} |
DART_EXPORT Dart_Handle Dart_StringLength(Dart_Handle str, intptr_t* len) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(str)); |
if (obj.IsString()) { |
String& string_obj = String::Handle(); |
@@ -891,8 +862,7 @@ |
DART_EXPORT Dart_Handle Dart_NewString(const char* str) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const String& obj = String::Handle(String::New(str)); |
return Api::NewLocalHandle(obj); |
} |
@@ -900,8 +870,7 @@ |
DART_EXPORT Dart_Handle Dart_NewString8(const uint8_t* codepoints, |
intptr_t length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const String& obj = String::Handle(String::New(codepoints, length)); |
return Api::NewLocalHandle(obj); |
} |
@@ -909,8 +878,7 @@ |
DART_EXPORT Dart_Handle Dart_NewString16(const uint16_t* codepoints, |
intptr_t length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const String& obj = String::Handle(String::New(codepoints, length)); |
return Api::NewLocalHandle(obj); |
} |
@@ -918,24 +886,21 @@ |
DART_EXPORT Dart_Handle Dart_NewString32(const uint32_t* codepoints, |
intptr_t length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const String& obj = String::Handle(String::New(codepoints, length)); |
return Api::NewLocalHandle(obj); |
} |
DART_EXPORT bool Dart_IsString8(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsOneByteString(); |
} |
DART_EXPORT bool Dart_IsString16(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
return obj.IsOneByteString() || obj.IsTwoByteString(); |
} |
@@ -944,8 +909,7 @@ |
DART_EXPORT Dart_Handle Dart_StringGet8(Dart_Handle str, |
uint8_t* codepoints, |
intptr_t* length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(str)); |
if (obj.IsOneByteString()) { |
OneByteString& string_obj = OneByteString::Handle(); |
@@ -967,8 +931,7 @@ |
DART_EXPORT Dart_Handle Dart_StringGet16(Dart_Handle str, |
uint16_t* codepoints, |
intptr_t* length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(str)); |
if (obj.IsOneByteString() || obj.IsTwoByteString()) { |
String& string_obj = String::Handle(); |
@@ -990,8 +953,7 @@ |
DART_EXPORT Dart_Handle Dart_StringGet32(Dart_Handle str, |
uint32_t* codepoints, |
intptr_t* length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(str)); |
if (obj.IsString()) { |
String& string_obj = String::Handle(); |
@@ -1010,8 +972,7 @@ |
DART_EXPORT Dart_Handle Dart_StringToCString(Dart_Handle object, |
const char** result) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
if (obj.IsString()) { |
const char* string_value = obj.ToCString(); |
@@ -1041,26 +1002,25 @@ |
DART_EXPORT bool Dart_IsList(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
// TODO(5526318): Make access to GrowableObjectArray more efficient. |
return (obj.IsArray() || |
- (GetListInstance(Isolate::Current(), obj) != Instance::null())); |
+ (GetListInstance(isolate, obj) != Instance::null())); |
} |
DART_EXPORT Dart_Handle Dart_NewList(intptr_t length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Array& obj = Array::Handle(Array::New(length)); |
return Api::NewLocalHandle(obj); |
} |
DART_EXPORT Dart_Handle Dart_ListLength(Dart_Handle list, intptr_t* len) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
Array& array_obj = Array::Handle(); |
@@ -1070,7 +1030,6 @@ |
} |
// TODO(5526318): Make access to GrowableObjectArray more efficient. |
// Now check and handle a dart object that implements the List interface. |
- Isolate* isolate = Isolate::Current(); |
const Instance& instance = Instance::Handle(GetListInstance(isolate, obj)); |
if (!instance.IsNull()) { |
String& name = String::Handle(String::New("length")); |
@@ -1157,8 +1116,8 @@ |
intptr_t offset, |
uint8_t* native_array, |
intptr_t length) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
Array& array_obj = Array::Handle(); |
@@ -1180,7 +1139,6 @@ |
} |
// TODO(5526318): Make access to GrowableObjectArray more efficient. |
// Now check and handle a dart object that implements the List interface. |
- Isolate* isolate = Isolate::Current(); |
const Instance& instance = Instance::Handle(GetListInstance(isolate, obj)); |
if (!instance.IsNull()) { |
String& name = String::Handle(String::New("[]")); |
@@ -1210,8 +1168,8 @@ |
DART_EXPORT Dart_Handle Dart_ListGetAt(Dart_Handle list, intptr_t index) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
Array& array_obj = Array::Handle(); |
@@ -1224,7 +1182,6 @@ |
} |
// TODO(5526318): Make access to GrowableObjectArray more efficient. |
// Now check and handle a dart object that implements the List interface. |
- Isolate* isolate = Isolate::Current(); |
const Instance& instance = Instance::Handle(GetListInstance(isolate, obj)); |
if (!instance.IsNull()) { |
String& name = String::Handle(String::New("[]")); |
@@ -1283,8 +1240,8 @@ |
intptr_t offset, |
uint8_t* native_array, |
intptr_t length) { |
- Zone zone; |
- HandleScope scope; |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
Array& array_obj = Array::Handle(); |
@@ -1301,7 +1258,6 @@ |
} |
// TODO(5526318): Make access to GrowableObjectArray more efficient. |
// Now check and handle a dart object that implements the List interface. |
- Isolate* isolate = Isolate::Current(); |
const Instance& instance = Instance::Handle(GetListInstance(isolate, obj)); |
if (!instance.IsNull()) { |
String& name = String::Handle(String::New("[]=")); |
@@ -1329,8 +1285,8 @@ |
DART_EXPORT Dart_Handle Dart_ListSetAt(Dart_Handle list, |
intptr_t index, |
Dart_Handle value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(list)); |
if (obj.IsArray()) { |
Array& array_obj = Array::Handle(); |
@@ -1344,7 +1300,6 @@ |
} |
// TODO(5526318): Make access to GrowableObjectArray more efficient. |
// Now check and handle a dart object that implements the List interface. |
- Isolate* isolate = Isolate::Current(); |
const Instance& instance = Instance::Handle(GetListInstance(isolate, obj)); |
if (!instance.IsNull()) { |
String& name = String::Handle(String::New("[]=")); |
@@ -1365,10 +1320,10 @@ |
// NOTE: Need to pass 'result' as a parameter here in order to avoid |
// warning: variable 'result' might be clobbered by 'longjmp' or 'vfork' |
// which shows up because of the use of setjmp. |
-static void InvokeStatic(const Function& function, |
+static void InvokeStatic(Isolate* isolate, |
+ const Function& function, |
GrowableArray<const Object*>& args, |
Dart_Handle* result) { |
- Isolate* isolate = Isolate::Current(); |
ASSERT(isolate != NULL); |
LongJump* base = isolate->long_jump_base(); |
LongJump jump; |
@@ -1392,11 +1347,11 @@ |
// NOTE: Need to pass 'result' as a parameter here in order to avoid |
// warning: variable 'result' might be clobbered by 'longjmp' or 'vfork' |
// which shows up because of the use of setjmp. |
-static void InvokeDynamic(const Instance& receiver, |
+static void InvokeDynamic(Isolate* isolate, |
+ const Instance& receiver, |
const Function& function, |
GrowableArray<const Object*>& args, |
Dart_Handle* result) { |
- Isolate* isolate = Isolate::Current(); |
ASSERT(isolate != NULL); |
LongJump* base = isolate->long_jump_base(); |
LongJump jump; |
@@ -1420,10 +1375,10 @@ |
// NOTE: Need to pass 'result' as a parameter here in order to avoid |
// warning: variable 'result' might be clobbered by 'longjmp' or 'vfork' |
// which shows up because of the use of setjmp. |
-static void InvokeClosure(const Closure& closure, |
+static void InvokeClosure(Isolate* isolate, |
+ const Closure& closure, |
GrowableArray<const Object*>& args, |
Dart_Handle* result) { |
- Isolate* isolate = Isolate::Current(); |
ASSERT(isolate != NULL); |
LongJump* base = isolate->long_jump_base(); |
LongJump jump; |
@@ -1449,10 +1404,10 @@ |
Dart_Handle function_name_in, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
// Finalize all classes. |
- const char* msg = CheckIsolateState(); |
+ const char* msg = CheckIsolateState(isolate); |
if (msg != NULL) { |
return Api::Error(msg); |
} |
@@ -1499,7 +1454,7 @@ |
const Object& arg = Object::Handle(Api::UnwrapHandle(arguments[i])); |
dart_arguments.Add(&arg); |
} |
- InvokeStatic(function, dart_arguments, &retval); |
+ InvokeStatic(isolate, function, dart_arguments, &retval); |
return retval; |
} |
@@ -1508,8 +1463,8 @@ |
Dart_Handle function_name, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(object)); |
// Let the resolver figure out the correct target for null receiver. |
// E.g., (null).toString() should execute correctly. |
@@ -1542,7 +1497,7 @@ |
const Object& arg = Object::Handle(Api::UnwrapHandle(arguments[i])); |
dart_arguments.Add(&arg); |
} |
- InvokeDynamic(receiver, function, dart_arguments, &retval); |
+ InvokeDynamic(isolate, receiver, function, dart_arguments, &retval); |
return retval; |
} |
@@ -1550,8 +1505,8 @@ |
DART_EXPORT Dart_Handle Dart_InvokeClosure(Dart_Handle closure, |
int number_of_arguments, |
Dart_Handle* arguments) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& obj = Object::Handle(Api::UnwrapHandle(closure)); |
if (obj.IsNull()) { |
return Api::Error("Null object passed in to invoke closure"); |
@@ -1570,15 +1525,14 @@ |
const Object& arg = Object::Handle(Api::UnwrapHandle(arguments[i])); |
dart_arguments.Add(&arg); |
} |
- InvokeClosure(closure_obj, dart_arguments, &retval); |
+ InvokeClosure(isolate, closure_obj, dart_arguments, &retval); |
return retval; |
} |
DART_EXPORT Dart_Handle Dart_GetNativeArgument(Dart_NativeArguments args, |
int index) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
const Object& obj = Object::Handle(arguments->At(index)); |
return Api::NewLocalHandle(obj); |
@@ -1593,8 +1547,7 @@ |
DART_EXPORT void Dart_SetReturnValue(Dart_NativeArguments args, |
Dart_Handle retval) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args); |
arguments->SetReturn(Object::Handle(Api::UnwrapHandle(retval))); |
} |
@@ -1602,9 +1555,7 @@ |
DART_EXPORT Dart_Handle Dart_ThrowException(Dart_Handle exception) { |
Isolate* isolate = Isolate::Current(); |
- ASSERT(isolate != NULL); |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(isolate); |
if (isolate->top_exit_frame_info() == 0) { |
// There are no dart frames on the stack so it would be illegal to |
// throw an exception here. |
@@ -1630,8 +1581,7 @@ |
// throw an exception here. |
return Api::Error("No Dart frames on stack, cannot throw exception"); |
} |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(isolate); |
const Instance& excp = Instance::CheckedHandle(Api::UnwrapHandle(exception)); |
const Instance& stk = Instance::CheckedHandle(Api::UnwrapHandle(stacktrace)); |
// Unwind all the API scopes till the exit frame before throwing an |
@@ -1669,10 +1619,8 @@ |
DART_EXPORT Dart_Handle Dart_NewPersistentHandle(Dart_Handle object) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
Isolate* isolate = Isolate::Current(); |
- ASSERT(isolate != NULL); |
+ DARTSCOPE(isolate); |
ApiState* state = isolate->api_state(); |
ASSERT(state != NULL); |
const Object& old_ref = Object::Handle(Api::UnwrapHandle(object)); |
@@ -1793,8 +1741,8 @@ |
DART_EXPORT Dart_Handle Dart_GetStaticField(Dart_Handle cls, |
Dart_Handle name) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
Dart_Handle result = LookupStaticField(cls, name, kGetter); |
if (::Dart_IsError(result)) { |
return result; |
@@ -1810,7 +1758,7 @@ |
Function& func = Function::Handle(); |
func ^= obj.raw(); |
GrowableArray<const Object*> args; |
- InvokeStatic(func, args, &result); |
+ InvokeStatic(isolate, func, args, &result); |
return result; |
} |
} |
@@ -1821,8 +1769,7 @@ |
DART_EXPORT Dart_Handle Dart_SetStaticField(Dart_Handle cls, |
Dart_Handle name, |
Dart_Handle value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
Dart_Handle result = LookupStaticField(cls, name, kSetter); |
if (::Dart_IsError(result)) { |
return result; |
@@ -1842,8 +1789,8 @@ |
DART_EXPORT Dart_Handle Dart_GetInstanceField(Dart_Handle obj, |
Dart_Handle name) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& param = Object::Handle(Api::UnwrapHandle(obj)); |
if (param.IsNull() || !param.IsInstance()) { |
return Api::Error("Invalid object passed in to access instance field"); |
@@ -1857,7 +1804,7 @@ |
Function& func = Function::Handle(); |
func ^= Api::UnwrapHandle(result); |
GrowableArray<const Object*> arguments; |
- InvokeDynamic(object, func, arguments, &result); |
+ InvokeDynamic(isolate, object, func, arguments, &result); |
return result; |
} |
@@ -1865,8 +1812,8 @@ |
DART_EXPORT Dart_Handle Dart_SetInstanceField(Dart_Handle obj, |
Dart_Handle name, |
Dart_Handle value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& param = Object::Handle(Api::UnwrapHandle(obj)); |
if (param.IsNull() || !param.IsInstance()) { |
return Api::Error("Invalid object passed in to access instance field"); |
@@ -1882,7 +1829,7 @@ |
GrowableArray<const Object*> arguments(1); |
const Object& arg = Object::Handle(Api::UnwrapHandle(value)); |
arguments.Add(&arg); |
- InvokeDynamic(object, func, arguments, &result); |
+ InvokeDynamic(isolate, object, func, arguments, &result); |
return result; |
} |
@@ -1890,8 +1837,8 @@ |
DART_EXPORT Dart_Handle Dart_CreateNativeWrapperClass(Dart_Handle library, |
Dart_Handle name, |
int field_count) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
const Object& param = Object::Handle(Api::UnwrapHandle(name)); |
if (param.IsNull() || !param.IsString() || field_count <= 0) { |
return Api::Error( |
@@ -1920,8 +1867,7 @@ |
DART_EXPORT Dart_Handle Dart_GetNativeInstanceField(Dart_Handle obj, |
int index, |
intptr_t* value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& param = Object::Handle(Api::UnwrapHandle(obj)); |
if (param.IsNull() || !param.IsInstance()) { |
return Api::Error( |
@@ -1941,8 +1887,7 @@ |
DART_EXPORT Dart_Handle Dart_SetNativeInstanceField(Dart_Handle obj, |
int index, |
intptr_t value) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& param = Object::Handle(Api::UnwrapHandle(obj)); |
if (param.IsNull() || !param.IsInstance()) { |
return Api::Error("Invalid object passed in to set native instance field"); |
@@ -1969,17 +1914,16 @@ |
DART_EXPORT Dart_Handle Dart_CreateSnapshot(uint8_t** snapshot_buffer, |
intptr_t* snapshot_size) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ Isolate* isolate = Isolate::Current(); |
+ DARTSCOPE(isolate); |
if (snapshot_buffer == NULL || snapshot_size == NULL) { |
return Api::Error("Invalid input parameters to Dart_CreateSnapshot"); |
} |
- const char* msg = CheckIsolateState(); |
+ const char* msg = CheckIsolateState(isolate); |
if (msg != NULL) { |
return Api::Error(msg); |
} |
// Since this is only a snapshot the root library should not be set. |
- Isolate* isolate = Isolate::Current(); |
isolate->object_store()->set_root_library(Library::Handle()); |
SnapshotWriter writer(true, snapshot_buffer, ApiAllocator); |
writer.WriteFullSnapshot(); |
@@ -2008,8 +1952,7 @@ |
DART_EXPORT bool Dart_Post(Dart_Port port, Dart_Handle handle) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
const Object& object = Object::Handle(Api::UnwrapHandle(handle)); |
uint8_t* data = NULL; |
SnapshotWriter writer(false, &data, &allocator); |
@@ -2110,8 +2053,7 @@ |
Dart_Handle Api::Error(const char* format, ...) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
va_list args; |
va_start(args, format); |
@@ -2131,8 +2073,7 @@ |
Dart_Handle Api::ErrorFromException(const Object& obj) { |
- Zone zone; // Setup a VM zone as we are creating some handles. |
- HandleScope scope; // Setup a VM handle scope. |
+ DARTSCOPE(Isolate::Current()); |
ASSERT(obj.IsUnhandledException()); |
if (obj.IsUnhandledException()) { |