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

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

Issue 16817002: Be smarter about when disabling tree-shaking. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address comments Created 7 years, 6 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 419f5214d443bf1ee8ae8ddb4c0e4a9c19e77495..87e729467a09f6bce94643e276444514b407aaa6 100644
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -75,7 +75,6 @@ class JavaScriptBackend extends Backend {
HType mutableArrayType;
HType fixedArrayType;
HType extendableArrayType;
-
// TODO(9577): Make it so that these are not needed when there are no native
// classes.
@@ -156,6 +155,14 @@ class JavaScriptBackend extends Backend {
final RuntimeTypes rti;
+ /// Holds the method "disableTreeShaking" in js_mirrors when
+ /// dart:mirrors has been loaded.
+ FunctionElement disableTreeShakingMarker;
+
+ /// Holds the method "preserveNames" in js_mirrors when
+ /// dart:mirrors has been loaded.
+ FunctionElement preserveNamesMarker;
+
JavaScriptBackend(Compiler compiler, bool generateSourceMap, bool disableEval)
: namer = determineNamer(compiler),
usedInterceptors = new Set<Selector>(),
@@ -1114,4 +1121,19 @@ class JavaScriptBackend extends Backend {
ClassElement get typeImplementation => typeLiteralClass;
ClassElement get boolImplementation => jsBoolClass;
ClassElement get nullImplementation => jsNullClass;
+
+ void enableMirrors() {
+ LibraryElement library = compiler.libraries['dart:_js_mirrors'];
+ disableTreeShakingMarker =
+ library.find(const SourceString('disableTreeShaking'));
+ preserveNamesMarker =
+ library.find(const SourceString('preserveNames'));
+ }
+
+ void registerStaticUse(Element element, Enqueuer enqueuer) {
+ if (element == disableTreeShakingMarker) {
+ enqueuer.enqueueEverything();
+ } else if (element == preserveNamesMarker) {
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698