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

Unified Diff: runtime/vm/object.cc

Issue 1660063002: Remove many features when building product mode (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 10 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/object_id_ring.cc » ('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 b7d6ead2191b67f513dcabb2e155638b8725aced..6fb26aa9a2d044f54ca8f68aa49222d6adac2e08 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1724,67 +1724,6 @@ void Object::Print() const {
}
-static void AddNameProperties(JSONObject* jsobj,
- const String& name,
- const String& vm_name) {
- jsobj->AddProperty("name", name.ToCString());
- if (!name.Equals(vm_name)) {
- jsobj->AddProperty("_vmName", vm_name.ToCString());
- }
-}
-
-
-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", protocol_type);
- } else {
- jsobj->AddProperty("type", protocol_type);
- }
- if (!same_type) {
- jsobj->AddProperty("_vmType", vm_type);
- }
- if (!ref || IsInstance() || IsNull()) {
- // 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);
- AddCommonObjectProperties(&jsobj, "Instance", ref);
- jsobj.AddProperty("kind", "Null");
- jsobj.AddFixedServiceId("objects/null");
- jsobj.AddProperty("valueAsString", "null");
- } else {
- PrintJSONImpl(stream, ref);
- }
-}
-
-
-void Object::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Object", ref);
- jsobj.AddServiceId(*this);
- if (ref) {
- return;
- }
-}
-
-
RawString* Object::DictionaryName() const {
return String::null();
}
@@ -4134,100 +4073,6 @@ const char* Class::ToCString() const {
}
-void Class::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Isolate* isolate = Isolate::Current();
- JSONObject jsobj(stream);
- if ((raw() == Class::null()) || (id() == kFreeListElement)) {
- // TODO(turnidge): This is weird and needs to be changed.
- jsobj.AddProperty("type", "null");
- return;
- }
- AddCommonObjectProperties(&jsobj, "Class", ref);
- jsobj.AddFixedServiceId("classes/%" Pd "", id());
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (ref) {
- return;
- }
-
- const Error& err = Error::Handle(EnsureIsFinalized(Thread::Current()));
- if (!err.IsNull()) {
- jsobj.AddProperty("error", err);
- }
- jsobj.AddProperty("abstract", is_abstract());
- jsobj.AddProperty("const", is_const());
- jsobj.AddProperty("_finalized", is_finalized());
- jsobj.AddProperty("_implemented", is_implemented());
- jsobj.AddProperty("_patch", is_patch());
- jsobj.AddProperty("_traceAllocations", TraceAllocation(isolate));
- const Class& superClass = Class::Handle(SuperClass());
- if (!superClass.IsNull()) {
- jsobj.AddProperty("super", superClass);
- }
- jsobj.AddProperty("library", Object::Handle(library()));
- const Script& script = Script::Handle(this->script());
- if (!script.IsNull()) {
- jsobj.AddLocation(script, token_pos(), ComputeEndTokenPos());
- }
- {
- JSONArray interfaces_array(&jsobj, "interfaces");
- const Array& interface_array = Array::Handle(interfaces());
- Type& interface_type = Type::Handle();
- if (!interface_array.IsNull()) {
- for (intptr_t i = 0; i < interface_array.Length(); ++i) {
- interface_type ^= interface_array.At(i);
- interfaces_array.AddValue(interface_type);
- }
- }
- }
- {
- JSONArray fields_array(&jsobj, "fields");
- const Array& field_array = Array::Handle(fields());
- Field& field = Field::Handle();
- if (!field_array.IsNull()) {
- for (intptr_t i = 0; i < field_array.Length(); ++i) {
- field ^= field_array.At(i);
- fields_array.AddValue(field);
- }
- }
- }
- {
- JSONArray functions_array(&jsobj, "functions");
- const Array& function_array = Array::Handle(functions());
- Function& function = Function::Handle();
- if (!function_array.IsNull()) {
- for (intptr_t i = 0; i < function_array.Length(); i++) {
- function ^= function_array.At(i);
- functions_array.AddValue(function);
- }
- }
- }
- {
- JSONArray subclasses_array(&jsobj, "subclasses");
- const GrowableObjectArray& subclasses =
- GrowableObjectArray::Handle(direct_subclasses());
- if (!subclasses.IsNull()) {
- Class& subclass = Class::Handle();
- for (intptr_t i = 0; i < subclasses.Length(); ++i) {
- // TODO(turnidge): Use the Type directly once regis has added
- // types to the vmservice.
- subclass ^= subclasses.At(i);
- subclasses_array.AddValue(subclass);
- }
- }
- }
- {
- ClassTable* class_table = Isolate::Current()->class_table();
- const ClassHeapStats* stats = class_table->StatsWithUpdatedSize(id());
- if (stats != NULL) {
- JSONObject allocation_stats(&jsobj, "_allocationStats");
- stats->PrintToJSONObject(*this, &allocation_stats);
- }
- }
-}
-
-
void Class::InsertCanonicalConstant(intptr_t index,
const Instance& constant) const {
// The constant needs to be added to the list. Grow the list if it is full.
@@ -4306,11 +4151,6 @@ const char* UnresolvedClass::ToCString() const {
}
-void UnresolvedClass::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
static uint32_t CombineHashes(uint32_t hash, uint32_t other_hash) {
hash += other_hash;
hash += hash << 10;
@@ -4461,52 +4301,6 @@ bool TypeArguments::TypeTest(TypeTestKind test_kind,
}
-void TypeArguments::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- // The index in the canonical_type_arguments table cannot be used as part of
- // the object id (as in typearguments/id), because the indices are not
- // preserved when the table grows and the entries get rehashed. Use the ring.
- Isolate* isolate = Isolate::Current();
- ObjectStore* object_store = isolate->object_store();
- const Array& table = Array::Handle(object_store->canonical_type_arguments());
- ASSERT(table.Length() > 0);
- AddCommonObjectProperties(&jsobj, "TypeArguments", ref);
- jsobj.AddServiceId(*this);
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (ref) {
- return;
- }
- {
- JSONArray jsarr(&jsobj, "types");
- AbstractType& type_arg = AbstractType::Handle();
- for (intptr_t i = 0; i < Length(); i++) {
- type_arg = TypeAt(i);
- jsarr.AddValue(type_arg);
- }
- }
- if (!IsInstantiated()) {
- JSONArray jsarr(&jsobj, "_instantiations");
- Array& prior_instantiations = Array::Handle(instantiations());
- ASSERT(prior_instantiations.Length() > 0); // Always at least a sentinel.
- TypeArguments& type_args = TypeArguments::Handle();
- intptr_t i = 0;
- while (true) {
- if (prior_instantiations.At(i) == Smi::New(StubCode::kNoInstantiator)) {
- break;
- }
- JSONObject instantiation(&jsarr);
- type_args ^= prior_instantiations.At(i);
- instantiation.AddProperty("instantiator", type_args, true);
- type_args ^= prior_instantiations.At(i + 1);
- instantiation.AddProperty("instantiated", type_args, true);
- i += 2;
- }
- }
-}
-
-
bool TypeArguments::HasInstantiations() const {
const Array& prior_instantiations = Array::Handle(instantiations());
ASSERT(prior_instantiations.Length() > 0); // Always at least a sentinel.
@@ -5074,11 +4868,6 @@ const char* PatchClass::ToCString() const {
}
-void PatchClass::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
RawPatchClass* PatchClass::New(const Class& patched_class,
const Class& origin_class) {
const PatchClass& result = PatchClass::Handle(PatchClass::New());
@@ -5124,6 +4913,9 @@ void PatchClass::set_script(const Script& value) const {
bool Function::HasBreakpoint() const {
+ if (!FLAG_support_debugger) {
+ return false;
+ }
Thread* thread = Thread::Current();
return thread->isolate()->debugger()->HasBreakpoint(*this, thread->zone());
}
@@ -5784,7 +5576,8 @@ bool Function::CanBeInlined() const {
Thread* thread = Thread::Current();
return is_inlinable() &&
!is_generated_body() &&
- !thread->isolate()->debugger()->HasBreakpoint(*this, thread->zone());
+ (!FLAG_support_debugger ||
+ !thread->isolate()->debugger()->HasBreakpoint(*this, thread->zone()));
}
@@ -7062,109 +6855,6 @@ const char* Function::ToCString() const {
}
-static void AddFunctionServiceId(const JSONObject& jsobj,
- const Function& f,
- const Class& cls) {
- // Special kinds of functions use indices in their respective lists.
- intptr_t id = -1;
- const char* selector = NULL;
- if (f.IsNonImplicitClosureFunction()) {
- id = Isolate::Current()->FindClosureIndex(f);
- selector = "closures";
- } else if (f.IsImplicitClosureFunction()) {
- id = cls.FindImplicitClosureFunctionIndex(f);
- selector = "implicit_closures";
- } else if (f.IsNoSuchMethodDispatcher() || f.IsInvokeFieldDispatcher()) {
- id = cls.FindInvocationDispatcherFunctionIndex(f);
- selector = "dispatchers";
- }
- if (id != -1) {
- ASSERT(selector != NULL);
- jsobj.AddFixedServiceId("classes/%" Pd "/%s/%" Pd "",
- cls.id(), selector, id);
- return;
- }
- // Regular functions known to their owner use their name (percent-encoded).
- String& name = String::Handle(f.name());
- if (cls.LookupFunction(name) == f.raw()) {
- name = String::EncodeIRI(name);
- jsobj.AddFixedServiceId("classes/%" Pd "/functions/%s",
- cls.id(), name.ToCString());
- return;
- }
- // Oddball functions (not known to their owner) fall back to use the object
- // id ring. Current known examples are signature functions of closures
- // and stubs like 'megamorphic_miss'.
- jsobj.AddServiceId(f);
-}
-
-
-void Function::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Class& cls = Class::Handle(Owner());
- ASSERT(!cls.IsNull());
- Error& err = Error::Handle();
- err ^= cls.EnsureIsFinalized(Thread::Current());
- ASSERT(err.IsNull());
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Function", ref);
- AddFunctionServiceId(jsobj, *this, cls);
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(name());
- AddNameProperties(&jsobj, user_name, vm_name);
- const Function& parent = Function::Handle(parent_function());
- if (!parent.IsNull()) {
- jsobj.AddProperty("owner", parent);
- } else if (cls.IsTopLevel()) {
- const Library& library = Library::Handle(cls.library());
- jsobj.AddProperty("owner", library);
- } else {
- jsobj.AddProperty("owner", cls);
- }
-
- const char* kind_string = Function::KindToCString(kind());
- jsobj.AddProperty("_kind", kind_string);
- jsobj.AddProperty("static", is_static());
- jsobj.AddProperty("const", is_const());
- jsobj.AddProperty("_intrinsic", is_intrinsic());
- jsobj.AddProperty("_native", is_native());
- if (ref) {
- return;
- }
- Code& code = Code::Handle(CurrentCode());
- if (!code.IsNull()) {
- jsobj.AddProperty("code", code);
- }
- Array& ics = Array::Handle(ic_data_array());
- if (!ics.IsNull()) {
- jsobj.AddProperty("_icDataArray", ics);
- }
- jsobj.AddProperty("_optimizable", is_optimizable());
- jsobj.AddProperty("_inlinable", is_inlinable());
- jsobj.AddProperty("_recognized", IsRecognized());
- code = unoptimized_code();
- if (!code.IsNull()) {
- jsobj.AddProperty("_unoptimizedCode", code);
- }
- jsobj.AddProperty("_usageCounter", usage_counter());
- jsobj.AddProperty("_optimizedCallSiteCount", optimized_call_site_count());
- jsobj.AddProperty("_deoptimizations",
- static_cast<intptr_t>(deoptimization_counter()));
- if ((kind() == RawFunction::kImplicitGetter) ||
- (kind() == RawFunction::kImplicitSetter) ||
- (kind() == RawFunction::kImplicitStaticFinalGetter)) {
- const Field& field = Field::Handle(LookupImplicitGetterSetterField());
- if (!field.IsNull()) {
- jsobj.AddProperty("_field", field);
- }
- }
-
- const Script& script = Script::Handle(this->script());
- if (!script.IsNull()) {
- jsobj.AddLocation(script, token_pos(), end_token_pos());
- }
-}
-
-
void ClosureData::set_context_scope(const ContextScope& value) const {
StorePointer(&raw_ptr()->context_scope_, value.raw());
}
@@ -7201,11 +6891,6 @@ const char* ClosureData::ToCString() const {
}
-void ClosureData::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
void RedirectionData::set_type(const Type& value) const {
ASSERT(!value.IsNull());
StorePointer(&raw_ptr()->type_, value.raw());
@@ -7236,11 +6921,6 @@ const char* RedirectionData::ToCString() const {
}
-void RedirectionData::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
RawString* Field::GetterName(const String& field_name) {
return String::Concat(Symbols::GetterPrefix(), field_name);
}
@@ -7486,64 +7166,6 @@ const char* Field::ToCString() const {
}
-void Field::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- Class& cls = Class::Handle(owner());
- String& field_name = String::Handle(name());
- field_name = String::EncodeIRI(field_name);
- AddCommonObjectProperties(&jsobj, "Field", ref);
- jsobj.AddFixedServiceId("classes/%" Pd "/fields/%s",
- cls.id(), field_name.ToCString());
-
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (cls.IsTopLevel()) {
- const Library& library = Library::Handle(cls.library());
- jsobj.AddProperty("owner", library);
- } else {
- jsobj.AddProperty("owner", cls);
- }
-
- AbstractType& declared_type = AbstractType::Handle(type());
- jsobj.AddProperty("declaredType", declared_type);
- jsobj.AddProperty("static", is_static());
- jsobj.AddProperty("final", is_final());
- jsobj.AddProperty("const", is_const());
- if (ref) {
- return;
- }
- if (is_static()) {
- const Instance& valueObj = Instance::Handle(StaticValue());
- jsobj.AddProperty("staticValue", valueObj);
- }
-
- jsobj.AddProperty("_guardNullable", is_nullable());
- if (guarded_cid() == kIllegalCid) {
- jsobj.AddProperty("_guardClass", "unknown");
- } else if (guarded_cid() == kDynamicCid) {
- jsobj.AddProperty("_guardClass", "dynamic");
- } else {
- ClassTable* table = Isolate::Current()->class_table();
- ASSERT(table->IsValidIndex(guarded_cid()));
- cls ^= table->At(guarded_cid());
- jsobj.AddProperty("_guardClass", cls);
- }
- if (guarded_list_length() == kUnknownFixedLength) {
- jsobj.AddProperty("_guardLength", "unknown");
- } else if (guarded_list_length() == kNoFixedLength) {
- jsobj.AddProperty("_guardLength", "variable");
- } else {
- jsobj.AddProperty("_guardLength", guarded_list_length());
- }
- const Class& origin_cls = Class::Handle(origin());
- const Script& script = Script::Handle(origin_cls.script());
- if (!script.IsNull()) {
- jsobj.AddLocation(script, token_pos());
- }
-}
-
-
// Build a closure object that gets (or sets) the contents of a static
// field f and cache the closure in a newly created static field
// named #f (or #f= in case of a setter).
@@ -7945,11 +7567,6 @@ const char* LiteralToken::ToCString() const {
}
-void LiteralToken::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
RawGrowableObjectArray* TokenStream::TokenObjects() const {
return raw_ptr()->token_objects_;
}
@@ -8440,23 +8057,6 @@ const char* TokenStream::ToCString() const {
}
-void TokenStream::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- 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;
- }
- const String& private_key = String::Handle(PrivateKey());
- jsobj.AddProperty("privateKey", private_key);
- // TODO(johnmccutchan): Add support for printing LiteralTokens and add
- // them to members array.
- JSONArray members(&jsobj, "members");
-}
-
-
TokenStream::Iterator::Iterator(const TokenStream& tokens,
TokenPosition token_pos,
Iterator::StreamType stream_type)
@@ -9015,68 +8615,6 @@ RawLibrary* Script::FindLibrary() const {
}
-// See also Dart_ScriptGetTokenInfo.
-void Script::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Script", ref);
- const String& uri = String::Handle(url());
- ASSERT(!uri.IsNull());
- const String& encoded_uri = String::Handle(String::EncodeIRI(uri));
- ASSERT(!encoded_uri.IsNull());
- const Library& lib = Library::Handle(FindLibrary());
- if (kind() == RawScript::kEvaluateTag) {
- jsobj.AddServiceId(*this);
- } else {
- ASSERT(!lib.IsNull());
- jsobj.AddFixedServiceId("libraries/%" Pd "/scripts/%s",
- lib.index(), encoded_uri.ToCString());
- }
- jsobj.AddPropertyStr("uri", uri);
- jsobj.AddProperty("_kind", GetKindAsCString());
- if (ref) {
- return;
- }
- if (!lib.IsNull()) {
- jsobj.AddProperty("library", lib);
- }
- const String& source = String::Handle(Source());
- jsobj.AddProperty("lineOffset", line_offset());
- jsobj.AddProperty("columnOffset", col_offset());
- if (!source.IsNull()) {
- jsobj.AddPropertyStr("source", source);
- }
-
- // Print the line number table
- if (!source.IsNull()) {
- JSONArray tokenPosTable(&jsobj, "tokenPosTable");
-
- const GrowableObjectArray& lineNumberArray =
- GrowableObjectArray::Handle(GenerateLineNumberArray());
- Object& value = Object::Handle();
- intptr_t pos = 0;
-
- // Skip leading null.
- ASSERT(lineNumberArray.Length() > 0);
- value = lineNumberArray.At(pos);
- ASSERT(value.IsNull());
- pos++;
-
- while (pos < lineNumberArray.Length()) {
- JSONArray lineInfo(&tokenPosTable);
- while (pos < lineNumberArray.Length()) {
- value = lineNumberArray.At(pos);
- pos++;
- if (value.IsNull()) {
- break;
- }
- const Smi& smi = Smi::Cast(value);
- lineInfo.AddValue(smi.Value());
- }
- }
- }
-}
-
-
DictionaryIterator::DictionaryIterator(const Library& library)
: array_(Array::Handle(library.dictionary())),
// Last element in array is a Smi indicating the number of entries used.
@@ -10476,134 +10014,6 @@ const char* Library::ToCString() const {
}
-void Library::PrintJSONImpl(JSONStream* stream, bool ref) const {
- intptr_t id = index();
- ASSERT(id >= 0);
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Library", ref);
- jsobj.AddFixedServiceId("libraries/%" Pd "", id);
- const String& vm_name = String::Handle(name());
- const String& user_name =
- String::Handle(String::IdentifierPrettyName(vm_name));
- AddNameProperties(&jsobj, user_name, vm_name);
- const String& library_url = String::Handle(url());
- jsobj.AddPropertyStr("uri", library_url);
- if (ref) {
- return;
- }
- jsobj.AddProperty("debuggable", IsDebuggable());
- {
- JSONArray jsarr(&jsobj, "classes");
- ClassDictionaryIterator class_iter(*this);
- Class& klass = Class::Handle();
- while (class_iter.HasNext()) {
- klass = class_iter.GetNextClass();
- if (!klass.IsMixinApplication()) {
- jsarr.AddValue(klass);
- }
- }
- }
- {
- JSONArray jsarr(&jsobj, "dependencies");
-
- Array& ports = Array::Handle();
- Namespace& ns = Namespace::Handle();
- Library& target = Library::Handle();
-
- // Unprefixed imports.
- ports = imports();
- for (intptr_t i = 0; i < ports.Length(); i++) {
- ns ^= ports.At(i);
- if (ns.IsNull()) continue;
-
- JSONObject jsdep(&jsarr);
- jsdep.AddProperty("isDeferred", false);
- jsdep.AddProperty("isExport", false);
- jsdep.AddProperty("isImport", true);
- target = ns.library();
- jsdep.AddProperty("target", target);
- }
-
- // Exports.
- ports = exports();
- for (intptr_t i = 0; i < ports.Length(); i++) {
- ns ^= ports.At(i);
- if (ns.IsNull()) continue;
-
- JSONObject jsdep(&jsarr);
- jsdep.AddProperty("isDeferred", false);
- jsdep.AddProperty("isExport", true);
- jsdep.AddProperty("isImport", false);
- target = ns.library();
- jsdep.AddProperty("target", target);
- }
-
- // Prefixed imports.
- DictionaryIterator entries(*this);
- Object& entry = Object::Handle();
- LibraryPrefix& prefix = LibraryPrefix::Handle();
- String& prefixName = String::Handle();
- while (entries.HasNext()) {
- entry = entries.GetNext();
- if (entry.IsLibraryPrefix()) {
- prefix ^= entry.raw();
- ports = prefix.imports();
- for (intptr_t i = 0; i < ports.Length(); i++) {
- ns ^= ports.At(i);
- if (ns.IsNull()) continue;
-
- JSONObject jsdep(&jsarr);
- jsdep.AddProperty("isDeferred", prefix.is_deferred_load());
- jsdep.AddProperty("isExport", false);
- jsdep.AddProperty("isImport", true);
- prefixName = prefix.name();
- ASSERT(!prefixName.IsNull());
- jsdep.AddProperty("prefix", prefixName.ToCString());
- target = ns.library();
- jsdep.AddProperty("target", target);
- }
- }
- }
- }
- {
- JSONArray jsarr(&jsobj, "variables");
- DictionaryIterator entries(*this);
- Object& entry = Object::Handle();
- while (entries.HasNext()) {
- entry = entries.GetNext();
- if (entry.IsField()) {
- jsarr.AddValue(entry);
- }
- }
- }
- {
- JSONArray jsarr(&jsobj, "functions");
- DictionaryIterator entries(*this);
- Object& entry = Object::Handle();
- while (entries.HasNext()) {
- entry = entries.GetNext();
- if (entry.IsFunction()) {
- const Function& func = Function::Cast(entry);
- if (func.kind() == RawFunction::kRegularFunction ||
- func.kind() == RawFunction::kGetterFunction ||
- func.kind() == RawFunction::kSetterFunction) {
- jsarr.AddValue(func);
- }
- }
- }
- }
- {
- JSONArray jsarr(&jsobj, "scripts");
- Array& scripts = Array::Handle(LoadedScripts());
- Script& script = Script::Handle();
- for (intptr_t i = 0; i < scripts.Length(); i++) {
- script ^= scripts.At(i);
- jsarr.AddValue(script);
- }
- }
-}
-
-
RawLibrary* LibraryPrefix::GetLibrary(int index) const {
if ((index >= 0) || (index < num_imports())) {
const Array& imports = Array::Handle(this->imports());
@@ -10898,11 +10308,6 @@ const char* LibraryPrefix::ToCString() const {
}
-void LibraryPrefix::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
void Namespace::set_metadata_field(const Field& value) const {
StorePointer(&raw_ptr()->metadata_field_, value.raw());
}
@@ -10948,11 +10353,6 @@ const char* Namespace::ToCString() const {
}
-void Namespace::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
bool Namespace::HidesName(const String& name) const {
// Quick check for common case with no combinators.
if (hide_names() == show_names()) {
@@ -11224,16 +10624,6 @@ const char* Instructions::ToCString() const {
}
-void Instructions::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Object", ref);
- jsobj.AddServiceId(*this);
- if (ref) {
- return;
- }
-}
-
-
// Encode integer |value| in SLEB128 format and store into |data|.
static void EncodeSLEB128(GrowableArray<uint8_t>* data,
intptr_t value) {
@@ -11331,46 +10721,6 @@ const char* ObjectPool::ToCString() const {
}
-void ObjectPool::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Object", ref);
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- return;
- }
-
- {
- JSONArray jsarr(&jsobj, "_entries");
- uword imm;
- Object& obj = Object::Handle();
- for (intptr_t i = 0; i < Length(); i++) {
- JSONObject jsentry(stream);
- jsentry.AddProperty("offset", OffsetFromIndex(i));
- switch (InfoAt(i)) {
- case ObjectPool::kTaggedObject:
- obj = ObjectAt(i);
- jsentry.AddProperty("kind", "Object");
- jsentry.AddProperty("value", obj);
- break;
- case ObjectPool::kImmediate:
- imm = RawValueAt(i);
- jsentry.AddProperty("kind", "Immediate");
- jsentry.AddProperty64("value", imm);
- break;
- case ObjectPool::kNativeEntry:
- imm = RawValueAt(i);
- jsentry.AddProperty("kind", "NativeEntry");
- jsentry.AddProperty64("value", imm);
- break;
- default:
- UNREACHABLE();
- }
- }
- }
-}
-
-
void ObjectPool::DebugPrint() const {
THR_Print("Object Pool: {\n");
for (intptr_t i = 0; i < Length(); i++) {
@@ -11514,34 +10864,6 @@ const char* PcDescriptors::ToCString() const {
}
-void PcDescriptors::PrintToJSONObject(JSONObject* jsobj, bool ref) const {
- 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;
- }
- JSONArray members(jsobj, "members");
- Iterator iter(*this, RawPcDescriptors::kAnyKind);
- while (iter.MoveNext()) {
- JSONObject descriptor(&members);
- descriptor.AddPropertyF("pcOffset", "%" Px "", iter.PcOffset());
- descriptor.AddProperty("kind", KindAsStr(iter.Kind()));
- descriptor.AddProperty("deoptId", iter.DeoptId());
- // TODO(turnidge): Use AddLocation instead.
- descriptor.AddProperty("tokenPos", iter.TokenPos());
- descriptor.AddProperty("tryIndex", iter.TryIndex());
- }
-}
-
-
-void PcDescriptors::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintToJSONObject(&jsobj, ref);
-}
-
-
// Verify assumptions (in debug mode only).
// - No two deopt descriptors have the same deoptimization id.
// - No two ic-call descriptors have the same deoptimization id (type feedback).
@@ -11640,11 +10962,6 @@ RawCodeSourceMap* CodeSourceMap::New(intptr_t length) {
}
-void CodeSourceMap::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
const char* CodeSourceMap::ToCString() const {
// "*" in a printf format specifier tells it to read the field width from
// the printf argument list.
@@ -11819,11 +11136,6 @@ const char* Stackmap::ToCString() const {
}
-void Stackmap::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
RawString* LocalVarDescriptors::GetName(intptr_t var_index) const {
ASSERT(var_index < Length());
ASSERT(Object::Handle(*raw()->nameAddrAt(var_index)).IsString());
@@ -11920,33 +11232,6 @@ const char* LocalVarDescriptors::ToCString() const {
}
-void LocalVarDescriptors::PrintJSONImpl(JSONStream* stream,
- bool ref) const {
- JSONObject jsobj(stream);
- 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;
- }
- JSONArray members(&jsobj, "members");
- String& var_name = String::Handle();
- for (intptr_t i = 0; i < Length(); i++) {
- RawLocalVarDescriptors::VarInfo info;
- var_name = GetName(i);
- GetInfo(i, &info);
- JSONObject var(&members);
- var.AddProperty("name", var_name.ToCString());
- var.AddProperty("index", static_cast<intptr_t>(info.index()));
- var.AddProperty("beginPos", info.begin_pos);
- var.AddProperty("endPos", info.end_pos);
- var.AddProperty("scopeId", static_cast<intptr_t>(info.scope_id));
- var.AddProperty("kind", KindToCString(info.kind()));
- }
-}
-
-
const char* LocalVarDescriptors::KindToCString(
RawLocalVarDescriptors::VarInfoKind kind) {
switch (kind) {
@@ -12176,12 +11461,6 @@ const char* ExceptionHandlers::ToCString() const {
}
-void ExceptionHandlers::PrintJSONImpl(JSONStream* stream,
- bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
intptr_t DeoptInfo::FrameSize(const TypedData& packed) {
NoSafepointScope no_safepoint;
typedef ReadStream::Raw<sizeof(intptr_t), intptr_t> Reader;
@@ -13001,86 +12280,6 @@ RawICData* ICData::CloneDescriptor(const ICData& from) {
}
-void ICData::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Object", ref);
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("_owner", Object::Handle(Owner()));
- jsobj.AddProperty("_selector", String::Handle(target_name()).ToCString());
- if (ref) {
- return;
- }
- jsobj.AddProperty("_argumentsDescriptor",
- Object::Handle(arguments_descriptor()));
- jsobj.AddProperty("_entries", Object::Handle(ic_data()));
-}
-
-
-void ICData::PrintToJSONArray(const JSONArray& jsarray,
- TokenPosition token_pos,
- bool is_static_call) const {
- Isolate* isolate = Isolate::Current();
- Class& cls = Class::Handle();
- Function& func = Function::Handle();
-
- JSONObject jsobj(&jsarray);
- jsobj.AddProperty("name", String::Handle(target_name()).ToCString());
- jsobj.AddProperty("tokenPos", token_pos);
- // TODO(rmacnak): Figure out how to stringify DeoptReasons().
- // jsobj.AddProperty("deoptReasons", ...);
-
- JSONArray cache_entries(&jsobj, "cacheEntries");
- for (intptr_t i = 0; i < NumberOfChecks(); i++) {
- func = GetTargetAt(i);
- if (is_static_call) {
- cls ^= func.Owner();
- } else {
- intptr_t cid = GetReceiverClassIdAt(i);
- cls ^= isolate->class_table()->At(cid);
- }
- intptr_t count = GetCountAt(i);
- JSONObject cache_entry(&cache_entries);
- if (cls.IsTopLevel()) {
- cache_entry.AddProperty("receiverContainer",
- Library::Handle(cls.library()));
- } else {
- cache_entry.AddProperty("receiverContainer", cls);
- }
- cache_entry.AddProperty("count", count);
- cache_entry.AddProperty("target", func);
- }
-}
-
-
-void ICData::PrintToJSONArrayNew(const JSONArray& jsarray,
- TokenPosition token_pos,
- bool is_static_call) const {
- Isolate* isolate = Isolate::Current();
- Class& cls = Class::Handle();
- Function& func = Function::Handle();
-
- JSONObject jsobj(&jsarray);
- jsobj.AddProperty("name", String::Handle(target_name()).ToCString());
- jsobj.AddProperty("tokenPos", token_pos.value());
- // TODO(rmacnak): Figure out how to stringify DeoptReasons().
- // jsobj.AddProperty("deoptReasons", ...);
-
- JSONArray cache_entries(&jsobj, "cacheEntries");
- for (intptr_t i = 0; i < NumberOfChecks(); i++) {
- JSONObject cache_entry(&cache_entries);
- func = GetTargetAt(i);
- intptr_t count = GetCountAt(i);
- if (!is_static_call) {
- intptr_t cid = GetReceiverClassIdAt(i);
- cls ^= isolate->class_table()->At(cid);
- cache_entry.AddProperty("receiver", cls);
- }
- cache_entry.AddProperty("target", func);
- cache_entry.AddProperty("count", count);
- }
-}
-
-
static Token::Kind RecognizeArithmeticOp(const String& name) {
ASSERT(name.IsSymbol());
if (name.raw() == Symbols::Plus().raw()) {
@@ -13282,6 +12481,9 @@ void Code::set_static_calls_target_table(const Array& value) const {
bool Code::HasBreakpoint() const {
+ if (!FLAG_support_debugger) {
+ return false;
+ }
return Isolate::Current()->debugger()->HasBreakpoint(*this);
}
@@ -13828,106 +13030,6 @@ void Code::SetActiveInstructions(RawInstructions* instructions) const {
}
-void Code::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Code", ref);
- jsobj.AddFixedServiceId("code/%" Px64"-%" Px "",
- compile_timestamp(),
- EntryPoint());
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- const bool is_stub = IsStubCode() || IsAllocationStubCode();
- if (is_stub) {
- jsobj.AddProperty("kind", "Stub");
- } else {
- jsobj.AddProperty("kind", "Dart");
- }
- jsobj.AddProperty("_optimized", is_optimized());
- const Object& obj = Object::Handle(owner());
- if (obj.IsFunction()) {
- const Function& func = Function::Cast(obj);
- jsobj.AddProperty("_intrinsic", func.is_intrinsic());
- jsobj.AddProperty("_native", func.is_native());
- } else {
- jsobj.AddProperty("_intrinsic", false);
- jsobj.AddProperty("_native", false);
- }
- if (ref) {
- return;
- }
- if (obj.IsFunction()) {
- jsobj.AddProperty("function", obj);
- } else {
- // Generate a fake function reference.
- JSONObject func(&jsobj, "function");
- func.AddProperty("type", "@Function");
- func.AddProperty("_kind", "Stub");
- func.AddProperty("name", user_name.ToCString());
- AddNameProperties(&func, user_name, vm_name);
- }
- jsobj.AddPropertyF("_startAddress", "%" Px "", EntryPoint());
- jsobj.AddPropertyF("_endAddress", "%" Px "", EntryPoint() + Size());
- jsobj.AddProperty("_alive", is_alive());
- const ObjectPool& object_pool = ObjectPool::Handle(GetObjectPool());
- jsobj.AddProperty("_objectPool", object_pool);
- {
- JSONArray jsarr(&jsobj, "_disassembly");
- if (is_alive()) {
- // Only disassemble alive code objects.
- DisassembleToJSONStream formatter(jsarr);
- Disassemble(&formatter);
- }
- }
- const PcDescriptors& descriptors = PcDescriptors::Handle(pc_descriptors());
- if (!descriptors.IsNull()) {
- JSONObject desc(&jsobj, "_descriptors");
- descriptors.PrintToJSONObject(&desc, false);
- }
- const Array& inlined_function_table = Array::Handle(GetInlinedIdToFunction());
- if (!inlined_function_table.IsNull() &&
- (inlined_function_table.Length() > 0)) {
- JSONArray inlined_functions(&jsobj, "_inlinedFunctions");
- Function& function = Function::Handle();
- for (intptr_t i = 0; i < inlined_function_table.Length(); i++) {
- function ^= inlined_function_table.At(i);
- ASSERT(!function.IsNull());
- inlined_functions.AddValue(function);
- }
- }
- const Array& intervals = Array::Handle(GetInlinedIntervals());
- if (!intervals.IsNull() && (intervals.Length() > 0)) {
- Smi& start = Smi::Handle();
- Smi& end = Smi::Handle();
- Smi& temp_smi = Smi::Handle();
- JSONArray inline_intervals(&jsobj, "_inlinedIntervals");
- for (intptr_t i = 0; i < intervals.Length() - Code::kInlIntNumEntries;
- i += Code::kInlIntNumEntries) {
- start ^= intervals.At(i + Code::kInlIntStart);
- if (start.IsNull()) {
- continue;
- }
- end ^= intervals.At(i + Code::kInlIntNumEntries + Code::kInlIntStart);
-
- // Format: [start, end, inline functions...]
- JSONArray inline_interval(&inline_intervals);
- inline_interval.AddValue(start.Value());
- inline_interval.AddValue(end.Value());
-
- temp_smi ^= intervals.At(i + Code::kInlIntInliningId);
- intptr_t inlining_id = temp_smi.Value();
- ASSERT(inlining_id >= 0);
- intptr_t caller_id = GetCallerId(inlining_id);
- while (inlining_id >= 0) {
- inline_interval.AddValue(inlining_id);
- inlining_id = caller_id;
- caller_id = GetCallerId(inlining_id);
- }
- }
- }
-}
-
-
uword Code::GetLazyDeoptPc() const {
return (lazy_deopt_pc_offset() != kInvalidPc)
? EntryPoint() + lazy_deopt_pc_offset() : 0;
@@ -14138,34 +13240,6 @@ void Context::Dump(int indent) const {
}
-void Context::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- // TODO(turnidge): Should the user level type for Context be Context
- // or Object?
- AddCommonObjectProperties(&jsobj, "Context", ref);
- jsobj.AddServiceId(*this);
-
- jsobj.AddProperty("length", num_variables());
-
- if (ref) {
- return;
- }
-
- const Context& parent_context = Context::Handle(parent());
- if (!parent_context.IsNull()) {
- jsobj.AddProperty("parent", parent_context);
- }
-
- JSONArray jsarr(&jsobj, "variables");
- Object& var = Object::Handle();
- for (intptr_t index = 0; index < num_variables(); index++) {
- var = At(index);
- JSONObject jselement(&jsarr);
- jselement.AddProperty("value", var);
- }
-}
-
-
RawContextScope* ContextScope::New(intptr_t num_variables, bool is_implicit) {
ASSERT(Object::context_scope_class() != Class::null());
if (num_variables < 0 || num_variables > kMaxElements) {
@@ -14299,11 +13373,6 @@ const char* ContextScope::ToCString() const {
}
-void ContextScope::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
RawArray* MegamorphicCache::buckets() const {
return raw_ptr()->buckets_;
}
@@ -14444,21 +13513,6 @@ const char* MegamorphicCache::ToCString() const {
}
-void MegamorphicCache::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Object", ref);
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("_selector", String::Handle(target_name()).ToCString());
- if (ref) {
- return;
- }
- jsobj.AddProperty("_buckets", Object::Handle(buckets()));
- jsobj.AddProperty("_mask", mask());
- jsobj.AddProperty("_argumentsDescriptor",
- Object::Handle(arguments_descriptor()));
-}
-
-
RawSubtypeTestCache* SubtypeTestCache::New() {
ASSERT(Object::subtypetestcache_class() != Class::null());
SubtypeTestCache& result = SubtypeTestCache::Handle();
@@ -14530,11 +13584,6 @@ const char* SubtypeTestCache::ToCString() const {
}
-void SubtypeTestCache::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Object::PrintJSONImpl(stream, ref);
-}
-
-
const char* Error::ToErrorCString() const {
UNREACHABLE();
return "Internal Error";
@@ -14548,11 +13597,6 @@ const char* Error::ToCString() const {
}
-void Error::PrintJSONImpl(JSONStream* stream, bool ref) const {
- UNREACHABLE();
-}
-
-
RawApiError* ApiError::New() {
ASSERT(Object::api_error_class() != Class::null());
RawObject* raw = Object::Allocate(ApiError::kClassId,
@@ -14593,15 +13637,6 @@ const char* ApiError::ToCString() const {
}
-void ApiError::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Error", ref);
- jsobj.AddProperty("kind", "InternalError");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("message", ToErrorCString());
-}
-
-
RawLanguageError* LanguageError::New() {
ASSERT(Object::language_error_class() != Class::null());
RawObject* raw = Object::Allocate(LanguageError::kClassId,
@@ -14743,15 +13778,6 @@ const char* LanguageError::ToCString() const {
}
-void LanguageError::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Error", ref);
- jsobj.AddProperty("kind", "LanguageError");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("message", ToErrorCString());
-}
-
-
RawUnhandledException* UnhandledException::New(const Instance& exception,
const Instance& stacktrace,
Heap::Space space) {
@@ -14832,25 +13858,6 @@ const char* UnhandledException::ToCString() const {
}
-
-void UnhandledException::PrintJSONImpl(JSONStream* stream,
- bool ref) const {
- JSONObject jsobj(stream);
- 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);
- instance = stacktrace();
- jsobj.AddProperty("stacktrace", instance);
-}
-
-
RawUnwindError* UnwindError::New(const String& message, Heap::Space space) {
ASSERT(Object::unwind_error_class() != Class::null());
UnwindError& result = UnwindError::Handle();
@@ -14894,17 +13901,6 @@ const char* UnwindError::ToCString() const {
}
-void UnwindError::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- AddCommonObjectProperties(&jsobj, "Error", ref);
- jsobj.AddProperty("kind", "TerminationError");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("message", ToErrorCString());
- jsobj.AddProperty("_is_user_initiated", is_user_initiated());
- jsobj.AddProperty("_is_vm_restart", is_vm_restart());
-}
-
-
RawObject* Instance::Evaluate(const String& expr,
const Array& param_names,
const Array& param_values) const {
@@ -15447,91 +14443,6 @@ const char* Instance::ToCString() const {
}
-void Instance::PrintSharedInstanceJSON(JSONObject* jsobj,
- bool ref) const {
- AddCommonObjectProperties(jsobj, "Instance", ref);
- if (ref) {
- return;
- }
-
- // Walk the superclass chain, adding all instance fields.
- Class& cls = Class::Handle(this->clazz());
- {
- Instance& fieldValue = Instance::Handle();
- JSONArray jsarr(jsobj, "fields");
- while (!cls.IsNull()) {
- const Array& field_array = Array::Handle(cls.fields());
- Field& field = Field::Handle();
- if (!field_array.IsNull()) {
- for (intptr_t i = 0; i < field_array.Length(); i++) {
- field ^= field_array.At(i);
- if (!field.is_static()) {
- fieldValue ^= GetField(field);
- JSONObject jsfield(&jsarr);
- jsfield.AddProperty("type", "BoundField");
- jsfield.AddProperty("decl", field);
- jsfield.AddProperty("value", fieldValue);
- }
- }
- }
- cls = cls.SuperClass();
- }
- }
-
- if (NumNativeFields() > 0) {
- JSONArray jsarr(jsobj, "_nativeFields");
- for (intptr_t i = 0; i < NumNativeFields(); i++) {
- intptr_t value = GetNativeField(i);
- JSONObject jsfield(&jsarr);
- jsfield.AddProperty("index", i);
- jsfield.AddProperty("value", value);
- }
- }
-}
-
-
-void Instance::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
-
- // Handle certain special instance values.
- if (raw() == Object::sentinel().raw()) {
- jsobj.AddProperty("type", "Sentinel");
- jsobj.AddProperty("kind", "NotInitialized");
- jsobj.AddProperty("valueAsString", "<not initialized>");
- return;
- } else if (raw() == Object::transition_sentinel().raw()) {
- jsobj.AddProperty("type", "Sentinel");
- jsobj.AddProperty("kind", "BeingInitialized");
- jsobj.AddProperty("valueAsString", "<being initialized>");
- return;
- }
-
- PrintSharedInstanceJSON(&jsobj, ref);
- if (IsClosure()) {
- jsobj.AddProperty("kind", "Closure");
- } else {
- jsobj.AddProperty("kind", "PlainInstance");
- }
- jsobj.AddServiceId(*this);
- if (IsClosure()) {
- jsobj.AddProperty("closureFunction",
- Function::Handle(Closure::Cast(*this).function()));
- jsobj.AddProperty("closureContext",
- Context::Handle(Closure::Cast(*this).context()));
- }
- if (ref) {
- return;
- }
- if (IsClosure()) {
- Debugger* debugger = Isolate::Current()->debugger();
- Breakpoint* bpt = debugger->BreakpointAtActivation(*this);
- if (bpt != NULL) {
- jsobj.AddProperty("_activationBreakpoint", bpt);
- }
- }
-}
-
-
bool AbstractType::IsResolved() const {
// AbstractType is an abstract class.
UNREACHABLE();
@@ -16083,11 +14994,6 @@ const char* AbstractType::ToCString() const {
}
-void AbstractType::PrintJSONImpl(JSONStream* stream, bool ref) const {
- UNREACHABLE();
-}
-
-
RawType* Type::NullType() {
return Isolate::Current()->object_store()->null_type();
}
@@ -16684,33 +15590,6 @@ const char* Type::ToCString() const {
}
-void Type::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Type");
- if (IsCanonical()) {
- const Class& type_cls = Class::Handle(type_class());
- intptr_t id = type_cls.FindCanonicalTypeIndex(*this);
- ASSERT(id >= 0);
- intptr_t cid = type_cls.id();
- jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id);
- jsobj.AddProperty("typeClass", type_cls);
- } else {
- jsobj.AddServiceId(*this);
- }
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (ref) {
- return;
- }
- const TypeArguments& typeArgs = TypeArguments::Handle(arguments());
- if (!typeArgs.IsNull()) {
- jsobj.AddProperty("typeArguments", typeArgs);
- }
-}
-
-
void FunctionType::SetIsFinalized() const {
ASSERT(!IsFinalized());
if (IsInstantiated()) {
@@ -17230,33 +16109,6 @@ const char* FunctionType::ToCString() const {
}
-void FunctionType::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "FunctionType");
- if (IsCanonical()) {
- const Class& scope_cls = Class::Handle(scope_class());
- intptr_t id = scope_cls.FindCanonicalTypeIndex(*this);
- ASSERT(id >= 0);
- intptr_t cid = scope_cls.id();
- jsobj.AddFixedServiceId("classes/%" Pd "/types/%" Pd "", cid, id);
- jsobj.AddProperty("scopeClass", scope_cls);
- } else {
- jsobj.AddServiceId(*this);
- }
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (ref) {
- return;
- }
- const TypeArguments& typeArgs = TypeArguments::Handle(arguments());
- if (!typeArgs.IsNull()) {
- jsobj.AddProperty("typeArguments", typeArgs);
- }
-}
-
-
bool TypeRef::IsInstantiated(TrailPtr trail) const {
if (TestAndAddToTrail(&trail)) {
return true;
@@ -17417,21 +16269,6 @@ const char* TypeRef::ToCString() const {
}
-void TypeRef::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "TypeRef");
- jsobj.AddServiceId(*this);
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (ref) {
- return;
- }
- jsobj.AddProperty("targetType", AbstractType::Handle(type()));
-}
-
-
void TypeParameter::SetIsFinalized() const {
ASSERT(!IsFinalized());
set_type_state(RawTypeParameter::kFinalizedUninstantiated);
@@ -17653,25 +16490,6 @@ const char* TypeParameter::ToCString() const {
}
-void TypeParameter::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "TypeParameter");
- jsobj.AddServiceId(*this);
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- const Class& param_cls = Class::Handle(parameterized_class());
- jsobj.AddProperty("parameterizedClass", param_cls);
- if (ref) {
- return;
- }
- jsobj.AddProperty("parameterIndex", index());
- const AbstractType& upper_bound = AbstractType::Handle(bound());
- jsobj.AddProperty("bound", upper_bound);
-}
-
-
bool BoundedType::IsMalformed() const {
return AbstractType::Handle(type()).IsMalformed();
}
@@ -17884,22 +16702,6 @@ const char* BoundedType::ToCString() const {
}
-void BoundedType::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "BoundedType");
- jsobj.AddServiceId(*this);
- const String& user_name = String::Handle(PrettyName());
- const String& vm_name = String::Handle(Name());
- AddNameProperties(&jsobj, user_name, vm_name);
- if (ref) {
- return;
- }
- jsobj.AddProperty("targetType", AbstractType::Handle(type()));
- jsobj.AddProperty("bound", AbstractType::Handle(bound()));
-}
-
-
TokenPosition MixinAppType::token_pos() const {
return AbstractType::Handle(MixinTypeAt(0)).token_pos();
}
@@ -17929,11 +16731,6 @@ const char* MixinAppType::ToCString() const {
}
-void MixinAppType::PrintJSONImpl(JSONStream* stream, bool ref) const {
- UNREACHABLE();
-}
-
-
RawAbstractType* MixinAppType::MixinTypeAt(intptr_t depth) const {
return AbstractType::RawCast(Array::Handle(mixin_types()).At(depth));
}
@@ -17975,11 +16772,6 @@ const char* Number::ToCString() const {
}
-void Number::PrintJSONImpl(JSONStream* stream, bool ref) const {
- UNREACHABLE();
-}
-
-
const char* Integer::ToCString() const {
// Integer is an interface. No instances of Integer should exist except null.
ASSERT(IsNull());
@@ -17987,15 +16779,6 @@ const char* Integer::ToCString() const {
}
-void Integer::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Int");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("valueAsString", ToCString());
-}
-
-
// Throw JavascriptIntegerOverflow exception.
static void ThrowJavascriptIntegerOverflow(const Integer& i) {
const Array& exc_args = Array::Handle(Array::New(1));
@@ -18415,15 +17198,6 @@ const char* Smi::ToCString() const {
}
-void Smi::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Int");
- jsobj.AddFixedServiceId("objects/int-%" Pd "", Value());
- jsobj.AddPropertyF("valueAsString", "%" Pd "", Value());
-}
-
-
RawClass* Smi::Class() {
return Isolate::Current()->object_store()->smi_class();
}
@@ -18541,11 +17315,6 @@ const char* Mint::ToCString() const {
}
-void Mint::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Integer::PrintJSONImpl(stream, ref);
-}
-
-
void Double::set_value(double value) const {
StoreNonPointer(&raw_ptr()->value_, value);
}
@@ -18673,15 +17442,6 @@ const char* Double::ToCString() const {
}
-void Double::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Double");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("valueAsString", ToCString());
-}
-
-
bool Bigint::Neg() const {
return Bool::Handle(neg()).value();
}
@@ -19429,11 +18189,6 @@ const char* Bigint::ToCString() const {
}
-void Bigint::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Integer::PrintJSONImpl(stream, ref);
-}
-
-
// Synchronize with implementation in compiler (intrinsifier).
class StringHasher : ValueObject {
public:
@@ -20264,44 +19019,6 @@ const char* String::ToCString() const {
}
-void String::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- if (raw() == Symbols::OptimizedOut().raw()) {
- // TODO(turnidge): This is a hack. The user could have this
- // special string in their program. Fixing this involves updating
- // the debugging api a bit.
- jsobj.AddProperty("type", "Sentinel");
- jsobj.AddProperty("kind", "OptimizedOut");
- jsobj.AddProperty("valueAsString", "<optimized out>");
- return;
- }
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "String");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- // String refs always truncate to a fixed count;
- const intptr_t kFixedCount = 128;
- if (jsobj.AddPropertyStr("valueAsString", *this, 0, kFixedCount)) {
- jsobj.AddProperty("count", kFixedCount);
- jsobj.AddProperty("valueAsStringIsTruncated", true);
- }
- return;
- }
-
- intptr_t offset;
- intptr_t count;
- stream->ComputeOffsetAndCount(Length(), &offset, &count);
- if (offset > 0) {
- jsobj.AddProperty("offset", offset);
- }
- if (count < Length()) {
- jsobj.AddProperty("count", count);
- }
- jsobj.AddPropertyStr("valueAsString", *this, offset, count);
-}
-
-
void String::ToUTF8(uint8_t* utf8_array, intptr_t array_len) const {
ASSERT(array_len >= Utf8::Length(*this));
Utf8::Encode(*this, reinterpret_cast<char*>(utf8_array), array_len);
@@ -21191,16 +19908,6 @@ const char* Bool::ToCString() const {
}
-void Bool::PrintJSONImpl(JSONStream* stream, bool ref) const {
- const char* str = ToCString();
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Bool");
- jsobj.AddFixedServiceId("objects/bool-%s", str);
- jsobj.AddPropertyF("valueAsString", "%s", str);
-}
-
-
bool Array::CanonicalizeEquals(const Instance& other) const {
if (this->raw() == other.raw()) {
// Both handles point to the same raw instance.
@@ -21303,37 +20010,6 @@ const char* Array::ToCString() const {
}
-void Array::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "List");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- return;
- }
- intptr_t offset;
- intptr_t count;
- stream->ComputeOffsetAndCount(Length(), &offset, &count);
- if (offset > 0) {
- jsobj.AddProperty("offset", offset);
- }
- if (count < Length()) {
- jsobj.AddProperty("count", count);
- }
- intptr_t limit = offset + count;
- ASSERT(limit <= Length());
- {
- JSONArray jsarr(&jsobj, "elements");
- Object& element = Object::Handle();
- for (intptr_t index = offset; index < limit; index++) {
- element = At(index);
- jsarr.AddValue(element);
- }
- }
-}
-
-
RawArray* Array::Grow(const Array& source,
intptr_t new_length,
Heap::Space space) {
@@ -21551,38 +20227,6 @@ const char* GrowableObjectArray::ToCString() const {
}
-void GrowableObjectArray::PrintJSONImpl(JSONStream* stream,
- bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "List");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- return;
- }
- intptr_t offset;
- intptr_t count;
- stream->ComputeOffsetAndCount(Length(), &offset, &count);
- if (offset > 0) {
- jsobj.AddProperty("offset", offset);
- }
- if (count < Length()) {
- jsobj.AddProperty("count", count);
- }
- intptr_t limit = offset + count;
- ASSERT(limit <= Length());
- {
- JSONArray jsarr(&jsobj, "elements");
- Object& element = Object::Handle();
- for (intptr_t index = offset; index < limit; index++) {
- element = At(index);
- jsarr.AddValue(element);
- }
- }
-}
-
-
// Equivalent to Dart's operator "==" and hashCode.
class DefaultHashTraits {
public:
@@ -21669,45 +20313,6 @@ const char* LinkedHashMap::ToCString() const {
}
-void LinkedHashMap::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Map");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- return;
- }
- intptr_t offset;
- intptr_t count;
- stream->ComputeOffsetAndCount(Length(), &offset, &count);
- if (offset > 0) {
- jsobj.AddProperty("offset", offset);
- }
- if (count < Length()) {
- jsobj.AddProperty("count", count);
- }
- intptr_t limit = offset + count;
- ASSERT(limit <= Length());
- {
- JSONArray jsarr(&jsobj, "associations");
- Object& object = Object::Handle();
- LinkedHashMap::Iterator iterator(*this);
- int i = 0;
- while (iterator.MoveNext() && i < limit) {
- if (i >= offset) {
- JSONObject jsassoc(&jsarr);
- object = iterator.CurrentKey();
- jsassoc.AddProperty("key", object);
- object = iterator.CurrentValue();
- jsassoc.AddProperty("value", object);
- }
- i++;
- }
- }
-}
-
-
RawFloat32x4* Float32x4::New(float v0, float v1, float v2, float v3,
Heap::Space space) {
ASSERT(Isolate::Current()->object_store()->float32x4_class() !=
@@ -21804,15 +20409,6 @@ const char* Float32x4::ToCString() const {
}
-void Float32x4::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Float32x4");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("valueAsString", ToCString());
-}
-
-
RawInt32x4* Int32x4::New(int32_t v0, int32_t v1, int32_t v2, int32_t v3,
Heap::Space space) {
ASSERT(Isolate::Current()->object_store()->int32x4_class() !=
@@ -21909,15 +20505,6 @@ const char* Int32x4::ToCString() const {
}
-void Int32x4::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Int32x4");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("valueAsString", ToCString());
-}
-
-
RawFloat64x2* Float64x2::New(double value0, double value1, Heap::Space space) {
ASSERT(Isolate::Current()->object_store()->float64x2_class() !=
Class::null());
@@ -21988,15 +20575,6 @@ const char* Float64x2::ToCString() const {
}
-void Float64x2::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "Float64x2");
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("valueAsString", ToCString());
-}
-
-
const intptr_t TypedData::element_size_table[TypedData::kNumElementSizes] = {
1, // kTypedDataInt8ArrayCid.
1, // kTypedDataUint8ArrayCid.
@@ -22085,38 +20663,6 @@ const char* TypedData::ToCString() const {
}
-void TypedData::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- const Class& cls = Class::Handle(clazz());
- const String& kind = String::Handle(cls.UserVisibleName());
- jsobj.AddProperty("kind", kind.ToCString());
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- return;
- }
- intptr_t offset;
- intptr_t count;
- stream->ComputeOffsetAndCount(Length(), &offset, &count);
- if (offset > 0) {
- jsobj.AddProperty("offset", offset);
- }
- if (count < Length()) {
- jsobj.AddProperty("count", count);
- }
- if (count == 0) {
- jsobj.AddProperty("bytes", "");
- } else {
- NoSafepointScope no_safepoint;
- jsobj.AddPropertyBase64("bytes",
- reinterpret_cast<const uint8_t*>(
- DataAddr(offset * ElementSizeInBytes())),
- count * ElementSizeInBytes());
- }
-}
-
-
FinalizablePersistentHandle* ExternalTypedData::AddFinalizer(
void* peer, Dart_WeakPersistentHandleFinalizer callback) const {
return dart::AddFinalizer(*this, peer, callback);
@@ -22146,39 +20692,6 @@ const char* ExternalTypedData::ToCString() const {
}
-void ExternalTypedData::PrintJSONImpl(JSONStream* stream,
- bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- const Class& cls = Class::Handle(clazz());
- const String& kind = String::Handle(cls.UserVisibleName());
- jsobj.AddProperty("kind", kind.ToCString());
- jsobj.AddServiceId(*this);
- jsobj.AddProperty("length", Length());
- if (ref) {
- return;
- }
- intptr_t offset;
- intptr_t count;
- stream->ComputeOffsetAndCount(Length(), &offset, &count);
- if (offset > 0) {
- jsobj.AddProperty("offset", offset);
- }
- if (count < Length()) {
- jsobj.AddProperty("count", count);
- }
- if (count == 0) {
- jsobj.AddProperty("bytes", "");
- } else {
- NoSafepointScope no_safepoint;
- jsobj.AddPropertyBase64("bytes",
- reinterpret_cast<const uint8_t*>(
- DataAddr(offset * ElementSizeInBytes())),
- count * ElementSizeInBytes());
- }
-}
-
-
RawCapability* Capability::New(uint64_t id, Heap::Space space) {
Capability& result = Capability::Handle();
{
@@ -22198,11 +20711,6 @@ const char* Capability::ToCString() const {
}
-void Capability::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Instance::PrintJSONImpl(stream, ref);
-}
-
-
RawReceivePort* ReceivePort::New(Dart_Port id,
bool is_control_port,
Heap::Space space) {
@@ -22235,11 +20743,6 @@ const char* ReceivePort::ToCString() const {
}
-void ReceivePort::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Instance::PrintJSONImpl(stream, ref);
-}
-
-
RawSendPort* SendPort::New(Dart_Port id, Heap::Space space) {
return New(id, Isolate::Current()->origin_id(), space);
}
@@ -22268,11 +20771,6 @@ const char* SendPort::ToCString() const {
}
-void SendPort::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Instance::PrintJSONImpl(stream, ref);
-}
-
-
const char* Closure::ToCString() const {
const Function& fun = Function::Handle(function());
const bool is_implicit_closure = fun.IsImplicitClosureFunction();
@@ -22284,11 +20782,6 @@ const char* Closure::ToCString() const {
}
-void Closure::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Instance::PrintJSONImpl(stream, ref);
-}
-
-
RawClosure* Closure::New(const Function& function,
const Context& context,
Heap::Space space) {
@@ -22396,16 +20889,6 @@ const char* Stacktrace::ToCString() const {
}
-void Stacktrace::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "StackTrace");
- jsobj.AddServiceId(*this);
- intptr_t idx = 0;
- jsobj.AddProperty("valueAsString", ToCStringInternal(&idx));
-}
-
-
static intptr_t PrintOneStacktrace(Zone* zone,
GrowableArray<char*>* frame_strings,
uword pc,
@@ -22655,33 +21138,6 @@ const char* JSRegExp::ToCString() const {
}
-void JSRegExp::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "RegExp");
- jsobj.AddServiceId(*this);
-
- jsobj.AddProperty("pattern", String::Handle(pattern()));
-
- if (ref) {
- return;
- }
-
- jsobj.AddProperty("isCaseSensitive", !is_ignore_case());
- jsobj.AddProperty("isMultiLine", is_multi_line());
-
- Function& func = Function::Handle();
- func = function(kOneByteStringCid);
- jsobj.AddProperty("_oneByteFunction", func);
- func = function(kTwoByteStringCid);
- jsobj.AddProperty("_twoByteFunction", func);
- func = function(kExternalOneByteStringCid);
- jsobj.AddProperty("_externalOneByteFunction", func);
- func = function(kExternalTwoByteStringCid);
- jsobj.AddProperty("_externalTwoByteFunction", func);
-}
-
-
RawWeakProperty* WeakProperty::New(Heap::Space space) {
ASSERT(Isolate::Current()->object_store()->weak_property_class()
!= Class::null());
@@ -22697,21 +21153,6 @@ const char* WeakProperty::ToCString() const {
}
-void WeakProperty::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "WeakProperty");
- jsobj.AddServiceId(*this);
- if (ref) {
- return;
- }
-
- const Object& key_handle = Object::Handle(key());
- jsobj.AddProperty("propertyKey", key_handle);
- const Object& value_handle = Object::Handle(value());
- jsobj.AddProperty("propertyValue", value_handle);
-}
-
RawAbstractType* MirrorReference::GetAbstractTypeReferent() const {
ASSERT(Object::Handle(referent()).IsAbstractType());
return AbstractType::Cast(Object::Handle(referent())).raw();
@@ -22768,21 +21209,6 @@ const char* MirrorReference::ToCString() const {
}
-void MirrorReference::PrintJSONImpl(JSONStream* stream, bool ref) const {
- JSONObject jsobj(stream);
- PrintSharedInstanceJSON(&jsobj, ref);
- jsobj.AddProperty("kind", "MirrorReference");
- jsobj.AddServiceId(*this);
-
- if (ref) {
- return;
- }
-
- const Object& referent_handle = Object::Handle(referent());
- jsobj.AddProperty("mirrorReferent", referent_handle);
-}
-
-
void UserTag::MakeActive() const {
Isolate* isolate = Isolate::Current();
ASSERT(isolate != NULL);
@@ -22920,10 +21346,4 @@ const char* UserTag::ToCString() const {
return tag_label.ToCString();
}
-
-void UserTag::PrintJSONImpl(JSONStream* stream, bool ref) const {
- Instance::PrintJSONImpl(stream, ref);
-}
-
-
} // namespace dart
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_id_ring.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698