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

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

Issue 1584173003: Use getSourceReport for coverage/callsites in Observatory. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: cleanups Created 4 years, 11 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 e45cb8d78b6d5a8b294d73514c0d1f734f4f300f..e3214793a5de32fc3152ff74bf4ac76832fed15f 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -395,40 +395,6 @@ abstract class HeapObject extends ServiceObject {
}
}
-abstract class Coverage {
- // Following getters and functions will be provided by [ServiceObject].
- String get id;
- Isolate get isolate;
-
- Future refreshCoverage() {
- return refreshCallSiteData();
- }
-
- /// 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 {
/// Creates an empty [ServiceObjectOwner].
ServiceObjectOwner._empty(ServiceObjectOwner owner) : super._empty(owner);
@@ -1135,7 +1101,7 @@ class HeapSnapshot {
}
/// State for a running isolate.
-class Isolate extends ServiceObjectOwner with Coverage {
+class Isolate extends ServiceObjectOwner {
static const kLoggingStream = '_Logging';
static const kExtensionStream = 'Extension';
@@ -1194,6 +1160,25 @@ class Isolate extends ServiceObjectOwner with Coverage {
});
}
+ static const kCallSitesReport = '_CallSites';
+
+ Future<ServiceMap> getSourceReport(List<String> report_kinds,
+ [Script script,
+ int startPos,
+ int endPos]) {
+ var params = { 'reports' : report_kinds };
+ if (script != null) {
+ params['scriptId'] = script.id;
+ }
+ if (startPos != null) {
+ params['tokenPos'] = startPos;
+ }
+ if (endPos != null) {
+ params['endTokenPos'] = endPos;
+ }
+ return invokeRpc('_getSourceReport', params);
+ }
+
/// Fetches and builds the class hierarchy for this isolate. Returns the
/// Object class object.
Future<Class> getClassHierarchy() {
@@ -2115,7 +2100,7 @@ class LibraryDependency {
}
-class Library extends HeapObject with Coverage {
+class Library extends HeapObject {
@observable String uri;
@reflectable final dependencies = new ObservableList<LibraryDependency>();
@reflectable final scripts = new ObservableList<Script>();
@@ -2213,7 +2198,7 @@ class Allocations {
bool get empty => accumulated.empty && current.empty;
}
-class Class extends HeapObject with Coverage {
+class Class extends HeapObject {
@observable Library library;
@observable bool isAbstract;
@@ -2592,7 +2577,7 @@ class FunctionKind {
static FunctionKind kUNKNOWN = new FunctionKind._internal('UNKNOWN');
}
-class ServiceFunction extends HeapObject with Coverage {
+class ServiceFunction extends HeapObject {
// owner is a Library, Class, or ServiceFunction.
@observable ServiceObject dartOwner;
@observable Library library;
@@ -2738,7 +2723,6 @@ class ScriptLine extends Observable {
final Script script;
final int line;
final String text;
- @observable int hits;
@observable bool possibleBpt = true;
@observable bool breakpointResolved = false;
@observable Set<Breakpoint> breakpoints;
@@ -2850,19 +2834,19 @@ class CallSite {
}
class CallSiteEntry {
- final /* Class | Library */ receiverContainer;
+ final /* Class | Library */ receiver;
final int count;
final ServiceFunction target;
- CallSiteEntry(this.receiverContainer, this.count, this.target);
+ CallSiteEntry(this.receiver, this.count, this.target);
factory CallSiteEntry.fromMap(Map entryMap) {
- return new CallSiteEntry(entryMap['receiverContainer'],
+ return new CallSiteEntry(entryMap['receiver'],
entryMap['count'],
entryMap['target']);
}
- String toString() => "CallSiteEntry(${receiverContainer.name}, $count)";
+ String toString() => "CallSiteEntry(${receiver.name}, $count)";
}
/// The location of a local variable reference in a script.
@@ -2873,10 +2857,8 @@ class LocalVarLocation {
LocalVarLocation(this.line, this.column, this.endColumn);
}
-class Script extends HeapObject with Coverage {
- Set<CallSite> callSites = new Set<CallSite>();
+class Script extends HeapObject {
final lines = new ObservableList<ScriptLine>();
- final _hits = new Map<int, int>();
@observable String uri;
@observable String kind;
@observable int firstTokenPos;
@@ -3030,29 +3012,6 @@ class Script extends HeapObject with Coverage {
}
}
- void _processCallSites(List newCallSiteMaps) {
- var mergedCallSites = new Set<CallSite>();
- for (var callSiteMap in newCallSiteMaps) {
- var newSite = new CallSite.fromMap(callSiteMap, this);
- mergedCallSites.add(newSite);
-
- var line = newSite.line;
- var hit = newSite.aggregateCount;
- assert(line >= 1); // Lines start at 1.
- var oldHits = _hits[line];
- if (oldHits != null) {
- hit += oldHits;
- }
- _hits[line] = hit;
- }
-
- mergedCallSites.addAll(callSites);
- callSites = mergedCallSites;
- _applyHitsToLines();
- // Notify any Observers that this Script's state has changed.
- notifyChange(null);
- }
-
void _processSource(String source) {
if (source == null) {
return;
@@ -3072,18 +3031,10 @@ class Script extends HeapObject with Coverage {
}
}
- _applyHitsToLines();
// Notify any Observers that this Script's state has changed.
notifyChange(null);
}
- void _applyHitsToLines() {
- for (var line in lines) {
- var hits = _hits[line.line];
- line.hits = hits;
- }
- }
-
void _addBreakpoint(Breakpoint bpt) {
var line;
if (bpt.location.tokenPos != null) {

Powered by Google App Engine
This is Rietveld 408576698