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

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

Issue 1301373009: Fix typo in lookup map, use pub_semver to check version constraints in dart2js (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | pkg/compiler/pubspec.yaml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/registry.dart' show Registry; 8 import '../common/registry.dart' show Registry;
9 import '../compiler.dart' show Compiler; 9 import '../compiler.dart' show Compiler;
10 import '../diagnostics/messages.dart' show MessageKind; 10 import '../diagnostics/messages.dart' show MessageKind;
(...skipping 10 matching lines...) Expand all
21 Element, 21 Element,
22 Elements, 22 Elements,
23 FieldElement, 23 FieldElement,
24 FunctionElement, 24 FunctionElement,
25 FunctionSignature, 25 FunctionSignature,
26 LibraryElement, 26 LibraryElement,
27 VariableElement; 27 VariableElement;
28 import '../enqueue.dart' show Enqueuer; 28 import '../enqueue.dart' show Enqueuer;
29 import 'js_backend.dart' show JavaScriptBackend; 29 import 'js_backend.dart' show JavaScriptBackend;
30 import '../dart_types.dart' show DynamicType, InterfaceType; 30 import '../dart_types.dart' show DynamicType, InterfaceType;
31 import 'package:pub_semver/pub_semver.dart';
31 32
32 /// An analysis and optimization to remove unused entries from a `LookupMap`. 33 /// An analysis and optimization to remove unused entries from a `LookupMap`.
33 /// 34 ///
34 /// `LookupMaps` are defined in `package:lookup_map/lookup_map.dart`. They are 35 /// `LookupMaps` are defined in `package:lookup_map/lookup_map.dart`. They are
35 /// simple maps that contain constant expressions as keys, and that only support 36 /// simple maps that contain constant expressions as keys, and that only support
36 /// the lookup operation. 37 /// the lookup operation.
37 /// 38 ///
38 /// This analysis and optimization will tree-shake the contents of the maps by 39 /// This analysis and optimization will tree-shake the contents of the maps by
39 /// looking at the program and finding which keys are clearly unused. Not all 40 /// looking at the program and finding which keys are clearly unused. Not all
40 /// constants can be approximated statically, so this optimization is limited to 41 /// constants can be approximated statically, so this optimization is limited to
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 StringConstantValue value = 156 StringConstantValue value =
156 backend.constants.getConstantValueForVariable(lookupMapVersionVariable); 157 backend.constants.getConstantValueForVariable(lookupMapVersionVariable);
157 if (value == null) { 158 if (value == null) {
158 backend.compiler.reportInfo(lookupMapVersionVariable, 159 backend.compiler.reportInfo(lookupMapVersionVariable,
159 MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP); 160 MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP);
160 return; 161 return;
161 } 162 }
162 163
163 // TODO(sigmund): add proper version resolution using the pub_semver package 164 // TODO(sigmund): add proper version resolution using the pub_semver package
164 // when we introduce the next version. 165 // when we introduce the next version.
165 String version = value.primitiveValue.slowToString(); 166 Version version;
166 if (version != '0.0.1') { 167 try {
168 version = new Version.parse(value.primitiveValue.slowToString());
169 } catch (e) {}
170
171 if (version == null || !_validLookupMapVersionConstraint.allows(version)) {
167 backend.compiler.reportInfo(lookupMapVersionVariable, 172 backend.compiler.reportInfo(lookupMapVersionVariable,
168 MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP); 173 MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP);
169 return; 174 return;
170 } 175 }
171 176
172 ClassElement cls = lookupMapLibrary.findLocal('LookupMap'); 177 ClassElement cls = lookupMapLibrary.findLocal('LookupMap');
173 cls.computeType(backend.compiler); 178 cls.computeType(backend.compiler);
174 entriesField = cls.lookupMember('_entries'); 179 entriesField = cls.lookupMember('_entries');
175 keyField = cls.lookupMember('_key'); 180 keyField = cls.lookupMember('_key');
176 valueField = cls.lookupMember('_value'); 181 valueField = cls.lookupMember('_value');
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
423 if (keyValuePairs.length == 2) { 428 if (keyValuePairs.length == 2) {
424 original.fields[analysis.keyField] = keyValuePairs[0]; 429 original.fields[analysis.keyField] = keyValuePairs[0];
425 original.fields[analysis.valueField] = keyValuePairs[1]; 430 original.fields[analysis.valueField] = keyValuePairs[1];
426 } 431 }
427 } else { 432 } else {
428 original.fields[analysis.entriesField] = 433 original.fields[analysis.entriesField] =
429 new ListConstantValue(listType, keyValuePairs); 434 new ListConstantValue(listType, keyValuePairs);
430 } 435 }
431 } 436 }
432 } 437 }
438
439 final _validLookupMapVersionConstraint =
440 new VersionConstraint.parse('^0.0.1');
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698