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

Unified Diff: tests/compiler/dart2js/kernel/closed_world_test.dart

Issue 2810633003: Add kernel/closed_world2_test (Closed)
Patch Set: Add TODOs. Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
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);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698