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

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

Issue 1000933004: Display ICData entries at call sites, with links to the targets and guarded classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: super calls Created 5 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/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 6abd38a62e33c9f8ce208fc1c4018cd68e1c7b0e..f7d4db88e26b5acc8bc228abeab540168292eef8 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -316,6 +316,30 @@ abstract class Coverage {
return this;
});
}
+
+ /// Default handler for coverage data.
+ void processCallSiteData(List coverageData) {
+ coverageData.forEach((scriptCoverage) {
+ assert(scriptCoverage['script'] != null);
+ scriptCoverage['script']._processCallSites(scriptCoverage['callSites']);
+ });
+ }
+
+ Future refreshCallSiteData() {
+ Map params = {};
+ if (this is! Isolate) {
+ params['targetId'] = id;
+ }
+ return isolate.invokeRpcNoUpgrade('getCallSiteData', params).then(
+ (ObservableMap map) {
+ var coverage = new ServiceObject._fromMap(isolate, map);
+ assert(coverage.type == 'CodeCoverage');
+ var coverageList = coverage['coverage'];
+ assert(coverageList != null);
+ processCallSiteData(coverageList);
+ return this;
+ });
+ }
}
abstract class ServiceObjectOwner extends ServiceObject {
@@ -1950,31 +1974,6 @@ class ServiceFunction extends ServiceObject with Coverage {
deoptimizations = map['deoptimizations'];
usageCounter = map['usageCounter'];
}
-
- // TODO(rmacnak): Generalize and move to Coverage.
- void processCallSiteData(List callSiteMaps) {
- var callSites = new List();
- for (var callSiteMap in callSiteMaps) {
- callSites.add(new CallSite.fromMap(callSiteMap, script));
- }
- script._processCallSites(callSites);
- }
-
- Future refreshCallSiteData() {
- Map params = {};
- if (this is! Isolate) {
- params['targetId'] = id;
- }
- return isolate.invokeRpcNoUpgrade('getCallSiteData', params).then(
- (ObservableMap map) {
- var data = new ServiceObject._fromMap(isolate, map);
- assert(data.type == '_CallSiteData');
- var callSites = data['callSites'];
- assert(callSites != null);
- processCallSiteData(callSites);
- return this;
- });
- }
}
@@ -2109,7 +2108,6 @@ class CallSite {
int get line => script.tokenToLine(tokenPos);
int get column => script.tokenToCol(tokenPos);
-
factory CallSite.fromMap(Map siteMap, Script script) {
var name = siteMap['name'];
var tokenPos = siteMap['tokenPos'];
@@ -2131,12 +2129,14 @@ class CallSite {
class CallSiteEntry {
final /* Class | Library */ receiverContainer;
final int count;
+ final ServiceFunction target;
- CallSiteEntry(this.receiverContainer, this.count);
+ CallSiteEntry(this.receiverContainer, this.count, this.target);
factory CallSiteEntry.fromMap(Map entryMap) {
return new CallSiteEntry(entryMap['receiverContainer'],
- entryMap['count']);
+ entryMap['count'],
+ entryMap['target']);
}
String toString() => "CallSiteEntry(${receiverContainer.name}, $count)";
@@ -2228,15 +2228,6 @@ class Script extends ServiceObject with Coverage {
}
}
- void _processCallSites(List newCallSites) {
- var mergedCallSites = new Set();
- mergedCallSites.addAll(newCallSites);
- mergedCallSites.addAll(callSites);
- callSites = mergedCallSites;
- // Notify any Observers that this Script's state has changed.
- notifyChange(null);
- }
-
void _processHits(List scriptHits) {
// Update hits table.
for (var i = 0; i < scriptHits.length; i += 2) {
@@ -2254,6 +2245,19 @@ class Script extends ServiceObject with Coverage {
notifyChange(null);
}
+
+ void _processCallSites(List newCallSiteMaps) {
+ var mergedCallSites = new Set<CallSite>();
+ for (var callSiteMap in newCallSiteMaps) {
+ mergedCallSites.add(new CallSite.fromMap(callSiteMap, this));
+ }
+
+ mergedCallSites.addAll(callSites);
+ callSites = mergedCallSites;
+ // Notify any Observers that this Script's state has changed.
+ notifyChange(null);
+ }
+
void _processSource(String source) {
// Preemptyively mark that this is not loaded.
_loaded = false;

Powered by Google App Engine
This is Rietveld 408576698