OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 '../closure.dart'; | 7 import '../closure.dart'; |
8 import '../common.dart'; | 8 import '../common.dart'; |
9 import '../compiler.dart'; | 9 import '../compiler.dart'; |
10 import '../constants/expressions.dart'; | 10 import '../constants/expressions.dart'; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 originTarget = originTarget.origin; | 126 originTarget = originTarget.origin; |
127 } | 127 } |
128 if (originTarget is MethodElement) { | 128 if (originTarget is MethodElement) { |
129 if (originTarget is ConstructorBodyElement) { | 129 if (originTarget is ConstructorBodyElement) { |
130 ConstructorBodyElement body = originTarget; | 130 ConstructorBodyElement body = originTarget; |
131 originTarget = body.constructor; | 131 originTarget = body.constructor; |
132 } | 132 } |
133 target = kernel.functions[originTarget]; | 133 target = kernel.functions[originTarget]; |
134 // Closures require a lookup one level deeper in the closure class mapper. | 134 // Closures require a lookup one level deeper in the closure class mapper. |
135 if (target == null) { | 135 if (target == null) { |
136 MethodElement originTargetFunction = originTarget; | 136 SynthesizedCallMethodElementX originTargetFunction = originTarget; |
137 ClosureRepresentationInfo classMap = _compiler | 137 target = kernel.localFunctions[originTargetFunction.expression]; |
138 .backendStrategy.closureDataLookup | |
139 .getClosureInfoForMember(originTargetFunction); | |
140 if (classMap.closureEntity != null) { | |
141 target = kernel.localFunctions[classMap.closureEntity]; | |
142 } | |
143 } | 138 } |
144 } else if (originTarget is FieldElement) { | 139 } else if (originTarget is FieldElement) { |
145 target = kernel.fields[originTarget]; | 140 target = kernel.fields[originTarget]; |
146 } | 141 } |
147 assert(target != null); | 142 assert(target != null); |
148 return target; | 143 return target; |
149 } | 144 } |
150 | 145 |
151 MemberDefinition getMemberDefinition(MemberElement member) { | 146 MemberDefinition getMemberDefinition(MemberElement member) { |
152 ir.Node node = getMemberNode(member); | 147 ir.Node node = getMemberNode(member); |
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
728 TypeMask selectorTypeOf(Selector selector, TypeMask mask) { | 723 TypeMask selectorTypeOf(Selector selector, TypeMask mask) { |
729 return TypeMaskFactory.inferredTypeForSelector( | 724 return TypeMaskFactory.inferredTypeForSelector( |
730 selector, mask, _globalInferenceResults); | 725 selector, mask, _globalInferenceResults); |
731 } | 726 } |
732 | 727 |
733 TypeMask typeFromNativeBehavior( | 728 TypeMask typeFromNativeBehavior( |
734 native.NativeBehavior nativeBehavior, ClosedWorld closedWorld) { | 729 native.NativeBehavior nativeBehavior, ClosedWorld closedWorld) { |
735 return TypeMaskFactory.fromNativeBehavior(nativeBehavior, closedWorld); | 730 return TypeMaskFactory.fromNativeBehavior(nativeBehavior, closedWorld); |
736 } | 731 } |
737 } | 732 } |
OLD | NEW |