[dart2js] Clean up migration files for common/codegen.dart.

Change-Id: I7b236580cb0ecfa9aa71f4976bd954570b944284
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/270343
Reviewed-by: Mayank Patke <fishythefish@google.com>
diff --git a/pkg/compiler/lib/src/common/codegen.dart b/pkg/compiler/lib/src/common/codegen.dart
index 5318a53..82eddc3 100644
--- a/pkg/compiler/lib/src/common/codegen.dart
+++ b/pkg/compiler/lib/src/common/codegen.dart
@@ -16,12 +16,14 @@
 import '../io/source_information.dart';
 import '../js/js.dart' as js;
 import '../js_backend/codegen_inputs.dart';
-import '../js_backend/namer.dart' show AsyncName, Namer, StringBackedName;
+import '../js_backend/namer.dart'
+    show AsyncName, Namer, operatorNameToIdentifier, StringBackedName;
 import '../js_backend/deferred_holder_expression.dart'
     show DeferredHolderExpression;
 import '../js_backend/string_reference.dart' show StringReference;
 import '../js_backend/type_reference.dart' show TypeReference;
 import '../js_emitter/js_emitter.dart' show Emitter;
+import '../js_model/elements.dart';
 import '../js_model/js_world.dart';
 import '../js_model/type_recipe.dart' show TypeRecipe;
 import '../native/behavior.dart';
@@ -34,11 +36,7 @@
 import '../util/enumset.dart';
 import '../util/util.dart';
 
-import 'codegen_interfaces.dart' as interfaces;
-import 'codegen_migrated.dart';
-export 'codegen_migrated.dart';
-
-class CodegenImpact extends WorldImpact implements interfaces.CodegenImpact {
+class CodegenImpact extends WorldImpact {
   const CodegenImpact();
 
   factory CodegenImpact.readFromDataSource(DataSourceReader source) =
@@ -48,35 +46,27 @@
     throw UnsupportedError('CodegenImpact.writeToDataSink');
   }
 
-  @override
   Iterable<Pair<DartType, DartType>> get typeVariableBoundsSubtypeChecks {
     return const <Pair<DartType, DartType>>[];
   }
 
   Iterable<String> get constSymbols => const <String>[];
 
-  @override
   Iterable<Set<ClassEntity>> get specializedGetInterceptors {
     return const <Set<ClassEntity>>[];
   }
 
-  @override
   bool get usesInterceptor => false;
 
-  @override
   Iterable<AsyncMarker> get asyncMarkers => const <AsyncMarker>[];
 
-  @override
   Iterable<GenericInstantiation> get genericInstantiations =>
       const <GenericInstantiation>[];
 
-  @override
   Iterable<NativeBehavior> get nativeBehaviors => const [];
 
-  @override
   Iterable<FunctionEntity> get nativeMethods => const [];
 
-  @override
   Iterable<Selector> get oneShotInterceptors => const [];
 }
 
@@ -319,7 +309,7 @@
 
 // TODO(johnniwinther): Split this class into interface and implementation.
 // TODO(johnniwinther): Move this implementation to the JS backend.
-class CodegenRegistry implements interfaces.CodegenRegistry {
+class CodegenRegistry {
   final ElementEnvironment _elementEnvironment;
   final MemberEntity _currentElement;
   final _CodegenImpact _worldImpact;
@@ -333,98 +323,79 @@
   String toString() => 'CodegenRegistry for $_currentElement';
 
   @deprecated
-  @override
   void registerInstantiatedClass(ClassEntity element) {
     registerInstantiation(_elementEnvironment.getRawType(element));
   }
 
-  @override
   void registerStaticUse(StaticUse staticUse) {
     _worldImpact.registerStaticUse(staticUse);
   }
 
-  @override
   void registerDynamicUse(DynamicUse dynamicUse) {
     _worldImpact.registerDynamicUse(dynamicUse);
   }
 
-  @override
   void registerTypeUse(TypeUse typeUse) {
     _worldImpact.registerTypeUse(typeUse);
   }
 
-  @override
   void registerConstantUse(ConstantUse constantUse) {
     _worldImpact.registerConstantUse(constantUse);
   }
 
-  @override
   void registerTypeVariableBoundsSubtypeCheck(
       DartType subtype, DartType supertype) {
     _worldImpact.registerTypeVariableBoundsSubtypeCheck(subtype, supertype);
   }
 
-  @override
   void registerInstantiatedClosure(FunctionEntity element) {
     _worldImpact.registerStaticUse(StaticUse.callMethod(element));
   }
 
-  @override
   void registerConstSymbol(String name) {
     _worldImpact.registerConstSymbol(name);
   }
 
-  @override
   void registerSpecializedGetInterceptor(Set<ClassEntity> classes) {
     _worldImpact.registerSpecializedGetInterceptor(classes);
   }
 
-  @override
   void registerOneShotInterceptor(Selector selector) {
     _worldImpact.registerOneShotInterceptor(selector);
   }
 
-  @override
   void registerUseInterceptor() {
     _worldImpact.registerUseInterceptor();
   }
 
-  @override
   void registerInstantiation(InterfaceType type) {
     registerTypeUse(TypeUse.instantiation(type));
   }
 
-  @override
   void registerAsyncMarker(AsyncMarker asyncMarker) {
     _worldImpact.registerAsyncMarker(asyncMarker);
   }
 
-  @override
   void registerGenericInstantiation(GenericInstantiation instantiation) {
     _worldImpact.registerGenericInstantiation(instantiation);
   }
 
-  @override
   void registerNativeBehavior(NativeBehavior nativeBehavior) {
     _worldImpact.registerNativeBehavior(nativeBehavior);
   }
 
-  @override
   void registerNativeMethod(FunctionEntity function) {
     _worldImpact.registerNativeMethod(function);
   }
 
-  @override
   void registerModularName(covariant ModularName name) {
     _names.add(name);
   }
 
-  @override
   void registerModularExpression(covariant ModularExpression expression) {
     _expressions.add(expression);
   }
 
-  @override
   CodegenResult close(js.Fun code) {
     return CodegenResult(code, _worldImpact, _names.isEmpty ? const [] : _names,
         _expressions.isEmpty ? const [] : _expressions);
@@ -445,13 +416,13 @@
       this._functionCompiler);
 
   @override
-  interfaces.CodegenResult getCodegenResults(MemberEntity member) {
+  CodegenResult getCodegenResults(MemberEntity member) {
     return _functionCompiler.compile(member);
   }
 }
 
 /// The code generation result for a single [MemberEntity].
-class CodegenResult implements interfaces.CodegenResult {
+class CodegenResult {
   static const String tag = 'codegen-result';
 
   final js.Fun? code;
@@ -488,7 +459,6 @@
   /// The [modularNames] and [modularExpressions] fields are not directly
   /// serializes because these are embedded in the [code] node and collected
   /// through this during deserialization.
-  @override
   void writeToDataSink(DataSinkWriter sink) {
     sink.begin(tag);
     sink.writeJsNodeOrNull(code);
@@ -590,7 +560,7 @@
 }
 
 class ModularExpression extends js.DeferredExpression
-    implements js.AstContainer, interfaces.ModularExpression {
+    implements js.AstContainer {
   static const String tag = 'modular-expression';
 
   final ModularExpressionKind kind;
@@ -1991,3 +1961,293 @@
     recipe.writeToDataSink(sink);
   }
 }
+
+enum ModularNameKind {
+  rtiField,
+  className,
+  aliasedSuperMember,
+  staticClosure,
+  methodProperty,
+  operatorIs,
+  instanceMethod,
+  instanceField,
+  invocation,
+  lazyInitializer,
+  globalPropertyNameForClass,
+  globalPropertyNameForMember,
+  globalNameForInterfaceTypeVariable,
+  nameForGetInterceptor,
+  nameForOneShotInterceptor,
+  asName,
+}
+
+class ModularName extends js.Name implements js.AstContainer {
+  static const String tag = 'modular-name';
+
+  final ModularNameKind kind;
+  js.Name? _value;
+  final Object? data;
+  final Set<ClassEntity>? set;
+
+  ModularName(this.kind, {this.data, this.set});
+
+  factory ModularName.readFromDataSource(DataSourceReader source) {
+    source.begin(tag);
+    ModularNameKind kind = source.readEnum(ModularNameKind.values);
+    Object? data;
+    Set<ClassEntity>? set;
+    switch (kind) {
+      case ModularNameKind.rtiField:
+        break;
+      case ModularNameKind.className:
+      case ModularNameKind.operatorIs:
+      case ModularNameKind.globalPropertyNameForClass:
+        data = source.readClass();
+        break;
+      case ModularNameKind.aliasedSuperMember:
+      case ModularNameKind.staticClosure:
+      case ModularNameKind.methodProperty:
+      case ModularNameKind.instanceField:
+      case ModularNameKind.instanceMethod:
+      case ModularNameKind.lazyInitializer:
+      case ModularNameKind.globalPropertyNameForMember:
+        data = source.readMember();
+        break;
+      case ModularNameKind.invocation:
+        data = Selector.readFromDataSource(source);
+        break;
+      case ModularNameKind.globalNameForInterfaceTypeVariable:
+        data = source.readTypeVariable();
+        break;
+      case ModularNameKind.nameForGetInterceptor:
+        set = source.readClasses().toSet();
+        break;
+      case ModularNameKind.nameForOneShotInterceptor:
+        data = Selector.readFromDataSource(source);
+        set = source.readClasses().toSet();
+        break;
+      case ModularNameKind.asName:
+        data = source.readString();
+        break;
+    }
+    source.end(tag);
+    return ModularName(kind, data: data, set: set);
+  }
+
+  void writeToDataSink(DataSinkWriter sink) {
+    sink.begin(tag);
+    sink.writeEnum(kind);
+    switch (kind) {
+      case ModularNameKind.rtiField:
+        break;
+      case ModularNameKind.className:
+      case ModularNameKind.operatorIs:
+      case ModularNameKind.globalPropertyNameForClass:
+        sink.writeClass(data as ClassEntity);
+        break;
+      case ModularNameKind.aliasedSuperMember:
+      case ModularNameKind.staticClosure:
+      case ModularNameKind.methodProperty:
+      case ModularNameKind.instanceField:
+      case ModularNameKind.instanceMethod:
+      case ModularNameKind.lazyInitializer:
+      case ModularNameKind.globalPropertyNameForMember:
+        sink.writeMember(data as MemberEntity);
+        break;
+      case ModularNameKind.invocation:
+        final selector = data as Selector;
+        selector.writeToDataSink(sink);
+        break;
+      case ModularNameKind.globalNameForInterfaceTypeVariable:
+        final typeVariable = data as TypeVariableEntity;
+        sink.writeTypeVariable(typeVariable);
+        break;
+      case ModularNameKind.nameForGetInterceptor:
+        sink.writeClasses(set);
+        break;
+      case ModularNameKind.nameForOneShotInterceptor:
+        final selector = data as Selector;
+        selector.writeToDataSink(sink);
+        sink.writeClasses(set);
+        break;
+      case ModularNameKind.asName:
+        sink.writeString(data as String);
+        break;
+    }
+    sink.end(tag);
+  }
+
+  @override
+  bool get isFinalized => _value != null;
+
+  js.Name get value {
+    assert(isFinalized, 'value not set for $this');
+    return _value!;
+  }
+
+  void set value(js.Name node) {
+    assert(!isFinalized);
+    assert((node as dynamic) != null);
+    _value = node.withSourceInformation(sourceInformation) as js.Name;
+  }
+
+  @override
+  String get key {
+    assert(isFinalized);
+    return _value!.key;
+  }
+
+  @override
+  String get name {
+    assert(isFinalized, 'value not set for $this');
+    return _value!.name;
+  }
+
+  @override
+  bool get allowRename {
+    assert(isFinalized, 'value not set for $this');
+    return _value!.allowRename;
+  }
+
+  @override
+  Iterable<js.Node> get containedNodes {
+    return _value != null ? [_value!] : const [];
+  }
+
+  @override
+  int get hashCode {
+    return Hashing.setHash(set, Hashing.objectsHash(kind, data));
+  }
+
+  @override
+  bool operator ==(Object other) {
+    if (identical(this, other)) return true;
+    return other is ModularName &&
+        kind == other.kind &&
+        data == other.data &&
+        equalSets(set, other.set);
+  }
+
+  @override
+  String toString() =>
+      'ModularName(kind=$kind, data=$data, value=${_value?.key})';
+
+  @override
+  String nonfinalizedDebugText() {
+    switch (kind) {
+      case ModularNameKind.rtiField:
+        return r'ModularName"$ti"';
+      case ModularNameKind.instanceField:
+        return 'ModularName"field:${(data as Entity).name}"';
+      case ModularNameKind.instanceMethod:
+        return 'ModularName"${_instanceMethodName(data as MemberEntity)}"';
+      case ModularNameKind.methodProperty:
+        return 'ModularName"methodProperty:${(data as Entity).name}"';
+      case ModularNameKind.operatorIs:
+        return 'ModularName"is:${_className(data as ClassEntity)}"';
+      case ModularNameKind.className:
+        return 'ModularName"class:${_className(data as ClassEntity)}"';
+      case ModularNameKind.globalPropertyNameForClass:
+        return 'ModularName"classref:${_className(data as ClassEntity)}"';
+      case ModularNameKind.aliasedSuperMember:
+        MemberEntity member = (data as MemberEntity);
+        String className = _className(member.enclosingClass!);
+        String invocationName = operatorNameToIdentifier(member.name)!;
+        final description = "$className.$invocationName";
+        return 'ModularName"alias:$description"';
+      case ModularNameKind.staticClosure:
+        return 'ModularName"closure:${_qualifiedStaticName(data as MemberEntity)}"';
+      case ModularNameKind.lazyInitializer:
+        return 'ModularName"lazy:${(data as MemberEntity).name}"';
+      case ModularNameKind.globalPropertyNameForMember:
+        MemberEntity member = data as MemberEntity;
+        return 'ModularName"ref:${_qualifiedStaticName(member)}"';
+      case ModularNameKind.invocation:
+        return 'ModularName"selector:${_selectorText(data as Selector)}"';
+      case ModularNameKind.nameForOneShotInterceptor:
+        return 'ModularName"oneshot:${_selectorText(data as Selector)}"';
+      case ModularNameKind.globalNameForInterfaceTypeVariable:
+        break;
+      case ModularNameKind.nameForGetInterceptor:
+        return 'ModularName"getInterceptor"';
+      case ModularNameKind.asName:
+        return 'ModularName"asName:$data"';
+    }
+    return super.nonfinalizedDebugText();
+  }
+
+  String _className(ClassEntity cls) {
+    return cls.name.replaceAll('&', '_');
+  }
+
+  String _qualifiedStaticName(MemberEntity member) {
+    if (member is ConstructorEntity || member.isStatic) {
+      return '${_className(member.enclosingClass!)}.${member.name!}';
+    }
+    return member.name!;
+  }
+
+  String _instanceMethodInvocationName(MemberEntity member) {
+    String invocationName = operatorNameToIdentifier(member.name)!;
+    if (member.isGetter) invocationName = r'get$' + invocationName;
+    if (member.isSetter) invocationName = r'set$' + invocationName;
+    return invocationName;
+  }
+
+  String _instanceMethodName(MemberEntity member) {
+    if (member is ConstructorBodyEntity) {
+      return 'constructorBody:${_qualifiedStaticName(member.constructor)}';
+    }
+    if (member is JGeneratorBody) {
+      MemberEntity function = member.function;
+      return 'generatorBody:'
+          '${_className(function.enclosingClass!)}.'
+          '${_instanceMethodInvocationName(function)}';
+    }
+    return 'instanceMethod:${_instanceMethodInvocationName(member)}';
+  }
+
+  String _selectorText(Selector selector) {
+    // Approximation to unminified selector.
+    if (selector.isGetter) return r'get$' + selector.name;
+    if (selector.isSetter) return r'set$' + selector.name;
+    if (selector.isOperator || selector.isIndex || selector.isIndexSet) {
+      return operatorNameToIdentifier(selector.name)!;
+    }
+    List<String> parts = [
+      selector.name,
+      if (selector.callStructure.typeArgumentCount > 0)
+        '${selector.callStructure.typeArgumentCount}',
+      '${selector.callStructure.argumentCount}',
+      ...selector.callStructure.getOrderedNamedArguments()
+    ];
+    return parts.join(r'$');
+  }
+}
+
+/// Interface for reading the code generation results for all [MemberEntity]s.
+abstract class CodegenResults {
+  GlobalTypeInferenceResults get globalTypeInferenceResults;
+  CodegenInputs get codegenInputs;
+  CodegenResult getCodegenResults(MemberEntity member);
+}
+
+/// Deserialized code generation results.
+///
+/// This is used for modular code generation.
+class DeserializedCodegenResults extends CodegenResults {
+  @override
+  final GlobalTypeInferenceResults globalTypeInferenceResults;
+  @override
+  final CodegenInputs codegenInputs;
+
+  final Map<MemberEntity, CodegenResult> _map;
+
+  DeserializedCodegenResults(
+      this.globalTypeInferenceResults, this.codegenInputs, this._map);
+
+  @override
+  CodegenResult getCodegenResults(MemberEntity member) {
+    return _map[member]!;
+  }
+}
diff --git a/pkg/compiler/lib/src/common/codegen_interfaces.dart b/pkg/compiler/lib/src/common/codegen_interfaces.dart
deleted file mode 100644
index 9fa7ff3..0000000
--- a/pkg/compiler/lib/src/common/codegen_interfaces.dart
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright (c) 2022, 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.
-
-import '../elements/entities.dart';
-import '../elements/types.dart' show DartType, InterfaceType;
-import '../js/js.dart' as js;
-import '../native/behavior.dart';
-import '../serialization/serialization.dart';
-import '../universe/feature.dart';
-import '../universe/selector.dart';
-import '../universe/use.dart' show ConstantUse, DynamicUse, StaticUse, TypeUse;
-import '../universe/world_impact.dart';
-import '../util/util.dart';
-import 'codegen_migrated.dart';
-
-abstract class CodegenImpact extends WorldImpact {
-  Iterable<Pair<DartType, DartType>> get typeVariableBoundsSubtypeChecks;
-
-  Iterable<Set<ClassEntity>> get specializedGetInterceptors;
-
-  bool get usesInterceptor;
-
-  Iterable<AsyncMarker> get asyncMarkers;
-
-  Iterable<GenericInstantiation> get genericInstantiations;
-
-  Iterable<NativeBehavior> get nativeBehaviors;
-
-  Iterable<FunctionEntity> get nativeMethods;
-
-  Iterable<Selector> get oneShotInterceptors;
-}
-
-abstract class CodegenRegistry {
-  @deprecated
-  void registerInstantiatedClass(ClassEntity element);
-
-  void registerStaticUse(StaticUse staticUse);
-
-  void registerDynamicUse(DynamicUse dynamicUse);
-
-  void registerTypeUse(TypeUse typeUse);
-
-  void registerConstantUse(ConstantUse constantUse);
-
-  void registerTypeVariableBoundsSubtypeCheck(
-      DartType subtype, DartType supertype);
-
-  void registerInstantiatedClosure(FunctionEntity element);
-
-  void registerConstSymbol(String name);
-
-  void registerSpecializedGetInterceptor(Set<ClassEntity> classes);
-
-  void registerOneShotInterceptor(Selector selector);
-
-  void registerUseInterceptor();
-
-  void registerInstantiation(InterfaceType type);
-
-  void registerAsyncMarker(AsyncMarker asyncMarker);
-
-  void registerGenericInstantiation(GenericInstantiation instantiation);
-
-  void registerNativeBehavior(NativeBehavior nativeBehavior);
-
-  void registerNativeMethod(FunctionEntity function);
-
-  void registerModularName(ModularName name);
-
-  void registerModularExpression(ModularExpression expression);
-
-  CodegenResult close(js.Fun code);
-}
-
-abstract class ModularExpression {}
-
-abstract class CodegenResult {
-  void writeToDataSink(DataSinkWriter sink);
-}
diff --git a/pkg/compiler/lib/src/common/codegen_migrated.dart b/pkg/compiler/lib/src/common/codegen_migrated.dart
deleted file mode 100644
index 0b78045..0000000
--- a/pkg/compiler/lib/src/common/codegen_migrated.dart
+++ /dev/null
@@ -1,305 +0,0 @@
-// 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.
-
-import '../elements/entities.dart';
-import '../inferrer/types.dart';
-import '../js/js.dart' as js;
-import '../js_backend/codegen_inputs.dart';
-import '../js_backend/namer.dart' show operatorNameToIdentifier;
-import '../js_model/elements.dart' show JGeneratorBody;
-import '../serialization/serialization.dart';
-import '../universe/selector.dart';
-import '../util/util.dart';
-
-import 'codegen_interfaces.dart' as interfaces;
-
-enum ModularNameKind {
-  rtiField,
-  className,
-  aliasedSuperMember,
-  staticClosure,
-  methodProperty,
-  operatorIs,
-  instanceMethod,
-  instanceField,
-  invocation,
-  lazyInitializer,
-  globalPropertyNameForClass,
-  globalPropertyNameForMember,
-  globalNameForInterfaceTypeVariable,
-  nameForGetInterceptor,
-  nameForOneShotInterceptor,
-  asName,
-}
-
-class ModularName extends js.Name implements js.AstContainer {
-  static const String tag = 'modular-name';
-
-  final ModularNameKind kind;
-  js.Name? _value;
-  final Object? data;
-  final Set<ClassEntity>? set;
-
-  ModularName(this.kind, {this.data, this.set});
-
-  factory ModularName.readFromDataSource(DataSourceReader source) {
-    source.begin(tag);
-    ModularNameKind kind = source.readEnum(ModularNameKind.values);
-    Object? data;
-    Set<ClassEntity>? set;
-    switch (kind) {
-      case ModularNameKind.rtiField:
-        break;
-      case ModularNameKind.className:
-      case ModularNameKind.operatorIs:
-      case ModularNameKind.globalPropertyNameForClass:
-        data = source.readClass();
-        break;
-      case ModularNameKind.aliasedSuperMember:
-      case ModularNameKind.staticClosure:
-      case ModularNameKind.methodProperty:
-      case ModularNameKind.instanceField:
-      case ModularNameKind.instanceMethod:
-      case ModularNameKind.lazyInitializer:
-      case ModularNameKind.globalPropertyNameForMember:
-        data = source.readMember();
-        break;
-      case ModularNameKind.invocation:
-        data = Selector.readFromDataSource(source);
-        break;
-      case ModularNameKind.globalNameForInterfaceTypeVariable:
-        data = source.readTypeVariable();
-        break;
-      case ModularNameKind.nameForGetInterceptor:
-        set = source.readClasses().toSet();
-        break;
-      case ModularNameKind.nameForOneShotInterceptor:
-        data = Selector.readFromDataSource(source);
-        set = source.readClasses().toSet();
-        break;
-      case ModularNameKind.asName:
-        data = source.readString();
-        break;
-    }
-    source.end(tag);
-    return ModularName(kind, data: data, set: set);
-  }
-
-  void writeToDataSink(DataSinkWriter sink) {
-    sink.begin(tag);
-    sink.writeEnum(kind);
-    switch (kind) {
-      case ModularNameKind.rtiField:
-        break;
-      case ModularNameKind.className:
-      case ModularNameKind.operatorIs:
-      case ModularNameKind.globalPropertyNameForClass:
-        sink.writeClass(data as ClassEntity);
-        break;
-      case ModularNameKind.aliasedSuperMember:
-      case ModularNameKind.staticClosure:
-      case ModularNameKind.methodProperty:
-      case ModularNameKind.instanceField:
-      case ModularNameKind.instanceMethod:
-      case ModularNameKind.lazyInitializer:
-      case ModularNameKind.globalPropertyNameForMember:
-        sink.writeMember(data as MemberEntity);
-        break;
-      case ModularNameKind.invocation:
-        final selector = data as Selector;
-        selector.writeToDataSink(sink);
-        break;
-      case ModularNameKind.globalNameForInterfaceTypeVariable:
-        final typeVariable = data as TypeVariableEntity;
-        sink.writeTypeVariable(typeVariable);
-        break;
-      case ModularNameKind.nameForGetInterceptor:
-        sink.writeClasses(set);
-        break;
-      case ModularNameKind.nameForOneShotInterceptor:
-        final selector = data as Selector;
-        selector.writeToDataSink(sink);
-        sink.writeClasses(set);
-        break;
-      case ModularNameKind.asName:
-        sink.writeString(data as String);
-        break;
-    }
-    sink.end(tag);
-  }
-
-  @override
-  bool get isFinalized => _value != null;
-
-  js.Name get value {
-    assert(isFinalized, 'value not set for $this');
-    return _value!;
-  }
-
-  void set value(js.Name node) {
-    assert(!isFinalized);
-    assert((node as dynamic) != null);
-    _value = node.withSourceInformation(sourceInformation) as js.Name;
-  }
-
-  @override
-  String get key {
-    assert(isFinalized);
-    return _value!.key;
-  }
-
-  @override
-  String get name {
-    assert(isFinalized, 'value not set for $this');
-    return _value!.name;
-  }
-
-  @override
-  bool get allowRename {
-    assert(isFinalized, 'value not set for $this');
-    return _value!.allowRename;
-  }
-
-  @override
-  Iterable<js.Node> get containedNodes {
-    return _value != null ? [_value!] : const [];
-  }
-
-  @override
-  int get hashCode {
-    return Hashing.setHash(set, Hashing.objectsHash(kind, data));
-  }
-
-  @override
-  bool operator ==(Object other) {
-    if (identical(this, other)) return true;
-    return other is ModularName &&
-        kind == other.kind &&
-        data == other.data &&
-        equalSets(set, other.set);
-  }
-
-  @override
-  String toString() =>
-      'ModularName(kind=$kind, data=$data, value=${_value?.key})';
-
-  @override
-  String nonfinalizedDebugText() {
-    switch (kind) {
-      case ModularNameKind.rtiField:
-        return r'ModularName"$ti"';
-      case ModularNameKind.instanceField:
-        return 'ModularName"field:${(data as Entity).name}"';
-      case ModularNameKind.instanceMethod:
-        return 'ModularName"${_instanceMethodName(data as MemberEntity)}"';
-      case ModularNameKind.methodProperty:
-        return 'ModularName"methodProperty:${(data as Entity).name}"';
-      case ModularNameKind.operatorIs:
-        return 'ModularName"is:${_className(data as ClassEntity)}"';
-      case ModularNameKind.className:
-        return 'ModularName"class:${_className(data as ClassEntity)}"';
-      case ModularNameKind.globalPropertyNameForClass:
-        return 'ModularName"classref:${_className(data as ClassEntity)}"';
-      case ModularNameKind.aliasedSuperMember:
-        MemberEntity member = (data as MemberEntity);
-        String className = _className(member.enclosingClass!);
-        String invocationName = operatorNameToIdentifier(member.name)!;
-        final description = "$className.$invocationName";
-        return 'ModularName"alias:$description"';
-      case ModularNameKind.staticClosure:
-        return 'ModularName"closure:${_qualifiedStaticName(data as MemberEntity)}"';
-      case ModularNameKind.lazyInitializer:
-        return 'ModularName"lazy:${(data as MemberEntity).name}"';
-      case ModularNameKind.globalPropertyNameForMember:
-        MemberEntity member = data as MemberEntity;
-        return 'ModularName"ref:${_qualifiedStaticName(member)}"';
-      case ModularNameKind.invocation:
-        return 'ModularName"selector:${_selectorText(data as Selector)}"';
-      case ModularNameKind.nameForOneShotInterceptor:
-        return 'ModularName"oneshot:${_selectorText(data as Selector)}"';
-      case ModularNameKind.globalNameForInterfaceTypeVariable:
-        break;
-      case ModularNameKind.nameForGetInterceptor:
-        return 'ModularName"getInterceptor"';
-      case ModularNameKind.asName:
-        return 'ModularName"asName:$data"';
-    }
-    return super.nonfinalizedDebugText();
-  }
-
-  String _className(ClassEntity cls) {
-    return cls.name.replaceAll('&', '_');
-  }
-
-  String _qualifiedStaticName(MemberEntity member) {
-    if (member is ConstructorEntity || member.isStatic) {
-      return '${_className(member.enclosingClass!)}.${member.name!}';
-    }
-    return member.name!;
-  }
-
-  String _instanceMethodInvocationName(MemberEntity member) {
-    String invocationName = operatorNameToIdentifier(member.name)!;
-    if (member.isGetter) invocationName = r'get$' + invocationName;
-    if (member.isSetter) invocationName = r'set$' + invocationName;
-    return invocationName;
-  }
-
-  String _instanceMethodName(MemberEntity member) {
-    if (member is ConstructorBodyEntity) {
-      return 'constructorBody:${_qualifiedStaticName(member.constructor)}';
-    }
-    if (member is JGeneratorBody) {
-      MemberEntity function = member.function;
-      return 'generatorBody:'
-          '${_className(function.enclosingClass!)}.'
-          '${_instanceMethodInvocationName(function)}';
-    }
-    return 'instanceMethod:${_instanceMethodInvocationName(member)}';
-  }
-
-  String _selectorText(Selector selector) {
-    // Approximation to unminified selector.
-    if (selector.isGetter) return r'get$' + selector.name;
-    if (selector.isSetter) return r'set$' + selector.name;
-    if (selector.isOperator || selector.isIndex || selector.isIndexSet) {
-      return operatorNameToIdentifier(selector.name)!;
-    }
-    List<String> parts = [
-      selector.name,
-      if (selector.callStructure.typeArgumentCount > 0)
-        '${selector.callStructure.typeArgumentCount}',
-      '${selector.callStructure.argumentCount}',
-      ...selector.callStructure.getOrderedNamedArguments()
-    ];
-    return parts.join(r'$');
-  }
-}
-
-/// Interface for reading the code generation results for all [MemberEntity]s.
-abstract class CodegenResults {
-  GlobalTypeInferenceResults get globalTypeInferenceResults;
-  CodegenInputs get codegenInputs;
-  interfaces.CodegenResult getCodegenResults(MemberEntity member);
-}
-
-/// Deserialized code generation results.
-///
-/// This is used for modular code generation.
-class DeserializedCodegenResults extends CodegenResults {
-  @override
-  final GlobalTypeInferenceResults globalTypeInferenceResults;
-  @override
-  final CodegenInputs codegenInputs;
-
-  final Map<MemberEntity, interfaces.CodegenResult> _map;
-
-  DeserializedCodegenResults(
-      this.globalTypeInferenceResults, this.codegenInputs, this._map);
-
-  @override
-  interfaces.CodegenResult getCodegenResults(MemberEntity member) {
-    return _map[member]!;
-  }
-}
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart
index 635095f..81e3b49 100644
--- a/pkg/compiler/lib/src/js_backend/backend.dart
+++ b/pkg/compiler/lib/src/js_backend/backend.dart
@@ -5,7 +5,7 @@
 library js_backend.backend;
 
 import '../common.dart';
-import '../common/codegen_interfaces.dart';
+import '../common/codegen.dart';
 import '../elements/entities.dart';
 import '../inferrer/types.dart';
 import '../js_model/elements.dart';
diff --git a/pkg/compiler/lib/src/js_backend/impact_transformer.dart b/pkg/compiler/lib/src/js_backend/impact_transformer.dart
index 9e41d7f..47ec1bd 100644
--- a/pkg/compiler/lib/src/js_backend/impact_transformer.dart
+++ b/pkg/compiler/lib/src/js_backend/impact_transformer.dart
@@ -5,7 +5,7 @@
 library js_backend.backend.impact_transformer;
 
 import '../common/elements.dart';
-import '../common/codegen_interfaces.dart' show CodegenImpact;
+import '../common/codegen.dart' show CodegenImpact;
 import '../constants/values.dart';
 import '../elements/entities.dart';
 import '../elements/types.dart';
diff --git a/pkg/compiler/lib/src/js_backend/namer.dart b/pkg/compiler/lib/src/js_backend/namer.dart
index cee601e..782c1a4 100644
--- a/pkg/compiler/lib/src/js_backend/namer.dart
+++ b/pkg/compiler/lib/src/js_backend/namer.dart
@@ -11,8 +11,7 @@
 
 import '../closure.dart';
 import '../common.dart';
-import '../common/codegen_interfaces.dart';
-import '../common/codegen_migrated.dart';
+import '../common/codegen.dart';
 import '../common/elements.dart' show JElementEnvironment;
 import '../common/names.dart' show Identifiers, Names, Selectors;
 import '../constants/constant_system.dart' as constant_system;
diff --git a/pkg/compiler/lib/src/serialization/task.dart b/pkg/compiler/lib/src/serialization/task.dart
index 42671d9..ac1addb 100644
--- a/pkg/compiler/lib/src/serialization/task.dart
+++ b/pkg/compiler/lib/src/serialization/task.dart
@@ -11,9 +11,7 @@
 import 'package:front_end/src/fasta/util/bytes_sink.dart';
 import '../../compiler_api.dart' as api;
 import '../commandline_options.dart' show Flags;
-import '../common/codegen_migrated.dart';
-import '../common/codegen.dart'
-    show CodegenWriterImpl, CodegenReaderImpl, CodegenResult, ModularExpression;
+import '../common/codegen.dart';
 import '../common/tasks.dart';
 import '../diagnostics/diagnostic_listener.dart';
 import '../elements/entities.dart';
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index 26f1486..ac7e4de 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -11,7 +11,7 @@
 import '../common/elements.dart' show JCommonElements;
 import '../common/metrics.dart';
 import '../common/names.dart';
-import '../common/codegen_interfaces.dart' show CodegenRegistry;
+import '../common/codegen.dart' show CodegenRegistry;
 import '../common/tasks.dart' show Measurer, CompilerTask;
 import '../constants/constant_system.dart' as constant_system;
 import '../constants/values.dart';
diff --git a/pkg/compiler/lib/src/ssa/optimize.dart b/pkg/compiler/lib/src/ssa/optimize.dart
index 484471d..34c57b1 100644
--- a/pkg/compiler/lib/src/ssa/optimize.dart
+++ b/pkg/compiler/lib/src/ssa/optimize.dart
@@ -5,7 +5,7 @@
 // @dart = 2.10
 
 import '../common.dart';
-import '../common/codegen_interfaces.dart' show CodegenRegistry;
+import '../common/codegen.dart' show CodegenRegistry;
 import '../common/elements.dart' show JCommonElements;
 import '../common/names.dart' show Selectors;
 import '../common/tasks.dart' show Measurer, CompilerTask;
diff --git a/pkg/compiler/lib/src/ssa/ssa_interfaces.dart b/pkg/compiler/lib/src/ssa/ssa_interfaces.dart
index 4537e87..de8a454 100644
--- a/pkg/compiler/lib/src/ssa/ssa_interfaces.dart
+++ b/pkg/compiler/lib/src/ssa/ssa_interfaces.dart
@@ -2,7 +2,7 @@
 // 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.
 
-import '../common/codegen_interfaces.dart' show CodegenResult;
+import '../common/codegen.dart' show CodegenResult;
 import '../elements/entities.dart';
 import '../js_backend/backend.dart' show FunctionCompiler;