-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(es/minifier): Inline before cloning (#4338)
- Loading branch information
Showing
9 changed files
with
501 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
194 changes: 194 additions & 0 deletions
194
crates/swc_ecma_minifier/tests/compress/fixture/next/36127/2/1/analysis-snapshot.rust-debug
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,194 @@ | ||
TestSnapshot { | ||
vars: [ | ||
( | ||
( | ||
Atom('String' type=static), | ||
#1, | ||
), | ||
VarUsageInfo { | ||
inline_prevented: false, | ||
ref_count: 1, | ||
cond_init: false, | ||
declared: false, | ||
declared_count: 0, | ||
declared_as_fn_param: false, | ||
declared_as_fn_expr: false, | ||
assign_count: 0, | ||
mutation_by_call_count: 0, | ||
usage_count: 1, | ||
reassigned_with_assignment: false, | ||
reassigned_with_var_decl: false, | ||
mutated: false, | ||
has_property_access: true, | ||
has_property_mutation: false, | ||
accessed_props: {}, | ||
exported: false, | ||
used_above_decl: true, | ||
is_fn_local: true, | ||
used_by_nested_fn: true, | ||
executed_multiple_time: false, | ||
used_in_cond: false, | ||
var_kind: None, | ||
var_initialized: false, | ||
declared_as_catch_param: false, | ||
no_side_effect_for_member_access: false, | ||
used_as_callee: false, | ||
used_as_arg: false, | ||
pure_fn: false, | ||
infects: [], | ||
}, | ||
), | ||
( | ||
( | ||
Atom('check' type=inline), | ||
#2, | ||
), | ||
VarUsageInfo { | ||
inline_prevented: false, | ||
ref_count: 1, | ||
cond_init: false, | ||
declared: true, | ||
declared_count: 1, | ||
declared_as_fn_param: false, | ||
declared_as_fn_expr: false, | ||
assign_count: 0, | ||
mutation_by_call_count: 0, | ||
usage_count: 1, | ||
reassigned_with_assignment: false, | ||
reassigned_with_var_decl: false, | ||
mutated: false, | ||
has_property_access: false, | ||
has_property_mutation: false, | ||
accessed_props: {}, | ||
exported: false, | ||
used_above_decl: true, | ||
is_fn_local: true, | ||
used_by_nested_fn: true, | ||
executed_multiple_time: false, | ||
used_in_cond: false, | ||
var_kind: None, | ||
var_initialized: false, | ||
declared_as_catch_param: false, | ||
no_side_effect_for_member_access: false, | ||
used_as_callee: false, | ||
used_as_arg: false, | ||
pure_fn: false, | ||
infects: [], | ||
}, | ||
), | ||
( | ||
( | ||
Atom('code' type=inline), | ||
#3, | ||
), | ||
VarUsageInfo { | ||
inline_prevented: false, | ||
ref_count: 2, | ||
cond_init: false, | ||
declared: true, | ||
declared_count: 1, | ||
declared_as_fn_param: true, | ||
declared_as_fn_expr: false, | ||
assign_count: 0, | ||
mutation_by_call_count: 1, | ||
usage_count: 2, | ||
reassigned_with_assignment: false, | ||
reassigned_with_var_decl: false, | ||
mutated: true, | ||
has_property_access: false, | ||
has_property_mutation: false, | ||
accessed_props: {}, | ||
exported: false, | ||
used_above_decl: false, | ||
is_fn_local: true, | ||
used_by_nested_fn: true, | ||
executed_multiple_time: false, | ||
used_in_cond: false, | ||
var_kind: None, | ||
var_initialized: false, | ||
declared_as_catch_param: false, | ||
no_side_effect_for_member_access: false, | ||
used_as_callee: false, | ||
used_as_arg: true, | ||
pure_fn: false, | ||
infects: [], | ||
}, | ||
), | ||
( | ||
( | ||
Atom('regex' type=inline), | ||
#2, | ||
), | ||
VarUsageInfo { | ||
inline_prevented: false, | ||
ref_count: 1, | ||
cond_init: false, | ||
declared: true, | ||
declared_count: 1, | ||
declared_as_fn_param: true, | ||
declared_as_fn_expr: false, | ||
assign_count: 0, | ||
mutation_by_call_count: 0, | ||
usage_count: 1, | ||
reassigned_with_assignment: false, | ||
reassigned_with_var_decl: false, | ||
mutated: false, | ||
has_property_access: true, | ||
has_property_mutation: false, | ||
accessed_props: {}, | ||
exported: false, | ||
used_above_decl: false, | ||
is_fn_local: false, | ||
used_by_nested_fn: true, | ||
executed_multiple_time: false, | ||
used_in_cond: false, | ||
var_kind: None, | ||
var_initialized: false, | ||
declared_as_catch_param: false, | ||
no_side_effect_for_member_access: false, | ||
used_as_callee: false, | ||
used_as_arg: false, | ||
pure_fn: false, | ||
infects: [], | ||
}, | ||
), | ||
( | ||
( | ||
Atom('regexCheck' type=dynamic), | ||
#1, | ||
), | ||
VarUsageInfo { | ||
inline_prevented: true, | ||
ref_count: 0, | ||
cond_init: false, | ||
declared: true, | ||
declared_count: 1, | ||
declared_as_fn_param: false, | ||
declared_as_fn_expr: false, | ||
assign_count: 0, | ||
mutation_by_call_count: 0, | ||
usage_count: 0, | ||
reassigned_with_assignment: false, | ||
reassigned_with_var_decl: false, | ||
mutated: false, | ||
has_property_access: false, | ||
has_property_mutation: false, | ||
accessed_props: {}, | ||
exported: false, | ||
used_above_decl: false, | ||
is_fn_local: true, | ||
used_by_nested_fn: false, | ||
executed_multiple_time: false, | ||
used_in_cond: false, | ||
var_kind: None, | ||
var_initialized: true, | ||
declared_as_catch_param: false, | ||
no_side_effect_for_member_access: false, | ||
used_as_callee: false, | ||
used_as_arg: false, | ||
pure_fn: false, | ||
infects: [], | ||
}, | ||
), | ||
], | ||
} |
19 changes: 19 additions & 0 deletions
19
crates/swc_ecma_minifier/tests/compress/fixture/next/36127/2/1/input.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
/** | ||
* Create a code check from a regex. | ||
* | ||
* @param {RegExp} regex | ||
* @returns {(code: Code) => code is number} | ||
*/ | ||
export function regexCheck(regex) { | ||
return check | ||
|
||
/** | ||
* Check whether a code matches the bound regex. | ||
* | ||
* @param {Code} code Character code | ||
* @returns {code is number} Whether the character code matches the bound regex | ||
*/ | ||
function check(code) { | ||
return code !== null && regex.test(String.fromCharCode(code)) | ||
} | ||
} |
5 changes: 5 additions & 0 deletions
5
crates/swc_ecma_minifier/tests/compress/fixture/next/36127/2/1/output.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
export function regexCheck(regex) { | ||
return function(code) { | ||
return null !== code && regex.test(String.fromCharCode(code)); | ||
}; | ||
} |
Oops, something went wrong.
4110fcb
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark
codegen_es3
34658
ns/iter (± 206
)35125
ns/iter (± 941
)0.99
codegen_es5
34658
ns/iter (± 318
)35197
ns/iter (± 2279
)0.98
codegen_es2015
34694
ns/iter (± 202
)35235
ns/iter (± 1358
)0.98
codegen_es2016
34708
ns/iter (± 236
)34521
ns/iter (± 2090
)1.01
codegen_es2017
34725
ns/iter (± 216
)35235
ns/iter (± 1106
)0.99
codegen_es2018
36179
ns/iter (± 2012
)35093
ns/iter (± 1494
)1.03
codegen_es2019
34636
ns/iter (± 324
)35065
ns/iter (± 1461
)0.99
codegen_es2020
34689
ns/iter (± 216
)35419
ns/iter (± 1717
)0.98
full_es3
215049167
ns/iter (± 2022423
)216266359
ns/iter (± 6930574
)0.99
full_es5
207110502
ns/iter (± 9342094
)203093727
ns/iter (± 4451889
)1.02
full_es2015
164757309
ns/iter (± 3261081
)162978798
ns/iter (± 4934215
)1.01
full_es2016
164068921
ns/iter (± 3118123
)163168590
ns/iter (± 5040345
)1.01
full_es2017
163355476
ns/iter (± 3984277
)162611440
ns/iter (± 7139193
)1.00
full_es2018
163599945
ns/iter (± 6356205
)158800049
ns/iter (± 6712229
)1.03
full_es2019
160088836
ns/iter (± 3033889
)159829211
ns/iter (± 4295205
)1.00
full_es2020
154273845
ns/iter (± 4047767
)154465697
ns/iter (± 3962093
)1.00
parser
674756
ns/iter (± 18388
)729570
ns/iter (± 54495
)0.92
base_tr_fixer
27891
ns/iter (± 346
)32001
ns/iter (± 1215
)0.87
base_tr_resolver_and_hygiene
146465
ns/iter (± 2308
)160874
ns/iter (± 12527
)0.91
serialization of ast node
163
ns/iter (± 0
)169
ns/iter (± 6
)0.96
serialization of serde
176
ns/iter (± 0
)171
ns/iter (± 6
)1.03
colors
66048
ns/iter (± 574
)72810
ns/iter (± 5500
)0.91
large
376063
ns/iter (± 5272
)404658
ns/iter (± 24050
)0.93
colors
61609
ns/iter (± 699
)72810
ns/iter (± 5500
)0.85
large
664093
ns/iter (± 7142
)404658
ns/iter (± 24050
)1.64
libs/antd
2411276813
ns/iter (± 34860524
)2500081840
ns/iter (± 18090850
)0.96
libs/d3
326148502
ns/iter (± 5139659
)323249044
ns/iter (± 11614001
)1.01
libs/echarts
1683876180
ns/iter (± 10700091
)1812791879
ns/iter (± 43154410
)0.93
libs/jquery
82046623
ns/iter (± 2113515
)81030407
ns/iter (± 2022083
)1.01
libs/lodash
94794531
ns/iter (± 2224512
)90928224
ns/iter (± 2158592
)1.04
libs/moment
49606355
ns/iter (± 2391079
)47750968
ns/iter (± 1636971
)1.04
libs/react
16632506
ns/iter (± 313243
)16761534
ns/iter (± 294955
)0.99
libs/terser
478332545
ns/iter (± 10391404
)669546897
ns/iter (± 23468505
)0.71
libs/three
498192689
ns/iter (± 9928164
)518765325
ns/iter (± 26731695
)0.96
libs/typescript
5298588674
ns/iter (± 105545371
)5703778365
ns/iter (± 89325348
)0.93
libs/victory
883024717
ns/iter (± 19268592
)898407922
ns/iter (± 19474974
)0.98
libs/vue
114622413
ns/iter (± 1491950
)111860181
ns/iter (± 3080938
)1.02
clone
2890856
ns/iter (± 127023
)2771546
ns/iter (± 178968
)1.04
visit_mut_span
3483813
ns/iter (± 143919
)3361899
ns/iter (± 235793
)1.04
visit_mut_span_panic
3354569
ns/iter (± 46497
)3419580
ns/iter (± 248318
)0.98
fold_span
4578790
ns/iter (± 77651
)4751907
ns/iter (± 285168
)0.96
fold_span_panic
5001078
ns/iter (± 209690
)4848794
ns/iter (± 246324
)1.03
colors
25274
ns/iter (± 82
)72810
ns/iter (± 5500
)0.35
angular
12490543
ns/iter (± 500843
)11465500
ns/iter (± 497163
)1.09
backbone
1604336
ns/iter (± 16793
)1560767
ns/iter (± 46558
)1.03
jquery
8668725
ns/iter (± 33709
)8328067
ns/iter (± 279439
)1.04
jquery mobile
14014057
ns/iter (± 66903
)13294012
ns/iter (± 364225
)1.05
mootools
6652603
ns/iter (± 30143
)6501662
ns/iter (± 232974
)1.02
underscore
1344371
ns/iter (± 7305
)1319126
ns/iter (± 52137
)1.02
three
39479287
ns/iter (± 214090
)38529466
ns/iter (± 1310387
)1.02
yui
7606324
ns/iter (± 224035
)7079669
ns/iter (± 233106
)1.07
colors
42169
ns/iter (± 2746
)72810
ns/iter (± 5500
)0.58
angular
21223711
ns/iter (± 291745
)11465500
ns/iter (± 497163
)1.85
backbone
2925168
ns/iter (± 24858
)1560767
ns/iter (± 46558
)1.87
jquery
15810797
ns/iter (± 294542
)8328067
ns/iter (± 279439
)1.90
jquery mobile
25366685
ns/iter (± 688949
)13294012
ns/iter (± 364225
)1.91
mootools
12284879
ns/iter (± 214052
)6501662
ns/iter (± 232974
)1.89
underscore
2483781
ns/iter (± 22050
)1319126
ns/iter (± 52137
)1.88
three
75649430
ns/iter (± 924309
)38529466
ns/iter (± 1310387
)1.96
yui
12469580
ns/iter (± 157007
)7079669
ns/iter (± 233106
)1.76
usage_builtin_type
150154
ns/iter (± 6551
)166322
ns/iter (± 10135
)0.90
usage_property
36682
ns/iter (± 2991
)42202
ns/iter (± 1613
)0.87
resolver
176062
ns/iter (± 2220
)188701
ns/iter (± 7514
)0.93
fixer
156941
ns/iter (± 7951
)162420
ns/iter (± 6649
)0.97
hygiene
431135
ns/iter (± 2548
)440745
ns/iter (± 14806
)0.98
resolver_with_hygiene
511431
ns/iter (± 7407
)533400
ns/iter (± 24411
)0.96
module_clone
116683
ns/iter (± 6052
)122845
ns/iter (± 8111
)0.95
fold_empty
127575
ns/iter (± 2526
)137802
ns/iter (± 11571
)0.93
fold_noop_impl_all
128669
ns/iter (± 2610
)135326
ns/iter (± 5489
)0.95
fold_noop_impl_vec
128445
ns/iter (± 2149
)142751
ns/iter (± 9885
)0.90
boxing_boxed_clone
82
ns/iter (± 0
)77
ns/iter (± 3
)1.06
boxing_unboxed_clone
127
ns/iter (± 0
)127
ns/iter (± 11
)1
boxing_boxed
160
ns/iter (± 0
)148
ns/iter (± 4
)1.08
boxing_unboxed
195
ns/iter (± 0
)192
ns/iter (± 13
)1.02
visit_contains_this
4369
ns/iter (± 127
)4584
ns/iter (± 348
)0.95
time 5
127
ns/iter (± 7
)113
ns/iter (± 26
)1.12
time 10
369
ns/iter (± 1
)346
ns/iter (± 17
)1.07
time 15
796
ns/iter (± 18
)758
ns/iter (± 30
)1.05
time 20
1370
ns/iter (± 20
)1409
ns/iter (± 75
)0.97
time 40
4913
ns/iter (± 164
)5128
ns/iter (± 243
)0.96
time 60
10351
ns/iter (± 17
)10541
ns/iter (± 413
)0.98
es2016
303872
ns/iter (± 1666
)302615
ns/iter (± 10872
)1.00
es2017
285980
ns/iter (± 1903
)288513
ns/iter (± 12035
)0.99
es2018
272450
ns/iter (± 2312
)273489
ns/iter (± 15107
)1.00
es2020_nullish_coalescing
139631
ns/iter (± 1256
)147857
ns/iter (± 5420
)0.94
es2020_optional_chaining
183196
ns/iter (± 8186
)183026
ns/iter (± 7224
)1.00
es2022_class_properties
186758
ns/iter (± 7402
)187015
ns/iter (± 9245
)1.00
es2018_object_rest_spread
129033
ns/iter (± 2220
)137075
ns/iter (± 5856
)0.94
es2019_optional_catch_binding
118826
ns/iter (± 4755
)125848
ns/iter (± 4657
)0.94
es2017_async_to_generator
112741
ns/iter (± 2051
)123976
ns/iter (± 4977
)0.91
es2016_exponentiation
137939
ns/iter (± 971
)146056
ns/iter (± 7691
)0.94
es2015_arrow
140531
ns/iter (± 913
)153068
ns/iter (± 5522
)0.92
es2015_block_scoped_fn
139431
ns/iter (± 785
)147476
ns/iter (± 12431
)0.95
es2015_block_scoping
236882
ns/iter (± 1625
)243591
ns/iter (± 12579
)0.97
es2015_classes
199966
ns/iter (± 1725
)212775
ns/iter (± 8401
)0.94
es2015_computed_props
114376
ns/iter (± 2266
)124342
ns/iter (± 5005
)0.92
es2015_destructuring
209209
ns/iter (± 1589
)217725
ns/iter (± 8930
)0.96
es2015_duplicate_keys
119010
ns/iter (± 2756
)130091
ns/iter (± 5333
)0.91
es2015_parameters
148648
ns/iter (± 966
)161629
ns/iter (± 5296
)0.92
es2015_fn_name
117915
ns/iter (± 2408
)130117
ns/iter (± 5302
)0.91
es2015_for_of
136069
ns/iter (± 838
)144564
ns/iter (± 4852
)0.94
es2015_instanceof
127290
ns/iter (± 915
)134225
ns/iter (± 6050
)0.95
es2015_shorthand_property
112642
ns/iter (± 2415
)127112
ns/iter (± 5763
)0.89
es2015_spread
114616
ns/iter (± 9442
)127669
ns/iter (± 4696
)0.90
es2015_sticky_regex
114903
ns/iter (± 2466
)127260
ns/iter (± 4730
)0.90
es2015_typeof_symbol
115685
ns/iter (± 2727
)128726
ns/iter (± 8351
)0.90
base
99408
ns/iter (± 2328
)112190
ns/iter (± 5349
)0.89
common_reserved_word
115889
ns/iter (± 2661
)129983
ns/iter (± 9579
)0.89
common_typescript
249910
ns/iter (± 1676
)255922
ns/iter (± 9245
)0.98
es3
306067
ns/iter (± 1144
)318455
ns/iter (± 38049
)0.96
es2015
885381
ns/iter (± 3314
)868951
ns/iter (± 28538
)1.02
es2016 #2
138602
ns/iter (± 762
)149618
ns/iter (± 7582
)0.93
es2017 #2
112924
ns/iter (± 2499
)125863
ns/iter (± 5972
)0.90
es2018 #2
142538
ns/iter (± 2158
)150086
ns/iter (± 7225
)0.95
es2020
218000
ns/iter (± 1749
)227798
ns/iter (± 10932
)0.96
babelify_only
798448
ns/iter (± 8497
)814395
ns/iter (± 36687
)0.98
parse_and_babelify_angular
81315126
ns/iter (± 1286073
)75614467
ns/iter (± 2135065
)1.08
parse_and_babelify_backbone
8068431
ns/iter (± 185667
)7814353
ns/iter (± 325488
)1.03
parse_and_babelify_jquery
54176932
ns/iter (± 939720
)55032860
ns/iter (± 2092019
)0.98
parse_and_babelify_jquery_mobile
96507467
ns/iter (± 1574454
)97926698
ns/iter (± 2751745
)0.99
parse_and_babelify_mootools
41964436
ns/iter (± 1689324
)44338461
ns/iter (± 1403224
)0.95
parse_and_babelify_underscore
6989435
ns/iter (± 257467
)6843237
ns/iter (± 287735
)1.02
parse_and_babelify_yui
40947203
ns/iter (± 1417220
)45406184
ns/iter (± 1536965
)0.90
This comment was automatically generated by workflow using github-action-benchmark.