Version 2.18.0-220.0.dev
Merge commit 'd2cec155f991e85d3e6d42470c6939fdd3c32844' into 'dev'
diff --git a/pkg/compiler/lib/src/js_backend/backend_impact.dart b/pkg/compiler/lib/src/js_backend/backend_impact.dart
index f6dfa17..e1f4868 100644
--- a/pkg/compiler/lib/src/js_backend/backend_impact.dart
+++ b/pkg/compiler/lib/src/js_backend/backend_impact.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart = 2.10
-
library dart2js.js_helpers.impact;
import '../common/elements.dart' show CommonElements, ElementEnvironment;
@@ -58,15 +56,15 @@
void registerImpact(WorldImpactBuilder worldImpactBuilder,
ElementEnvironment elementEnvironment) {
for (FunctionEntity staticUse in staticUses) {
- assert(staticUse != null);
+ assert((staticUse as dynamic) != null); // TODO(48820): Remove when sound.
worldImpactBuilder.registerStaticUse(StaticUse.implicitInvoke(staticUse));
}
for (FunctionEntity staticUse in globalUses) {
- assert(staticUse != null);
+ assert((staticUse as dynamic) != null); // TODO(48820): Remove when sound.
worldImpactBuilder.registerStaticUse(StaticUse.implicitInvoke(staticUse));
}
for (Selector selector in dynamicUses) {
- assert(selector != null);
+ assert((selector as dynamic) != null); // TODO(48820): Remove when sound.
worldImpactBuilder
.registerDynamicUse(DynamicUse(selector, null, const []));
}
@@ -95,187 +93,145 @@
BackendImpacts(this._commonElements, this._options);
- BackendImpact _getRuntimeTypeArgument;
+ late final BackendImpact getRuntimeTypeArgument = BackendImpact(
+ globalUses: [],
+ otherImpacts: [newRtiImpact],
+ );
- BackendImpact get getRuntimeTypeArgument {
- return _getRuntimeTypeArgument ??=
- BackendImpact(globalUses: [], otherImpacts: [
- newRtiImpact,
- ]);
- }
-
- BackendImpact _computeSignature;
-
- BackendImpact get computeSignature {
- return _computeSignature ??= BackendImpact(globalUses: [
+ late final BackendImpact computeSignature = BackendImpact(
+ globalUses: [
_commonElements.setArrayType,
- ], otherImpacts: [
- listValues
- ]);
- }
+ ],
+ otherImpacts: [listValues],
+ );
- BackendImpact _mainWithArguments;
+ late final BackendImpact mainWithArguments = BackendImpact(
+ globalUses: [_commonElements.convertMainArgumentList],
+ instantiatedClasses: [
+ _commonElements.jsArrayClass,
+ _commonElements.jsStringClass
+ ],
+ );
- BackendImpact get mainWithArguments {
- return _mainWithArguments ??= BackendImpact(
- globalUses: [_commonElements.convertMainArgumentList],
- instantiatedClasses: [
- _commonElements.jsArrayClass,
- _commonElements.jsStringClass
- ],
- );
- }
+ late final BackendImpact asyncBody = BackendImpact(
+ staticUses: [
+ _commonElements.asyncHelperAwait,
+ _commonElements.asyncHelperReturn,
+ _commonElements.asyncHelperRethrow,
+ _commonElements.streamIteratorConstructor,
+ _commonElements.wrapBody,
+ _commonElements.asyncHelperStartSync
+ ],
+ );
- BackendImpact _asyncBody;
-
- BackendImpact get asyncBody => _asyncBody ??= BackendImpact(staticUses: [
- _commonElements.asyncHelperAwait,
- _commonElements.asyncHelperReturn,
- _commonElements.asyncHelperRethrow,
- _commonElements.streamIteratorConstructor,
- _commonElements.wrapBody,
- _commonElements.asyncHelperStartSync
- ]);
-
- BackendImpact _syncStarBody;
-
- BackendImpact get syncStarBody {
- return _syncStarBody ??= BackendImpact(staticUses: [
+ late final BackendImpact syncStarBody = BackendImpact(
+ staticUses: [
_commonElements.endOfIteration,
_commonElements.yieldStar,
_commonElements.syncStarUncaughtError,
- ]);
- }
+ ],
+ );
- BackendImpact _asyncStarBody;
-
- BackendImpact get asyncStarBody {
- return _asyncStarBody ??= BackendImpact(staticUses: [
+ late final BackendImpact asyncStarBody = BackendImpact(
+ staticUses: [
_commonElements.asyncStarHelper,
_commonElements.streamOfController,
_commonElements.yieldSingle,
_commonElements.yieldStar,
_commonElements.streamIteratorConstructor,
_commonElements.wrapBody,
- ]);
- }
+ ],
+ );
- BackendImpact _typeVariableBoundCheck;
-
- BackendImpact get typeVariableBoundCheck {
- return _typeVariableBoundCheck ??= BackendImpact(staticUses: [
+ late final BackendImpact typeVariableBoundCheck = BackendImpact(
+ staticUses: [
_commonElements.checkTypeBound,
- ]);
- }
+ ],
+ );
- BackendImpact _asCheck;
-
- BackendImpact get asCheck {
- return _asCheck ??= BackendImpact(staticUses: [], otherImpacts: [
+ late final BackendImpact asCheck = BackendImpact(
+ staticUses: [],
+ otherImpacts: [
newRtiImpact,
- ]);
- }
+ ],
+ );
- BackendImpact _stringValues;
+ late final BackendImpact stringValues = BackendImpact(
+ instantiatedClasses: [_commonElements.jsStringClass],
+ );
- BackendImpact get stringValues {
- return _stringValues ??=
- BackendImpact(instantiatedClasses: [_commonElements.jsStringClass]);
- }
-
- BackendImpact _numValues;
-
- BackendImpact get numValues {
- return _numValues ??= BackendImpact(instantiatedClasses: [
+ late final BackendImpact numValues = BackendImpact(
+ instantiatedClasses: [
_commonElements.jsIntClass,
_commonElements.jsPositiveIntClass,
_commonElements.jsUInt32Class,
_commonElements.jsUInt31Class,
_commonElements.jsNumberClass,
_commonElements.jsNumNotIntClass,
- ]);
- }
+ ],
+ );
BackendImpact get intValues => numValues;
BackendImpact get doubleValues => numValues;
- BackendImpact _boolValues;
+ late final BackendImpact boolValues = BackendImpact(
+ instantiatedClasses: [_commonElements.jsBoolClass],
+ );
- BackendImpact get boolValues {
- return _boolValues ??=
- BackendImpact(instantiatedClasses: [_commonElements.jsBoolClass]);
- }
+ late final BackendImpact nullValue = BackendImpact(
+ instantiatedClasses: [_commonElements.jsNullClass],
+ );
- BackendImpact _nullValue;
-
- BackendImpact get nullValue {
- return _nullValue ??=
- BackendImpact(instantiatedClasses: [_commonElements.jsNullClass]);
- }
-
- BackendImpact _listValues;
-
- BackendImpact get listValues {
- return _listValues ??= BackendImpact(globalClasses: [
+ late final BackendImpact listValues = BackendImpact(
+ globalClasses: [
_commonElements.jsArrayClass,
_commonElements.jsMutableArrayClass,
_commonElements.jsFixedArrayClass,
_commonElements.jsExtendableArrayClass,
_commonElements.jsUnmodifiableArrayClass
- ]);
- }
+ ],
+ );
- BackendImpact _throwUnsupportedError;
-
- BackendImpact get throwUnsupportedError {
- return _throwUnsupportedError ??= BackendImpact(staticUses: [
- _commonElements.throwUnsupportedError
- ], otherImpacts: [
+ late final BackendImpact throwUnsupportedError = BackendImpact(
+ staticUses: [_commonElements.throwUnsupportedError],
+ otherImpacts: [
// Also register the types of the arguments passed to this method.
stringValues
- ]);
- }
+ ],
+ );
- BackendImpact _superNoSuchMethod;
-
- BackendImpact get superNoSuchMethod {
- return _superNoSuchMethod ??= BackendImpact(staticUses: [
+ late final BackendImpact superNoSuchMethod = BackendImpact(
+ staticUses: [
_commonElements.createInvocationMirror,
_commonElements.objectNoSuchMethod
- ], otherImpacts: [
+ ],
+ otherImpacts: [
_needsInt('Needed to encode the invocation kind of super.noSuchMethod.'),
_needsList('Needed to encode the arguments of super.noSuchMethod.'),
_needsString('Needed to encode the name of super.noSuchMethod.')
- ]);
- }
+ ],
+ );
- BackendImpact _constantMapLiteral;
-
- BackendImpact get constantMapLiteral {
- return _constantMapLiteral ??= BackendImpact(instantiatedClasses: [
+ late final BackendImpact constantMapLiteral = BackendImpact(
+ instantiatedClasses: [
_commonElements.constantMapClass,
_commonElements.constantStringMapClass,
_commonElements.generalConstantMapClass,
- ]);
- }
+ ],
+ );
- BackendImpact _constantSetLiteral;
+ late final BackendImpact constantSetLiteral = BackendImpact(
+ instantiatedClasses: [
+ _commonElements.constSetLiteralClass,
+ ],
+ otherImpacts: [constantMapLiteral],
+ );
- BackendImpact get constantSetLiteral =>
- _constantSetLiteral ??= BackendImpact(instantiatedClasses: [
- _commonElements.constSetLiteralClass,
- ], otherImpacts: [
- constantMapLiteral
- ]);
-
- BackendImpact _constSymbol;
-
- BackendImpact get constSymbol {
- return _constSymbol ??= BackendImpact(
- instantiatedClasses: [_commonElements.symbolImplementationClass],
- staticUses: [_commonElements.symbolConstructorTarget]);
- }
+ late final BackendImpact constSymbol = BackendImpact(
+ instantiatedClasses: [_commonElements.symbolImplementationClass],
+ staticUses: [_commonElements.symbolConstructorTarget],
+ );
/// Helper for registering that `int` is needed.
BackendImpact _needsInt(String reason) {
@@ -295,41 +251,26 @@
return stringValues;
}
- BackendImpact _assertWithoutMessage;
+ late final BackendImpact assertWithoutMessage = BackendImpact(
+ staticUses: [_commonElements.assertHelper],
+ );
- BackendImpact get assertWithoutMessage {
- return _assertWithoutMessage ??=
- BackendImpact(staticUses: [_commonElements.assertHelper]);
- }
+ late final BackendImpact assertWithMessage = BackendImpact(
+ staticUses: [_commonElements.assertTest, _commonElements.assertThrow],
+ );
- BackendImpact _assertWithMessage;
+ late final BackendImpact asyncForIn = BackendImpact(
+ staticUses: [_commonElements.streamIteratorConstructor],
+ );
- BackendImpact get assertWithMessage {
- return _assertWithMessage ??= BackendImpact(
- staticUses: [_commonElements.assertTest, _commonElements.assertThrow]);
- }
+ late final BackendImpact stringInterpolation = BackendImpact(
+ dynamicUses: [Selectors.toString_],
+ staticUses: [_commonElements.stringInterpolationHelper],
+ otherImpacts: [_needsString('Strings are created.')],
+ );
- BackendImpact _asyncForIn;
-
- BackendImpact get asyncForIn {
- return _asyncForIn ??=
- BackendImpact(staticUses: [_commonElements.streamIteratorConstructor]);
- }
-
- BackendImpact _stringInterpolation;
-
- BackendImpact get stringInterpolation {
- return _stringInterpolation ??= BackendImpact(
- dynamicUses: [Selectors.toString_],
- staticUses: [_commonElements.stringInterpolationHelper],
- otherImpacts: [_needsString('Strings are created.')]);
- }
-
- BackendImpact _stringJuxtaposition;
-
- BackendImpact get stringJuxtaposition {
- return _stringJuxtaposition ??= _needsString('String.concat is used.');
- }
+ late final BackendImpact stringJuxtaposition =
+ _needsString('String.concat is used.');
BackendImpact get nullLiteral => nullValue;
@@ -341,466 +282,356 @@
BackendImpact get stringLiteral => stringValues;
- BackendImpact _catchStatement;
-
- BackendImpact get catchStatement {
- return _catchStatement ??= BackendImpact(staticUses: [
- _commonElements.exceptionUnwrapper
- ], instantiatedClasses: [
+ late final BackendImpact catchStatement = BackendImpact(
+ staticUses: [_commonElements.exceptionUnwrapper],
+ instantiatedClasses: [
_commonElements.jsPlainJavaScriptObjectClass,
_commonElements.jsUnknownJavaScriptObjectClass
- ]);
- }
+ ],
+ );
- BackendImpact _throwExpression;
+ late final BackendImpact throwExpression = BackendImpact(
+ // We don't know ahead of time whether we will need the throw in a statement
+ // context or an expression context, so we register both here, even though
+ // we may not need the throwExpression helper.
+ staticUses: [
+ _commonElements.wrapExceptionHelper,
+ _commonElements.throwExpressionHelper
+ ],
+ );
- BackendImpact get throwExpression {
- return _throwExpression ??= BackendImpact(
- // We don't know ahead of time whether we will need the throw in a
- // statement context or an expression context, so we register both
- // here, even though we may not need the throwExpression helper.
- staticUses: [
- _commonElements.wrapExceptionHelper,
- _commonElements.throwExpressionHelper
- ]);
- }
-
- BackendImpact _lazyField;
-
- BackendImpact get lazyField {
- return _lazyField ??= BackendImpact(staticUses: [
+ late final BackendImpact lazyField = BackendImpact(
+ staticUses: [
_commonElements.cyclicThrowHelper,
_commonElements.throwLateFieldADI,
- ]);
- }
+ ],
+ );
- BackendImpact _typeLiteral;
-
- BackendImpact get typeLiteral {
- return _typeLiteral ??= BackendImpact(instantiatedClasses: [
- _commonElements.typeLiteralClass
- ], staticUses: [
+ late final BackendImpact typeLiteral = BackendImpact(
+ instantiatedClasses: [_commonElements.typeLiteralClass],
+ staticUses: [
_commonElements.createRuntimeType,
_commonElements.typeLiteralMaker,
- ]);
- }
+ ],
+ );
- BackendImpact _stackTraceInCatch;
+ late final BackendImpact stackTraceInCatch = BackendImpact(
+ instantiatedClasses: [_commonElements.stackTraceHelperClass],
+ staticUses: [_commonElements.traceFromException],
+ );
- BackendImpact get stackTraceInCatch {
- return _stackTraceInCatch ??= BackendImpact(
- instantiatedClasses: [_commonElements.stackTraceHelperClass],
- staticUses: [_commonElements.traceFromException]);
- }
+ late final BackendImpact syncForIn = BackendImpact(
+ // The SSA builder recognizes certain for-in loops and can generate
+ // calls to throwConcurrentModificationError.
+ staticUses: [_commonElements.checkConcurrentModificationError],
+ );
- BackendImpact _syncForIn;
-
- BackendImpact get syncForIn {
- return _syncForIn ??= BackendImpact(
- // The SSA builder recognizes certain for-in loops and can generate
- // calls to throwConcurrentModificationError.
- staticUses: [_commonElements.checkConcurrentModificationError]);
- }
-
- BackendImpact _typeVariableExpression;
-
- BackendImpact get typeVariableExpression {
- return _typeVariableExpression ??= BackendImpact(staticUses: [
+ late final BackendImpact typeVariableExpression = BackendImpact(
+ staticUses: [
_commonElements.setArrayType,
_commonElements.createRuntimeType
- ], otherImpacts: [
+ ],
+ otherImpacts: [
listValues,
getRuntimeTypeArgument,
_needsInt('Needed for accessing a type variable literal on this.')
- ]);
- }
+ ],
+ );
- BackendImpact _typeCheck;
+ late final BackendImpact typeCheck =
+ BackendImpact(otherImpacts: [boolValues, newRtiImpact]);
- BackendImpact get typeCheck {
- return _typeCheck ??=
- BackendImpact(otherImpacts: [boolValues, newRtiImpact]);
- }
-
- BackendImpact _genericTypeCheck;
-
- BackendImpact get genericTypeCheck {
- return _genericTypeCheck ??= BackendImpact(staticUses: [
+ late final BackendImpact genericTypeCheck = BackendImpact(
+ staticUses: [
// TODO(johnniwinther): Investigate why this is needed.
_commonElements.setArrayType,
- ], otherImpacts: [
+ ],
+ otherImpacts: [
listValues,
getRuntimeTypeArgument,
newRtiImpact,
- ]);
- }
+ ],
+ );
- BackendImpact _genericIsCheck;
+ late final BackendImpact genericIsCheck =
+ BackendImpact(otherImpacts: [intValues, newRtiImpact]);
- BackendImpact get genericIsCheck {
- return _genericIsCheck ??=
- BackendImpact(otherImpacts: [intValues, newRtiImpact]);
- }
+ late final BackendImpact typeVariableTypeCheck =
+ BackendImpact(staticUses: [], otherImpacts: [newRtiImpact]);
- BackendImpact _typeVariableTypeCheck;
+ late final BackendImpact functionTypeCheck = BackendImpact(
+ staticUses: [/*helpers.functionTypeTestMetaHelper*/],
+ otherImpacts: [newRtiImpact],
+ );
- BackendImpact get typeVariableTypeCheck {
- return _typeVariableTypeCheck ??=
- BackendImpact(staticUses: [], otherImpacts: [newRtiImpact]);
- }
+ late final BackendImpact futureOrTypeCheck = BackendImpact(
+ staticUses: [],
+ otherImpacts: [newRtiImpact],
+ );
- BackendImpact _functionTypeCheck;
-
- BackendImpact get functionTypeCheck {
- return _functionTypeCheck ??= BackendImpact(
- staticUses: [/*helpers.functionTypeTestMetaHelper*/],
- otherImpacts: [newRtiImpact]);
- }
-
- BackendImpact _futureOrTypeCheck;
-
- BackendImpact get futureOrTypeCheck {
- return _futureOrTypeCheck ??=
- BackendImpact(staticUses: [], otherImpacts: [newRtiImpact]);
- }
-
- BackendImpact _nativeTypeCheck;
-
- BackendImpact get nativeTypeCheck {
- return _nativeTypeCheck ??= BackendImpact(staticUses: [
+ late final BackendImpact nativeTypeCheck = BackendImpact(
+ staticUses: [
// We will need to add the "$is" and "$as" properties on the
// JavaScript object prototype, so we make sure
// [:defineProperty:] is compiled.
_commonElements.defineProperty
- ], otherImpacts: [
- newRtiImpact
- ]);
- }
+ ],
+ otherImpacts: [newRtiImpact],
+ );
- BackendImpact _closure;
+ late final BackendImpact closure = BackendImpact(
+ instantiatedClasses: [_commonElements.functionClass],
+ );
- BackendImpact get closure {
- return _closure ??=
- BackendImpact(instantiatedClasses: [_commonElements.functionClass]);
- }
+ late final BackendImpact interceptorUse = BackendImpact(
+ staticUses: [_commonElements.getNativeInterceptorMethod],
+ instantiatedClasses: [
+ _commonElements.jsJavaScriptObjectClass,
+ _commonElements.jsLegacyJavaScriptObjectClass,
+ _commonElements.jsPlainJavaScriptObjectClass,
+ _commonElements.jsJavaScriptFunctionClass
+ ],
+ features: EnumSet<BackendFeature>.fromValues([
+ BackendFeature.needToInitializeDispatchProperty,
+ BackendFeature.needToInitializeIsolateAffinityTag
+ ], fixed: true),
+ );
- BackendImpact _interceptorUse;
+ late final BackendImpact allowInterop = BackendImpact(
+ staticUses: [
+ _commonElements.jsAllowInterop1!,
+ _commonElements.jsAllowInterop2!,
+ ],
+ features: EnumSet<BackendFeature>.fromValues([
+ BackendFeature.needToInitializeIsolateAffinityTag,
+ ], fixed: true),
+ );
- BackendImpact get interceptorUse {
- return _interceptorUse ??= BackendImpact(
- staticUses: [
- _commonElements.getNativeInterceptorMethod
- ],
- instantiatedClasses: [
- _commonElements.jsJavaScriptObjectClass,
- _commonElements.jsLegacyJavaScriptObjectClass,
- _commonElements.jsPlainJavaScriptObjectClass,
- _commonElements.jsJavaScriptFunctionClass
- ],
- features: EnumSet<BackendFeature>.fromValues([
- BackendFeature.needToInitializeDispatchProperty,
- BackendFeature.needToInitializeIsolateAffinityTag
- ], fixed: true));
- }
+ late final BackendImpact numClasses = BackendImpact(
+ // The backend will try to optimize number operations and use the
+ // `iae` helper directly.
+ globalUses: [_commonElements.throwIllegalArgumentException],
+ );
- BackendImpact _allowInterop;
+ late final BackendImpact listOrStringClasses = BackendImpact(
+ // The backend will try to optimize array and string access and use the
+ // `ioore` and `iae` _commonElements directly.
+ globalUses: [
+ _commonElements.throwIndexOutOfRangeException,
+ _commonElements.throwIllegalArgumentException
+ ],
+ );
- BackendImpact get allowInterop => _allowInterop ??= BackendImpact(
- staticUses: [
- _commonElements.jsAllowInterop1,
- _commonElements.jsAllowInterop2,
- ],
- features: EnumSet<BackendFeature>.fromValues([
- BackendFeature.needToInitializeIsolateAffinityTag,
- ], fixed: true));
-
- BackendImpact _numClasses;
-
- BackendImpact get numClasses {
- return _numClasses ??= BackendImpact(
- // The backend will try to optimize number operations and use the
- // `iae` helper directly.
- globalUses: [_commonElements.throwIllegalArgumentException]);
- }
-
- BackendImpact _listOrStringClasses;
-
- BackendImpact get listOrStringClasses {
- return _listOrStringClasses ??= BackendImpact(
- // The backend will try to optimize array and string access and use the
- // `ioore` and `iae` _commonElements directly.
- globalUses: [
- _commonElements.throwIndexOutOfRangeException,
- _commonElements.throwIllegalArgumentException
- ]);
- }
-
- BackendImpact _functionClass;
-
- BackendImpact get functionClass {
- return _functionClass ??= BackendImpact(globalClasses: [
+ late final BackendImpact functionClass = BackendImpact(
+ globalClasses: [
_commonElements.closureClass,
_commonElements.closureClass0Args,
_commonElements.closureClass2Args,
- ]);
- }
+ ],
+ );
- BackendImpact _mapClass;
+ late final BackendImpact mapClass = BackendImpact(
+ // The backend will use a literal list to initialize the entries of the map.
+ globalClasses: [_commonElements.listClass, _commonElements.mapLiteralClass],
+ );
- BackendImpact get mapClass {
- return _mapClass ??= BackendImpact(
- // The backend will use a literal list to initialize the entries
- // of the map.
- globalClasses: [
- _commonElements.listClass,
- _commonElements.mapLiteralClass
- ]);
- }
+ late final BackendImpact setClass = BackendImpact(
+ globalClasses: [
+ // The backend will use a literal list to initialize the entries of the
+ // set.
+ _commonElements.listClass,
+ _commonElements.setLiteralClass,
+ ],
+ );
- BackendImpact _setClass;
+ late final BackendImpact boundClosureClass = BackendImpact(
+ globalClasses: [_commonElements.boundClosureClass],
+ );
- BackendImpact get setClass => _setClass ??= BackendImpact(globalClasses: [
- // The backend will use a literal list to initialize the entries
- // of the set.
- _commonElements.listClass,
- _commonElements.setLiteralClass,
- ]);
-
- BackendImpact _boundClosureClass;
-
- BackendImpact get boundClosureClass {
- return _boundClosureClass ??=
- BackendImpact(globalClasses: [_commonElements.boundClosureClass]);
- }
-
- BackendImpact _nativeOrExtendsClass;
-
- BackendImpact get nativeOrExtendsClass {
- return _nativeOrExtendsClass ??= BackendImpact(globalUses: [
- _commonElements.getNativeInterceptorMethod
- ], globalClasses: [
+ late final BackendImpact nativeOrExtendsClass = BackendImpact(
+ globalUses: [_commonElements.getNativeInterceptorMethod],
+ globalClasses: [
_commonElements.jsInterceptorClass,
_commonElements.jsJavaScriptObjectClass,
_commonElements.jsLegacyJavaScriptObjectClass,
_commonElements.jsPlainJavaScriptObjectClass,
_commonElements.jsJavaScriptFunctionClass
- ]);
- }
+ ],
+ );
- BackendImpact _mapLiteralClass;
-
- BackendImpact get mapLiteralClass {
- return _mapLiteralClass ??= BackendImpact(globalUses: [
+ late final BackendImpact mapLiteralClass = BackendImpact(
+ globalUses: [
_commonElements.mapLiteralConstructor,
_commonElements.mapLiteralConstructorEmpty,
_commonElements.mapLiteralUntypedMaker,
_commonElements.mapLiteralUntypedEmptyMaker
- ]);
- }
+ ],
+ );
- BackendImpact _setLiteralClass;
+ late final BackendImpact setLiteralClass = BackendImpact(
+ globalUses: [
+ _commonElements.setLiteralConstructor,
+ _commonElements.setLiteralConstructorEmpty,
+ _commonElements.setLiteralUntypedMaker,
+ _commonElements.setLiteralUntypedEmptyMaker,
+ ],
+ );
- BackendImpact get setLiteralClass =>
- _setLiteralClass ??= BackendImpact(globalUses: [
- _commonElements.setLiteralConstructor,
- _commonElements.setLiteralConstructorEmpty,
- _commonElements.setLiteralUntypedMaker,
- _commonElements.setLiteralUntypedEmptyMaker,
- ]);
+ late final BackendImpact closureClass = BackendImpact(
+ globalUses: [_commonElements.closureFromTearOff],
+ );
- BackendImpact _closureClass;
-
- BackendImpact get closureClass {
- return _closureClass ??=
- BackendImpact(globalUses: [_commonElements.closureFromTearOff]);
- }
-
- BackendImpact _listClasses;
-
- BackendImpact get listClasses {
- return _listClasses ??= BackendImpact(
- // Literal lists can be translated into calls to these functions:
- globalUses: [
- _commonElements.jsArrayTypedConstructor,
- _commonElements.setArrayType,
- ]);
- }
-
- BackendImpact _jsIndexingBehavior;
-
- BackendImpact get jsIndexingBehavior {
- return _jsIndexingBehavior ??= BackendImpact(
- // These two _commonElements are used by the emitter and the codegen.
- // Because we cannot enqueue elements at the time of emission,
- // we make sure they are always generated.
- globalUses: [_commonElements.isJsIndexable]);
- }
-
- BackendImpact _traceHelper;
-
- BackendImpact get traceHelper {
- return _traceHelper ??=
- BackendImpact(globalUses: [_commonElements.traceHelper]);
- }
-
- BackendImpact _assertUnreachable;
-
- BackendImpact get assertUnreachable {
- return _assertUnreachable ??=
- BackendImpact(globalUses: [_commonElements.assertUnreachableMethod]);
- }
-
- BackendImpact _runtimeTypeSupport;
-
- BackendImpact get runtimeTypeSupport {
- return _runtimeTypeSupport ??= BackendImpact(globalClasses: [
- _commonElements.listClass
- ], globalUses: [
+ late final BackendImpact listClasses = BackendImpact(
+ // Literal lists can be translated into calls to these functions:
+ globalUses: [
+ _commonElements.jsArrayTypedConstructor,
_commonElements.setArrayType,
- ], otherImpacts: [
- getRuntimeTypeArgument,
- computeSignature
- ]);
- }
+ ],
+ );
- BackendImpact _deferredLoading;
+ late final BackendImpact jsIndexingBehavior = BackendImpact(
+ // These two _commonElements are used by the emitter and the codegen.
+ // Because we cannot enqueue elements at the time of emission,
+ // we make sure they are always generated.
+ globalUses: [_commonElements.isJsIndexable],
+ );
- BackendImpact get deferredLoading {
- return _deferredLoading ??=
- BackendImpact(globalUses: [_commonElements.checkDeferredIsLoaded],
- // Also register the types of the arguments passed to this method.
- globalClasses: [_commonElements.stringClass]);
- }
+ late final BackendImpact traceHelper = BackendImpact(
+ globalUses: [_commonElements.traceHelper],
+ );
- BackendImpact _noSuchMethodSupport;
+ late final BackendImpact assertUnreachable = BackendImpact(
+ globalUses: [_commonElements.assertUnreachableMethod],
+ );
- BackendImpact get noSuchMethodSupport {
- return _noSuchMethodSupport ??= BackendImpact(globalUses: [
+ late final BackendImpact runtimeTypeSupport = BackendImpact(
+ globalClasses: [_commonElements.listClass],
+ globalUses: [
+ _commonElements.setArrayType,
+ ],
+ otherImpacts: [getRuntimeTypeArgument, computeSignature],
+ );
+
+ late final BackendImpact deferredLoading = BackendImpact(
+ globalUses: [_commonElements.checkDeferredIsLoaded],
+ // Also register the types of the arguments passed to this method.
+ globalClasses: [_commonElements.stringClass],
+ );
+
+ late final BackendImpact noSuchMethodSupport = BackendImpact(
+ globalUses: [
_commonElements.createInvocationMirror,
_commonElements.createUnmangledInvocationMirror
- ], dynamicUses: [
- Selectors.noSuchMethod_
- ]);
- }
-
- BackendImpact _loadLibrary;
+ ],
+ dynamicUses: [Selectors.noSuchMethod_],
+ );
/// Backend impact for accessing a `loadLibrary` function on a deferred
/// prefix.
- BackendImpact get loadLibrary {
- return _loadLibrary ??= BackendImpact(globalUses: [
+ late final BackendImpact loadLibrary = BackendImpact(
+ globalUses: [
_commonElements.loadDeferredLibrary,
- ]);
- }
-
- BackendImpact _memberClosure;
+ ],
+ );
/// Backend impact for performing member closurization.
- BackendImpact get memberClosure {
- return _memberClosure ??=
- BackendImpact(globalClasses: [_commonElements.boundClosureClass]);
- }
-
- BackendImpact _staticClosure;
+ late final BackendImpact memberClosure =
+ BackendImpact(globalClasses: [_commonElements.boundClosureClass]);
/// Backend impact for performing closurization of a top-level or static
/// function.
- BackendImpact get staticClosure {
- return _staticClosure ??=
- BackendImpact(globalClasses: [_commonElements.closureClass]);
- }
+ late final BackendImpact staticClosure =
+ BackendImpact(globalClasses: [_commonElements.closureClass]);
final Map<int, BackendImpact> _genericInstantiation = {};
BackendImpact getGenericInstantiation(int typeArgumentCount) =>
- _genericInstantiation[typeArgumentCount] ??= BackendImpact(staticUses: [
- _commonElements.getInstantiateFunction(typeArgumentCount),
- _commonElements.instantiatedGenericFunctionTypeNewRti,
- _commonElements.closureFunctionType,
- ], instantiatedClasses: [
- _commonElements.getInstantiationClass(typeArgumentCount),
- ]);
-
- /// Backend impact for --experiment-new-rti.
- BackendImpact _newRtiImpact;
+ _genericInstantiation[typeArgumentCount] ??= BackendImpact(
+ staticUses: [
+ _commonElements.getInstantiateFunction(typeArgumentCount),
+ _commonElements.instantiatedGenericFunctionTypeNewRti,
+ _commonElements.closureFunctionType,
+ ],
+ instantiatedClasses: [
+ _commonElements.getInstantiationClass(typeArgumentCount),
+ ],
+ );
// TODO(sra): Split into refined impacts.
- BackendImpact get newRtiImpact =>
- _newRtiImpact ??= BackendImpact(staticUses: [
- _commonElements.findType,
- _commonElements.instanceType,
- _commonElements.arrayInstanceType,
- _commonElements.simpleInstanceType,
- _commonElements.rtiEvalMethod,
- _commonElements.rtiBindMethod,
- _commonElements.installSpecializedIsTest,
- _commonElements.generalIsTestImplementation,
- _commonElements.generalAsCheckImplementation,
- _commonElements.installSpecializedAsCheck,
- _commonElements.generalNullableIsTestImplementation,
- _commonElements.generalNullableAsCheckImplementation,
- // Specialized checks.
- _commonElements.specializedIsBool,
- _commonElements.specializedAsBool,
- _commonElements.specializedAsBoolLegacy,
- _commonElements.specializedAsBoolNullable,
- // no specializedIsDouble.
- _commonElements.specializedAsDouble,
- _commonElements.specializedAsDoubleLegacy,
- _commonElements.specializedAsDoubleNullable,
- _commonElements.specializedIsInt,
- _commonElements.specializedAsInt,
- _commonElements.specializedAsIntLegacy,
- _commonElements.specializedAsIntNullable,
- _commonElements.specializedIsNum,
- _commonElements.specializedAsNum,
- _commonElements.specializedAsNumLegacy,
- _commonElements.specializedAsNumNullable,
- _commonElements.specializedIsString,
- _commonElements.specializedAsString,
- _commonElements.specializedAsStringLegacy,
- _commonElements.specializedAsStringNullable,
- _commonElements.specializedIsTop,
- _commonElements.specializedAsTop,
- _commonElements.specializedIsObject,
- _commonElements.specializedAsObject,
- ], globalClasses: [
- _commonElements.closureClass, // instanceOrFunctionType uses this.
- ]);
-
- BackendImpact _rtiAddRules;
+ late final BackendImpact newRtiImpact = BackendImpact(
+ staticUses: [
+ _commonElements.findType,
+ _commonElements.instanceType,
+ _commonElements.arrayInstanceType,
+ _commonElements.simpleInstanceType,
+ _commonElements.rtiEvalMethod,
+ _commonElements.rtiBindMethod,
+ _commonElements.installSpecializedIsTest,
+ _commonElements.generalIsTestImplementation,
+ _commonElements.generalAsCheckImplementation,
+ _commonElements.installSpecializedAsCheck,
+ _commonElements.generalNullableIsTestImplementation,
+ _commonElements.generalNullableAsCheckImplementation,
+ // Specialized checks.
+ _commonElements.specializedIsBool,
+ _commonElements.specializedAsBool,
+ _commonElements.specializedAsBoolLegacy,
+ _commonElements.specializedAsBoolNullable,
+ // no specializedIsDouble.
+ _commonElements.specializedAsDouble,
+ _commonElements.specializedAsDoubleLegacy,
+ _commonElements.specializedAsDoubleNullable,
+ _commonElements.specializedIsInt,
+ _commonElements.specializedAsInt,
+ _commonElements.specializedAsIntLegacy,
+ _commonElements.specializedAsIntNullable,
+ _commonElements.specializedIsNum,
+ _commonElements.specializedAsNum,
+ _commonElements.specializedAsNumLegacy,
+ _commonElements.specializedAsNumNullable,
+ _commonElements.specializedIsString,
+ _commonElements.specializedAsString,
+ _commonElements.specializedAsStringLegacy,
+ _commonElements.specializedAsStringNullable,
+ _commonElements.specializedIsTop,
+ _commonElements.specializedAsTop,
+ _commonElements.specializedIsObject,
+ _commonElements.specializedAsObject,
+ ],
+ globalClasses: [
+ _commonElements.closureClass, // instanceOrFunctionType uses this.
+ ],
+ );
// TODO(fishythefish): Split into refined impacts.
- BackendImpact get rtiAddRules => _rtiAddRules ??= BackendImpact(globalUses: [
- _commonElements.rtiAddRulesMethod,
- _commonElements.rtiAddErasedTypesMethod,
- if (_options.enableVariance)
- _commonElements.rtiAddTypeParameterVariancesMethod,
- ], otherImpacts: [
- _needsString('Needed to encode the new RTI ruleset.')
- ]);
+ late final BackendImpact rtiAddRules = BackendImpact(
+ globalUses: [
+ _commonElements.rtiAddRulesMethod,
+ _commonElements.rtiAddErasedTypesMethod,
+ if (_options.enableVariance)
+ _commonElements.rtiAddTypeParameterVariancesMethod,
+ ],
+ otherImpacts: [_needsString('Needed to encode the new RTI ruleset.')],
+ );
- BackendImpact _lateFieldReadCheck;
+ late final BackendImpact lateFieldReadCheck = BackendImpact(
+ globalUses: [
+ _commonElements.throwUnnamedLateFieldNI,
+ _commonElements.throwLateFieldNI,
+ ],
+ );
- BackendImpact get lateFieldReadCheck =>
- _lateFieldReadCheck ??= BackendImpact(globalUses: [
- _commonElements.throwUnnamedLateFieldNI,
- _commonElements.throwLateFieldNI,
- ]);
+ late final BackendImpact lateFieldWriteOnceCheck = BackendImpact(
+ globalUses: [
+ _commonElements.throwUnnamedLateFieldAI,
+ _commonElements.throwLateFieldAI,
+ ],
+ );
- BackendImpact _lateFieldWriteOnceCheck;
-
- BackendImpact get lateFieldWriteOnceCheck =>
- _lateFieldWriteOnceCheck ??= BackendImpact(globalUses: [
- _commonElements.throwUnnamedLateFieldAI,
- _commonElements.throwLateFieldAI,
- ]);
-
- BackendImpact _lateFieldInitializeOnceCheck;
-
- BackendImpact get lateFieldInitializeOnceCheck =>
- _lateFieldInitializeOnceCheck ??= BackendImpact(globalUses: [
- _commonElements.throwUnnamedLateFieldADI,
- _commonElements.throwLateFieldADI,
- ]);
+ late final BackendImpact lateFieldInitializeOnceCheck = BackendImpact(
+ globalUses: [
+ _commonElements.throwUnnamedLateFieldADI,
+ _commonElements.throwLateFieldADI,
+ ],
+ );
}
diff --git a/tools/VERSION b/tools/VERSION
index 5848a35..9764d09 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 219
+PRERELEASE 220
PRERELEASE_PATCH 0
\ No newline at end of file