| Index: tests/compiler/dart2js/kernel/closed_world_test.dart
|
| diff --git a/tests/compiler/dart2js/kernel/closed_world_test.dart b/tests/compiler/dart2js/kernel/closed_world_test.dart
|
| index 1f3ae60a8fe0ed3731f61689f8a06c332a90eb55..dd489d57f04436345bf1de49009bb2fba66a6323 100644
|
| --- a/tests/compiler/dart2js/kernel/closed_world_test.dart
|
| +++ b/tests/compiler/dart2js/kernel/closed_world_test.dart
|
| @@ -7,15 +7,19 @@
|
| library dart2js.kernel.closed_world_test;
|
|
|
| import 'package:async_helper/async_helper.dart';
|
| +import 'package:compiler/src/closure.dart';
|
| import 'package:compiler/src/commandline_options.dart';
|
| import 'package:compiler/src/common.dart';
|
| import 'package:compiler/src/common_elements.dart';
|
| import 'package:compiler/src/common/backend_api.dart';
|
| import 'package:compiler/src/common/resolution.dart';
|
| +import 'package:compiler/src/common/work.dart';
|
| import 'package:compiler/src/compiler.dart';
|
| import 'package:compiler/src/deferred_load.dart';
|
| import 'package:compiler/src/elements/resolution_types.dart';
|
| import 'package:compiler/src/elements/elements.dart';
|
| +import 'package:compiler/src/elements/entities.dart';
|
| +import 'package:compiler/src/elements/types.dart';
|
| import 'package:compiler/src/enqueue.dart';
|
| import 'package:compiler/src/js_backend/backend.dart';
|
| import 'package:compiler/src/js_backend/backend_helpers.dart';
|
| @@ -23,6 +27,7 @@ import 'package:compiler/src/js_backend/backend_impact.dart';
|
| import 'package:compiler/src/js_backend/backend_usage.dart';
|
| import 'package:compiler/src/js_backend/custom_elements_analysis.dart';
|
| import 'package:compiler/src/js_backend/native_data.dart';
|
| +import 'package:compiler/src/js_backend/impact_transformer.dart';
|
| import 'package:compiler/src/js_backend/interceptor_data.dart';
|
| import 'package:compiler/src/js_backend/lookup_map_analysis.dart';
|
| import 'package:compiler/src/js_backend/mirrors_analysis.dart';
|
| @@ -38,6 +43,7 @@ import 'package:compiler/src/serialization/equivalence.dart';
|
| import 'package:compiler/src/universe/world_builder.dart';
|
| import 'package:compiler/src/universe/world_impact.dart';
|
| import 'package:compiler/src/world.dart';
|
| +import 'package:kernel/ast.dart' as ir;
|
| import 'impact_test.dart';
|
| import '../memory_compiler.dart';
|
| import '../serialization/helper.dart';
|
| @@ -108,9 +114,10 @@ main(List<String> args) {
|
| createResolutionEnqueuerListener(compiler),
|
| new ElementResolutionWorldBuilder(
|
| backend, compiler.resolution, const OpenWorldStrategy()),
|
| - new ResolutionWorkItemBuilder(compiler.resolution),
|
| + new KernelWorkItemBuilder(compiler),
|
| 'enqueuer from kernel');
|
| - ClosedWorld closedWorld = computeClosedWorld(compiler, enqueuer);
|
| + ClosedWorld closedWorld = computeClosedWorld(
|
| + compiler.reporter, enqueuer, compiler.elementEnvironment);
|
| BackendUsage backendUsage = compiler.backend.backendUsageBuilder.close();
|
| checkResolutionEnqueuers(
|
| backendUsage, backendUsage, compiler.enqueuer.resolution, enqueuer,
|
| @@ -163,72 +170,38 @@ EnqueuerListener createResolutionEnqueuerListener(Compiler compiler) {
|
| backend.kernelTask);
|
| }
|
|
|
| -EnqueuerListener createKernelResolutionEnqueuerListener(CompilerOptions options,
|
| - DeferredLoadTask deferredLoadTask, KernelWorldBuilder worldBuilder) {
|
| - ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment;
|
| - CommonElements commonElements = worldBuilder.commonElements;
|
| - BackendHelpers helpers =
|
| - new BackendHelpers(elementEnvironment, commonElements);
|
| - BackendImpacts impacts = new BackendImpacts(options, commonElements, helpers);
|
| +ClosedWorld computeClosedWorld(DiagnosticReporter reporter,
|
| + ResolutionEnqueuer enqueuer, ElementEnvironment elementEnvironment) {
|
| + enqueuer.open(const ImpactStrategy(), elementEnvironment.mainFunction,
|
| + elementEnvironment.libraries);
|
| + enqueuer.forEach((WorkItem work) {
|
| + enqueuer.applyImpact(work.run(), impactSource: work.element);
|
| + });
|
| + return enqueuer.worldBuilder.closeWorld(reporter);
|
| +}
|
|
|
| - // TODO(johnniwinther): Create Kernel based implementations for these:
|
| - NativeBasicData nativeBasicData;
|
| - RuntimeTypesNeedBuilder rtiNeedBuilder;
|
| - MirrorsDataBuilder mirrorsDataBuilder;
|
| - CustomElementsResolutionAnalysis customElementsResolutionAnalysis;
|
| - LookupMapResolutionAnalysis lookupMapResolutionAnalysis;
|
| - MirrorsResolutionAnalysis mirrorsResolutionAnalysis;
|
| +class KernelWorkItemBuilder implements WorkItemBuilder {
|
| + final Compiler _compiler;
|
|
|
| - BackendClasses backendClasses = new JavaScriptBackendClasses(
|
| - elementEnvironment, helpers, nativeBasicData);
|
| - InterceptorDataBuilder interceptorDataBuilder =
|
| - new InterceptorDataBuilderImpl(
|
| - nativeBasicData, helpers, elementEnvironment, commonElements);
|
| - BackendUsageBuilder backendUsageBuilder =
|
| - new BackendUsageBuilderImpl(commonElements, helpers);
|
| - NoSuchMethodRegistry noSuchMethodRegistry = new NoSuchMethodRegistry(
|
| - helpers, new KernelNoSuchMethodResolver(worldBuilder));
|
| - NativeResolutionEnqueuer nativeResolutionEnqueuer =
|
| - new NativeResolutionEnqueuer(
|
| - options,
|
| - elementEnvironment,
|
| - commonElements,
|
| - helpers,
|
| - backendClasses,
|
| - backendUsageBuilder,
|
| - new KernelNativeClassResolver(worldBuilder));
|
| + KernelWorkItemBuilder(this._compiler);
|
|
|
| - return new ResolutionEnqueuerListener(
|
| - options,
|
| - elementEnvironment,
|
| - commonElements,
|
| - helpers,
|
| - impacts,
|
| - backendClasses,
|
| - nativeBasicData,
|
| - interceptorDataBuilder,
|
| - backendUsageBuilder,
|
| - rtiNeedBuilder,
|
| - mirrorsDataBuilder,
|
| - noSuchMethodRegistry,
|
| - customElementsResolutionAnalysis,
|
| - lookupMapResolutionAnalysis,
|
| - mirrorsResolutionAnalysis,
|
| - new TypeVariableResolutionAnalysis(
|
| - elementEnvironment, impacts, backendUsageBuilder),
|
| - nativeResolutionEnqueuer,
|
| - deferredLoadTask);
|
| + @override
|
| + WorkItem createWorkItem(MemberEntity entity) {
|
| + return new KernelWorkItem(
|
| + _compiler, _compiler.backend.impactTransformer, entity);
|
| + }
|
| }
|
|
|
| -ClosedWorld computeClosedWorld(Compiler compiler, ResolutionEnqueuer enqueuer) {
|
| - enqueuer.open(const ImpactStrategy(), compiler.mainFunction,
|
| - compiler.libraryLoader.libraries);
|
| - enqueuer.forEach((work) {
|
| - MemberElement element = work.element;
|
| - ResolutionImpact resolutionImpact = build(compiler, element.resolvedAst);
|
| - WorldImpact worldImpact = compiler.backend.impactTransformer
|
| - .transformResolutionImpact(enqueuer, resolutionImpact);
|
| - enqueuer.applyImpact(worldImpact, impactSource: element);
|
| - });
|
| - return enqueuer.worldBuilder.closeWorld(compiler.reporter);
|
| +class KernelWorkItem implements ResolutionWorkItem {
|
| + final Compiler _compiler;
|
| + final ImpactTransformer _impactTransformer;
|
| + final MemberElement element;
|
| +
|
| + KernelWorkItem(this._compiler, this._impactTransformer, this.element);
|
| +
|
| + @override
|
| + WorldImpact run() {
|
| + ResolutionImpact resolutionImpact = build(_compiler, element.resolvedAst);
|
| + return _impactTransformer.transformResolutionImpact(resolutionImpact);
|
| + }
|
| }
|
|
|