Skip to content

Commit 996277d

Browse files
sigmundchcommit-bot@chromium.org
authored andcommitted
Entity-fy the non-frequence minifier so it can be supported under the CFE.
This minifier is used only when passing --no-frequency-based-minification. Closes #32600 Bug: #32600 Change-Id: I91ae293c78f4cfe3dd0421493162d9e5744a9217 Reviewed-on: https://dart-review.googlesource.com/47303 Reviewed-by: Emily Fortuna <[email protected]> Commit-Queue: Sigmund Cherem <[email protected]>
1 parent 0e76439 commit 996277d

File tree

3 files changed

+38
-32
lines changed

3 files changed

+38
-32
lines changed

pkg/compiler/lib/src/js_backend/field_naming_mixin.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,10 @@ class _MixinFieldNamingScope extends _FieldNamingScope {
207207
@override
208208
Map<Entity, jsAst.Name> get names => registry.globalNames;
209209

210-
_MixinFieldNamingScope.mixin(ClassElement cls, _FieldNamingRegistry registry)
210+
_MixinFieldNamingScope.mixin(ClassEntity cls, _FieldNamingRegistry registry)
211211
: super.rootScope(cls, registry);
212212

213-
_MixinFieldNamingScope.mixedIn(MixinApplicationElement container,
213+
_MixinFieldNamingScope.mixedIn(ClassEntity container,
214214
_FieldNamingScope superScope, _FieldNamingRegistry registry)
215215
: super.inherit(container, superScope, registry);
216216

pkg/compiler/lib/src/js_backend/minify_namer.dart

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -316,37 +316,42 @@ class MinifyNamer extends Namer
316316
/// constructors declared along the inheritance chain.
317317
class _ConstructorBodyNamingScope {
318318
final int _startIndex;
319-
final List _constructors;
320-
319+
final List<ConstructorEntity> _constructors;
321320
int get numberOfConstructors => _constructors.length;
322321

323-
_ConstructorBodyNamingScope.rootScope(ClassElement cls)
322+
_ConstructorBodyNamingScope.rootScope(
323+
ClassEntity cls, ElementEnvironment environment)
324324
: _startIndex = 0,
325-
_constructors = cls.constructors.toList(growable: false);
325+
_constructors = _getConstructorList(cls, environment);
326326

327-
_ConstructorBodyNamingScope.forClass(
328-
ClassElement cls, _ConstructorBodyNamingScope superScope)
327+
_ConstructorBodyNamingScope.forClass(ClassEntity cls,
328+
_ConstructorBodyNamingScope superScope, ElementEnvironment environment)
329329
: _startIndex = superScope._startIndex + superScope.numberOfConstructors,
330-
_constructors = cls.constructors.toList(growable: false);
330+
_constructors = _getConstructorList(cls, environment);
331331

332332
// Mixin Applications have constructors but we never generate code for them,
333333
// so they do not count in the inheritance chain.
334334
_ConstructorBodyNamingScope.forMixinApplication(
335-
ClassElement cls, _ConstructorBodyNamingScope superScope)
335+
ClassEntity cls, _ConstructorBodyNamingScope superScope)
336336
: _startIndex = superScope._startIndex + superScope.numberOfConstructors,
337337
_constructors = const [];
338338

339-
factory _ConstructorBodyNamingScope(ClassElement cls,
340-
Map<ClassElement, _ConstructorBodyNamingScope> registry) {
339+
factory _ConstructorBodyNamingScope(
340+
ClassEntity cls,
341+
Map<ClassEntity, _ConstructorBodyNamingScope> registry,
342+
ElementEnvironment environment) {
341343
return registry.putIfAbsent(cls, () {
342-
if (cls.superclass == null) {
343-
return new _ConstructorBodyNamingScope.rootScope(cls);
344-
} else if (cls.isMixinApplication) {
345-
return new _ConstructorBodyNamingScope.forMixinApplication(
346-
cls, new _ConstructorBodyNamingScope(cls.superclass, registry));
344+
ClassEntity superclass = environment.getSuperClass(cls);
345+
if (superclass == null) {
346+
return new _ConstructorBodyNamingScope.rootScope(cls, environment);
347+
} else if (environment.isMixinApplication(cls)) {
348+
return new _ConstructorBodyNamingScope.forMixinApplication(cls,
349+
new _ConstructorBodyNamingScope(superclass, registry, environment));
347350
} else {
348351
return new _ConstructorBodyNamingScope.forClass(
349-
cls, new _ConstructorBodyNamingScope(cls.superclass, registry));
352+
cls,
353+
new _ConstructorBodyNamingScope(superclass, registry, environment),
354+
environment);
350355
}
351356
});
352357
}
@@ -356,16 +361,23 @@ class _ConstructorBodyNamingScope {
356361
assert(position >= 0, failedAt(body, "constructor body missing"));
357362
return "@constructorBody@${_startIndex + position}";
358363
}
364+
365+
static List<ConstructorEntity> _getConstructorList(
366+
ClassEntity cls, ElementEnvironment environment) {
367+
var result = <ConstructorEntity>[];
368+
environment.forEachConstructor(cls, result.add);
369+
return result;
370+
}
359371
}
360372

361373
abstract class _MinifyConstructorBodyNamer implements Namer {
362-
Map<ClassElement, _ConstructorBodyNamingScope> _constructorBodyScopes =
363-
new Map<ClassElement, _ConstructorBodyNamingScope>();
374+
Map<ClassEntity, _ConstructorBodyNamingScope> _constructorBodyScopes =
375+
new Map<ClassEntity, _ConstructorBodyNamingScope>();
364376

365377
@override
366378
jsAst.Name constructorBodyName(ConstructorBodyEntity method) {
367379
_ConstructorBodyNamingScope scope = new _ConstructorBodyNamingScope(
368-
method.enclosingClass, _constructorBodyScopes);
380+
method.enclosingClass, _constructorBodyScopes, elementEnvironment);
369381
String key = scope.constructorBodyKeyFor(method);
370382
return _disambiguateMemberByKey(
371383
key, () => _proposeNameForConstructorBody(method));

pkg/compiler/lib/src/js_backend/namer.dart

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,7 @@ import '../common/names.dart' show Identifiers, Names, Selectors;
1515
import '../constants/values.dart';
1616
import '../common_elements.dart' show CommonElements, ElementEnvironment;
1717
import '../diagnostics/invariant.dart' show DEBUG_MODE;
18-
import '../elements/elements.dart'
19-
show
20-
ClassElement,
21-
Element,
22-
Elements,
23-
MemberElement,
24-
MixinApplicationElement;
18+
import '../elements/elements.dart' show Element, Elements, MemberElement;
2519
import '../elements/entities.dart';
2620
import '../elements/entity_utils.dart' as utils;
2721
import '../elements/jumps.dart';
@@ -578,7 +572,7 @@ class Namer {
578572
_literalLazyGetterPrefix = new StringBackedName(lazyGetterPrefix);
579573
}
580574

581-
ElementEnvironment get _elementEnvironment => _closedWorld.elementEnvironment;
575+
ElementEnvironment get elementEnvironment => _closedWorld.elementEnvironment;
582576

583577
CommonElements get _commonElements => _closedWorld.commonElements;
584578

@@ -983,10 +977,10 @@ class Namer {
983977
bool isPrivate = Name.isPrivateName(fieldName);
984978
LibraryEntity memberLibrary = element.library;
985979
ClassEntity lookupClass =
986-
_elementEnvironment.getSuperClass(element.enclosingClass);
980+
elementEnvironment.getSuperClass(element.enclosingClass);
987981
while (lookupClass != null) {
988982
MemberEntity foundMember =
989-
_elementEnvironment.lookupLocalClassMember(lookupClass, fieldName);
983+
elementEnvironment.lookupLocalClassMember(lookupClass, fieldName);
990984
if (foundMember != null) {
991985
if (foundMember.isField) {
992986
if (!isPrivate || memberLibrary == foundMember.library) {
@@ -996,7 +990,7 @@ class Namer {
996990
}
997991
}
998992
}
999-
lookupClass = _elementEnvironment.getSuperClass(lookupClass);
993+
lookupClass = elementEnvironment.getSuperClass(lookupClass);
1000994
}
1001995
return false;
1002996
}

0 commit comments

Comments
 (0)