DescriptionRename 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=
Committed: https://code.google.com/p/dart/source/detail?r=15005
Patch Set 1 #
Total comments: 14
Messages
Total messages: 4 (0 generated)
|