| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:kernel/ast.dart' as ir; | 5 import 'package:kernel/ast.dart' as ir; |
| 6 | 6 |
| 7 import '../common.dart'; | 7 import '../common.dart'; |
| 8 import '../common/names.dart'; | 8 import '../common/names.dart'; |
| 9 import '../compiler.dart'; | 9 import '../compiler.dart'; |
| 10 import '../constants/expressions.dart'; | 10 import '../constants/expressions.dart'; |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 sideEffects.setDependsOnStaticPropertyStore(); | 125 sideEffects.setDependsOnStaticPropertyStore(); |
| 126 } else { | 126 } else { |
| 127 sideEffects.setAllSideEffects(); | 127 sideEffects.setAllSideEffects(); |
| 128 sideEffects.setDependsOnSomething(); | 128 sideEffects.setDependsOnSomething(); |
| 129 } | 129 } |
| 130 } | 130 } |
| 131 } else if (callee.isGetter && !selector.isGetter) { | 131 } else if (callee.isGetter && !selector.isGetter) { |
| 132 sideEffects.setAllSideEffects(); | 132 sideEffects.setAllSideEffects(); |
| 133 sideEffects.setDependsOnSomething(); | 133 sideEffects.setDependsOnSomething(); |
| 134 } else { | 134 } else { |
| 135 sideEffects.add(closedWorldRefiner.getCurrentlyKnownSideEffects(callee)); | 135 sideEffects.add( |
| 136 closedWorldRefiner.getCurrentlyKnownSideEffects(callee.declaration)); |
| 136 } | 137 } |
| 137 } | 138 } |
| 138 | 139 |
| 139 /** | 140 /** |
| 140 * Returns the type for [nativeBehavior]. See documentation on | 141 * Returns the type for [nativeBehavior]. See documentation on |
| 141 * [native.NativeBehavior]. | 142 * [native.NativeBehavior]. |
| 142 */ | 143 */ |
| 143 TypeInformation typeOfNativeBehavior(native.NativeBehavior nativeBehavior) { | 144 TypeInformation typeOfNativeBehavior(native.NativeBehavior nativeBehavior) { |
| 144 if (nativeBehavior == null) return types.dynamicType; | 145 if (nativeBehavior == null) return types.dynamicType; |
| 145 List typesReturned = nativeBehavior.typesReturned; | 146 List typesReturned = nativeBehavior.typesReturned; |
| (...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 } | 551 } |
| 551 } else { | 552 } else { |
| 552 recordReturnType(element, type); | 553 recordReturnType(element, type); |
| 553 } | 554 } |
| 554 } | 555 } |
| 555 | 556 |
| 556 void processLoopInformation() { | 557 void processLoopInformation() { |
| 557 types.allocatedCalls.forEach((info) { | 558 types.allocatedCalls.forEach((info) { |
| 558 if (!info.inLoop) return; | 559 if (!info.inLoop) return; |
| 559 if (info is StaticCallSiteTypeInformation) { | 560 if (info is StaticCallSiteTypeInformation) { |
| 560 closedWorldRefiner.addFunctionCalledInLoop(info.calledElement); | 561 closedWorldRefiner |
| 562 .addFunctionCalledInLoop(info.calledElement.declaration); |
| 561 } else if (info.mask != null && !info.mask.containsAll(closedWorld)) { | 563 } else if (info.mask != null && !info.mask.containsAll(closedWorld)) { |
| 562 // For instance methods, we only register a selector called in a | 564 // For instance methods, we only register a selector called in a |
| 563 // loop if it is a typed selector, to avoid marking too many | 565 // loop if it is a typed selector, to avoid marking too many |
| 564 // methods as being called from within a loop. This cuts down | 566 // methods as being called from within a loop. This cuts down |
| 565 // on the code bloat. | 567 // on the code bloat. |
| 566 info.targets.forEach((MemberElement element) { | 568 info.targets.forEach((MemberElement element) { |
| 567 closedWorldRefiner.addFunctionCalledInLoop(element); | 569 closedWorldRefiner.addFunctionCalledInLoop(element); |
| 568 }); | 570 }); |
| 569 } | 571 } |
| 570 }); | 572 }); |
| (...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 951 return info; | 953 return info; |
| 952 } | 954 } |
| 953 | 955 |
| 954 // Sorts the resolved elements by size. We do this for this inferrer | 956 // Sorts the resolved elements by size. We do this for this inferrer |
| 955 // to get the same results for [ListTracer] compared to the | 957 // to get the same results for [ListTracer] compared to the |
| 956 // [SimpleTypesInferrer]. | 958 // [SimpleTypesInferrer]. |
| 957 Iterable<ResolvedAst> sortResolvedAsts() { | 959 Iterable<ResolvedAst> sortResolvedAsts() { |
| 958 int max = 0; | 960 int max = 0; |
| 959 Map<int, Setlet<ResolvedAst>> methodSizes = <int, Setlet<ResolvedAst>>{}; | 961 Map<int, Setlet<ResolvedAst>> methodSizes = <int, Setlet<ResolvedAst>>{}; |
| 960 compiler.enqueuer.resolution.processedEntities | 962 compiler.enqueuer.resolution.processedEntities |
| 961 .forEach((AstElement element) { | 963 .forEach((MemberElement element) { |
| 962 ResolvedAst resolvedAst = element.resolvedAst; | 964 ResolvedAst resolvedAst = element.resolvedAst; |
| 963 element = element.implementation; | 965 element = element.implementation; |
| 964 if (element.impliesType) return; | 966 if (element.impliesType) return; |
| 965 assert(invariant( | 967 assert(invariant( |
| 966 element, | 968 element, |
| 967 element.isField || | 969 element.isField || |
| 968 element.isFunction || | 970 element.isFunction || |
| 969 element.isConstructor || | 971 element.isConstructor || |
| 970 element.isGetter || | 972 element.isGetter || |
| 971 element.isSetter, | 973 element.isSetter, |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1061 /** | 1063 /** |
| 1062 * Records that the captured variable [local] is read. | 1064 * Records that the captured variable [local] is read. |
| 1063 */ | 1065 */ |
| 1064 void recordCapturedLocalRead(Local local) {} | 1066 void recordCapturedLocalRead(Local local) {} |
| 1065 | 1067 |
| 1066 /** | 1068 /** |
| 1067 * Records that the variable [local] is being updated. | 1069 * Records that the variable [local] is being updated. |
| 1068 */ | 1070 */ |
| 1069 void recordLocalUpdate(Local local, TypeInformation type) {} | 1071 void recordLocalUpdate(Local local, TypeInformation type) {} |
| 1070 } | 1072 } |
| OLD | NEW |