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

Side by Side Diff: pkg/compiler/lib/src/kernel/element_map_impl.dart

Issue 3000233002: Remove KernelToLocalsMap.getLocalFunction (Closed)
Patch Set: Created 3 years, 4 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 | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | no next file » | 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) 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 library dart2js.kernel.element_map; 5 library dart2js.kernel.element_map;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../closure.dart' show BoxLocal; 9 import '../closure.dart' show BoxLocal, ThisLocal;
10 import '../common.dart'; 10 import '../common.dart';
11 import '../common/names.dart' show Identifiers; 11 import '../common/names.dart' show Identifiers;
12 import '../common/resolution.dart'; 12 import '../common/resolution.dart';
13 import '../compile_time_constants.dart'; 13 import '../compile_time_constants.dart';
14 import '../constants/constant_system.dart'; 14 import '../constants/constant_system.dart';
15 import '../constants/constructors.dart'; 15 import '../constants/constructors.dart';
16 import '../constants/evaluation.dart'; 16 import '../constants/evaluation.dart';
17 import '../constants/expressions.dart'; 17 import '../constants/expressions.dart';
18 import '../constants/values.dart'; 18 import '../constants/values.dart';
19 import '../common_elements.dart'; 19 import '../common_elements.dart';
20 import '../elements/elements.dart'; 20 import '../elements/elements.dart';
21 import '../elements/entities.dart'; 21 import '../elements/entities.dart';
22 import '../elements/entity_utils.dart' as utils; 22 import '../elements/entity_utils.dart' as utils;
23 import '../elements/names.dart'; 23 import '../elements/names.dart';
24 import '../elements/types.dart'; 24 import '../elements/types.dart';
25 import '../environment.dart'; 25 import '../environment.dart';
26 import '../frontend_strategy.dart'; 26 import '../frontend_strategy.dart';
27 import '../js_backend/backend_usage.dart'; 27 import '../js_backend/backend_usage.dart';
28 import '../js_backend/constant_system_javascript.dart'; 28 import '../js_backend/constant_system_javascript.dart';
29 import '../js_backend/interceptor_data.dart'; 29 import '../js_backend/interceptor_data.dart';
30 import '../js_backend/native_data.dart'; 30 import '../js_backend/native_data.dart';
31 import '../js_backend/no_such_method_registry.dart'; 31 import '../js_backend/no_such_method_registry.dart';
32 import '../js_backend/runtime_types.dart'; 32 import '../js_backend/runtime_types.dart';
33 import '../js_model/closure.dart'; 33 import '../js_model/closure.dart';
34 import '../js_model/elements.dart'; 34 import '../js_model/elements.dart';
35 import '../js_model/locals.dart';
35 import '../native/enqueue.dart'; 36 import '../native/enqueue.dart';
36 import '../native/native.dart' as native; 37 import '../native/native.dart' as native;
37 import '../native/resolver.dart'; 38 import '../native/resolver.dart';
38 import '../ordered_typeset.dart'; 39 import '../ordered_typeset.dart';
39 import '../options.dart'; 40 import '../options.dart';
40 import '../ssa/kernel_impact.dart'; 41 import '../ssa/kernel_impact.dart';
41 import '../universe/class_set.dart'; 42 import '../universe/class_set.dart';
42 import '../universe/selector.dart'; 43 import '../universe/selector.dart';
43 import '../universe/world_builder.dart'; 44 import '../universe/world_builder.dart';
44 import '../world.dart'; 45 import '../world.dart';
(...skipping 2147 matching lines...) Expand 10 before | Expand all | Expand 10 after
2192 ..isMixinApplication = false 2193 ..isMixinApplication = false
2193 ..thisType = closureData.rawType = 2194 ..thisType = closureData.rawType =
2194 new InterfaceType(classEntity, const <DartType>[]) 2195 new InterfaceType(classEntity, const <DartType>[])
2195 ..supertype = supertype 2196 ..supertype = supertype
2196 ..interfaces = const <InterfaceType>[]; 2197 ..interfaces = const <InterfaceType>[];
2197 var setBuilder = new _KernelOrderedTypeSetBuilder(this, classEntity); 2198 var setBuilder = new _KernelOrderedTypeSetBuilder(this, classEntity);
2198 _classData.add(closureData); 2199 _classData.add(closureData);
2199 closureData.orderedTypeSet = setBuilder.createOrderedTypeSet( 2200 closureData.orderedTypeSet = setBuilder.createOrderedTypeSet(
2200 closureData.supertype, const Link<InterfaceType>()); 2201 closureData.supertype, const Link<InterfaceType>());
2201 2202
2203 Local closureEntity;
2204 if (node.parent is ir.FunctionDeclaration) {
2205 ir.FunctionDeclaration parent = node.parent;
2206 closureEntity = localsMap.getLocalVariable(parent.variable);
2207 } else if (node.parent is ir.FunctionExpression) {
2208 closureEntity = new JLocal('', localsMap.currentMember);
2209 }
2210 Local thisLocal =
2211 info.hasThisLocal ? new ThisLocal(localsMap.currentMember) : null;
2212
2202 KernelClosureClass cls = new KernelClosureClass.fromScopeInfo( 2213 KernelClosureClass cls = new KernelClosureClass.fromScopeInfo(
2203 classEntity, node, info, localsMap); 2214 classEntity, node, info, localsMap, closureEntity, thisLocal);
2204 int i = 0; 2215 int i = 0;
2205 for (ir.VariableDeclaration variable in info.freeVariables) { 2216 for (ir.VariableDeclaration variable in info.freeVariables) {
2206 // Make a corresponding field entity in this closure class for every 2217 // Make a corresponding field entity in this closure class for every
2207 // single freeVariable in the KernelScopeInfo.freeVariable. 2218 // single freeVariable in the KernelScopeInfo.freeVariable.
2208 _constructClosureFields(member, cls, memberMap, variable, i, 2219 _constructClosureFields(member, cls, memberMap, variable, i,
2209 info.capturedVariablesAccessor, localsMap); 2220 info.capturedVariablesAccessor, localsMap);
2210 i++; 2221 i++;
2211 } 2222 }
2212 2223
2213 FunctionEntity callMethod = cls.callMethod = new JClosureCallMethod( 2224 FunctionEntity callMethod = cls.callMethod = new JClosureCallMethod(
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
2321 /// 2332 ///
2322 /// These names are not used in generated code, just as element name. 2333 /// These names are not used in generated code, just as element name.
2323 String _getClosureVariableName(String name, int id) { 2334 String _getClosureVariableName(String name, int id) {
2324 return "_captured_${name}_$id"; 2335 return "_captured_${name}_$id";
2325 } 2336 }
2326 2337
2327 String getDeferredUri(ir.LibraryDependency node) { 2338 String getDeferredUri(ir.LibraryDependency node) {
2328 throw new UnimplementedError('JsKernelToElementMap.getDeferredUri'); 2339 throw new UnimplementedError('JsKernelToElementMap.getDeferredUri');
2329 } 2340 }
2330 } 2341 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698