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

Unified Diff: runtime/vm/service.cc

Issue 1414493003: Remove some Isolate::current_zone() calls, as it gets the zone from mutator thread not the current … (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Zones and commentw 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/object.cc ('k') | runtime/vm/snapshot.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/service.cc
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index 42e50a4a108e610df1af186d91eedd4259bedc8f..bd6a41988990b953d35a63954fff7f08348fb2e6 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -1101,7 +1101,7 @@ static bool ContainsNonInstance(const Object& obj) {
}
-static RawObject* LookupObjectId(Isolate* isolate,
+static RawObject* LookupObjectId(Thread* thread,
const char* arg,
ObjectIdRing::LookupResult* kind) {
*kind = ObjectIdRing::kValid;
@@ -1113,7 +1113,7 @@ static RawObject* LookupObjectId(Isolate* isolate,
*kind = ObjectIdRing::kInvalid;
return Object::null();
}
- const Integer& obj = Integer::Handle(isolate->current_zone(),
+ const Integer& obj = Integer::Handle(thread->zone(),
Smi::New(static_cast<intptr_t>(value)));
return obj.raw();
} else if (strcmp(arg, "bool-true") == 0) {
@@ -1124,7 +1124,7 @@ static RawObject* LookupObjectId(Isolate* isolate,
return Object::null();
}
- ObjectIdRing* ring = isolate->object_id_ring();
+ ObjectIdRing* ring = thread->isolate()->object_id_ring();
ASSERT(ring != NULL);
intptr_t id = -1;
if (!GetIntegerId(arg, &id)) {
@@ -1185,19 +1185,21 @@ static RawObject* LookupHeapObjectLibraries(Isolate* isolate,
return Object::sentinel().raw();
}
-static RawObject* LookupHeapObjectClasses(Isolate* isolate,
+static RawObject* LookupHeapObjectClasses(Thread* thread,
char** parts, int num_parts) {
// Class ids look like: "classes/17"
if (num_parts < 2) {
return Object::sentinel().raw();
}
+ Isolate* isolate = thread->isolate();
+ Zone* zone = thread->zone();
ClassTable* table = isolate->class_table();
intptr_t id;
if (!GetIntegerId(parts[1], &id) ||
!table->IsValidIndex(id)) {
return Object::sentinel().raw();
}
- Class& cls = Class::Handle(table->At(id));
+ Class& cls = Class::Handle(zone, table->At(id));
if (num_parts == 2) {
return cls.raw();
}
@@ -1210,7 +1212,7 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
if (!GetIntegerId(parts[3], &id)) {
return Object::sentinel().raw();
}
- Function& func = Function::Handle();
+ Function& func = Function::Handle(zone);
func ^= cls.ClosureFunctionFromIndex(id);
if (func.IsNull()) {
return Object::sentinel().raw();
@@ -1226,7 +1228,7 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
if (!GetIntegerId(parts[3], &id)) {
return Object::sentinel().raw();
}
- Field& field = Field::Handle(cls.FieldFromIndex(id));
+ Field& field = Field::Handle(zone, cls.FieldFromIndex(id));
if (field.IsNull()) {
return Object::sentinel().raw();
}
@@ -1238,13 +1240,12 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
return Object::sentinel().raw();
}
const char* encoded_id = parts[3];
- String& id = String::Handle(isolate->current_zone(),
- String::New(encoded_id));
+ String& id = String::Handle(zone, String::New(encoded_id));
id = String::DecodeIRI(id);
if (id.IsNull()) {
return Object::sentinel().raw();
}
- Function& func = Function::Handle(cls.LookupFunction(id));
+ Function& func = Function::Handle(zone, cls.LookupFunction(id));
if (func.IsNull()) {
return Object::sentinel().raw();
}
@@ -1259,7 +1260,7 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
if (!GetIntegerId(parts[3], &id)) {
return Object::sentinel().raw();
}
- Function& func = Function::Handle();
+ Function& func = Function::Handle(zone);
func ^= cls.ImplicitClosureFunctionFromIndex(id);
if (func.IsNull()) {
return Object::sentinel().raw();
@@ -1275,7 +1276,7 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
if (!GetIntegerId(parts[3], &id)) {
return Object::sentinel().raw();
}
- Function& func = Function::Handle();
+ Function& func = Function::Handle(zone);
func ^= cls.InvocationDispatcherFunctionFromIndex(id);
if (func.IsNull()) {
return Object::sentinel().raw();
@@ -1291,7 +1292,7 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
if (!GetIntegerId(parts[3], &id)) {
return Object::sentinel().raw();
}
- Type& type = Type::Handle();
+ Type& type = Type::Handle(zone);
type ^= cls.CanonicalTypeFromIndex(id);
if (type.IsNull()) {
return Object::sentinel().raw();
@@ -1304,8 +1305,9 @@ static RawObject* LookupHeapObjectClasses(Isolate* isolate,
}
-static RawObject* LookupHeapObjectTypeArguments(Isolate* isolate,
- char** parts, int num_parts) {
+static RawObject* LookupHeapObjectTypeArguments(Thread* thread,
+ char** parts, int num_parts) {
+ Isolate* isolate = thread->isolate();
// TypeArguments ids look like: "typearguments/17"
if (num_parts < 2) {
return Object::sentinel().raw();
@@ -1315,7 +1317,8 @@ static RawObject* LookupHeapObjectTypeArguments(Isolate* isolate,
return Object::sentinel().raw();
}
ObjectStore* object_store = isolate->object_store();
- const Array& table = Array::Handle(object_store->canonical_type_arguments());
+ const Array& table = Array::Handle(thread->zone(),
+ object_store->canonical_type_arguments());
ASSERT(table.Length() > 0);
const intptr_t table_size = table.Length() - 1;
if ((id < 0) || (id >= table_size) || (table.At(id) == Object::null())) {
@@ -1399,7 +1402,8 @@ static RawObject* LookupHeapObjectMessage(Isolate* isolate,
static RawObject* LookupHeapObject(Isolate* isolate,
const char* id_original,
ObjectIdRing::LookupResult* result) {
- char* id = Thread::Current()->zone()->MakeCopyOfString(id_original);
+ Thread* thread = Thread::Current();
+ char* id = thread->zone()->MakeCopyOfString(id_original);
// Parse the id by splitting at each '/'.
const int MAX_PARTS = 8;
@@ -1429,9 +1433,9 @@ static RawObject* LookupHeapObject(Isolate* isolate,
if (strcmp(parts[0], "objects") == 0) {
// Object ids look like "objects/1123"
- Object& obj = Object::Handle(isolate->current_zone());
+ Object& obj = Object::Handle(thread->zone());
ObjectIdRing::LookupResult lookup_result;
- obj = LookupObjectId(isolate, parts[1], &lookup_result);
+ obj = LookupObjectId(thread, parts[1], &lookup_result);
if (lookup_result != ObjectIdRing::kValid) {
if (result != NULL) {
*result = lookup_result;
@@ -1443,9 +1447,9 @@ static RawObject* LookupHeapObject(Isolate* isolate,
} else if (strcmp(parts[0], "libraries") == 0) {
return LookupHeapObjectLibraries(isolate, parts, num_parts);
} else if (strcmp(parts[0], "classes") == 0) {
- return LookupHeapObjectClasses(isolate, parts, num_parts);
+ return LookupHeapObjectClasses(thread, parts, num_parts);
} else if (strcmp(parts[0], "typearguments") == 0) {
- return LookupHeapObjectTypeArguments(isolate, parts, num_parts);
+ return LookupHeapObjectTypeArguments(thread, parts, num_parts);
} else if (strcmp(parts[0], "code") == 0) {
return LookupHeapObjectCode(isolate, parts, num_parts);
} else if (strcmp(parts[0], "messages") == 0) {
@@ -1779,11 +1783,11 @@ static bool Evaluate(Isolate* isolate, JSONStream* js) {
PrintMissingParamError(js, "expression");
return true;
}
- const String& expr_str =
- String::Handle(isolate->current_zone(), String::New(expr));
+ Zone* zone = Thread::Current()->zone();
+ const String& expr_str = String::Handle(zone, String::New(expr));
ObjectIdRing::LookupResult lookup_result;
- Object& obj = Object::Handle(LookupHeapObject(isolate, target_id,
- &lookup_result));
+ Object& obj = Object::Handle(zone, LookupHeapObject(isolate, target_id,
+ &lookup_result));
if (obj.raw() == Object::sentinel().raw()) {
if (lookup_result == ObjectIdRing::kCollected) {
PrintSentinel(js, kCollectedSentinel);
@@ -1796,29 +1800,27 @@ static bool Evaluate(Isolate* isolate, JSONStream* js) {
}
if (obj.IsLibrary()) {
const Library& lib = Library::Cast(obj);
- const Object& result = Object::Handle(lib.Evaluate(expr_str,
- Array::empty_array(),
- Array::empty_array()));
+ const Object& result = Object::Handle(zone,
+ lib.Evaluate(expr_str, Array::empty_array(), Array::empty_array()));
result.PrintJSON(js, true);
return true;
}
if (obj.IsClass()) {
const Class& cls = Class::Cast(obj);
- const Object& result = Object::Handle(cls.Evaluate(expr_str,
- Array::empty_array(),
- Array::empty_array()));
+ const Object& result = Object::Handle(zone,
+ cls.Evaluate(expr_str, Array::empty_array(), Array::empty_array()));
result.PrintJSON(js, true);
return true;
}
if ((obj.IsInstance() || obj.IsNull()) &&
!ContainsNonInstance(obj)) {
// We don't use Instance::Cast here because it doesn't allow null.
- Instance& instance = Instance::Handle(isolate->current_zone());
+ Instance& instance = Instance::Handle(zone);
instance ^= obj.raw();
const Object& result =
- Object::Handle(instance.Evaluate(expr_str,
- Array::empty_array(),
- Array::empty_array()));
+ Object::Handle(zone, instance.Evaluate(expr_str,
+ Array::empty_array(),
+ Array::empty_array()));
result.PrintJSON(js, true);
return true;
}
@@ -1852,11 +1854,11 @@ static bool EvaluateInFrame(Isolate* isolate, JSONStream* js) {
}
ActivationFrame* frame = stack->FrameAt(framePos);
+ Zone* zone = Thread::Current()->zone();
const char* expr = js->LookupParam("expression");
- const String& expr_str = String::Handle(isolate->current_zone(),
- String::New(expr));
+ const String& expr_str = String::Handle(zone, String::New(expr));
- const Object& result = Object::Handle(frame->Evaluate(expr_str));
+ const Object& result = Object::Handle(zone, frame->Evaluate(expr_str));
result.PrintJSON(js, true);
return true;
}
« no previous file with comments | « runtime/vm/object.cc ('k') | runtime/vm/snapshot.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698