Version 1.5.0-dev.4.17
svn merge -c 37480 https://dart.googlecode.com/svn/branches/bleeding_edge trunk
git-svn-id: http://dart.googlecode.com/svn/trunk@37532 260f80e4-7a28-3924-810f-c04153c831b5
diff --git a/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart b/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
index 79106ff..1786805 100644
--- a/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
+++ b/sdk/lib/_internal/compiler/implementation/inferrer/node_tracer.dart
@@ -110,10 +110,15 @@
addNewEscapeInformation(tracedType);
while (!workList.isEmpty) {
currentUser = workList.removeLast();
- currentUser.users.forEach((TypeInformation info) {
+ int expectedWork = analyzedElements.length + currentUser.users.length;
+ if (expectedWork > MAX_ANALYSIS_COUNT) {
+ bailout('Too many users');
+ break;
+ }
+ for (TypeInformation info in currentUser.users) {
analyzedElements.add(info.owner);
info.accept(this);
- });
+ }
while (!listsToAnalyze.isEmpty) {
analyzeStoredIntoList(listsToAnalyze.removeLast());
}
@@ -121,10 +126,6 @@
analyzeStoredIntoMap(mapsToAnalyze.removeLast());
}
if (!continueAnalyzing) break;
- if (analyzedElements.length > MAX_ANALYSIS_COUNT) {
- bailout('Too many users');
- break;
- }
}
}
diff --git a/tools/VERSION b/tools/VERSION
index ac57cf9..2e55310 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -28,4 +28,4 @@
MINOR 5
PATCH 0
PRERELEASE 4
-PRERELEASE_PATCH 16
+PRERELEASE_PATCH 17