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

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

Issue 21242002: Retain elements a finer granularity than library. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Variable initialized too early. 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 cc7b0fbe0937b13079ff7f17111525ae316fe565..b2175c53090a95f4f25ac2adb7729698fd04cc82 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -1462,9 +1462,14 @@ class JavaScriptBackend extends Backend {
Set<Element> metaTargets) {
if (symbols != null) symbolsUsed.addAll(symbols);
if (targets != null) {
- for (Element element in targets) {
- // TODO(ahe): Implement finer granularity.
- targetsUsed.add(element.getLibrary());
+ for (Element target in targets) {
+ if (target.isAbstractField()) {
+ AbstractFieldElement field = target;
+ targetsUsed.add(field.getter);
+ targetsUsed.add(field.setter);
+ } else {
+ targetsUsed.add(target);
+ }
}
}
if (metaTargets != null) metaTargetsUsed.addAll(metaTargets);
@@ -1473,7 +1478,11 @@ class JavaScriptBackend extends Backend {
bool isNeededForReflection(Element element) {
// TODO(ahe): Implement this.
if (!metaTargetsUsed.isEmpty) return true;
- if (targetsUsed.contains(element.getLibrary())) return true;
+ if (!targetsUsed.isEmpty) {
+ for (Element e = element; e != null; e = e.enclosingElement) {
+ if (targetsUsed.contains(e)) return true;
+ }
+ }
return false;
}
}

Powered by Google App Engine
This is Rietveld 408576698