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

Side by Side Diff: pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart

Issue 1421003004: Add CoreClasses (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Analysis to determine how to generate code for `LookupMap`s. 5 /// Analysis to determine how to generate code for `LookupMap`s.
6 library compiler.src.js_backend.lookup_map_analysis; 6 library compiler.src.js_backend.lookup_map_analysis;
7 7
8 import '../common.dart'; 8 import '../common.dart';
9 import '../common/registry.dart' show Registry; 9 import '../common/registry.dart' show Registry;
10 import '../compiler.dart' show Compiler; 10 import '../compiler.dart' show Compiler;
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 assert(isLookupMap(lookupMap)); 198 assert(isLookupMap(lookupMap));
199 _lookupMaps.putIfAbsent(lookupMap, 199 _lookupMaps.putIfAbsent(lookupMap,
200 () => new _LookupMapInfo(lookupMap, this).._updateUsed()); 200 () => new _LookupMapInfo(lookupMap, this).._updateUsed());
201 } 201 }
202 202
203 /// Whether [key] is a constant value whose type overrides equals. 203 /// Whether [key] is a constant value whose type overrides equals.
204 bool _overridesEquals(ConstantValue key) { 204 bool _overridesEquals(ConstantValue key) {
205 if (key is ConstructedConstantValue) { 205 if (key is ConstructedConstantValue) {
206 ClassElement element = key.type.element; 206 ClassElement element = key.type.element;
207 return _typesWithEquals.putIfAbsent(element, () => 207 return _typesWithEquals.putIfAbsent(element, () =>
208 element.lookupMember('==').enclosingClass != 208 !element.lookupMember('==').enclosingClass.isObject);
209 backend.compiler.objectClass);
210 } 209 }
211 return false; 210 return false;
212 } 211 }
213 212
214 /// Whether we need to preserve [key]. This is true for keys that are not 213 /// Whether we need to preserve [key]. This is true for keys that are not
215 /// candidates for tree-shaking in the first place (primitives and non-type 214 /// candidates for tree-shaking in the first place (primitives and non-type
216 /// const values overriding equals) and keys that we have seen in the program. 215 /// const values overriding equals) and keys that we have seen in the program.
217 bool _shouldKeep(ConstantValue key) => 216 bool _shouldKeep(ConstantValue key) =>
218 key.isPrimitive || _inUse.contains(key) || _overridesEquals(key); 217 key.isPrimitive || _inUse.contains(key) || _overridesEquals(key);
219 218
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 } 432 }
434 } else { 433 } else {
435 original.fields[analysis.entriesField] = 434 original.fields[analysis.entriesField] =
436 new ListConstantValue(listType, keyValuePairs); 435 new ListConstantValue(listType, keyValuePairs);
437 } 436 }
438 } 437 }
439 } 438 }
440 439
441 final _validLookupMapVersionConstraint = 440 final _validLookupMapVersionConstraint =
442 new VersionConstraint.parse('^0.0.1'); 441 new VersionConstraint.parse('^0.0.1');
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_backend/js_backend.dart ('k') | pkg/compiler/lib/src/js_backend/namer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698