enhance mangle (#4926)

This commit is contained in:
Alex Lam S.L
2021-05-11 16:41:32 +01:00
committed by GitHub
parent ae51f76ba7
commit 689f8f504d
2 changed files with 8 additions and 11 deletions

View File

@@ -800,6 +800,7 @@ var base54 = (function() {
var leading = init("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_"); var leading = init("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_");
var chars, frequency; var chars, frequency;
function reset() { function reset() {
chars = null;
frequency = Object.create(freq); frequency = Object.create(freq);
} }
base54.consider = function(str, delta) { base54.consider = function(str, delta) {
@@ -811,19 +812,15 @@ var base54 = (function() {
return frequency[b] - frequency[a]; return frequency[b] - frequency[a];
} }
base54.sort = function() { base54.sort = function() {
chars = leading.sort(compare).concat(digits.sort(compare)); chars = leading.sort(compare).concat(digits).sort(compare);
}; };
base54.reset = reset; base54.reset = reset;
reset(); reset();
function base54(num) { function base54(num) {
var ret = "", base = 54; var ret = leading[num % 54];
num++; for (num = Math.floor(num / 54); --num >= 0; num >>= 6) {
do { ret += chars[num & 0x3F];
num--; }
ret += chars[num % base];
num = Math.floor(num / base);
base = 64;
} while (num > 0);
return ret; return ret;
} }
return base54; return base54;

View File

@@ -7,11 +7,11 @@ describe("let", function() {
// Produce a lot of variables in a function and run it through mangle. // Produce a lot of variables in a function and run it through mangle.
var s = '"dddddeeeeelllllooooottttt"; function foo() {'; var s = '"dddddeeeeelllllooooottttt"; function foo() {';
for (var i = 0; i < 18000; i++) { for (var i = 0; i < 18000; i++) {
s += "var v" + i + "=0;"; s += "var v" + i + "=[];";
} }
s += '}'; s += '}';
var result = UglifyJS.minify(s, { var result = UglifyJS.minify(s, {
compress: false compress: false,
}).code; }).code;
// Verify that select keywords and reserved keywords not produced // Verify that select keywords and reserved keywords not produced