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

Unified Diff: lib/runtime/dart_logging_runtime.dart

Issue 1148283010: Remove dart backend (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « lib/devc.dart ('k') | lib/runtime/dart_runtime.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart_logging_runtime.dart
diff --git a/lib/runtime/dart_logging_runtime.dart b/lib/runtime/dart_logging_runtime.dart
deleted file mode 100644
index e99cf883cce228640fc0519b2f7f15f136207a8f..0000000000000000000000000000000000000000
--- a/lib/runtime/dart_logging_runtime.dart
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library dev_compiler.runtime.dart_logging_runtime;
-
-import 'dart:mirrors' as mirrors;
-
-import 'dart_runtime.dart' as rt;
-export 'dart_runtime.dart' show Arity, getArity, type;
-
-import 'package:stack_trace/stack_trace.dart';
-
-// Logging / updating CastRecords for cases that alway pass in Dart and DDC
-// is expensive. They are also less interesting, so filter out by default.
-const bool _skipSuccess = true;
-
-class CastRecord {
- final Type runtimeType;
- final Type staticType;
-
- /// True if the dev_compiler would allow this cast. Otherwise false.
- final bool soundCast;
-
- /// True if Dart checked mode would allow this cast. Otherwise false.
- final bool dartCast;
-
- CastRecord(this.runtimeType, this.staticType, this.soundCast, this.dartCast);
-}
-
-// Register a handler to process CastRecords. The default (see below) just
-// prints a summary at the end.
-typedef void CastRecordHandler(String key, CastRecord record);
-CastRecordHandler castRecordHandler = _record;
-
-var _cache = <Type, Map<Type, CastRecord>>{};
-
-Map<Type, CastRecord> _cacheGen() => <Type, CastRecord>{};
-
-void _addToCache(Type runtimeType, Type staticType, CastRecord record) {
- _cache.putIfAbsent(runtimeType, _cacheGen)[staticType] = record;
-}
-
-CastRecord _lookupInCache(Type runtimeType, Type staticType) {
- var subcache = _cache[runtimeType];
- if (subcache == null) return null;
- return subcache[staticType];
-}
-
-var _successCache = <Type, Set<Type>>{};
-
-dynamic cast(dynamic obj, Type fromType, Type staticType,
- [String kind, String key, bool dartIs, bool isGround]) {
- var runtimeType = obj.runtimeType;
- // Short-circuit uninteresting cases.
- if (_skipSuccess && _successCache.containsKey(staticType)) {
- if (_successCache[staticType].contains(runtimeType)) {
- return obj;
- }
- }
-
- if (key == null) {
- // If no key is past in, use the caller's frame as a key.
- final trace = new Trace.current(1);
- final frame = trace.frames.first;
- key = frame.toString();
- }
-
- CastRecord record = _lookupInCache(runtimeType, staticType);
- if (record == null) {
- bool soundCast = true;
- bool dartCast = true;
- // TODO(vsm): Use instanceOf once we settle on nullability.
- try {
- rt.cast(obj, staticType);
- } catch (e) {
- soundCast = false;
- }
- if (obj == null) {
- dartCast = true;
- } else {
- // TODO(vsm): We could avoid mirror code by requiring the caller to pass
- // in obj is TypeLiteral as a parameter. We can't do that once we have a
- // Type object instead.
- final staticMirror = mirrors.reflectType(staticType);
- final instanceMirror = mirrors.reflect(obj);
- final classMirror = instanceMirror.type;
- dartCast = classMirror.isSubtypeOf(staticMirror);
- }
- if (_skipSuccess && dartCast && soundCast) {
- _successCache
- .putIfAbsent(staticType, () => new Set<Type>())
- .add(runtimeType);
- return obj;
- }
- record = new CastRecord(runtimeType, staticType, soundCast, dartCast);
- _addToCache(runtimeType, staticType, record);
- }
- castRecordHandler(key, record);
- return obj;
-}
-
-dynamic wrap(Function build(Function _), Function f, Type fromType, Type toType,
- String kind, String key, bool dartIs) {
- if (f == null) return null;
- return build(f);
-}
-
-// The default handler simply records all CastRecords and prints a summary
-// at the end.
-final _recordMap = new Map<String, List<CastRecord>>();
-void _record(String key, CastRecord record) {
- _recordMap.putIfAbsent(key, () => <CastRecord>[]).add(record);
-}
-
-String summary({bool clear: true}) {
- final buffer = new StringBuffer();
- _recordMap.forEach((String key, List<CastRecord> records) {
- int success = 0;
- int mismatch = 0;
- int error = 0;
- int failure = 0;
- Type staticType = null;
- var runtimeTypes = new Set<Type>();
- for (var record in records) {
- if (staticType == null) {
- staticType = record.staticType;
- } else {
- // Are these canonicalized?
- // assert(staticType == record.staticType);
- }
- runtimeTypes.add(record.runtimeType);
- if (record.soundCast) {
- if (record.dartCast) {
- success++;
- } else {
- error++;
- }
- } else {
- if (record.dartCast) {
- mismatch++;
- } else {
- failure++;
- }
- }
- }
- final total = success + mismatch + error + failure;
- assert(total != 0);
- if (success < total) {
- buffer.writeln('Key $key:');
- buffer.writeln(' - static type: $staticType');
- buffer.writeln(' - runtime types: $runtimeTypes');
- final category = (String cat, int val) =>
- buffer.writeln(' - $cat: $val (${val / total})');
- category('success', success);
- category('failure', failure);
- category('mismatch', mismatch);
- category('error', error);
- }
- });
- if (clear) {
- _recordMap.clear();
- }
- return buffer.toString();
-}
« no previous file with comments | « lib/devc.dart ('k') | lib/runtime/dart_runtime.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698