OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/debugger.h" | 5 #include "vm/debugger.h" |
6 | 6 |
7 #include "vm/code_generator.h" | 7 #include "vm/code_generator.h" |
8 #include "vm/code_patcher.h" | 8 #include "vm/code_patcher.h" |
9 #include "vm/compiler.h" | 9 #include "vm/compiler.h" |
10 #include "vm/dart_entry.h" | 10 #include "vm/dart_entry.h" |
(...skipping 1125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1136 field_list.Add(field_name); | 1136 field_list.Add(field_name); |
1137 field_list.Add(field_value); | 1137 field_list.Add(field_value); |
1138 } | 1138 } |
1139 } | 1139 } |
1140 return Array::MakeArray(field_list); | 1140 return Array::MakeArray(field_list); |
1141 } | 1141 } |
1142 | 1142 |
1143 | 1143 |
1144 void Debugger::CollectLibraryFields(const GrowableObjectArray& field_list, | 1144 void Debugger::CollectLibraryFields(const GrowableObjectArray& field_list, |
1145 const Library& lib, | 1145 const Library& lib, |
1146 const String& prefix) { | 1146 const String& prefix, |
| 1147 bool include_private_fields) { |
1147 DictionaryIterator it(lib); | 1148 DictionaryIterator it(lib); |
1148 Object& entry = Object::Handle(isolate_); | 1149 Object& entry = Object::Handle(isolate_); |
1149 Field& field = Field::Handle(isolate_); | 1150 Field& field = Field::Handle(isolate_); |
1150 Class& cls = Class::Handle(isolate_); | 1151 Class& cls = Class::Handle(isolate_); |
1151 String& field_name = String::Handle(isolate_); | 1152 String& field_name = String::Handle(isolate_); |
1152 Object& field_value = Object::Handle(isolate_); | 1153 Object& field_value = Object::Handle(isolate_); |
1153 while (it.HasNext()) { | 1154 while (it.HasNext()) { |
1154 entry = it.GetNext(); | 1155 entry = it.GetNext(); |
1155 if (entry.IsField()) { | 1156 if (entry.IsField()) { |
1156 field ^= entry.raw(); | 1157 field ^= entry.raw(); |
1157 cls = field.owner(); | 1158 cls = field.owner(); |
1158 ASSERT(field.is_static()); | 1159 ASSERT(field.is_static()); |
1159 field_name = field.name(); | 1160 field_name = field.name(); |
| 1161 if ((field_name.CharAt(0) == '_') && !include_private_fields) { |
| 1162 // Skip library-private field. |
| 1163 continue; |
| 1164 } |
1160 field_value = GetStaticField(cls, field_name); | 1165 field_value = GetStaticField(cls, field_name); |
1161 if (!prefix.IsNull()) { | 1166 if (!prefix.IsNull()) { |
1162 field_name = String::Concat(prefix, field_name); | 1167 field_name = String::Concat(prefix, field_name); |
1163 } | 1168 } |
1164 field_list.Add(field_name); | 1169 field_list.Add(field_name); |
1165 field_list.Add(field_value); | 1170 field_list.Add(field_value); |
1166 } | 1171 } |
1167 } | 1172 } |
1168 } | 1173 } |
1169 | 1174 |
1170 | 1175 |
1171 RawArray* Debugger::GetLibraryFields(const Library& lib) { | 1176 RawArray* Debugger::GetLibraryFields(const Library& lib) { |
1172 const GrowableObjectArray& field_list = | 1177 const GrowableObjectArray& field_list = |
1173 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); | 1178 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); |
1174 CollectLibraryFields(field_list, lib, String::Handle(isolate_)); | 1179 CollectLibraryFields(field_list, lib, String::Handle(isolate_), true); |
1175 return Array::MakeArray(field_list); | 1180 return Array::MakeArray(field_list); |
1176 } | 1181 } |
1177 | 1182 |
1178 | 1183 |
1179 RawArray* Debugger::GetGlobalFields(const Library& lib) { | 1184 RawArray* Debugger::GetGlobalFields(const Library& lib) { |
1180 const GrowableObjectArray& field_list = | 1185 const GrowableObjectArray& field_list = |
1181 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); | 1186 GrowableObjectArray::Handle(GrowableObjectArray::New(8)); |
1182 String& prefix_name = String::Handle(isolate_); | 1187 String& prefix_name = String::Handle(isolate_); |
1183 CollectLibraryFields(field_list, lib, prefix_name); | 1188 CollectLibraryFields(field_list, lib, prefix_name, true); |
1184 Library& imported = Library::Handle(isolate_); | 1189 Library& imported = Library::Handle(isolate_); |
1185 intptr_t num_imports = lib.num_imports(); | 1190 intptr_t num_imports = lib.num_imports(); |
1186 for (int i = 0; i < num_imports; i++) { | 1191 for (int i = 0; i < num_imports; i++) { |
1187 imported = lib.ImportAt(i); | 1192 imported = lib.ImportAt(i); |
1188 ASSERT(!imported.IsNull()); | 1193 ASSERT(!imported.IsNull()); |
1189 CollectLibraryFields(field_list, imported, prefix_name); | 1194 CollectLibraryFields(field_list, imported, prefix_name, false); |
1190 } | 1195 } |
1191 LibraryPrefix& prefix = LibraryPrefix::Handle(isolate_); | 1196 LibraryPrefix& prefix = LibraryPrefix::Handle(isolate_); |
1192 LibraryPrefixIterator it(lib); | 1197 LibraryPrefixIterator it(lib); |
1193 while (it.HasNext()) { | 1198 while (it.HasNext()) { |
1194 prefix = it.GetNext(); | 1199 prefix = it.GetNext(); |
1195 prefix_name = prefix.name(); | 1200 prefix_name = prefix.name(); |
1196 ASSERT(!prefix_name.IsNull()); | 1201 ASSERT(!prefix_name.IsNull()); |
1197 prefix_name = String::Concat(prefix_name, | 1202 prefix_name = String::Concat(prefix_name, |
1198 String::Handle(isolate_, String::New("."))); | 1203 String::Handle(isolate_, String::New("."))); |
1199 for (int i = 0; i < prefix.num_libs(); i++) { | 1204 for (int i = 0; i < prefix.num_libs(); i++) { |
1200 imported = prefix.GetLibrary(i); | 1205 imported = prefix.GetLibrary(i); |
1201 CollectLibraryFields(field_list, imported, prefix_name); | 1206 CollectLibraryFields(field_list, imported, prefix_name, false); |
1202 } | 1207 } |
1203 } | 1208 } |
1204 return Array::MakeArray(field_list); | 1209 return Array::MakeArray(field_list); |
1205 } | 1210 } |
1206 | 1211 |
1207 | 1212 |
1208 void Debugger::VisitObjectPointers(ObjectPointerVisitor* visitor) { | 1213 void Debugger::VisitObjectPointers(ObjectPointerVisitor* visitor) { |
1209 ASSERT(visitor != NULL); | 1214 ASSERT(visitor != NULL); |
1210 SourceBreakpoint* bpt = src_breakpoints_; | 1215 SourceBreakpoint* bpt = src_breakpoints_; |
1211 while (bpt != NULL) { | 1216 while (bpt != NULL) { |
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1552 } | 1557 } |
1553 | 1558 |
1554 | 1559 |
1555 void Debugger::RegisterCodeBreakpoint(CodeBreakpoint* bpt) { | 1560 void Debugger::RegisterCodeBreakpoint(CodeBreakpoint* bpt) { |
1556 ASSERT(bpt->next() == NULL); | 1561 ASSERT(bpt->next() == NULL); |
1557 bpt->set_next(code_breakpoints_); | 1562 bpt->set_next(code_breakpoints_); |
1558 code_breakpoints_ = bpt; | 1563 code_breakpoints_ = bpt; |
1559 } | 1564 } |
1560 | 1565 |
1561 } // namespace dart | 1566 } // namespace dart |
OLD | NEW |