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

Unified Diff: runtime/vm/object.cc

Issue 1152753005: Service cleanups... (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Update docs. Tweak TypeRef and BoundedType. Created 5 years, 6 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.h ('k') | runtime/vm/service/service.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 6629bf1b74928035c3c638e1d2371b1dc4d1725a..3de3671f6e86d56d2180f3b9c3f2a56d6193d664 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1586,34 +1586,41 @@ static void AddNameProperties(JSONObject* jsobj,
}
-static void AddTypeProperties(JSONObject* jsobj,
- const char* user_type,
- const char* vm_type,
- bool ref) {
- bool same_type = (strcmp(user_type, vm_type) == 0);
+void Object::AddCommonObjectProperties(JSONObject* jsobj,
+ const char* protocol_type,
+ bool ref) const {
+ const char* vm_type = JSONType();
+ bool same_type = (strcmp(protocol_type, vm_type) == 0);
if (ref) {
- jsobj->AddPropertyF("type", "@%s", user_type);
+ jsobj->AddPropertyF("type", "@%s", protocol_type);
} else {
- jsobj->AddProperty("type", user_type);
+ jsobj->AddProperty("type", protocol_type);
}
if (!same_type) {
jsobj->AddProperty("_vmType", vm_type);
}
+ if (!ref || IsInstance()) {
+ // TODO(turnidge): Provide the type arguments here too?
+ const Class& cls = Class::Handle(this->clazz());
+ jsobj->AddProperty("class", cls);
+ }
+ if (!ref) {
+ if (raw()->IsHeapObject()) {
+ jsobj->AddProperty("size", raw()->Size());
+ } else {
+ jsobj->AddProperty("size", (intptr_t)0);
+ }
+ }
}
void Object::PrintJSON(JSONStream* stream, bool ref) const {
if (IsNull()) {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Instance", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Instance", ref);
jsobj.AddProperty("kind", "Null");
jsobj.AddFixedServiceId("objects/null");
jsobj.AddProperty("valueAsString", "null");
- if (!ref) {
- const Class& cls = Class::Handle(this->clazz());
- jsobj.AddProperty("class", cls);
- jsobj.AddProperty("size", raw()->Size());
- }
} else {
PrintJSONImpl(stream, ref);
}
@@ -1622,14 +1629,11 @@ void Object::PrintJSON(JSONStream* stream, bool ref) const {
void Object::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Object", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Object", ref);
jsobj.AddServiceId(*this);
if (ref) {
return;
}
- Class& cls = Class::Handle(this->clazz());
- jsobj.AddProperty("class", cls);
- jsobj.AddProperty("size", raw()->Size());
}
@@ -4111,12 +4115,11 @@ const char* Class::ToCString() const {
void Class::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
if ((raw() == Class::null()) || (id() == kFreeListElement)) {
- // TODO(turnidge): This is weird. See if there is another way to
- // handle this.
+ // TODO(turnidge): This is weird and needs to be changed.
jsobj.AddProperty("type", "null");
return;
}
- AddTypeProperties(&jsobj, "Class", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Class", ref);
jsobj.AddFixedServiceId("classes/%" Pd "", id());
const String& user_name = String::Handle(PrettyName());
const String& vm_name = String::Handle(Name());
@@ -4444,7 +4447,7 @@ void TypeArguments::PrintJSONImpl(JSONStream* stream, bool ref) const {
ObjectStore* object_store = isolate->object_store();
const Array& table = Array::Handle(object_store->canonical_type_arguments());
ASSERT(table.Length() > 0);
- AddTypeProperties(&jsobj, "TypeArguments", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "TypeArguments", ref);
jsobj.AddServiceId(*this);
const String& user_name = String::Handle(PrettyName());
const String& vm_name = String::Handle(Name());
@@ -6889,7 +6892,7 @@ void Function::PrintJSONImpl(JSONStream* stream, bool ref) const {
err ^= cls.EnsureIsFinalized(Isolate::Current());
ASSERT(err.IsNull());
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Function", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Function", ref);
AddFunctionServiceId(jsobj, *this, cls);
const String& user_name = String::Handle(PrettyName());
const String& vm_name = String::Handle(name());
@@ -7237,7 +7240,7 @@ void Field::PrintJSONImpl(JSONStream* stream, bool ref) const {
intptr_t id = cls.FindFieldIndex(*this);
ASSERT(id >= 0);
intptr_t cid = cls.id();
- AddTypeProperties(&jsobj, "Field", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Field", ref);
jsobj.AddFixedServiceId("classes/%" Pd "/fields/%" Pd "", cid, id);
const String& user_name = String::Handle(PrettyName());
const String& vm_name = String::Handle(name());
@@ -8021,16 +8024,13 @@ const char* TokenStream::ToCString() const {
void TokenStream::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Object", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Object", ref);
// TODO(johnmccutchan): Generate a stable id. TokenStreams hang off
// a Script object but do not have a back reference to generate a stable id.
jsobj.AddServiceId(*this);
if (ref) {
return;
}
- Class& cls = Class::Handle(this->clazz());
- jsobj.AddProperty("class", cls);
- jsobj.AddProperty("size", raw()->Size());
const String& private_key = String::Handle(PrivateKey());
jsobj.AddProperty("privateKey", private_key);
// TODO(johnmccutchan): Add support for printing LiteralTokens and add
@@ -8555,7 +8555,7 @@ RawLibrary* Script::FindLibrary() const {
// See also Dart_ScriptGetTokenInfo.
void Script::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Script", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Script", ref);
const String& uri = String::Handle(url());
ASSERT(!uri.IsNull());
const String& encoded_uri = String::Handle(String::EncodeIRI(uri));
@@ -9906,7 +9906,7 @@ void Library::PrintJSONImpl(JSONStream* stream, bool ref) const {
intptr_t id = index();
ASSERT(id >= 0);
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Library", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Library", ref);
jsobj.AddFixedServiceId("libraries/%" Pd "", id);
jsobj.AddProperty("name", library_name);
const String& library_url = String::Handle(url());
@@ -10766,16 +10766,13 @@ const char* PcDescriptors::ToCString() const {
void PcDescriptors::PrintToJSONObject(JSONObject* jsobj, bool ref) const {
- AddTypeProperties(jsobj, "Object", JSONType(), ref);
+ AddCommonObjectProperties(jsobj, "Object", ref);
// TODO(johnmccutchan): Generate a stable id. PcDescriptors hang off a Code
// object but do not have a back reference to generate an ID.
jsobj->AddServiceId(*this);
if (ref) {
return;
}
- Class& cls = Class::Handle(this->clazz());
- jsobj->AddProperty("class", cls);
- jsobj->AddProperty("size", raw()->Size());
JSONArray members(jsobj, "members");
Iterator iter(*this, RawPcDescriptors::kAnyKind);
while (iter.MoveNext()) {
@@ -11048,16 +11045,13 @@ const char* LocalVarDescriptors::ToCString() const {
void LocalVarDescriptors::PrintJSONImpl(JSONStream* stream,
bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Object", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Object", ref);
// TODO(johnmccutchan): Generate a stable id. LocalVarDescriptors hang off
// a Code object but do not have a back reference to generate an ID.
jsobj.AddServiceId(*this);
if (ref) {
return;
}
- Class& cls = Class::Handle(this->clazz());
- jsobj.AddProperty("class", cls);
- jsobj.AddProperty("size", raw()->Size());
JSONArray members(&jsobj, "members");
String& var_name = String::Handle();
for (intptr_t i = 0; i < Length(); i++) {
@@ -12728,7 +12722,7 @@ bool Code::IsFunctionCode() const {
void Code::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Code", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Code", ref);
jsobj.AddFixedServiceId("code/%" Px64"-%" Px "",
compile_timestamp(),
EntryPoint());
@@ -13027,7 +13021,7 @@ void Context::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
// TODO(turnidge): Should the user level type for Context be Context
// or Object?
- AddTypeProperties(&jsobj, "Context", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Context", ref);
jsobj.AddServiceId(*this);
jsobj.AddProperty("length", num_variables());
@@ -13036,19 +13030,14 @@ void Context::PrintJSONImpl(JSONStream* stream, bool ref) const {
return;
}
- Class& cls = Class::Handle(this->clazz());
- jsobj.AddProperty("class", cls);
-
- jsobj.AddProperty("size", raw()->Size());
-
const Context& parent_context = Context::Handle(parent());
jsobj.AddProperty("parent", parent_context);
JSONArray jsarr(&jsobj, "variables");
- for (intptr_t i = 0; i < num_variables(); i++) {
- const Object& var = Object::Handle(At(i));
+ Object& var = Object::Handle();
+ for (intptr_t index = 0; index < num_variables(); index++) {
+ var = At(index);
JSONObject jselement(&jsarr);
- jselement.AddProperty("index", i);
jselement.AddProperty("value", var);
}
}
@@ -13446,7 +13435,9 @@ const char* ApiError::ToCString() const {
void ApiError::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Error", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Error", ref);
+ jsobj.AddProperty("kind", "InternalError");
+ jsobj.AddServiceId(*this);
jsobj.AddProperty("message", ToErrorCString());
}
@@ -13583,7 +13574,9 @@ const char* LanguageError::ToCString() const {
void LanguageError::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Error", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Error", ref);
+ jsobj.AddProperty("kind", "LanguageError");
+ jsobj.AddServiceId(*this);
jsobj.AddProperty("message", ToErrorCString());
}
@@ -13674,9 +13667,13 @@ const char* UnhandledException::ToCString() const {
void UnhandledException::PrintJSONImpl(JSONStream* stream,
bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Error", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Error", ref);
+ jsobj.AddProperty("kind", "UnhandledException");
+ jsobj.AddServiceId(*this);
jsobj.AddProperty("message", ToErrorCString());
-
+ if (ref) {
+ return;
+ }
Instance& instance = Instance::Handle();
instance = exception();
jsobj.AddProperty("exception", instance);
@@ -13718,7 +13715,9 @@ const char* UnwindError::ToCString() const {
void UnwindError::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONObject jsobj(stream);
- AddTypeProperties(&jsobj, "Error", JSONType(), ref);
+ AddCommonObjectProperties(&jsobj, "Error", ref);
+ jsobj.AddProperty("kind", "TerminationError");
+ jsobj.AddServiceId(*this);
jsobj.AddProperty("message", ToErrorCString());
}
@@ -14161,21 +14160,13 @@ const char* Instance::ToCString() const {
void Instance::PrintSharedInstanceJSON(JSONObject* jsobj,
bool ref) const {
- AddTypeProperties(jsobj, "Instance", JSONType(), ref);
- Class& cls = Class::Handle(this->clazz());
- jsobj->AddProperty("class", cls);
- // TODO(turnidge): Provide the type arguments here too.
+ AddCommonObjectProperties(jsobj, "Instance", ref);
if (ref) {
return;
}
- if (raw()->IsHeapObject()) {
- jsobj->AddProperty("size", raw()->Size());
- } else {
- jsobj->AddProperty("size", (intptr_t)0);
- }
-
// Walk the superclass chain, adding all instance fields.
+ Class& cls = Class::Handle(this->clazz());
{
Instance& fieldValue = Instance::Handle();
JSONArray jsarr(jsobj, "fields");
@@ -15529,7 +15520,7 @@ void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const {
if (ref) {
return;
}
- jsobj.AddProperty("type", AbstractType::Handle(type()));
+ jsobj.AddProperty("targetType", AbstractType::Handle(type()));
}
@@ -15979,7 +15970,7 @@ void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const {
if (ref) {
return;
}
- jsobj.AddProperty("type", AbstractType::Handle(type()));
+ jsobj.AddProperty("targetType", AbstractType::Handle(type()));
jsobj.AddProperty("bound", AbstractType::Handle(bound()));
}
@@ -19374,11 +19365,8 @@ void Array::PrintJSONImpl(JSONStream* stream, bool ref) const {
JSONArray jsarr(&jsobj, "elements");
Object& element = Object::Handle();
for (intptr_t index = 0; index < Length(); index++) {
- JSONObject jselement(&jsarr);
- jselement.AddProperty("index", index);
-
element = At(index);
- jselement.AddProperty("value", element);
+ jsarr.AddValue(element);
}
}
}
@@ -19621,11 +19609,8 @@ void GrowableObjectArray::PrintJSONImpl(JSONStream* stream,
JSONArray jsarr(&jsobj, "elements");
Object& element = Object::Handle();
for (intptr_t index = 0; index < Length(); index++) {
- JSONObject jselement(&jsarr);
- jselement.AddProperty("index", index);
-
element = At(index);
- jselement.AddProperty("value", element);
+ jsarr.AddValue(element);
}
}
}
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/service/service.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698