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

Unified Diff: pkg/compiler/lib/src/kernel/kernel_strategy.dart

Issue 2836323002: Add more factory methods to FrontEndStrategy. (Closed)
Patch Set: 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: 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 ffbbc5675f840900d7ef3c2c419670d7e018b62b..08d9d7d5458c94a31eceac20ef3e84303f69cd0c 100644
--- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
@@ -4,17 +4,34 @@
library dart2js.kernel.frontend_strategy;
+import '../closure.dart';
import '../common.dart';
import '../common_elements.dart';
+import '../common/backend_api.dart';
+import '../common/resolution.dart';
import '../common/tasks.dart';
+import '../common/work.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 '../js_backend/backend.dart';
+import '../js_backend/backend_usage.dart';
+import '../js_backend/custom_elements_analysis.dart';
+import '../js_backend/mirrors_analysis.dart';
+import '../js_backend/mirrors_data.dart';
import '../js_backend/native_data.dart';
+import '../js_backend/no_such_method_registry.dart';
import '../library_loader.dart';
import '../native/resolver.dart';
import '../serialization/task.dart';
import '../patch_parser.dart';
import '../resolved_uri_translator.dart';
+import '../universe/world_builder.dart';
+import '../universe/world_impact.dart';
+import '../world.dart';
import 'element_map.dart';
/// Front end strategy that loads '.dill' files and builds a resolved element
@@ -55,4 +72,149 @@ class KernelFrontEndStrategy implements FrontEndStrategy {
return new NativeClassResolverImpl(elementMap.elementEnvironment,
elementMap.commonElements, nativeBasicData);
}
+
+ NoSuchMethodResolver createNoSuchMethodResolver() {
+ return new KernelNoSuchMethodResolver(elementMap);
+ }
+
+ CustomElementsResolutionAnalysis createCustomElementsResolutionAnalysis(
+ NativeBasicData nativeBasicData,
+ BackendUsageBuilder backendUsageBuilder) {
+ return new CustomElementsResolutionAnalysisImpl();
+ }
+
+ MirrorsDataBuilder createMirrorsDataBuilder() {
+ return new MirrorsDataBuilderImpl();
+ }
+
+ MirrorsResolutionAnalysis createMirrorsResolutionAnalysis(
+ JavaScriptBackend backend) {
+ return new MirrorsResolutionAnalysisImpl();
+ }
+
+ RuntimeTypesNeedBuilder createRuntimeTypesNeedBuilder() {
+ return new RuntimeTypesNeedBuilderImpl();
+ }
+
+ ResolutionWorldBuilder createResolutionWorldBuilder(
+ NativeBasicData nativeBasicData,
+ SelectorConstraintsStrategy selectorConstraintsStrategy) {
+ return new KernelResolutionWorldBuilder(
+ elementMap, nativeBasicData, selectorConstraintsStrategy);
+ }
+
+ WorkItemBuilder createResolutionWorkItemBuilder(
+ ImpactTransformer impactTransformer) {
+ return new KernelWorkItemBuilder(elementMap, impactTransformer);
+ }
+}
+
+class KernelWorkItemBuilder implements WorkItemBuilder {
+ final KernelToElementMap _elementMap;
+ final ImpactTransformer _impactTransformer;
+
+ KernelWorkItemBuilder(this._elementMap, this._impactTransformer);
+
+ @override
+ WorkItem createWorkItem(MemberEntity entity) {
+ return new KernelWorkItem(_elementMap, _impactTransformer, entity);
+ }
+}
+
+class KernelWorkItem implements ResolutionWorkItem {
+ final KernelToElementMap _elementMap;
+ final ImpactTransformer _impactTransformer;
+ final MemberEntity element;
+
+ KernelWorkItem(this._elementMap, this._impactTransformer, this.element);
+
+ @override
+ WorldImpact run() {
+ ResolutionImpact impact = _elementMap.computeWorldImpact(element);
+ return _impactTransformer.transformResolutionImpact(impact);
+ }
+}
+
+/// Mock implementation of [RuntimeTypesNeedBuilder].
+class RuntimeTypesNeedBuilderImpl implements RuntimeTypesNeedBuilder {
+ @override
+ void registerClassUsingTypeVariableExpression(ClassEntity cls) {}
+
+ @override
+ RuntimeTypesNeed computeRuntimeTypesNeed(
+ ResolutionWorldBuilder resolutionWorldBuilder,
+ ClosedWorld closedWorld,
+ DartTypes types,
+ CommonElements commonElements,
+ BackendUsage backendUsage,
+ {bool enableTypeAssertions}) {
+ throw new UnimplementedError(
+ 'RuntimeTypesNeedBuilderImpl.computeRuntimeTypesNeed');
+ }
+
+ @override
+ void registerRtiDependency(ClassEntity element, ClassEntity dependency) {}
+}
+
+/// Mock implementation of [MirrorsDataImpl].
+class MirrorsDataBuilderImpl extends MirrorsDataImpl {
+ MirrorsDataBuilderImpl() : super(null, null, null);
+
+ @override
+ void registerUsedMember(MemberEntity member) {}
+
+ @override
+ void computeMembersNeededForReflection(
+ ResolutionWorldBuilder worldBuilder, ClosedWorld closedWorld) {}
+
+ @override
+ void maybeMarkClosureAsNeededForReflection(
+ ClosureClassElement globalizedElement,
+ FunctionElement callFunction,
+ FunctionElement function) {}
+
+ @override
+ void registerConstSymbol(String name) {}
+
+ @override
+ void registerMirrorUsage(
+ Set<String> symbols, Set<Element> targets, Set<Element> metaTargets) {}
+}
+
+/// Mock implementation of [CustomElementsResolutionAnalysis].
+class CustomElementsResolutionAnalysisImpl
+ implements CustomElementsResolutionAnalysis {
+ @override
+ CustomElementsAnalysisJoin get join {
+ throw new UnimplementedError('CustomElementsResolutionAnalysisImpl.join');
+ }
+
+ @override
+ WorldImpact flush() {
+ // TODO(johnniwinther): Implement this.
+ return const WorldImpact();
+ }
+
+ @override
+ void registerStaticUse(MemberEntity element) {}
+
+ @override
+ void registerInstantiatedClass(ClassEntity classElement) {}
+
+ @override
+ void registerTypeLiteral(DartType type) {}
+}
+
+/// Mock implementation of [MirrorsResolutionAnalysis].
+class MirrorsResolutionAnalysisImpl implements MirrorsResolutionAnalysis {
+ @override
+ void onQueueEmpty(Enqueuer enqueuer, Iterable<ClassEntity> recentClasses) {}
+
+ @override
+ MirrorsCodegenAnalysis close() {
+ throw new UnimplementedError('MirrorsResolutionAnalysisImpl.close');
+ }
+
+ @override
+ void onResolutionComplete() {}
}
« no previous file with comments | « pkg/compiler/lib/src/js_backend/runtime_types.dart ('k') | pkg/compiler/lib/src/resolution/resolution_strategy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698