| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// Facades for pieces of the js_emitter used from other parts of the compiler. |
| // TODO(48820): delete after the migration is complete. |
| library compiler.src.js_emitter.interfaces; |
| |
| import '../constants/values.dart'; |
| import '../deferred_load/output_unit.dart' show OutputUnit; |
| import '../elements/entities.dart'; |
| import '../js/js.dart' as jsAst; |
| |
| import 'metadata_collector.dart' show MetadataCollector; |
| import 'native_emitter.dart'; |
| import 'startup_emitter/fragment_merger.dart'; |
| |
| abstract class CodeEmitterTask { |
| Set<ClassEntity> get neededClasses; |
| Set<ClassEntity> get neededClassTypes; |
| NativeEmitter get nativeEmitter; |
| Emitter get emitter; |
| MetadataCollector get metadataCollector; |
| } |
| |
| abstract class ModularEmitter { |
| jsAst.Expression constructorAccess(ClassEntity e); |
| jsAst.Expression constantReference(ConstantValue constant); |
| jsAst.Expression isolateLazyInitializerAccess(covariant FieldEntity element); |
| jsAst.Expression prototypeAccess(ClassEntity e); |
| jsAst.Expression staticClosureAccess(covariant FunctionEntity element); |
| jsAst.Expression staticFieldAccess(FieldEntity element); |
| jsAst.Expression staticFunctionAccess(FunctionEntity element); |
| jsAst.Name typeVariableAccessNewRti(TypeVariableEntity element); |
| jsAst.Name typeAccessNewRti(ClassEntity element); |
| } |
| |
| abstract class Emitter extends ModularEmitter { |
| Map<String, List<FinalizedFragment>> get finalizedFragmentsToLoad; |
| FragmentMerger get fragmentMerger; |
| int generatedSize(OutputUnit unit); |
| jsAst.Expression interceptorPrototypeAccess(ClassEntity e); |
| jsAst.Expression generateEmbeddedGlobalAccess(String global); |
| int compareConstants(ConstantValue a, ConstantValue b); |
| jsAst.Expression interceptorClassAccess(ClassEntity e); |
| bool isConstantInlinedOrAlreadyEmitted(ConstantValue constant); |
| } |