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

Unified Diff: vm/debugger.cc

Issue 9634002: Use GrowableObjectArray in the debugger instance/static field lists. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 8 years, 9 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/debugger.cc
===================================================================
--- vm/debugger.cc (revision 5108)
+++ vm/debugger.cc (working copy)
@@ -182,6 +182,7 @@
const Code& code = Code::Handle(DartFunction().unoptimized_code());
var_descriptors_ =
&LocalVarDescriptors::ZoneHandle(code.var_descriptors());
+ // TODO(Hausner): Consider replacing this GrowableArray.
GrowableArray<String*> var_names(8);
intptr_t activation_token_pos = TokenIndex();
intptr_t var_desc_len = var_descriptors_->Length();
@@ -659,17 +660,6 @@
}
-static RawArray* MakeNameValueList(const GrowableArray<Object*>& pairs) {
- int pairs_len = pairs.length();
- ASSERT(pairs_len % 2 == 0);
- const Array& list = Array::Handle(Array::New(pairs_len));
- for (int i = 0; i < pairs_len; i++) {
- list.SetAt(i, *pairs[i]);
- }
- return list.raw();
-}
-
-
// TODO(hausner): Merge some of this functionality with the code in
// dart_api_impl.cc.
RawObject* Debugger::GetInstanceField(const Class& cls,
@@ -722,40 +712,45 @@
Class& cls = Class::Handle(obj.clazz());
Array& fields = Array::Handle();
Field& field = Field::Handle();
- GrowableArray<Object*> field_list(8);
+ const GrowableObjectArray& field_list =
+ GrowableObjectArray::Handle(GrowableObjectArray::New(8));
+ String& field_name = String::Handle();
+ Object& field_value = Object::Handle();
// Iterate over fields in class hierarchy to count all instance fields.
while (!cls.IsNull()) {
fields = cls.fields();
for (int i = 0; i < fields.Length(); i++) {
field ^= fields.At(i);
if (!field.is_static()) {
- String& field_name = String::Handle(field.name());
- field_list.Add(&field_name);
- Object& field_value = Object::Handle();
+ field_name = field.name();
+ field_list.Add(field_name);
field_value = GetInstanceField(cls, field_name, obj);
- field_list.Add(&field_value);
+ field_list.Add(field_value);
}
}
cls = cls.SuperClass();
}
- return MakeNameValueList(field_list);
+ return Array::MakeArray(field_list);
}
RawArray* Debugger::GetStaticFields(const Class& cls) {
- GrowableArray<Object*> field_list(8);
+ const GrowableObjectArray& field_list =
+ GrowableObjectArray::Handle(GrowableObjectArray::New(8));
Array& fields = Array::Handle(cls.fields());
Field& field = Field::Handle();
+ String& field_name = String::Handle();
+ Object& field_value = Object::Handle();
for (int i = 0; i < fields.Length(); i++) {
field ^= fields.At(i);
if (field.is_static()) {
- String& field_name = String::Handle(field.name());
- Object& field_value = Object::Handle(GetStaticField(cls, field_name));
- field_list.Add(&field_name);
- field_list.Add(&field_value);
+ field_name = field.name();
+ field_value = GetStaticField(cls, field_name);
+ field_list.Add(field_name);
+ field_list.Add(field_value);
}
}
- return MakeNameValueList(field_list);
+ return Array::MakeArray(field_list);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698