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

Unified Diff: pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart

Issue 2823003003: Remove Compiler and JavaScriptBackend from field_visitor. (Closed)
Patch Set: Created 3 years, 8 months 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/program_builder/field_visitor.dart
diff --git a/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart b/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
index 89a60a213d06769f054c058ea9583d507b7d1ab5..1e61b8a21c64473f804b085de2dc8bde3c072c46 100644
--- a/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
+++ b/pkg/compiler/lib/src/js_emitter/program_builder/field_visitor.dart
@@ -26,13 +26,15 @@ typedef void AcceptField(FieldEntity member, js.Name name, js.Name accessorName,
bool needsGetter, bool needsSetter, bool needsCheckedSetter);
class FieldVisitor {
- final Compiler compiler;
- final Namer namer;
- final ClosedWorld closedWorld;
+ final CompilerOptions _options;
+ final CodegenWorldBuilder _codegenWorldBuilder;
+ final NativeData _nativeData;
+ final MirrorsData _mirrorsData;
+ final Namer _namer;
+ final ClosedWorld _closedWorld;
- JavaScriptBackend get backend => compiler.backend;
-
- FieldVisitor(this.compiler, this.namer, this.closedWorld);
+ FieldVisitor(this._options, this._codegenWorldBuilder, this._nativeData,
+ this._mirrorsData, this._namer, this._closedWorld);
/**
* Invokes [f] for each of the fields of [element].
@@ -59,12 +61,12 @@ class FieldVisitor {
bool isInstantiated = false;
if (element.isClass) {
cls = element;
- isNativeClass = backend.nativeData.isNativeClass(cls);
+ isNativeClass = _nativeData.isNativeClass(cls);
// If the class is never instantiated we still need to set it up for
// inheritance purposes, but we can simplify its JavaScript constructor.
- isInstantiated = compiler.codegenWorldBuilder.directlyInstantiatedClasses
- .contains(cls);
+ isInstantiated =
+ _codegenWorldBuilder.directlyInstantiatedClasses.contains(cls);
} else if (element.isLibrary) {
isLibrary = true;
assert(invariant(element, visitStatics));
@@ -89,13 +91,13 @@ class FieldVisitor {
needsSetter = fieldNeedsSetter(field);
}
- if ((isInstantiated && !backend.nativeData.isNativeClass(cls)) ||
+ if ((isInstantiated && !_nativeData.isNativeClass(cls)) ||
needsGetter ||
needsSetter) {
- js.Name accessorName = namer.fieldAccessorName(field);
- js.Name fieldName = namer.fieldPropertyName(field);
+ js.Name accessorName = _namer.fieldAccessorName(field);
+ js.Name fieldName = _namer.fieldPropertyName(field);
bool needsCheckedSetter = false;
- if (compiler.options.enableTypeAssertions &&
+ if (_options.enableTypeAssertions &&
needsSetter &&
!canAvoidGeneratedCheckedSetter(field)) {
needsCheckedSetter = true;
@@ -132,18 +134,18 @@ class FieldVisitor {
bool fieldNeedsGetter(FieldElement field) {
assert(field.isField);
if (fieldAccessNeverThrows(field)) return false;
- if (backend.mirrorsData.shouldRetainGetter(field)) return true;
+ if (_mirrorsData.shouldRetainGetter(field)) return true;
return field.isClassMember &&
- compiler.codegenWorldBuilder.hasInvokedGetter(field, closedWorld);
+ _codegenWorldBuilder.hasInvokedGetter(field, _closedWorld);
}
bool fieldNeedsSetter(FieldElement field) {
assert(field.isField);
if (fieldAccessNeverThrows(field)) return false;
if (field.isFinal || field.isConst) return false;
- if (backend.mirrorsData.shouldRetainSetter(field)) return true;
+ if (_mirrorsData.shouldRetainSetter(field)) return true;
return field.isClassMember &&
- compiler.codegenWorldBuilder.hasInvokedSetter(field, closedWorld);
+ _codegenWorldBuilder.hasInvokedSetter(field, _closedWorld);
}
static bool fieldAccessNeverThrows(VariableElement field) {

Powered by Google App Engine
This is Rietveld 408576698