| Index: pkg/compiler/lib/src/kernel/kernel_strategy.dart
|
| diff --git a/pkg/compiler/lib/src/kernel/kernel_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
|
| index 842b3e331d653fece8ebd4932ea39353f8087775..457f89639024eade683d564dc1719f2ffdd22de6 100644
|
| --- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart
|
| +++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
|
| @@ -13,12 +13,14 @@ import '../common/codegen.dart' show CodegenRegistry, CodegenWorkItem;
|
| import '../common/resolution.dart';
|
| import '../common/tasks.dart';
|
| import '../common/work.dart';
|
| +import '../compiler.dart';
|
| import '../elements/elements.dart';
|
| import '../elements/entities.dart';
|
| import '../elements/types.dart';
|
| import '../environment.dart' as env;
|
| import '../enqueue.dart';
|
| import '../frontend_strategy.dart';
|
| +import '../io/source_information.dart';
|
| import '../js_backend/backend.dart';
|
| import '../js_backend/backend_usage.dart';
|
| import '../js_backend/custom_elements_analysis.dart';
|
| @@ -32,6 +34,8 @@ import '../js_emitter/sorter.dart';
|
| import '../library_loader.dart';
|
| import '../native/resolver.dart';
|
| import '../serialization/task.dart';
|
| +import '../ssa/builder_kernel.dart';
|
| +import '../ssa/ssa.dart';
|
| import '../patch_parser.dart';
|
| import '../resolved_uri_translator.dart';
|
| import '../universe/world_builder.dart';
|
| @@ -243,6 +247,10 @@ class MirrorsResolutionAnalysisImpl implements MirrorsResolutionAnalysis {
|
| // TODO(johnniwinther): Replace this with a strategy based on the J-element
|
| // model.
|
| class KernelBackendStrategy implements BackendStrategy {
|
| + final Compiler _compiler;
|
| +
|
| + KernelBackendStrategy(this._compiler);
|
| +
|
| @override
|
| ClosedWorldRefiner createClosedWorldRefiner(KernelClosedWorld closedWorld) {
|
| return closedWorld;
|
| @@ -260,7 +268,7 @@ class KernelBackendStrategy implements BackendStrategy {
|
|
|
| @override
|
| WorkItemBuilder createCodegenWorkItemBuilder(ClosedWorld closedWorld) {
|
| - return new KernelCodegenWorkItemBuilder();
|
| + return new KernelCodegenWorkItemBuilder(_compiler.backend, closedWorld);
|
| }
|
|
|
| @override
|
| @@ -268,8 +276,14 @@ class KernelBackendStrategy implements BackendStrategy {
|
| NativeBasicData nativeBasicData,
|
| ClosedWorld closedWorld,
|
| SelectorConstraintsStrategy selectorConstraintsStrategy) {
|
| - return new KernelCodegenWorldBuilder(
|
| - null, nativeBasicData, closedWorld, selectorConstraintsStrategy);
|
| + return new KernelCodegenWorldBuilder(_compiler.elementEnvironment,
|
| + nativeBasicData, closedWorld, selectorConstraintsStrategy);
|
| + }
|
| +
|
| + @override
|
| + SsaBuilderTask createSsaBuilderTask(JavaScriptBackend backend,
|
| + SourceInformationStrategy sourceInformationStrategy) {
|
| + return new KernelSsaBuilderTask(backend.compiler.measurer);
|
| }
|
| }
|
|
|
| @@ -287,21 +301,28 @@ class MirrorsCodegenAnalysisImpl implements MirrorsCodegenAnalysis {
|
| }
|
|
|
| class KernelCodegenWorkItemBuilder implements WorkItemBuilder {
|
| + final JavaScriptBackend _backend;
|
| + final ClosedWorld _closedWorld;
|
| +
|
| + KernelCodegenWorkItemBuilder(this._backend, this._closedWorld);
|
| +
|
| @override
|
| CodegenWorkItem createWorkItem(MemberEntity entity) {
|
| - return new KernelCodegenWorkItem(entity);
|
| + return new KernelCodegenWorkItem(_backend, _closedWorld, entity);
|
| }
|
| }
|
|
|
| class KernelCodegenWorkItem extends CodegenWorkItem {
|
| + final JavaScriptBackend _backend;
|
| + final ClosedWorld _closedWorld;
|
| final MemberEntity element;
|
| final CodegenRegistry registry;
|
|
|
| - KernelCodegenWorkItem(this.element) : registry = new CodegenRegistry(element);
|
| + KernelCodegenWorkItem(this._backend, this._closedWorld, this.element)
|
| + : registry = new CodegenRegistry(element);
|
|
|
| @override
|
| WorldImpact run() {
|
| - // TODO(johnniwinther): Build SSA graph from kernel and run codegen on it.
|
| - return const WorldImpact();
|
| + return _backend.codegen(this, _closedWorld);
|
| }
|
| }
|
|
|