Skip to content

Commit 0ef4af4

Browse files
committed
JS: change character order for JS variable renaming of 2 or more characters, improves GZIP compression
1 parent 0be056c commit 0ef4af4

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

js/vars.go

+7-5
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,16 @@ func (r *renamer) isReserved(name []byte, undeclared js.VarArray) bool {
7878
func (r *renamer) getIndex(name []byte) int {
7979
index := 0
8080
NameLoop:
81-
for i, b := range name {
81+
for i := len(name) - 1; 0 <= i; i-- {
8282
chars := r.identContinue
8383
if i == 0 {
8484
chars = r.identStart
85+
index *= len(r.identStart)
8586
} else {
8687
index *= len(r.identContinue)
8788
}
8889
for j, c := range chars {
89-
if b == c {
90+
if name[i] == c {
9091
index += j
9192
continue NameLoop
9293
}
@@ -132,11 +133,12 @@ func (r *renamer) getName(name []byte, index int) []byte {
132133
} else {
133134
name = name[:n]
134135
}
135-
for j := n - 1; 0 < j; j-- {
136-
name[j] = r.identContinue[index%len(r.identContinue)]
136+
name[0] = r.identStart[index%len(r.identStart)]
137+
index /= len(r.identStart)
138+
for i := 1; i < n; i++ {
139+
name[i] = r.identContinue[index%len(r.identContinue)]
137140
index /= len(r.identContinue)
138141
}
139-
name[0] = r.identStart[index]
140142
return name
141143
}
142144

0 commit comments

Comments
 (0)