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

Unified Diff: runtime/vm/dart_api_impl.cc

Issue 8528010: Changes to pass the current isolate to all runtime and native calls. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: '' Created 9 years, 1 month 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
Index: runtime/vm/dart_api_impl.cc
===================================================================
--- runtime/vm/dart_api_impl.cc (revision 1428)
+++ runtime/vm/dart_api_impl.cc (working copy)
@@ -55,9 +55,8 @@
DART_EXPORT bool Dart_IsValid(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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
// Make sure that the object isn't an ApiFailure.
const Object& obj = Object::Handle(Api::UnwrapHandle(handle));
@@ -76,9 +75,9 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
+
const Object& obj = Object::Handle(Api::UnwrapHandle(handle));
if (!obj.IsApiFailure()) {
return "";
@@ -97,8 +96,8 @@
// 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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
va_list args;
va_start(args, format);
@@ -139,10 +138,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());
}
@@ -229,8 +227,9 @@
DART_EXPORT void 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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
+
const Instance& msg = Instance::Handle(DeserializeMessage(dart_message));
const String& class_name =
String::Handle(String::NewSymbol("ReceivePortImpl"));
@@ -264,10 +263,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;
@@ -286,13 +284,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;
@@ -311,9 +309,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));
@@ -326,17 +322,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;
@@ -353,12 +353,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));
@@ -370,29 +370,29 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
Ivan Posva 2011/11/11 22:07:07 How about changing this to: DARTSCOPE(Isolate::Cur
siva 2011/11/12 03:01:05 Done.
const Library& lib = Library::CheckedHandle(Api::UnwrapHandle(library));
if (lib.IsNull()) {
return Api::Error("Null library");
@@ -405,8 +405,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Library& library =
Library::CheckedHandle(Api::UnwrapHandle(library_in));
if (library.IsNull()) {
@@ -420,8 +420,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
String& url_str = String::Handle();
UNWRAP_NONNULL(url, url_str, String);
const Library& library = Library::Handle(Library::LookupLibrary(url_str));
@@ -435,8 +435,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));
@@ -445,7 +445,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;
}
@@ -453,14 +458,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;
}
@@ -468,8 +473,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Library& lib = Library::CheckedHandle(Api::UnwrapHandle(library));
if (lib.IsNull()) {
return Api::Error("Invalid parameter, Unknown library specified");
@@ -480,8 +485,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(object));
Object& result = Object::Handle();
if (obj.IsString()) {
@@ -507,24 +512,24 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(object));
return obj.IsClosure();
}
DART_EXPORT int64_t Dart_ClosureSmrck(Dart_Handle object) {
- Zone zone;
- HandleScope scope;
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Closure& obj = Closure::CheckedHandle(Api::UnwrapHandle(object));
const Integer& smrck = Integer::Handle(obj.smrck());
return smrck.IsNull() ? 0 : smrck.AsInt64Value();
@@ -532,8 +537,8 @@
DART_EXPORT void Dart_ClosureSetSmrck(Dart_Handle object, int64_t value) {
- Zone zone;
- HandleScope scope;
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Closure& obj = Closure::CheckedHandle(Api::UnwrapHandle(object));
const Integer& smrck = Integer::Handle(Integer::New(value));
obj.set_smrck(smrck);
@@ -542,8 +547,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Instance& expected = Instance::CheckedHandle(Api::UnwrapHandle(obj1));
const Instance& actual = Instance::CheckedHandle(Api::UnwrapHandle(obj2));
const Instance& result =
@@ -561,8 +566,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& expected = Object::Handle(Api::UnwrapHandle(obj1));
const Object& actual = Object::Handle(Api::UnwrapHandle(obj2));
*value = (expected.raw() == actual.raw());
@@ -571,8 +576,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& param = Object::Handle(Api::UnwrapHandle(name));
if (param.IsNull() || !param.IsString()) {
return Api::Error("Invalid class name specified");
@@ -599,8 +604,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");
@@ -609,7 +614,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);
}
@@ -621,32 +626,32 @@
// 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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const String& str_obj = String::Handle(String::New(str));
const Integer& obj = Integer::Handle(Integer::New(str_obj));
return Api::NewLocalHandle(obj);
@@ -654,8 +659,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(integer));
if (obj.IsSmi() || obj.IsMint()) {
Integer& integer = Integer::Handle();
@@ -679,8 +684,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(integer));
Bigint& bigint = Bigint::Handle();
if (obj.IsSmi() || obj.IsMint()) {
@@ -701,8 +706,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(integer));
if (obj.IsSmi() || obj.IsMint()) {
*fits = true;
@@ -731,8 +736,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(object));
return obj.IsBool();
}
@@ -745,8 +750,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(bool_object));
if (obj.IsBool()) {
Bool& bool_obj = Bool::Handle();
@@ -759,24 +764,24 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(integer));
if (obj.IsDouble()) {
Double& double_obj = Double::Handle();
@@ -789,16 +794,16 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(str));
if (obj.IsString()) {
String& string_obj = String::Handle();
@@ -811,8 +816,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const String& obj = String::Handle(String::New(str));
return Api::NewLocalHandle(obj);
}
@@ -820,8 +825,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const String& obj = String::Handle(String::New(codepoints, length));
return Api::NewLocalHandle(obj);
}
@@ -829,8 +834,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const String& obj = String::Handle(String::New(codepoints, length));
return Api::NewLocalHandle(obj);
}
@@ -838,24 +843,24 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(object));
return obj.IsOneByteString() || obj.IsTwoByteString();
}
@@ -864,8 +869,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(str));
if (obj.IsOneByteString()) {
OneByteString& string_obj = OneByteString::Handle();
@@ -887,8 +892,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(str));
if (obj.IsOneByteString() || obj.IsTwoByteString()) {
String& string_obj = String::Handle();
@@ -910,8 +915,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(str));
if (obj.IsString()) {
String& string_obj = String::Handle();
@@ -930,8 +935,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& obj = Object::Handle(Api::UnwrapHandle(object));
if (obj.IsString()) {
const char* string_value = obj.ToCString();
@@ -961,26 +966,26 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
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();
@@ -990,7 +995,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"));
@@ -1075,8 +1079,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();
@@ -1098,7 +1102,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("[]"));
@@ -1128,8 +1131,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();
@@ -1142,7 +1145,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("[]"));
@@ -1201,8 +1203,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();
@@ -1219,7 +1221,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("[]="));
@@ -1247,8 +1248,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();
@@ -1262,7 +1263,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,10 +1283,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;
@@ -1306,11 +1306,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;
@@ -1330,10 +1330,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;
@@ -1355,10 +1355,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);
}
@@ -1405,7 +1405,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;
}
@@ -1414,8 +1414,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.
@@ -1448,7 +1448,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;
}
@@ -1456,8 +1456,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");
@@ -1476,15 +1476,15 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args);
const Object& obj = Object::Handle(arguments->At(index));
return Api::NewLocalHandle(obj);
@@ -1499,24 +1499,24 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
NativeArguments* arguments = reinterpret_cast<NativeArguments*>(args);
arguments->SetReturn(Object::Handle(Api::UnwrapHandle(retval)));
}
DART_EXPORT bool Dart_ExceptionOccurred(Dart_Handle result) {
- 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& retval = Object::Handle(Api::UnwrapHandle(result));
return retval.IsUnhandledException();
}
DART_EXPORT Dart_Handle Dart_GetException(Dart_Handle result) {
- 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& retval = Object::Handle(Api::UnwrapHandle(result));
if (retval.IsUnhandledException()) {
const UnhandledException& unhandled = UnhandledException::Handle(
@@ -1529,8 +1529,8 @@
DART_EXPORT Dart_Handle Dart_GetStacktrace(Dart_Handle unhandled_excp) {
- 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& retval = Object::Handle(Api::UnwrapHandle(unhandled_excp));
if (retval.IsUnhandledException()) {
const UnhandledException& unhandled = UnhandledException::Handle(
@@ -1544,9 +1544,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.
@@ -1572,8 +1570,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
@@ -1611,10 +1608,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));
@@ -1735,8 +1730,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_IsValid(result)) {
return result;
@@ -1752,7 +1747,7 @@
Function& func = Function::Handle();
func ^= obj.raw();
GrowableArray<const Object*> args;
- InvokeStatic(func, args, &result);
+ InvokeStatic(isolate, func, args, &result);
if (::Dart_IsValid(result)) {
if (Dart_ExceptionOccurred(result)) {
return Api::Error(
@@ -1768,8 +1763,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
Dart_Handle result = LookupStaticField(cls, name, kSetter);
if (!::Dart_IsValid(result)) {
return result;
@@ -1789,8 +1784,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");
@@ -1804,7 +1799,7 @@
Function& func = Function::Handle();
func ^= Api::UnwrapHandle(result);
GrowableArray<const Object*> arguments;
- InvokeDynamic(object, func, arguments, &result);
+ InvokeDynamic(isolate, object, func, arguments, &result);
if (::Dart_IsValid(result)) {
if (Dart_ExceptionOccurred(result)) {
return Api::Error(
@@ -1818,8 +1813,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");
@@ -1835,7 +1830,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);
if (::Dart_IsValid(result)) {
if (Dart_ExceptionOccurred(result)) {
return Api::Error(
@@ -1849,8 +1844,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(
@@ -1879,8 +1874,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& param = Object::Handle(Api::UnwrapHandle(obj));
if (param.IsNull() || !param.IsInstance()) {
return Api::Error(
@@ -1900,8 +1895,8 @@
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.
+ 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 set native instance field");
@@ -1928,17 +1923,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();
@@ -1967,8 +1961,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
const Object& object = Object::Handle(Api::UnwrapHandle(handle));
uint8_t* data = NULL;
SnapshotWriter writer(false, &data, &allocator);
@@ -2069,8 +2063,8 @@
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.
+ Isolate* isolate = Isolate::Current();
+ DARTSCOPE(isolate);
va_list args;
va_start(args, format);

Powered by Google App Engine
This is Rietveld 408576698