Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(529)

Unified Diff: dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart

Issue 22301009: Retain fewer names for reflection. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index b2175c53090a95f4f25ac2adb7729698fd04cc82..5084f28b8404e1f8e397d74fa90f1d0e75dd90a8 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -1395,17 +1395,21 @@ class JavaScriptBackend extends Backend {
/// Called when [:const Symbol(name):] is seen.
void registerConstSymbol(String name, TreeElements elements) {
+ symbolsUsed.add(name);
}
/// Called when [:new Symbol(...):] is seen.
void registerNewSymbol(TreeElements elements) {
}
- bool retainGetter(Element element) => isTreeShakingDisabled;
+ bool retainGetter(Element element) => isNeededForReflection(element);
Johnni Winther 2013/08/07 10:47:34 Rename these three to shouldRetainX, isXRetained o
ahe 2013/08/07 14:03:17 Done.
- bool retainSetter(Element element) => isTreeShakingDisabled;
+ bool retainSetter(Element element) => isNeededForReflection(element);
- bool retainName(SourceString name) => mustPreserveNames;
+ bool retainName(SourceString name) {
+ if (name == const SourceString('')) return false;
+ return symbolsUsed.contains(name.slowToString());
+ }
bool get rememberLazies => isTreeShakingDisabled;
@@ -1475,12 +1479,20 @@ class JavaScriptBackend extends Backend {
if (metaTargets != null) metaTargetsUsed.addAll(metaTargets);
}
+ bool rememberNameOf(Element element) {
Johnni Winther 2013/08/07 10:47:34 Ditto.
ahe 2013/08/07 14:03:17 Done.
+ symbolsUsed.add(element.name.slowToString());
+ if (element.isConstructor()) {
+ symbolsUsed.add(element.getEnclosingClass().name.slowToString());
+ }
+ return true;
+ }
+
bool isNeededForReflection(Element element) {
// TODO(ahe): Implement this.
- if (!metaTargetsUsed.isEmpty) return true;
+ if (!metaTargetsUsed.isEmpty) return rememberNameOf(element);
if (!targetsUsed.isEmpty) {
for (Element e = element; e != null; e = e.enclosingElement) {
- if (targetsUsed.contains(e)) return true;
+ if (targetsUsed.contains(e)) return rememberNameOf(element);
}
}
return false;

Powered by Google App Engine
This is Rietveld 408576698