OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |