| Index: pkg/compiler/lib/src/common/backend_api.dart
|
| diff --git a/pkg/compiler/lib/src/common/backend_api.dart b/pkg/compiler/lib/src/common/backend_api.dart
|
| index d7af0cb49b4a058eea3457e55e3586777b28ff56..71a8c82a6f5bebc94f258bf354152e4a30c5fcad 100644
|
| --- a/pkg/compiler/lib/src/common/backend_api.dart
|
| +++ b/pkg/compiler/lib/src/common/backend_api.dart
|
| @@ -7,77 +7,44 @@ library dart2js.backend_api;
|
| import 'dart:async' show Future;
|
|
|
| import '../common.dart';
|
| -import '../common/codegen.dart' show
|
| - CodegenImpact;
|
| -import '../common/resolution.dart' show
|
| - ResolutionImpact;
|
| -import '../compiler.dart' show
|
| - Compiler;
|
| -import '../compile_time_constants.dart' show
|
| - BackendConstantEnvironment,
|
| - ConstantCompilerTask;
|
| -import '../constants/expressions.dart' show
|
| - ConstantExpression;
|
| -import '../constants/constant_system.dart' show
|
| - ConstantSystem;
|
| -import '../constants/values.dart' show
|
| - ConstantValue;
|
| -import '../dart_types.dart' show
|
| - DartType,
|
| - InterfaceType;
|
| -import '../elements/elements.dart' show
|
| - ClassElement,
|
| - ConstructorElement,
|
| - Element,
|
| - FunctionElement,
|
| - LibraryElement,
|
| - MetadataAnnotation,
|
| - MethodElement;
|
| -import '../enqueue.dart' show
|
| - Enqueuer,
|
| - CodegenEnqueuer,
|
| - ResolutionEnqueuer;
|
| -import '../io/code_output.dart' show
|
| - CodeBuffer;
|
| -import '../io/source_information.dart' show
|
| - SourceInformationStrategy;
|
| -import '../js_backend/backend_helpers.dart' as js_backend show
|
| - BackendHelpers;
|
| -import '../js_backend/js_backend.dart' as js_backend show
|
| - JavaScriptBackend;
|
| -import '../library_loader.dart' show
|
| - LibraryLoader,
|
| - LoadedLibraries;
|
| -import '../native/native.dart' as native show
|
| - NativeEnqueuer,
|
| - maybeEnableNative;
|
| -import '../patch_parser.dart' show
|
| - checkNativeAnnotation, checkJsInteropAnnotation;
|
| -import '../resolution/tree_elements.dart' show
|
| - TreeElements;
|
| -import '../serialization/serialization.dart' show
|
| - DeserializerPlugin,
|
| - ObjectDecoder,
|
| - ObjectEncoder,
|
| - SerializerPlugin;
|
| -import '../tree/tree.dart' show
|
| - Node,
|
| - Send;
|
| -import '../universe/call_structure.dart' show
|
| - CallStructure;
|
| -import '../universe/world_impact.dart' show
|
| - ImpactStrategy,
|
| - WorldImpact;
|
| -
|
| -import 'codegen.dart' show
|
| - CodegenWorkItem;
|
| -import 'registry.dart' show
|
| - Registry;
|
| -import 'tasks.dart' show
|
| - CompilerTask;
|
| -import 'work.dart' show
|
| - ItemCompilationContext;
|
| -
|
| +import '../common/codegen.dart' show CodegenImpact;
|
| +import '../common/resolution.dart' show ResolutionImpact;
|
| +import '../compiler.dart' show Compiler;
|
| +import '../compile_time_constants.dart'
|
| + show BackendConstantEnvironment, ConstantCompilerTask;
|
| +import '../constants/expressions.dart' show ConstantExpression;
|
| +import '../constants/constant_system.dart' show ConstantSystem;
|
| +import '../constants/values.dart' show ConstantValue;
|
| +import '../dart_types.dart' show DartType, InterfaceType;
|
| +import '../elements/elements.dart'
|
| + show
|
| + ClassElement,
|
| + ConstructorElement,
|
| + Element,
|
| + FunctionElement,
|
| + LibraryElement,
|
| + MetadataAnnotation,
|
| + MethodElement;
|
| +import '../enqueue.dart' show Enqueuer, CodegenEnqueuer, ResolutionEnqueuer;
|
| +import '../io/code_output.dart' show CodeBuffer;
|
| +import '../io/source_information.dart' show SourceInformationStrategy;
|
| +import '../js_backend/backend_helpers.dart' as js_backend show BackendHelpers;
|
| +import '../js_backend/js_backend.dart' as js_backend show JavaScriptBackend;
|
| +import '../library_loader.dart' show LibraryLoader, LoadedLibraries;
|
| +import '../native/native.dart' as native show NativeEnqueuer, maybeEnableNative;
|
| +import '../patch_parser.dart'
|
| + show checkNativeAnnotation, checkJsInteropAnnotation;
|
| +import '../resolution/tree_elements.dart' show TreeElements;
|
| +import '../serialization/serialization.dart'
|
| + show DeserializerPlugin, ObjectDecoder, ObjectEncoder, SerializerPlugin;
|
| +import '../tree/tree.dart' show Node, Send;
|
| +import '../universe/call_structure.dart' show CallStructure;
|
| +import '../universe/world_impact.dart' show ImpactStrategy, WorldImpact;
|
| +
|
| +import 'codegen.dart' show CodegenWorkItem;
|
| +import 'registry.dart' show Registry;
|
| +import 'tasks.dart' show CompilerTask;
|
| +import 'work.dart' show ItemCompilationContext;
|
|
|
| abstract class Backend {
|
| final Compiler compiler;
|
| @@ -132,6 +99,7 @@ abstract class Backend {
|
| native.NativeEnqueuer nativeResolutionEnqueuer(world) {
|
| return new native.NativeEnqueuer();
|
| }
|
| +
|
| native.NativeEnqueuer nativeCodegenEnqueuer(world) {
|
| return new native.NativeEnqueuer();
|
| }
|
| @@ -165,52 +133,44 @@ abstract class Backend {
|
| /// Called during resolution when a constant value for [metadata] on
|
| /// [annotatedElement] has been evaluated.
|
| void registerMetadataConstant(MetadataAnnotation metadata,
|
| - Element annotatedElement,
|
| - Registry registry) {}
|
| + Element annotatedElement, Registry registry) {}
|
|
|
| /// Called to notify to the backend that a class is being instantiated.
|
| // TODO(johnniwinther): Remove this. It's only called once for each [cls] and
|
| // only with [Compiler.globalDependencies] as [registry].
|
| - void registerInstantiatedClass(ClassElement cls,
|
| - Enqueuer enqueuer,
|
| - Registry registry) {}
|
| + void registerInstantiatedClass(
|
| + ClassElement cls, Enqueuer enqueuer, Registry registry) {}
|
|
|
| /// Called to notify to the backend that a class is implemented by an
|
| /// instantiated class.
|
| - void registerImplementedClass(ClassElement cls,
|
| - Enqueuer enqueuer,
|
| - Registry registry) {}
|
| + void registerImplementedClass(
|
| + ClassElement cls, Enqueuer enqueuer, Registry registry) {}
|
|
|
| /// Called to instruct to the backend register [type] as instantiated on
|
| /// [enqueuer].
|
| - void registerInstantiatedType(InterfaceType type,
|
| - Enqueuer enqueuer,
|
| - Registry registry,
|
| - {bool mirrorUsage: false}) {
|
| + void registerInstantiatedType(
|
| + InterfaceType type, Enqueuer enqueuer, Registry registry,
|
| + {bool mirrorUsage: false}) {
|
| registry.registerDependency(type.element);
|
| enqueuer.registerInstantiatedType(type, mirrorUsage: mirrorUsage);
|
| }
|
|
|
| /// Register a runtime type variable bound tests between [typeArgument] and
|
| /// [bound].
|
| - void registerTypeVariableBoundsSubtypeCheck(DartType typeArgument,
|
| - DartType bound) {}
|
| + void registerTypeVariableBoundsSubtypeCheck(
|
| + DartType typeArgument, DartType bound) {}
|
|
|
| /**
|
| * Call this to register that an instantiated generic class has a call
|
| * method.
|
| */
|
| void registerCallMethodWithFreeTypeVariables(
|
| - Element callMethod,
|
| - Enqueuer enqueuer,
|
| - Registry registry) {}
|
| + Element callMethod, Enqueuer enqueuer, Registry registry) {}
|
|
|
| /// Called to instruct the backend to register that a closure exists for a
|
| /// function on an instantiated generic class.
|
| void registerClosureWithFreeTypeVariables(
|
| - Element closure,
|
| - Enqueuer enqueuer,
|
| - Registry registry) {
|
| + Element closure, Enqueuer enqueuer, Registry registry) {
|
| enqueuer.universe.closuresWithFreeTypeVariables.add(closure);
|
| }
|
|
|
| @@ -349,9 +309,8 @@ abstract class Backend {
|
| /// Called by [MirrorUsageAnalyzerTask] after it has merged all @MirrorsUsed
|
| /// annotations. The arguments corresponds to the unions of the corresponding
|
| /// fields of the annotations.
|
| - void registerMirrorUsage(Set<String> symbols,
|
| - Set<Element> targets,
|
| - Set<Element> metaTargets) {}
|
| + void registerMirrorUsage(
|
| + Set<String> symbols, Set<Element> targets, Set<Element> metaTargets) {}
|
|
|
| /// Returns true if this element needs reflection information at runtime.
|
| bool isAccessibleByReflection(Element element) => true;
|
| @@ -419,15 +378,12 @@ abstract class Backend {
|
|
|
| void registerMainHasArguments(Enqueuer enqueuer) {}
|
|
|
| - void registerAsyncMarker(FunctionElement element,
|
| - Enqueuer enqueuer,
|
| - Registry registry) {}
|
| + void registerAsyncMarker(
|
| + FunctionElement element, Enqueuer enqueuer, Registry registry) {}
|
|
|
| /// Called when resolving a call to a foreign function.
|
| - void registerForeignCall(Send node,
|
| - Element element,
|
| - CallStructure callStructure,
|
| - ForeignResolver resolver) {}
|
| + void registerForeignCall(Send node, Element element,
|
| + CallStructure callStructure, ForeignResolver resolver) {}
|
|
|
| /// Returns the location of the patch-file associated with [libraryName]
|
| /// resolved from [plaformConfigUri].
|
| @@ -438,8 +394,8 @@ abstract class Backend {
|
| /// Creates an impact strategy to use for compilation.
|
| ImpactStrategy createImpactStrategy(
|
| {bool supportDeferredLoad: true,
|
| - bool supportDumpInfo: true,
|
| - bool supportSerialization: true}) {
|
| + bool supportDumpInfo: true,
|
| + bool supportSerialization: true}) {
|
| return const ImpactStrategy();
|
| }
|
| }
|
| @@ -473,7 +429,7 @@ class ImpactTransformer {
|
| }
|
|
|
| /// Interface for serialization of backend specific data.
|
| -class BackendSerialization {
|
| +class BackendSerialization {
|
| const BackendSerialization();
|
|
|
| SerializerPlugin get serializer => const SerializerPlugin();
|
|
|