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

Side by Side Diff: pkg/compiler/lib/src/js_emitter/program_builder/program_builder.dart

Issue 2938823002: Starting making dart2js strong mode clean. (Closed)
Patch Set: Address some comments. Created 3 years, 6 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 library dart2js.js_emitter.program_builder; 5 library dart2js.js_emitter.program_builder;
6 6
7 import 'dart:io'; 7 import 'dart:io';
8 import 'dart:convert' show JSON; 8 import 'dart:convert' show JSON;
9 9
10 import '../../closure.dart' show ClosureTask, ClosureFieldElement; 10 import '../../closure.dart' show ClosureTask, ClosureFieldElement;
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 collect(_elementEnvironment.getEffectiveMixinClass(element)); 336 collect(_elementEnvironment.getEffectiveMixinClass(element));
337 } 337 }
338 if (element.superclass != null) { 338 if (element.superclass != null) {
339 collect(element.superclass); 339 collect(element.superclass);
340 } 340 }
341 } 341 }
342 342
343 // For every known class, see if it was allocated in the profile. If yes, 343 // For every known class, see if it was allocated in the profile. If yes,
344 // collect its dependencies (supers and mixins) and mark them as 344 // collect its dependencies (supers and mixins) and mark them as
345 // not-soft-deferrable. 345 // not-soft-deferrable.
346 collector.outputClassLists.forEach((_, List<ClassElement> elements) { 346 collector.outputClassLists.forEach((_, List<ClassEntity> elements) {
347 for (ClassElement element in elements) { 347 for (ClassElement element in elements) {
348 // TODO(29574): share the encoding of the element with the code 348 // TODO(29574): share the encoding of the element with the code
349 // that emits the profile-run. 349 // that emits the profile-run.
350 var key = "${element.library.canonicalUri}:${element.name}"; 350 var key = "${element.library.canonicalUri}:${element.name}";
351 if (allocatedClassesKeys.contains(key) || 351 if (allocatedClassesKeys.contains(key) ||
352 _nativeData.isJsInteropClass(element) || 352 _nativeData.isJsInteropClass(element) ||
353 blackList.contains(element.library.canonicalUri.toString())) { 353 blackList.contains(element.library.canonicalUri.toString())) {
354 collect(element); 354 collect(element);
355 } 355 }
356 } 356 }
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
518 // a method in the case where there exist multiple JavaScript classes 518 // a method in the case where there exist multiple JavaScript classes
519 // that conflict on whether the member is a getter or a method. 519 // that conflict on whether the member is a getter or a method.
520 var interceptorClass = _classes[_commonElements.jsJavaScriptObjectClass]; 520 var interceptorClass = _classes[_commonElements.jsJavaScriptObjectClass];
521 var stubNames = new Set<String>(); 521 var stubNames = new Set<String>();
522 librariesMap 522 librariesMap
523 .forEach((LibraryEntity library, List<ClassEntity> classElements, _) { 523 .forEach((LibraryEntity library, List<ClassEntity> classElements, _) {
524 for (ClassEntity cls in classElements) { 524 for (ClassEntity cls in classElements) {
525 if (_nativeData.isJsInteropClass(cls)) { 525 if (_nativeData.isJsInteropClass(cls)) {
526 // TODO(johnniwinther): Handle class entities. 526 // TODO(johnniwinther): Handle class entities.
527 ClassElement e = cls; 527 ClassElement e = cls;
528 e.declaration.forEachMember((_, MemberElement member) { 528 e.declaration.forEachMember((_, _member) {
529 MemberElement member = _member;
529 var jsName = _nativeData.computeUnescapedJSInteropName(member.name); 530 var jsName = _nativeData.computeUnescapedJSInteropName(member.name);
530 if (!member.isInstanceMember) return; 531 if (!member.isInstanceMember) return;
531 if (member.isGetter || member.isField || member.isFunction) { 532 if (member.isGetter || member.isField || member.isFunction) {
532 var selectors = 533 var selectors =
533 _worldBuilder.getterInvocationsByName(member.name); 534 _worldBuilder.getterInvocationsByName(member.name);
534 if (selectors != null && !selectors.isEmpty) { 535 if (selectors != null && !selectors.isEmpty) {
535 for (var selector in selectors.keys) { 536 for (var selector in selectors.keys) {
536 var stubName = _namer.invocationName(selector); 537 var stubName = _namer.invocationName(selector);
537 if (stubNames.add(stubName.key)) { 538 if (stubNames.add(stubName.key)) {
538 interceptorClass.callStubs.add(_buildStubMethod(stubName, 539 interceptorClass.callStubs.add(_buildStubMethod(stubName,
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 861
861 bool _methodCanBeApplied(FunctionEntity method) { 862 bool _methodCanBeApplied(FunctionEntity method) {
862 return _backendUsage.isFunctionApplyUsed && 863 return _backendUsage.isFunctionApplyUsed &&
863 _closedWorld.getMightBePassedToApply(method); 864 _closedWorld.getMightBePassedToApply(method);
864 } 865 }
865 866
866 /* Map | List */ _computeParameterDefaultValues(FunctionSignature signature) { 867 /* Map | List */ _computeParameterDefaultValues(FunctionSignature signature) {
867 var /* Map | List */ optionalParameterDefaultValues; 868 var /* Map | List */ optionalParameterDefaultValues;
868 if (signature.optionalParametersAreNamed) { 869 if (signature.optionalParametersAreNamed) {
869 optionalParameterDefaultValues = new Map<String, ConstantValue>(); 870 optionalParameterDefaultValues = new Map<String, ConstantValue>();
870 signature.forEachOptionalParameter((ParameterElement parameter) { 871 signature.forEachOptionalParameter((_parameter) {
872 ParameterElement parameter = _parameter;
871 ConstantValue def = 873 ConstantValue def =
872 _constantHandler.getConstantValue(parameter.constant); 874 _constantHandler.getConstantValue(parameter.constant);
873 optionalParameterDefaultValues[parameter.name] = def; 875 optionalParameterDefaultValues[parameter.name] = def;
874 }); 876 });
875 } else { 877 } else {
876 optionalParameterDefaultValues = <ConstantValue>[]; 878 optionalParameterDefaultValues = <ConstantValue>[];
877 signature.forEachOptionalParameter((ParameterElement parameter) { 879 signature.forEachOptionalParameter((_parameter) {
880 ParameterElement parameter = _parameter;
878 ConstantValue def = 881 ConstantValue def =
879 _constantHandler.getConstantValue(parameter.constant); 882 _constantHandler.getConstantValue(parameter.constant);
880 optionalParameterDefaultValues.add(def); 883 optionalParameterDefaultValues.add(def);
881 }); 884 });
882 } 885 }
883 return optionalParameterDefaultValues; 886 return optionalParameterDefaultValues;
884 } 887 }
885 888
886 DartMethod _buildMethod(FunctionEntity element) { 889 DartMethod _buildMethod(FunctionEntity element) {
887 assert(!(element is MethodElement && !element.isDeclaration)); 890 assert(!(element is MethodElement && !element.isDeclaration));
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
1186 Constant constant = new Constant(name, holder, constantValue); 1189 Constant constant = new Constant(name, holder, constantValue);
1187 _constants[constantValue] = constant; 1190 _constants[constantValue] = constant;
1188 } 1191 }
1189 } 1192 }
1190 1193
1191 Holder _registerStaticStateHolder() { 1194 Holder _registerStaticStateHolder() {
1192 return _registry.registerHolder(_namer.staticStateHolder, 1195 return _registry.registerHolder(_namer.staticStateHolder,
1193 isStaticStateHolder: true); 1196 isStaticStateHolder: true);
1194 } 1197 }
1195 } 1198 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/program_builder/collector.dart ('k') | pkg/compiler/lib/src/native/behavior.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698