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

Unified Diff: runtime/observatory/lib/src/service/object.dart

Issue 2583313002: Added thread.dart and zone.dart to the observatory sources to resolve build issues. (Closed)
Patch Set: Added ability to request zone memory information for all isolates through the VM service and added … Created 4 years 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/observatory/lib/src/models/objects/zone.dart ('k') | runtime/observatory/observatory_sources.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/observatory/lib/src/service/object.dart
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index 58ef53fefb0b940567960e1500e12d68edc410b9..3611ef82a0314e9c451f4c3800e6379eb75723f7 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -238,6 +238,9 @@ abstract class ServiceObject {
case 'SourceLocation':
obj = new SourceLocation._empty(owner);
break;
+ case '_Thread':
+ obj = new Thread._empty(owner);
+ break;
case 'UnresolvedSourceLocation':
obj = new UnresolvedSourceLocation._empty(owner);
break;
@@ -1501,6 +1504,9 @@ class Isolate extends ServiceObjectOwner implements M.Isolate {
List<ByteData> _chunksInProgress;
+ List<Thread> get threads => _threads;
+ final List<Thread> _threads = new List<Thread>();
+
void _loadHeapSnapshot(ServiceEvent event) {
if (_snapshotFetch == null || _snapshotFetch.isClosed) {
// No outstanding snapshot request. Presumably another client asked for a
@@ -1624,6 +1630,11 @@ class Isolate extends ServiceObjectOwner implements M.Isolate {
if (map['extensionRPCs'] != null) {
extensionRPCs.addAll(map['extensionRPCs']);
}
+
+ threads.clear();
+ if(map['threads'] != null) {
+ threads.addAll(map['threads']);
+ }
}
Future<TagProfile> updateTagProfile() {
@@ -3056,6 +3067,58 @@ class Sentinel extends ServiceObject implements M.Sentinel {
String get shortName => valueAsString;
}
+class Thread extends ServiceObject implements M.Thread {
+ M.ThreadKind get kind => _kind;
+ M.ThreadKind _kind;
+ List<Zone> get zones => _zones;
+ final List<Zone> _zones = new List<Zone>();
+
+ Thread._empty(ServiceObjectOwner owner) : super._empty(owner);
+
+ void _update(Map map, bool mapIsRef) {
+ String kindString = map['kind'];
+ List<Map> zoneList = map['zones'];
+
+ switch(kindString) {
+ case "kUnknownTask":
+ _kind = M.ThreadKind.unknownTask;
+ break;
+ case "kMutatorTask":
+ _kind = M.ThreadKind.mutatorTask;
+ break;
+ case "kCompilerTask":
+ _kind = M.ThreadKind.compilerTask;
+ break;
+ case "kSweeperTask":
+ _kind = M.ThreadKind.sweeperTask;
+ break;
+ case "kMarkerTask":
+ _kind = M.ThreadKind.markerTask;
+ break;
+ case "kFinalizerTask":
+ _kind = M.ThreadKind.finalizerTask;
+ break;
+ default:
+ assert(false);
+ }
+ zones.clear();
+ zoneList.forEach((zone) {
+ int capacity = zone['capacity'];
+ int used = zone['used'];
+ zones.add(new Zone(capacity, used));
+ });
+ }
+}
+
+class Zone implements M.Zone {
+ int get capacity => _capacity;
+ int _capacity;
+ int get used => _used;
+ int _used;
+
+ Zone(this._capacity, this._used);
+}
+
class Field extends HeapObject implements M.Field {
// Library or Class.
HeapObject dartOwner;
« no previous file with comments | « runtime/observatory/lib/src/models/objects/zone.dart ('k') | runtime/observatory/observatory_sources.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698