Files
sdk/utils/compiler
erikcorry@google.com fe0c55a728 Rename classes, methods and fields when minifying
This is a retry of a change that was reverted due to test failures.  The
difference to last time you saw this is:

diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
index 9de758e..19fb966 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/backend.dart
@@ -689,9 +689,9 @@ class JavaScriptBackend extends Backend {
   }

   static Namer determineNamer(Compiler compiler) {
-    // TODO(erikcorry): Use the MinifyNamer depending on
-    // compiler.enableMinification.
-    return new Namer(compiler);
+    return compiler.enableMinification ?
+        new MinifyNamer(compiler) :
+        new Namer(compiler);
   }

   Element get cyclicThrowHelper {
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
index 9056858..9485bc1 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
@@ -795,7 +795,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) {
       additionalArgument = ", '${namer.operatorIs(type.element)}'";
     }
     String setterName =
-        namer.setterName(member.getLibrary(), new SourceString(accessorName));
+        namer.publicSetterName(new SourceString(accessorName));
     buffer.add("$setterName: function(v) { "
         "this.$fieldName = $helperName(v$additionalArgument); }");
   }
@@ -1348,11 +1348,14 @@ $classesCollector.$mangledName = {'':
       }
       String internalName = namer.instanceMethodInvocationName(
           selector.library, new SourceString(methodName), selector);
+      Element createInvocationMirror =
+          compiler.findHelper(const SourceString('createInvocationMirror'));
       CodeBuffer buffer = new CodeBuffer();
       buffer.add('function($args) {\n');
       buffer.add('  return this.$noSuchMethodName('
-                     '\$.createInvocationMirror("$methodName", "$internalName",'
-                     ' $type, [$args], [$argNames]));\n');
+                        '${namer.isolateAccess(createInvocationMirror)}('
+                            '"$methodName", "$internalName",'
+                            '$type, [$args], [$argNames]));\n');
       buffer.add(' }');
       return buffer;
     }
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart b/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart
index 4ca0554..cd0529f 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart
@@ -16,7 +16,14 @@ class MinifyNamer extends Namer {
   const ALPHANUMERIC_CHARACTERS = 62;  // a-zA-Z0-9.

   String getFreshName(String proposedName, Set<String> usedNames) {
-    var freshName = _getUnusedName(proposedName, usedNames);
+    var freshName;
+    if (proposedName.startsWith(r'call$')) {
+      // We don't mangle the closure invoking function name because it is
+      // generated in applyFunction.
+      freshName = proposedName;
+    } else {
+      freshName = _getUnusedName(proposedName, usedNames);
+    }
     usedNames.add(freshName);
     return freshName;
   }
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart b/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart
index c8522a0..9f5b65d 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/namer.dart
@@ -211,6 +211,13 @@ class Namer {
     return 'get\$$fieldName';
   }

+  String publicSetterName(SourceString name) {
+    // We dynamically create setter from the field-name. The setter name must
+    // therefore be derived from the instance field-name.
+    String fieldName = name.slowToString();
+    return 'set\$$fieldName';
+  }
+
   String getMappedGlobalName(String proposedName) {
     var newName = globalNameMap[proposedName];
     if (newName == null) {
diff --git a/sdk/lib/_internal/compiler/implementation/lib/isolate_patch.dart b/sdk/lib/_internal/compiler/implementation/lib/isolate_patch.dart
index 1c9d772..1d50aa4 100644
--- a/sdk/lib/_internal/compiler/implementation/lib/isolate_patch.dart
+++ b/sdk/lib/_internal/compiler/implementation/lib/isolate_patch.dart
@@ -188,9 +188,9 @@ class _Manager {
   }

   void _nativeDetectEnvironment() {
-    JS("void", r"#.isWorker = $isWorker", this);
-    JS("void", r"#.supportsWorkers = $supportsWorkers", this);
-    JS("void", r"#.fromCommandLine = typeof(window) == 'undefined'", this);
+    JS("void", r"# = $isWorker", isWorker);
+    JS("void", r"# = $supportsWorkers", supportsWorkers);
+    JS("void", r"# = typeof(window) == 'undefined'", fromCommandLine);
   }

   void _nativeInitWorkerMessageHandler() {

R=floitsch@google.com
BUG=

Review URL: https://codereview.chromium.org//11364213

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@15005 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-16 10:41:07 +00:00
..