Version 2.12.0-181.0.dev
Merge commit '969ff148d038b64efc7e1edb7c80e6719e29dafc' into 'dev'
diff --git a/pkg/compiler/lib/src/js_model/locals.dart b/pkg/compiler/lib/src/js_model/locals.dart
index e9bcb42..c783b25 100644
--- a/pkg/compiler/lib/src/js_model/locals.dart
+++ b/pkg/compiler/lib/src/js_model/locals.dart
@@ -97,10 +97,8 @@
static const String tag = 'locals-map';
MemberEntity _currentMember;
- final EntityDataMap<JLocal, LocalData> _locals =
- new EntityDataMap<JLocal, LocalData>();
- Map<ir.VariableDeclaration, JLocal> _variableMap =
- <ir.VariableDeclaration, JLocal>{};
+ final EntityDataMap<JLocal, LocalData> _locals = EntityDataMap();
+ Map<ir.VariableDeclaration, JLocal> _variableMap;
Map<ir.TreeNode, JJumpTarget> _jumpTargetMap;
Iterable<ir.BreakStatement> _breaksAsContinue;
@@ -111,22 +109,25 @@
source.begin(tag);
_currentMember = source.readMember();
int localsCount = source.readInt();
- for (int i = 0; i < localsCount; i++) {
- int index = source.readInt();
- String name = source.readStringOrNull();
- bool isRegularParameter = source.readBool();
- ir.VariableDeclaration node = source.readTreeNode();
- JLocal local = new JLocal(name, currentMember,
- isRegularParameter: isRegularParameter);
- LocalData data = new LocalData(node);
- _locals.registerByIndex(index, local, data);
- _variableMap[node] = local;
+ if (localsCount > 0) {
+ _variableMap = {};
+ for (int i = 0; i < localsCount; i++) {
+ int index = source.readInt();
+ String name = source.readStringOrNull();
+ bool isRegularParameter = source.readBool();
+ ir.VariableDeclaration node = source.readTreeNode();
+ JLocal local =
+ JLocal(name, currentMember, isRegularParameter: isRegularParameter);
+ LocalData data = LocalData(node);
+ _locals.registerByIndex(index, local, data);
+ _variableMap[node] = local;
+ }
}
int jumpCount = source.readInt();
if (jumpCount > 0) {
_jumpTargetMap = {};
for (int i = 0; i < jumpCount; i++) {
- JJumpTarget target = new JJumpTarget.readFromDataSource(source);
+ JJumpTarget target = JJumpTarget.readFromDataSource(source);
List<ir.TreeNode> nodes = source.readTreeNodes();
for (ir.TreeNode node in nodes) {
_jumpTargetMap[node] = target;
@@ -134,6 +135,7 @@
}
}
_breaksAsContinue = source.readTreeNodes();
+ if (_breaksAsContinue.isEmpty) _breaksAsContinue = const [];
source.end(tag);
}
@@ -175,7 +177,7 @@
// TODO(johnniwinther): Compute this eagerly from the root of the member.
void _ensureJumpMap(ir.TreeNode node) {
if (_jumpTargetMap == null) {
- JumpVisitor visitor = new JumpVisitor(currentMember);
+ JumpVisitor visitor = JumpVisitor(currentMember);
// Find the root node for the current member.
while (node is! ir.Member) {
@@ -260,10 +262,11 @@
@override
Local getLocalVariable(ir.VariableDeclaration node) {
- return _variableMap.putIfAbsent(node, () {
- JLocal local = new JLocal(node.name, currentMember,
+ final variableMap = _variableMap ??= {};
+ return variableMap.putIfAbsent(node, () {
+ JLocal local = JLocal(node.name, currentMember,
isRegularParameter: node.parent is ir.FunctionNode);
- _locals.register<JLocal, LocalData>(local, new LocalData(node));
+ _locals.register<JLocal, LocalData>(local, LocalData(node));
return local;
});
}
@@ -274,7 +277,7 @@
// TODO(efortuna, johnniwinther): We're not registering the type variables
// like we are for the variable declarations. Is that okay or do we need to
// make TypeVariableLocal a JLocal?
- return new TypeVariableLocal(elementMap.getTypeVariableType(node).element);
+ return TypeVariableLocal(elementMap.getTypeVariableType(node).element);
}
@override
@@ -292,9 +295,8 @@
int jumpIndex = 0;
int labelIndex = 0;
final MemberEntity member;
- final Map<ir.TreeNode, JJumpTarget> jumpTargetMap =
- <ir.TreeNode, JJumpTarget>{};
- final Set<ir.BreakStatement> breaksAsContinue = new Set<ir.BreakStatement>();
+ final Map<ir.TreeNode, JJumpTarget> jumpTargetMap = {};
+ final Set<ir.BreakStatement> breaksAsContinue = {};
JumpVisitor(this.member);
diff --git a/pkg/vm/bin/kernel_service.dart b/pkg/vm/bin/kernel_service.dart
index 13aa646..3a7d5f4 100644
--- a/pkg/vm/bin/kernel_service.dart
+++ b/pkg/vm/bin/kernel_service.dart
@@ -44,8 +44,6 @@
show autoDetectNullSafetyMode, createLoadedLibrariesSet;
import 'package:vm/http_filesystem.dart';
import 'package:vm/target/vm.dart' show VmTarget;
-import 'package:front_end/src/api_prototype/compiler_options.dart'
- show CompilerOptions, parseExperimentalFlags;
final bool verbose = new bool.fromEnvironment('DFE_VERBOSE');
final bool dumpKernel = new bool.fromEnvironment('DFE_DUMP_KERNEL');
diff --git a/tools/VERSION b/tools/VERSION
index 5f3bdcf..50818f4 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 12
PATCH 0
-PRERELEASE 180
+PRERELEASE 181
PRERELEASE_PATCH 0
\ No newline at end of file