| 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) {
|
| + }
|
| + }
|
| }
|
|
|