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

Unified Diff: dart/sdk/lib/_internal/lib/js_mirrors.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/lib/js_mirrors.dart
diff --git a/dart/sdk/lib/_internal/lib/js_mirrors.dart b/dart/sdk/lib/_internal/lib/js_mirrors.dart
index a4254b888979a2adf0da9dcb54bffeda998f4e2f..18d6e6da2faeb70162aa0ea301a2eaf2b0bad80a 100644
--- a/dart/sdk/lib/_internal/lib/js_mirrors.dart
+++ b/dart/sdk/lib/_internal/lib/js_mirrors.dart
@@ -19,7 +19,18 @@ import 'dart:_js_helper' show
createInvocationMirror;
import 'dart:_interceptors' show Interceptor;
-String getName(Symbol symbol) => n(symbol);
+/// No-op method that is called to inform the compiler that
+/// tree-shaking needs to be disabled.
+disableTreeShaking() => preserveNames();
+
+/// No-op method that is called to inform the compiler that unmangled
+/// named must be preserved.
+preserveNames() {}
+
+String getName(Symbol symbol) {
+ preserveNames();
+ return n(symbol);
+}
final Map<String, String> mangledNames = JsMirrorSystem.computeMangledNames();
@@ -42,6 +53,7 @@ class JsMirrorSystem implements MirrorSystem {
}
static Map<String, List<LibraryMirror>> computeLibrariesByName() {
+ disableTreeShaking();
var result = new Map<String, List<LibraryMirror>>();
var jsLibraries = JS('=List|Null', 'init.libraries');
if (jsLibraries == null) return result;
@@ -61,6 +73,7 @@ class JsMirrorSystem implements MirrorSystem {
}
static Map<String, String> computeMangledNames() {
+ disableTreeShaking();
var mangledNames = JS('', 'init.mangledNames');
var keys = extractKeys(mangledNames);
var result = <String, String>{};
@@ -71,6 +84,7 @@ class JsMirrorSystem implements MirrorSystem {
}
static Map<String, String> computeReflectiveNames() {
+ disableTreeShaking();
var result = <String, String>{};
mangledNames.forEach((String mangledName, String reflectiveName) {
result[reflectiveName] = mangledName;
@@ -200,6 +214,7 @@ ClassMirror reflectType(Type key) {
}
ClassMirror reflectClassByName(Symbol symbol) {
+ disableTreeShaking();
String className = n(symbol);
var constructor = Primitives.getConstructor(className);
if (constructor == null) {
@@ -573,6 +588,7 @@ class JsClosureMirror extends JsInstanceMirror implements ClosureMirror {
JsClosureMirror(reflectee) : super(reflectee);
MethodMirror get function {
+ disableTreeShaking();
// TODO(ahe): What about optional parameters (named or not).
var extractCallName = JS('', r'''
function(reflectee) {

Powered by Google App Engine
This is Rietveld 408576698