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

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

Issue 2960633002: Split KernelToElementMap into sub-interfaces (Closed)
Patch Set: Updated cf. comments Created 3 years, 5 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) 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.backend_strategy; 5 library dart2js.kernel.backend_strategy;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../backend_strategy.dart'; 9 import '../backend_strategy.dart';
10 import '../closure.dart'; 10 import '../closure.dart';
(...skipping 22 matching lines...) Expand all
33 import '../universe/selector.dart'; 33 import '../universe/selector.dart';
34 import '../universe/world_builder.dart'; 34 import '../universe/world_builder.dart';
35 import '../universe/world_impact.dart'; 35 import '../universe/world_impact.dart';
36 import '../world.dart'; 36 import '../world.dart';
37 import 'closure.dart'; 37 import 'closure.dart';
38 import 'element_map_impl.dart'; 38 import 'element_map_impl.dart';
39 import 'kernel_strategy.dart'; 39 import 'kernel_strategy.dart';
40 40
41 /// A backend strategy based on Kernel IR nodes. 41 /// A backend strategy based on Kernel IR nodes.
42 abstract class KernelBackendStrategy implements BackendStrategy { 42 abstract class KernelBackendStrategy implements BackendStrategy {
43 KernelToElementMap get elementMap; 43 KernelToElementMapForBuilding get elementMap;
44 GlobalLocalsMap get globalLocalsMapForTesting; 44 GlobalLocalsMap get globalLocalsMapForTesting;
45 } 45 }
46 46
47 /// Backend strategy that uses the kernel elements as the backend model. 47 /// Backend strategy that uses the kernel elements as the backend model.
48 // TODO(redemption): Replace this with a strategy based on the J-element 48 // TODO(redemption): Replace this with a strategy based on the J-element
49 // model. 49 // model.
50 class KernelBackendStrategyImpl implements KernelBackendStrategy { 50 class KernelBackendStrategyImpl implements KernelBackendStrategy {
51 final Compiler _compiler; 51 final Compiler _compiler;
52 Sorter _sorter; 52 Sorter _sorter;
53 ClosureConversionTask _closureDataLookup; 53 ClosureConversionTask _closureDataLookup;
54 final GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap(); 54 final GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap();
55 55
56 KernelBackendStrategyImpl(this._compiler); 56 KernelBackendStrategyImpl(this._compiler);
57 57
58 KernelToElementMap get elementMap { 58 KernelToElementMapForBuilding get elementMap {
59 KernelFrontEndStrategy frontendStrategy = _compiler.frontendStrategy; 59 KernelFrontEndStrategy frontendStrategy = _compiler.frontendStrategy;
60 return frontendStrategy.elementMap; 60 return frontendStrategy.elementMap;
61 } 61 }
62 62
63 GlobalLocalsMap get globalLocalsMapForTesting => _globalLocalsMap; 63 GlobalLocalsMap get globalLocalsMapForTesting => _globalLocalsMap;
64 64
65 @override 65 @override
66 ClosedWorldRefiner createClosedWorldRefiner( 66 ClosedWorldRefiner createClosedWorldRefiner(
67 covariant KernelClosedWorld closedWorld) { 67 covariant KernelClosedWorld closedWorld) {
68 return closedWorld; 68 return closedWorld;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 @override 146 @override
147 WorldImpact run() { 147 WorldImpact run() {
148 return _backend.codegen(this, _closedWorld); 148 return _backend.codegen(this, _closedWorld);
149 } 149 }
150 } 150 }
151 151
152 /// Task for building SSA from kernel IR loaded from .dill. 152 /// Task for building SSA from kernel IR loaded from .dill.
153 class KernelSsaBuilder implements SsaBuilder { 153 class KernelSsaBuilder implements SsaBuilder {
154 final CompilerTask task; 154 final CompilerTask task;
155 final Compiler _compiler; 155 final Compiler _compiler;
156 final KernelToElementMap _elementMap; 156 final KernelToElementMapForBuilding _elementMap;
157 final GlobalLocalsMap _globalLocalsMap; 157 final GlobalLocalsMap _globalLocalsMap;
158 158
159 KernelSsaBuilder( 159 KernelSsaBuilder(
160 this.task, this._compiler, this._elementMap, this._globalLocalsMap); 160 this.task, this._compiler, this._elementMap, this._globalLocalsMap);
161 161
162 @override 162 @override
163 HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) { 163 HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
164 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(work.element); 164 KernelToLocalsMap localsMap = _globalLocalsMap.getLocalsMap(work.element);
165 KernelSsaGraphBuilder builder = new KernelSsaGraphBuilder( 165 KernelSsaGraphBuilder builder = new KernelSsaGraphBuilder(
166 work.element, 166 work.element,
(...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) { 568 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
569 return classes.toList() 569 return classes.toList()
570 ..sort((ClassEntity a, ClassEntity b) { 570 ..sort((ClassEntity a, ClassEntity b) {
571 int r = _compareLibraries(a.library, b.library); 571 int r = _compareLibraries(a.library, b.library);
572 if (r != 0) return r; 572 if (r != 0) return r;
573 return _compareNodes( 573 return _compareNodes(
574 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b)); 574 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b));
575 }); 575 });
576 } 576 }
577 } 577 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map_impl.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698