| Index: pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
|
| diff --git a/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart b/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
|
| index bdafacedbbd7a54d5058ffbf5b05f77c32569512..0e5d8699740724c769e9512ace135bfa7171005c 100644
|
| --- a/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
|
| +++ b/pkg/compiler/lib/src/js_backend/custom_elements_analysis.dart
|
| @@ -5,14 +5,14 @@
|
| import '../common/backend_api.dart';
|
| import '../common/resolution.dart';
|
| import '../common_elements.dart';
|
| +import '../constants/constant_system.dart';
|
| import '../constants/values.dart';
|
| import '../elements/resolution_types.dart';
|
| import '../elements/elements.dart';
|
| import '../universe/call_structure.dart';
|
| -import '../universe/use.dart' show StaticUse;
|
| +import '../universe/use.dart' show ConstantUse, StaticUse;
|
| import '../universe/world_impact.dart'
|
| show WorldImpact, StagedWorldImpactBuilder;
|
| -import 'backend.dart';
|
| import 'backend_usage.dart' show BackendUsageBuilder;
|
| import 'backend_helpers.dart';
|
| import 'native_data.dart';
|
| @@ -89,15 +89,15 @@ class CustomElementsResolutionAnalysis extends CustomElementsAnalysisBase {
|
| final CustomElementsAnalysisJoin join;
|
|
|
| CustomElementsResolutionAnalysis(
|
| - JavaScriptBackend backend,
|
| Resolution resolution,
|
| + ConstantSystem constantSystem,
|
| CommonElements commonElements,
|
| BackendClasses backendClasses,
|
| BackendHelpers helpers,
|
| NativeClassData nativeData,
|
| BackendUsageBuilder backendUsageBuilder)
|
| - : join = new CustomElementsAnalysisJoin(
|
| - backend, resolution, commonElements, backendClasses, nativeData,
|
| + : join = new CustomElementsAnalysisJoin(resolution, constantSystem,
|
| + commonElements, backendClasses, nativeData,
|
| backendUsageBuilder: backendUsageBuilder),
|
| super(resolution, helpers, nativeData) {
|
| // TODO(sra): Remove this work-around. We should mark allClassesSelected in
|
| @@ -127,14 +127,14 @@ class CustomElementsCodegenAnalysis extends CustomElementsAnalysisBase {
|
| final CustomElementsAnalysisJoin join;
|
|
|
| CustomElementsCodegenAnalysis(
|
| - JavaScriptBackend backend,
|
| Resolution resolution,
|
| + ConstantSystem constantSystem,
|
| CommonElements commonElements,
|
| BackendClasses backendClasses,
|
| BackendHelpers helpers,
|
| NativeClassData nativeData)
|
| - : join = new CustomElementsAnalysisJoin(
|
| - backend, resolution, commonElements, backendClasses, nativeData),
|
| + : join = new CustomElementsAnalysisJoin(resolution, constantSystem,
|
| + commonElements, backendClasses, nativeData),
|
| super(resolution, helpers, nativeData) {
|
| // TODO(sra): Remove this work-around. We should mark allClassesSelected in
|
| // both joins only when we see a construct generating an unknown [Type] but
|
| @@ -144,7 +144,7 @@ class CustomElementsCodegenAnalysis extends CustomElementsAnalysisBase {
|
| join.allClassesSelected = true;
|
| }
|
|
|
| - void registerTypeConstant(Element element) {
|
| + void registerTypeConstant(ClassElement element) {
|
| assert(element.isClass);
|
| join.selectedClasses.add(element);
|
| }
|
| @@ -159,8 +159,8 @@ class CustomElementsCodegenAnalysis extends CustomElementsAnalysisBase {
|
| }
|
|
|
| class CustomElementsAnalysisJoin {
|
| - final JavaScriptBackend _backend;
|
| final Resolution _resolution;
|
| + final ConstantSystem _constantSystem;
|
| final CommonElements _commonElements;
|
| final BackendClasses _backendClasses;
|
| final NativeClassData _nativeData;
|
| @@ -186,7 +186,7 @@ class CustomElementsAnalysisJoin {
|
| // ClassesOutput: classes requiring metadata.
|
| final activeClasses = new Set<ClassElement>();
|
|
|
| - CustomElementsAnalysisJoin(this._backend, this._resolution,
|
| + CustomElementsAnalysisJoin(this._resolution, this._constantSystem,
|
| this._commonElements, this._backendClasses, this._nativeData,
|
| {BackendUsageBuilder backendUsageBuilder})
|
| : this._backendUsageBuilder = backendUsageBuilder,
|
| @@ -218,9 +218,8 @@ class CustomElementsAnalysisJoin {
|
| // Force the generaton of the type constant that is the key to an entry
|
| // in the generated table.
|
| ConstantValue constant = _makeTypeConstant(classElement);
|
| - _backend.computeImpactForCompileTimeConstant(constant, impactBuilder,
|
| - forResolution: forResolution);
|
| - _backend.addCompileTimeConstantForEmission(constant);
|
| + impactBuilder
|
| + .registerConstantUse(new ConstantUse.customElements(constant));
|
| }
|
| }
|
| activeClasses.addAll(newActiveClasses);
|
| @@ -230,8 +229,8 @@ class CustomElementsAnalysisJoin {
|
|
|
| TypeConstantValue _makeTypeConstant(ClassElement element) {
|
| ResolutionDartType elementType = element.rawType;
|
| - return _backend.constantSystem
|
| - .createType(_commonElements, _backendClasses, elementType);
|
| + return _constantSystem.createType(
|
| + _commonElements, _backendClasses, elementType);
|
| }
|
|
|
| List<ConstructorElement> computeEscapingConstructors(
|
|
|