| Index: lib/src/measurements.dart
|
| diff --git a/lib/src/measurements.dart b/lib/src/measurements.dart
|
| index 499f00173aa3cad09a6a0e8a6644b83d77881f40..b919678450c44d58b1eb9490e55747380fd15b6b 100644
|
| --- a/lib/src/measurements.dart
|
| +++ b/lib/src/measurements.dart
|
| @@ -7,10 +7,7 @@
|
| library dart2js_info.src.measurements;
|
|
|
| /// Top-level set of metrics
|
| -const List<Metric> _topLevelMetrics = const [
|
| - Metric.functions,
|
| - Metric.send,
|
| -];
|
| +const List<Metric> _topLevelMetrics = const [Metric.functions, Metric.send];
|
|
|
| /// Apply `f` on each metric in DFS order on the metric tree. [Metric.functions]
|
| /// and [Metric.send] are the top level metrics. See those declarations for
|
| @@ -35,13 +32,14 @@ class Metric {
|
|
|
| const Metric(this.name);
|
|
|
| + factory Metric.fromName(String name) => _nameToMetricMap[name];
|
| +
|
| String toString() => name;
|
|
|
| /// Total functions in a library/package/program. Parent of
|
| /// [reachableFunction].
|
| - static const Metric functions = const GroupedMetric('functions', const [
|
| - reachableFunctions,
|
| - ]);
|
| + static const Metric functions =
|
| + const GroupedMetric('functions', const [reachableFunctions]);
|
|
|
| /// Subset of the functions that are reachable.
|
| static const Metric reachableFunctions = const Metric('reachable functions');
|
| @@ -68,24 +66,22 @@ class Metric {
|
| /// |- multi-interceptor (1 of n possible interceptors)
|
| /// '- dynamic (any combination of the above)
|
| ///
|
| - static const Metric send = const GroupedMetric('send', const [
|
| - monomorphicSend,
|
| - polymorphicSend,
|
| - ]);
|
| + static const Metric send =
|
| + const GroupedMetric('send', const [monomorphicSend, polymorphicSend]);
|
|
|
| /// Parent of monomorphic sends, see [send] for details.
|
| - static const Metric monomorphicSend = const GroupedMetric('monomorphic',
|
| - const [
|
| - staticSend,
|
| - superSend,
|
| - localSend,
|
| - constructorSend,
|
| - typeVariableSend,
|
| - nsmErrorSend,
|
| - singleNsmCallSend,
|
| - instanceSend,
|
| - interceptorSend,
|
| - ]);
|
| + static const Metric monomorphicSend =
|
| + const GroupedMetric('monomorphic', const [
|
| + staticSend,
|
| + superSend,
|
| + localSend,
|
| + constructorSend,
|
| + typeVariableSend,
|
| + nsmErrorSend,
|
| + singleNsmCallSend,
|
| + instanceSend,
|
| + interceptorSend
|
| + ]);
|
|
|
| /// Metric for static calls, see [send] for details.
|
| static const Metric staticSend = const Metric('static');
|
| @@ -120,12 +116,7 @@ class Metric {
|
|
|
| /// Parent of polymorphic sends, see [send] for details.
|
| static const Metric polymorphicSend = const GroupedMetric('polymorphic',
|
| - const [
|
| - multiNsmCallSend,
|
| - virtualSend,
|
| - multiInterceptorSend,
|
| - dynamicSend,
|
| - ]);
|
| + const [multiNsmCallSend, virtualSend, multiInterceptorSend, dynamicSend]);
|
|
|
| /// Metric for calls to noSuchMethod methods with more than one possible
|
| /// target, see [send] for details.
|
| @@ -143,14 +134,11 @@ class Metric {
|
| /// method. See [send] for details.
|
| static const Metric dynamicSend = const Metric('dynamic');
|
|
|
| - String toJson() => name;
|
| static Map<String, Metric> _nameToMetricMap = () {
|
| var res = {};
|
| visitAllMetrics((m, _) => res[m.name] = m);
|
| return res;
|
| }();
|
| -
|
| - static Metric fromJson(String name) => _nameToMetricMap[name];
|
| }
|
|
|
| /// A metric that is subdivided in smaller metrics.
|
| @@ -180,10 +168,12 @@ class Measurements {
|
| counters = <Metric, int>{};
|
|
|
| const Measurements.unreachableFunction()
|
| - : counters = const { Metric.functions: 1}, entries = const {}, uri = null;
|
| + : counters = const {Metric.functions: 1},
|
| + entries = const {},
|
| + uri = null;
|
|
|
| Measurements.reachableFunction([this.uri])
|
| - : counters = { Metric.functions: 1, Metric.reachableFunctions: 1},
|
| + : counters = {Metric.functions: 1, Metric.reachableFunctions: 1},
|
| entries = {};
|
|
|
| /// Record [metric] was seen. The optional [begin] and [end] offsets are
|
| @@ -228,24 +218,4 @@ class Measurements {
|
| }
|
| return total == submetricTotal;
|
| }
|
| -
|
| - Map toJson() {
|
| - var jsonEntries = <String, List<Map>>{};
|
| - entries.forEach((metric, values) {
|
| - jsonEntries[metric.toJson()] =
|
| - values.expand((e) => [e.begin, e.end]).toList();
|
| - });
|
| - var json = {'entries': jsonEntries};
|
| - // TODO(sigmund): encode uri as an offset of the URIs available in the parts
|
| - // of the library info.
|
| - if (uri != null) json['sourceFile'] = '$uri';
|
| - if (counters[Metric.functions] != null) {
|
| - json[Metric.functions.toJson()] = counters[Metric.functions];
|
| - }
|
| - if (counters[Metric.reachableFunctions] != null) {
|
| - json[Metric.reachableFunctions.toJson()] =
|
| - counters[Metric.reachableFunctions];
|
| - }
|
| - return json;
|
| - }
|
| }
|
|
|