Version 2.14.0-242.0.dev
Merge commit '537703439053b64be0a04b4e6f46d4c7ec1a26de' into 'dev'
diff --git a/pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart b/pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart
index a181567..f076a8a 100644
--- a/pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart
+++ b/pkg/compiler/lib/src/js_backend/deferred_holder_expression.dart
@@ -9,7 +9,7 @@
import '../js/js.dart' as js;
import '../serialization/serialization.dart';
import '../util/util.dart';
-import '../js_emitter/model.dart';
+import '../js_emitter/model.dart' show Fragment;
import 'namer.dart';
@@ -230,7 +230,7 @@
// Each resource has a distinct name.
String name;
List<Fragment> fragments;
- Map<Library, List<js.Property>> holderCode;
+ Map<Entity, List<js.Property>> holderCode;
js.Statement _statement;
@override
@@ -507,8 +507,8 @@
void registerHolders() {
// Register all holders used in all [DeferredHolderResource]s.
for (var resource in holderResources) {
- resource.holderCode.forEach((library, properties) {
- String holderName = globalObjectNameForEntity(library.element);
+ resource.holderCode.forEach((entity, properties) {
+ String holderName = globalObjectNameForEntity(entity);
registerHolderUseOrUpdate(resource.name, holderName,
properties: properties);
});
@@ -769,7 +769,7 @@
final List<DeferredHolderResource> holderResources = [];
final Set<String> _uniqueHolders = {};
final List<String> _holders = [];
- final Map<Library, String> _libraryMap = {};
+ final Map<Entity, String> _entityMap = {};
final JCommonElements _commonElements;
LegacyDeferredHolderExpressionFinalizerImpl(this._commonElements) {
@@ -844,9 +844,9 @@
/// Registers an [Entity] with a specific [holder].
void registerHolderUse(String holder, Object data) {
if (_uniqueHolders.add(holder)) _holders.add(holder);
- if (data != null && data is Library) {
- assert(!_libraryMap.containsKey(data) || _libraryMap[data] == holder);
- _libraryMap[data] = holder;
+ if (data != null && data is Entity) {
+ assert(!_entityMap.containsKey(data) || _entityMap[data] == holder);
+ _entityMap[data] = holder;
}
}
@@ -890,9 +890,9 @@
/// Registers all of the holders used by a given [DeferredHolderResource].
void registerHolders(DeferredHolderResource resource) {
- for (var library in resource.holderCode.keys) {
- var holder = globalObjectForLibrary(library.element);
- registerHolderUse(holder, library);
+ for (var entity in resource.holderCode.keys) {
+ var holder = globalObjectForEntity(entity);
+ registerHolderUse(holder, entity);
}
}
@@ -917,9 +917,9 @@
}
final holderCode = resource.holderCode;
- holderCode.forEach((library, properties) {
- assert(_libraryMap.containsKey(library));
- var holder = _libraryMap[library];
+ holderCode.forEach((entity, properties) {
+ assert(_entityMap.containsKey(entity));
+ var holder = _entityMap[entity];
assert(codePerHolder.containsKey(holder));
codePerHolder[holder].addAll(properties);
});
diff --git a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
index bf57340..3cc03f9 100644
--- a/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
+++ b/pkg/compiler/lib/src/js_emitter/startup_emitter/fragment_emitter.dart
@@ -827,7 +827,7 @@
/// Adds code to a finalizer.
void addCodeToFinalizer(void Function(js.Node) addCode, js.Node fragmentCode,
- Map<Library, List<js.Property>> holderCode) {
+ Map<Entity, List<js.Property>> holderCode) {
addCode(fragmentCode);
for (var properties in holderCode.values) {
for (var property in properties) {
@@ -839,7 +839,7 @@
/// Finalizes the code for a fragment, and optionally finalizes holders.
/// Finalizing holders must be the last step of the emitter.
void finalizeCode(String resourceName, js.Node code,
- Map<Library, List<js.Property>> holderCode,
+ Map<Entity, List<js.Property>> holderCode,
{bool finalizeHolders: false}) {
StringReferenceFinalizer stringFinalizer =
StringReferenceFinalizerImpl(_options.enableMinification);
@@ -871,21 +871,23 @@
/// into a map keyed by [Entity] because we don't yet know anything about the
/// structure of the underlying holders and thus we cannot emit this code
/// directly into the ast.
- Map<Library, List<js.Property>> emitHolderCode(List<Library> libraries) {
- Map<Library, List<js.Property>> holderCode = {};
+ Map<Entity, List<js.Property>> emitHolderCode(List<Library> libraries) {
+ Map<Entity, List<js.Property>> holderCode = {};
for (Library library in libraries) {
for (StaticMethod method in library.statics) {
Map<js.Name, js.Expression> propertyMap = emitStaticMethod(method);
propertyMap.forEach((js.Name key, js.Expression value) {
var property = new js.Property(js.quoteName(key), value);
- (holderCode[library] ??= []).add(property);
+ Entity holderKey =
+ method is StaticStubMethod ? method.library : method.element;
+ (holderCode[holderKey] ??= []).add(property);
registerEntityAst(method.element, property, library: library.element);
});
}
for (Class cls in library.classes) {
js.Expression constructor = emitConstructor(cls);
var property = new js.Property(js.quoteName(cls.name), constructor);
- (holderCode[library] ??= []).add(property);
+ (holderCode[cls.element] ??= []).add(property);
registerEntityAst(cls.element, property, library: library.element);
}
}
diff --git a/tools/VERSION b/tools/VERSION
index d064fce..94fff25 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 14
PATCH 0
-PRERELEASE 241
+PRERELEASE 242
PRERELEASE_PATCH 0
\ No newline at end of file