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

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

Issue 2951723002: Add closure_test for kernel based members (Closed)
Patch Set: Cleanup Created 3 years, 6 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 19 matching lines...) Expand all
30 import '../ssa/types.dart'; 30 import '../ssa/types.dart';
31 import '../types/types.dart'; 31 import '../types/types.dart';
32 import '../universe/selector.dart'; 32 import '../universe/selector.dart';
33 import '../universe/world_builder.dart'; 33 import '../universe/world_builder.dart';
34 import '../universe/world_impact.dart'; 34 import '../universe/world_impact.dart';
35 import '../world.dart'; 35 import '../world.dart';
36 import 'closure.dart'; 36 import 'closure.dart';
37 import 'element_map_impl.dart'; 37 import 'element_map_impl.dart';
38 import 'kernel_strategy.dart'; 38 import 'kernel_strategy.dart';
39 39
40 /// A backend strategy based on Kernel IR nodes.
41 abstract class KernelBackendStrategy implements BackendStrategy {
42 KernelToElementMap get elementMap;
43 GlobalLocalsMap get globalLocalsMapForTesting;
44 }
45
40 /// Backend strategy that uses the kernel elements as the backend model. 46 /// Backend strategy that uses the kernel elements as the backend model.
41 // TODO(johnniwinther): Replace this with a strategy based on the J-element 47 // TODO(johnniwinther): Replace this with a strategy based on the J-element
42 // model. 48 // model.
43 class KernelBackendStrategy implements BackendStrategy { 49 class KernelBackendStrategyImpl implements KernelBackendStrategy {
44 final Compiler _compiler; 50 final Compiler _compiler;
45 Sorter _sorter; 51 Sorter _sorter;
46 ClosureConversionTask _closureDataLookup; 52 ClosureConversionTask _closureDataLookup;
47 GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap(); 53 final GlobalLocalsMap _globalLocalsMap = new GlobalLocalsMap();
48 54
49 KernelBackendStrategy(this._compiler); 55 KernelBackendStrategyImpl(this._compiler);
50 56
51 KernelToElementMap get _elementMap { 57 KernelToElementMap get elementMap {
52 KernelFrontEndStrategy frontendStrategy = _compiler.frontendStrategy; 58 KernelFrontEndStrategy frontendStrategy = _compiler.frontendStrategy;
53 return frontendStrategy.elementMap; 59 return frontendStrategy.elementMap;
54 } 60 }
55 61
62 GlobalLocalsMap get globalLocalsMapForTesting => _globalLocalsMap;
63
56 @override 64 @override
57 ClosedWorldRefiner createClosedWorldRefiner( 65 ClosedWorldRefiner createClosedWorldRefiner(
58 covariant KernelClosedWorld closedWorld) { 66 covariant KernelClosedWorld closedWorld) {
59 return closedWorld; 67 return closedWorld;
60 } 68 }
61 69
62 @override 70 @override
63 Sorter get sorter { 71 Sorter get sorter {
64 if (_sorter == null) { 72 if (_sorter == null) {
65 KernelFrontEndStrategy frontendStrategy = _compiler.frontendStrategy; 73 _sorter = new KernelSorter(elementMap);
66 _sorter = new KernelSorter(frontendStrategy.elementMap);
67 } 74 }
68 return _sorter; 75 return _sorter;
69 } 76 }
70 77
71 @override 78 @override
72 ClosureConversionTask get closureDataLookup => 79 ClosureConversionTask get closureDataLookup =>
73 _closureDataLookup ??= new KernelClosureConversionTask( 80 _closureDataLookup ??= new KernelClosureConversionTask(
74 _compiler.measurer, _elementMap, _globalLocalsMap); 81 _compiler.measurer, elementMap, _globalLocalsMap);
75 82
76 @override 83 @override
77 WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld) { 84 WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld) {
78 return new KernelCodegenWorkItemBuilder(_compiler.backend, closedWorld); 85 return new KernelCodegenWorkItemBuilder(_compiler.backend, closedWorld);
79 } 86 }
80 87
81 @override 88 @override
82 CodegenWorldBuilder createCodegenWorldBuilder( 89 CodegenWorldBuilder createCodegenWorldBuilder(
83 NativeBasicData nativeBasicData, 90 NativeBasicData nativeBasicData,
84 ClosedWorld closedWorld, 91 ClosedWorld closedWorld,
85 SelectorConstraintsStrategy selectorConstraintsStrategy) { 92 SelectorConstraintsStrategy selectorConstraintsStrategy) {
86 return new KernelCodegenWorldBuilder( 93 return new KernelCodegenWorldBuilder(
87 _elementMap, 94 elementMap,
88 closedWorld.elementEnvironment, 95 closedWorld.elementEnvironment,
89 nativeBasicData, 96 nativeBasicData,
90 closedWorld, 97 closedWorld,
91 selectorConstraintsStrategy); 98 selectorConstraintsStrategy);
92 } 99 }
93 100
94 @override 101 @override
95 SsaBuilder createSsaBuilder(CompilerTask task, JavaScriptBackend backend, 102 SsaBuilder createSsaBuilder(CompilerTask task, JavaScriptBackend backend,
96 SourceInformationStrategy sourceInformationStrategy) { 103 SourceInformationStrategy sourceInformationStrategy) {
97 return new KernelSsaBuilder( 104 return new KernelSsaBuilder(
98 task, backend.compiler, _elementMap, _globalLocalsMap); 105 task, backend.compiler, elementMap, _globalLocalsMap);
99 } 106 }
100 107
101 @override 108 @override
102 SourceInformationStrategy get sourceInformationStrategy => 109 SourceInformationStrategy get sourceInformationStrategy =>
103 const JavaScriptSourceInformationStrategy(); 110 const JavaScriptSourceInformationStrategy();
104 } 111 }
105 112
106 class KernelCodegenWorkItemBuilder implements WorkItemBuilder { 113 class KernelCodegenWorkItemBuilder implements WorkItemBuilder {
107 final JavaScriptBackend _backend; 114 final JavaScriptBackend _backend;
108 final ClosedWorld _closedWorld; 115 final ClosedWorld _closedWorld;
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) { 381 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
375 return classes.toList() 382 return classes.toList()
376 ..sort((ClassEntity a, ClassEntity b) { 383 ..sort((ClassEntity a, ClassEntity b) {
377 int r = _compareLibraries(a.library, b.library); 384 int r = _compareLibraries(a.library, b.library);
378 if (r != 0) return r; 385 if (r != 0) return r;
379 return _compareNodes( 386 return _compareNodes(
380 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b)); 387 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b));
381 }); 388 });
382 } 389 }
383 } 390 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/closure.dart ('k') | pkg/compiler/lib/src/source_file_provider.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698