Chromium Code Reviews| Index: pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
| diff --git a/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart b/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
| index 108dc9622433e46388c812c4328fca83a7c50c69..bd1b3a422912eb88dd5216efaacb1d3da772fab9 100644 |
| --- a/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
| +++ b/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
| @@ -18,15 +18,15 @@ import '../constants/values.dart' |
| NullConstantValue, |
| StringConstantValue, |
| TypeConstantValue; |
| -import '../elements/elements.dart' |
| - show ClassElement, FieldElement, LibraryElement, VariableElement; |
| +import '../elements/elements.dart' show ClassElement, FieldElement; |
| import '../elements/entities.dart'; |
| import '../elements/resolution_types.dart' show ResolutionInterfaceType; |
| import '../options.dart'; |
| -import '../universe/use.dart' show StaticUse; |
| +import '../universe/use.dart' show ConstantUse, StaticUse; |
| import '../universe/world_impact.dart' |
| show WorldImpact, StagedWorldImpactBuilder; |
| -import 'js_backend.dart' show JavaScriptBackend; |
| +import 'backend.dart' show JavaScriptBackend; |
| +import 'backend_helpers.dart'; |
| /// Lookup map handling for resolution. |
| class LookupMapLibraryAccess { |
| @@ -46,13 +46,14 @@ class LookupMapLibraryAccess { |
| /// `package:lookup_map/lookup_map.dart`. |
| LibraryEntity lookupMapLibrary; |
| - final StagedWorldImpactBuilder impactBuilder = new StagedWorldImpactBuilder(); |
| + final StagedWorldImpactBuilder _impactBuilder = |
| + new StagedWorldImpactBuilder(); |
| LookupMapLibraryAccess(this._reporter, this._elementEnvironment); |
| /// Compute the [WorldImpact] for the constants registered since last flush. |
| WorldImpact flush() { |
| - return impactBuilder.flush(); |
| + return _impactBuilder.flush(); |
| } |
| /// Initializes this analysis by providing the resolved library. This is |
| @@ -67,7 +68,7 @@ class LookupMapLibraryAccess { |
| _reporter.reportHintMessage( |
| library, MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP); |
| } else { |
| - impactBuilder |
| + _impactBuilder |
| .registerStaticUse(new StaticUse.staticGet(lookupMapVersionVariable)); |
| } |
| } |
| @@ -129,6 +130,8 @@ class LookupMapAnalysis { |
| final CommonElements _commonElements; |
| + final BackendHelpers _helpers; |
| + |
| final BackendClasses _backendClasses; |
| /// The resolved [ClassElement] associated with `LookupMap`. |
| @@ -168,18 +171,24 @@ class LookupMapAnalysis { |
| /// entry with that key. |
| final _pending = <ConstantValue, List<_LookupMapInfo>>{}; |
| - final StagedWorldImpactBuilder impactBuilderForCodegen = |
| + final StagedWorldImpactBuilder _impactBuilder = |
|
Siggi Cherem (dart-lang)
2017/03/14 05:43:59
never mind my comment from the other CL :)
Johnni Winther
2017/03/15 13:15:43
Acknowledged.
|
| new StagedWorldImpactBuilder(); |
| /// Whether the backend is currently processing the codegen queue. |
| bool _inCodegen = false; |
| - LookupMapAnalysis(this._backend, this._options, this._reporter, |
| - this._elementEnvironment, this._commonElements, this._backendClasses); |
| + LookupMapAnalysis( |
| + this._backend, |
| + this._options, |
| + this._reporter, |
| + this._elementEnvironment, |
| + this._commonElements, |
| + this._helpers, |
| + this._backendClasses); |
| /// Compute the [WorldImpact] for the constants registered since last flush. |
| WorldImpact flush() { |
| - return impactBuilderForCodegen.flush(); |
| + return _impactBuilder.flush(); |
| } |
| /// Whether this analysis and optimization is enabled. |
| @@ -314,9 +323,10 @@ class LookupMapAnalysis { |
| // Note: this call was needed to generate correct code for |
| // type_lookup_map/generic_type_test |
| // TODO(sigmund): can we get rid of this? |
| - _backend.computeImpactForInstantiatedConstantType( |
| - _backendClasses.typeType, impactBuilderForCodegen, |
| - forResolution: false); |
| + _impactBuilder.registerStaticUse(new StaticUse.staticInvoke( |
|
Siggi Cherem (dart-lang)
2017/03/14 05:43:59
in any way does the move to impacts address the TO
Johnni Winther
2017/03/15 13:15:43
It doesn't :( I'm still investigating.
|
| + // TODO(johnniwinther): Find the right [CallStructure]. |
| + _helpers.createRuntimeType, |
|
Siggi Cherem (dart-lang)
2017/03/14 05:43:59
I thought this would actually register typeType as
Johnni Winther
2017/03/15 13:15:43
This is the inlined version of computeImpactForIns
|
| + null)); |
| _addGenerics(arg); |
| } |
| } |
| @@ -455,9 +465,8 @@ class _LookupMapInfo { |
| assert(!usedEntries.containsKey(key)); |
| ConstantValue constant = unusedEntries.remove(key); |
| usedEntries[key] = constant; |
| - analysis._backend.computeImpactForCompileTimeConstant( |
| - constant, analysis.impactBuilderForCodegen, |
| - forResolution: false); |
| + analysis._impactBuilder |
| + .registerConstantUse(new ConstantUse.lookupMap(constant)); |
| } |
| /// Restores [original] to contain all of the entries marked as possibly used. |