Index: sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart |
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart b/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart |
deleted file mode 100644 |
index 8e292b4cf1bcd2c3479bf05d601df4eaa24bd3a1..0000000000000000000000000000000000000000 |
--- a/sdk/lib/_internal/compiler/implementation/js_backend/minify_namer.dart |
+++ /dev/null |
@@ -1,108 +0,0 @@ |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-part of js_backend; |
- |
-/** |
- * Assigns JavaScript identifiers to Dart variables, class-names and members. |
- */ |
-class MinifyNamer extends Namer { |
- MinifyNamer(Compiler compiler) : super(compiler); |
- |
- String get ISOLATE => 'I'; |
- String get ISOLATE_PROPERTIES => 'p'; |
- bool get shouldMinify => true; |
- |
- const ALPHABET_CHARACTERS = 52; // a-zA-Z. |
- const ALPHANUMERIC_CHARACTERS = 62; // a-zA-Z0-9. |
- |
- // You can pass an invalid identifier to this and unlike its non-minifying |
- // counterpart it will never return the proposedName as the new fresh name. |
- String getFreshName(String proposedName, Set<String> usedNames) { |
- var freshName = _getUnusedName(proposedName, usedNames); |
- usedNames.add(freshName); |
- return freshName; |
- } |
- |
- // This gets a minified name based on a hash of the proposed name. This |
- // is slightly less efficient than just getting the next name in a series, |
- // but it means that small changes in the input program will give smallish |
- // changes in the output, which can be useful for diffing etc. |
- String _getUnusedName(String proposedName, Set<String> usedNames) { |
- // Try single-character names with characters that occur in the |
- // input. |
- for (int i = 0; i < proposedName.length; i++) { |
- String candidate = proposedName[i]; |
- int code = candidate.charCodeAt(0); |
- if (code < $A) continue; |
- if (code > $z) continue; |
- if (code > $Z && code < $a) continue; |
- if (!usedNames.contains(candidate)) return candidate; |
- } |
- |
- int hash = _calculateHash(proposedName); |
- // Avoid very small hashes that won't try many names. |
- hash = hash < 1000 ? hash * 314159 : hash; // Yes, it's prime. |
- |
- // Try other n-character names based on the hash. We try one to three |
- // character identifiers. For each length we try around 10 different names |
- // in a predictable order determined by the proposed name. This is in order |
- // to make the renamer stable: small changes in the input should nornally |
- // result in relatively small changes in the output. |
- for (var n = 1; n <= 3; n++) { |
- int h = hash; |
- while (h > 10) { |
- var codes = <int>[_letterNumber(h)]; |
- int h2 = h ~/ ALPHABET_CHARACTERS; |
- for (var i = 1; i < n; i++) { |
- codes.add(_alphaNumericNumber(h2)); |
- h2 ~/= ALPHANUMERIC_CHARACTERS; |
- } |
- final candidate = new String.fromCharCodes(codes); |
- if (!usedNames.contains(candidate) && !jsReserved.contains(candidate)) { |
- return candidate; |
- } |
- // Try again with a slightly different hash. After around 10 turns |
- // around this loop h is zero and we try a longer name. |
- h ~/= 7; |
- } |
- } |
- |
- // If we can't find a hash based name in the three-letter space, then base |
- // the name on a letter and a counter. |
- var startLetter = new String.fromCharCodes([_letterNumber(hash)]); |
- var i = 0; |
- while (usedNames.contains("$startLetter$i")) { |
- i++; |
- } |
- return "$startLetter$i"; |
- } |
- |
- int _calculateHash(String name) { |
- int h = 0; |
- for (int i = 0; i < name.length; i++) { |
- h += name.charCodeAt(i); |
- h &= 0xffffffff; |
- h += h << 10; |
- h &= 0xffffffff; |
- h ^= h >> 6; |
- h &= 0xffffffff; |
- } |
- return h; |
- } |
- |
- int _letterNumber(int x) { |
- if (x >= ALPHABET_CHARACTERS) x %= ALPHABET_CHARACTERS; |
- if (x < 26) return $a + x; |
- return $A + x - 26; |
- } |
- |
- int _alphaNumericNumber(int x) { |
- if (x >= ALPHANUMERIC_CHARACTERS) x %= ALPHANUMERIC_CHARACTERS; |
- if (x < 26) return $a + x; |
- if (x < 52) return $A + x - 26; |
- return $0 + x - 52; |
- } |
- |
-} |