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

Unified Diff: pkg/compiler/lib/src/js_emitter/code_emitter_task.dart

Issue 763123002: dart2js: Split TypeTestEmitter into a registry and an emitter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: full diff Created 6 years, 1 month 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/js_emitter/code_emitter_task.dart
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 317d6bd418d046f1ce8fbc3896ae42ef6d404d09..3cecbec34aa3cbd1edd18f7c60035530998a8aca 100644
--- a/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
+++ b/pkg/compiler/lib/src/js_emitter/code_emitter_task.dart
@@ -15,7 +15,7 @@ const USE_NEW_EMITTER = const bool.fromEnvironment("dart2js.use.new.emitter");
class CodeEmitterTask extends CompilerTask {
// TODO(floitsch): the code-emitter task should not need a namer.
final Namer namer;
- final TypeTestEmitter typeTestEmitter = new TypeTestEmitter();
+ final TypeTestRegistry typeTestRegistry;
NativeEmitter nativeEmitter;
OldEmitter oldEmitter;
Emitter emitter;
@@ -47,13 +47,13 @@ class CodeEmitterTask extends CompilerTask {
CodeEmitterTask(Compiler compiler, Namer namer, bool generateSourceMap)
: super(compiler),
- this.namer = namer {
+ this.namer = namer,
+ this.typeTestRegistry = new TypeTestRegistry(compiler) {
oldEmitter = new OldEmitter(compiler, namer, generateSourceMap, this);
emitter = USE_NEW_EMITTER
? new new_js_emitter.Emitter(compiler, namer)
: oldEmitter;
nativeEmitter = new NativeEmitter(this);
- typeTestEmitter.emitter = this.oldEmitter;
}
@@ -145,7 +145,7 @@ class CodeEmitterTask extends CompilerTask {
}
}
for (ClassElement cls in neededClasses) {
- final onlyForRti = typeTestEmitter.rtiNeededClasses.contains(cls);
+ final onlyForRti = typeTestRegistry.rtiNeededClasses.contains(cls);
if (!onlyForRti) {
backend.retainMetadataOf(cls);
oldEmitter.classEmitter.visitFields(cls, false,
@@ -248,13 +248,13 @@ class CodeEmitterTask extends CompilerTask {
// these are thought to not have been instantiated, so we neeed to be able
// to identify them later and make sure we only emit "empty shells" without
// fields, etc.
- typeTestEmitter.computeRtiNeededClasses();
+ typeTestRegistry.computeRtiNeededClasses();
// TODO(floitsch): either change the name, or get the rti-classes
// differently.
- typeTestEmitter.rtiNeededClasses.removeAll(neededClasses);
+ typeTestRegistry.rtiNeededClasses.removeAll(neededClasses);
// rtiNeededClasses now contains only the "empty shells".
- neededClasses.addAll(typeTestEmitter.rtiNeededClasses);
+ neededClasses.addAll(typeTestRegistry.rtiNeededClasses);
// TODO(18175, floitsch): remove once issue 18175 is fixed.
if (neededClasses.contains(backend.jsIntClass)) {
@@ -281,7 +281,7 @@ class CodeEmitterTask extends CompilerTask {
for (ClassElement element in sortedClasses) {
if (Elements.isNativeOrExtendsNative(element) &&
- !typeTestEmitter.rtiNeededClasses.contains(element)) {
+ !typeTestRegistry.rtiNeededClasses.contains(element)) {
// For now, native classes and related classes cannot be deferred.
nativeClasses.add(element);
if (!element.isNative) {
@@ -332,7 +332,7 @@ class CodeEmitterTask extends CompilerTask {
// Compute the required type checks to know which classes need a
// 'is$' method.
- typeTestEmitter.computeRequiredTypeChecks();
+ typeTestRegistry.computeRequiredTypeChecks();
computeNeededDeclarations();
computeNeededConstants();
« no previous file with comments | « pkg/compiler/lib/src/js_backend/native_emitter.dart ('k') | pkg/compiler/lib/src/js_emitter/old_emitter/class_emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698