From fc7aa585ea4c91d873f2699c07f73c85cbcc35b2 Mon Sep 17 00:00:00 2001 From: Joshua Litt Date: Tue, 29 Jun 2021 19:06:29 +0000 Subject: [PATCH] [dart2js] Minor cleanup of classes needed for rti computation. Change-Id: I641ed8f7c91f8b0d52b4542559a13b60d82e42e8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205244 Commit-Queue: Joshua Litt Reviewed-by: Mayank Patke --- .../lib/src/js_emitter/code_emitter_task.dart | 6 +-- .../js_emitter/program_builder/collector.dart | 4 +- .../src/js_emitter/type_test_registry.dart | 43 ++----------------- 3 files changed, 6 insertions(+), 47 deletions(-) diff --git a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart index 10ba94af4f9..18f96cd7df6 100644 --- a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart +++ b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart @@ -79,9 +79,6 @@ class CodeEmitterTask extends CompilerTask { // 'is$' method. typeTestRegistry.computeRequiredTypeChecks( _backendStrategy.rtiChecksBuilder, codegenWorld); - // Compute the classes needed by RTI. - typeTestRegistry.computeRtiNeededClasses( - codegen.rtiSubstitutions, _backendStrategy.generatedCode.keys); } /// Creates the [Emitter] for this task. @@ -104,8 +101,7 @@ class CodeEmitterTask extends CompilerTask { _generateSourceMap); metadataCollector = new MetadataCollector( _compiler.reporter, _emitter, codegen.rtiRecipeEncoder); - typeTestRegistry = new TypeTestRegistry( - _compiler.options, closedWorld.elementEnvironment); + typeTestRegistry = new TypeTestRegistry(_compiler.options); }); } diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart index f4afd759451..fea4949041d 100644 --- a/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart +++ b/pkg/compiler/lib/src/js_emitter/program_builder/collector.dart @@ -175,9 +175,7 @@ class Collector { // 4. Find all class types needed for rti. for (ClassEntity cls in _rtiNeededClasses) { if (backendTypeHelpers.contains(cls)) continue; - while (cls != null && neededClassTypes.add(cls)) { - cls = _elementEnvironment.getSuperClass(cls); - } + neededClassTypes.add(cls); } // 5. Sort classes and add them to their respective OutputUnits. diff --git a/pkg/compiler/lib/src/js_emitter/type_test_registry.dart b/pkg/compiler/lib/src/js_emitter/type_test_registry.dart index 01fa35aca48..c61de5395b4 100644 --- a/pkg/compiler/lib/src/js_emitter/type_test_registry.dart +++ b/pkg/compiler/lib/src/js_emitter/type_test_registry.dart @@ -5,27 +5,20 @@ library dart2js.js_emitter.type_test_registry; import '../common.dart'; -import '../common_elements.dart'; import '../elements/entities.dart'; import '../js_backend/runtime_types.dart' show RuntimeTypesChecks, RuntimeTypesChecksBuilder; -import '../js_backend/runtime_types_codegen.dart' - show RuntimeTypesSubstitutions; import '../options.dart'; import '../universe/codegen_world_builder.dart'; +/// TODO(joshualitt): Delete this class and store [RuntimeTypeChecks] on +/// [CodeEmitterTask] directly. class TypeTestRegistry { - final ElementEnvironment _elementEnvironment; - - /// After [computeNeededClasses] this set only contains classes that are only - /// used for RTI. - Set _rtiNeededClasses; - final CompilerOptions _options; RuntimeTypesChecks _rtiChecks; - TypeTestRegistry(this._options, this._elementEnvironment); + TypeTestRegistry(this._options); RuntimeTypesChecks get rtiChecks { assert( @@ -36,35 +29,7 @@ class TypeTestRegistry { } Iterable get rtiNeededClasses { - assert( - _rtiNeededClasses != null, - failedAt(NO_LOCATION_SPANNABLE, - "rtiNeededClasses has not been computed yet.")); - return _rtiNeededClasses; - } - - void computeRtiNeededClasses(RuntimeTypesSubstitutions rtiSubstitutions, - Iterable liveMembers) { - _rtiNeededClasses = new Set(); - - void addClassWithSuperclasses(ClassEntity cls) { - _rtiNeededClasses.add(cls); - for (ClassEntity superclass = _elementEnvironment.getSuperClass(cls); - superclass != null; - superclass = _elementEnvironment.getSuperClass(superclass)) { - _rtiNeededClasses.add(superclass); - } - } - - void addClassesWithSuperclasses(Iterable classes) { - for (ClassEntity cls in classes) { - addClassWithSuperclasses(cls); - } - } - - // Add classes that are referenced by type arguments or substitutions in - // argument checks. - addClassesWithSuperclasses(rtiChecks.requiredClasses); + return rtiChecks.requiredClasses; } void computeRequiredTypeChecks(