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

Unified Diff: runtime/bin/vmservice/client/lib/src/service/object.dart

Issue 221263002: Miscellaneous Observatory UI improvements (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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
Index: runtime/bin/vmservice/client/lib/src/service/object.dart
diff --git a/runtime/bin/vmservice/client/lib/src/service/object.dart b/runtime/bin/vmservice/client/lib/src/service/object.dart
index 9319efe1da46017d6367b45a0b2758dd53fb7bd2..674945ce44ecae05a3a185b44f2b54f41878eea5 100644
--- a/runtime/bin/vmservice/client/lib/src/service/object.dart
+++ b/runtime/bin/vmservice/client/lib/src/service/object.dart
@@ -113,7 +113,7 @@ abstract class ServiceObject extends Observable {
return new Future.value(this);
}
if (_inProgressReload == null) {
- _inProgressReload = vm.getAsMap(link).then((ObservableMap map) {
+ _inProgressReload = vm.getAsMap(link).then((ObservableMap map) {
var mapType = _stripRef(map['type']);
if (mapType != _serviceType) {
// If the type changes, return a new object instead of
@@ -444,6 +444,7 @@ class TagProfile {
class Isolate extends ServiceObjectOwner {
@reflectable VM get vm => owner;
@reflectable Isolate get isolate => this;
+ @observable ObservableMap counters = toObservable(new ObservableMap());
String get link => _id;
String get hashLink => '#/$_id';
@@ -607,6 +608,28 @@ class Isolate extends ServiceObjectOwner {
topFrame = null ;
}
+ var countersMap = map['tagCounters'];
+ if (countersMap != null) {
+ var names = countersMap['names'];
+ var counts = countersMap['counters'];
+ assert(names.length == counts.length);
+ var sum = 0;
+ for (var i = 0; i < counts.length; i++) {
+ sum += counts[i];
+ }
+ // TODO: Why does this not work without this?
+ counters = toObservable({});
+ if (sum == 0) {
+ for (var i = 0; i < names.length; i++) {
+ counters[names[i]] = '0.0%';
+ }
+ } else {
+ for (var i = 0; i < names.length; i++) {
+ counters[names[i]] =
+ (counts[i] / sum * 100.0).toStringAsFixed(2) + '%';
+ }
+ }
+ }
var timerMap = {};
map['timers'].forEach((timer) {
timerMap[timer['name']] = timer['time'];
@@ -818,6 +841,8 @@ class Script extends ServiceObject {
@reflectable final hits = new ObservableMap<int, int>();
@observable ServiceObject library;
@observable String kind;
+ @observable int firstTokenPos;
+ @observable int lastTokenPos;
turnidge 2014/04/01 19:42:48 I see where these are initialized, but I missed wh
Cutch 2014/04/02 18:26:52 Now that <script-view> uses <script-inset> we pass
bool get canCache => true;
bool get immutable => true;
@@ -851,6 +876,7 @@ class Script extends ServiceObject {
}
_tokenToLine = {};
_tokenToCol = {};
+ firstTokenPos = null;
for (var line in table) {
// Each entry begins with a line number...
var lineNumber = line[0];
@@ -858,6 +884,11 @@ class Script extends ServiceObject {
// ...and is followed by (token offset, col number) pairs.
var tokenOffset = line[pos];
var colNumber = line[pos+1];
+ if (firstTokenPos == null) {
+ // Mark first token position.
turnidge 2014/04/01 19:42:48 This assumes that the line number table is provide
Cutch 2014/04/02 18:26:52 I've modified the code to track the minimum and ma
+ firstTokenPos = tokenOffset;
+ }
+ lastTokenPos = tokenOffset;
_tokenToLine[tokenOffset] = lineNumber;
_tokenToCol[tokenOffset] = colNumber;
}

Powered by Google App Engine
This is Rietveld 408576698