@@ -96,6 +96,8 @@ impl Optimizer<'_> {
96
96
97
97
self . vars . inline_with_multi_replacer ( init) ;
98
98
99
+ let id = ident. to_id ( ) ;
100
+
99
101
// We inline arrays partially if it's pure (all elements are literal), and not
100
102
// modified.
101
103
// We don't drop definition, but we just inline array accesses with numeric
@@ -243,7 +245,17 @@ impl Optimizer<'_> {
243
245
_ => false ,
244
246
}
245
247
{
246
- self . mode . store ( ident. to_id ( ) , & * init) ;
248
+ self . mode . store ( id. clone ( ) , & * init) ;
249
+
250
+ let usage_count = usage. usage_count ;
251
+ let mut inc_usage = || {
252
+ if let Expr :: Ident ( i) = & * init {
253
+ if let Some ( u) = self . data . vars . get_mut ( & i. to_id ( ) ) {
254
+ u. ref_count += ref_count;
255
+ u. usage_count += usage_count;
256
+ }
257
+ }
258
+ } ;
247
259
248
260
if self . options . inline != 0
249
261
&& !should_preserve
@@ -264,7 +276,9 @@ impl Optimizer<'_> {
264
276
// var.span = var.span.apply_mark(self.marks.non_top_level);
265
277
// }
266
278
267
- self . vars . lits . insert ( ident. to_id ( ) , init. take ( ) . into ( ) ) ;
279
+ inc_usage ( ) ;
280
+
281
+ self . vars . lits . insert ( id. clone ( ) , init. take ( ) . into ( ) ) ;
268
282
269
283
ident. take ( ) ;
270
284
} else if self . options . inline != 0 || self . options . reduce_vars {
@@ -274,12 +288,16 @@ impl Optimizer<'_> {
274
288
ident. span. ctxt
275
289
) ;
276
290
277
- self . mode . store ( ident . to_id ( ) , & * init) ;
291
+ self . mode . store ( id . clone ( ) , & * init) ;
278
292
279
- self . vars . lits . insert ( ident. to_id ( ) , init. clone ( ) . into ( ) ) ;
293
+ inc_usage ( ) ;
294
+
295
+ self . vars . lits . insert ( id. clone ( ) , init. clone ( ) . into ( ) ) ;
280
296
}
281
297
}
282
298
299
+ let usage = self . data . vars . get ( & id) . unwrap ( ) ;
300
+
283
301
// Single use => inlined
284
302
if !self . ctx . is_exported
285
303
&& is_inline_enabled
@@ -760,13 +778,6 @@ impl Optimizer<'_> {
760
778
self . changed = true ;
761
779
report_change ! ( "inline: Replacing a variable `{}` with cheap expression" , i) ;
762
780
763
- if let Expr :: Ident ( i) = & * value {
764
- if let Some ( usage) = self . data . vars . get_mut ( & i. to_id ( ) ) {
765
- usage. ref_count += 1 ;
766
- usage. usage_count += 1 ;
767
- }
768
- }
769
-
770
781
* e = * value;
771
782
return ;
772
783
}
1 commit comments
github-actions[bot] commentedon Jul 4, 2023
Benchmark
es/full/bugs-1
313670
ns/iter (± 13555
)306225
ns/iter (± 4237
)1.02
es/full/minify/libraries/antd
1445922017
ns/iter (± 21274518
)1463826563
ns/iter (± 15880339
)0.99
es/full/minify/libraries/d3
319988202
ns/iter (± 3253456
)311852291
ns/iter (± 628917
)1.03
es/full/minify/libraries/echarts
1181212957
ns/iter (± 7205089
)1182368047
ns/iter (± 3110877
)1.00
es/full/minify/libraries/jquery
96161534
ns/iter (± 451880
)95663256
ns/iter (± 244711
)1.01
es/full/minify/libraries/lodash
114276644
ns/iter (± 123387
)113228438
ns/iter (± 243178
)1.01
es/full/minify/libraries/moment
56655584
ns/iter (± 84742
)56058986
ns/iter (± 132721
)1.01
es/full/minify/libraries/react
20226189
ns/iter (± 42444
)20127877
ns/iter (± 69924
)1.00
es/full/minify/libraries/terser
247620621
ns/iter (± 429935
)247483599
ns/iter (± 642413
)1.00
es/full/minify/libraries/three
435887300
ns/iter (± 2713987
)434822429
ns/iter (± 1648553
)1.00
es/full/minify/libraries/typescript
2979039021
ns/iter (± 28105926
)2976570567
ns/iter (± 6821636
)1.00
es/full/minify/libraries/victory
635470563
ns/iter (± 4010453
)633314912
ns/iter (± 3387657
)1.00
es/full/minify/libraries/vue
136830462
ns/iter (± 1368148
)138214836
ns/iter (± 373458
)0.99
es/full/codegen/es3
35641
ns/iter (± 561
)36574
ns/iter (± 69
)0.97
es/full/codegen/es5
36782
ns/iter (± 711
)36557
ns/iter (± 53
)1.01
es/full/codegen/es2015
36734
ns/iter (± 617
)36528
ns/iter (± 51
)1.01
es/full/codegen/es2016
36799
ns/iter (± 750
)36582
ns/iter (± 112
)1.01
es/full/codegen/es2017
36321
ns/iter (± 568
)36622
ns/iter (± 108
)0.99
es/full/codegen/es2018
36511
ns/iter (± 456
)36557
ns/iter (± 46
)1.00
es/full/codegen/es2019
36579
ns/iter (± 704
)36704
ns/iter (± 84
)1.00
es/full/codegen/es2020
37294
ns/iter (± 260
)36631
ns/iter (± 51
)1.02
es/full/all/es3
180826896
ns/iter (± 1197156
)181870481
ns/iter (± 711836
)0.99
es/full/all/es5
173258446
ns/iter (± 1108923
)173265734
ns/iter (± 929359
)1.00
es/full/all/es2015
128864385
ns/iter (± 1191664
)130964670
ns/iter (± 809552
)0.98
es/full/all/es2016
128911320
ns/iter (± 750106
)130009052
ns/iter (± 740954
)0.99
es/full/all/es2017
128334025
ns/iter (± 290591
)129004512
ns/iter (± 579145
)0.99
es/full/all/es2018
125394532
ns/iter (± 1282795
)127488613
ns/iter (± 655999
)0.98
es/full/all/es2019
125210636
ns/iter (± 4618785
)126244221
ns/iter (± 496360
)0.99
es/full/all/es2020
120394919
ns/iter (± 1247221
)122050528
ns/iter (± 614869
)0.99
es/full/parser
534334
ns/iter (± 8702
)569310
ns/iter (± 5703
)0.94
es/full/base/fixer
18147
ns/iter (± 273
)19049
ns/iter (± 82
)0.95
es/full/base/resolver_and_hygiene
90132
ns/iter (± 1608
)93798
ns/iter (± 201
)0.96
serialization of serde
292
ns/iter (± 4
)297
ns/iter (± 2
)0.98
css/minify/libraries/bootstrap
30656615
ns/iter (± 396805
)30586901
ns/iter (± 41651
)1.00
css/visitor/compare/clone
2083654
ns/iter (± 41364
)2076005
ns/iter (± 21031
)1.00
css/visitor/compare/visit_mut_span
2244687
ns/iter (± 28190
)2211484
ns/iter (± 24556
)1.02
css/visitor/compare/visit_mut_span_panic
2323015
ns/iter (± 39717
)2304850
ns/iter (± 19471
)1.01
css/visitor/compare/fold_span
3068689
ns/iter (± 27132
)2913217
ns/iter (± 17853
)1.05
css/visitor/compare/fold_span_panic
3252861
ns/iter (± 32140
)3129798
ns/iter (± 43009
)1.04
css/lexer/bootstrap_5_1_3
4708449
ns/iter (± 109476
)4741492
ns/iter (± 6750
)0.99
css/lexer/foundation_6_7_4
3880824
ns/iter (± 53533
)4004102
ns/iter (± 1938
)0.97
css/lexer/tailwind_3_1_1
743116
ns/iter (± 7801
)763625
ns/iter (± 840
)0.97
css/parser/bootstrap_5_1_3
19905012
ns/iter (± 261386
)20361805
ns/iter (± 29762
)0.98
css/parser/foundation_6_7_4
16223371
ns/iter (± 304717
)16425556
ns/iter (± 13202
)0.99
css/parser/tailwind_3_1_1
3097346
ns/iter (± 37938
)3166770
ns/iter (± 2008
)0.98
es/codegen/colors
729402
ns/iter (± 395733
)733185
ns/iter (± 395356
)0.99
es/codegen/large
2995828
ns/iter (± 1578154
)3017522
ns/iter (± 1603419
)0.99
es/codegen/with-parser/colors
48329
ns/iter (± 631
)47897
ns/iter (± 161
)1.01
es/codegen/with-parser/large
513098
ns/iter (± 6595
)510187
ns/iter (± 953
)1.01
es/minify/libraries/antd
1260850853
ns/iter (± 18978099
)1282549722
ns/iter (± 7914435
)0.98
es/minify/libraries/d3
274572593
ns/iter (± 2054286
)280630769
ns/iter (± 695271
)0.98
es/minify/libraries/echarts
1003205004
ns/iter (± 7588248
)1036876357
ns/iter (± 3353216
)0.97
es/minify/libraries/jquery
83281047
ns/iter (± 137930
)84386565
ns/iter (± 104369
)0.99
es/minify/libraries/lodash
101043222
ns/iter (± 828387
)103929895
ns/iter (± 133425
)0.97
es/minify/libraries/moment
48990707
ns/iter (± 225385
)49924497
ns/iter (± 65917
)0.98
es/minify/libraries/react
17877290
ns/iter (± 104591
)18193382
ns/iter (± 73738
)0.98
es/minify/libraries/terser
209415316
ns/iter (± 793430
)214257005
ns/iter (± 218049
)0.98
es/minify/libraries/three
357702109
ns/iter (± 2729343
)369159576
ns/iter (± 3063660
)0.97
es/minify/libraries/typescript
2500242995
ns/iter (± 20194062
)2572360953
ns/iter (± 6785002
)0.97
es/minify/libraries/victory
528555535
ns/iter (± 4039940
)535918758
ns/iter (± 3293022
)0.99
es/minify/libraries/vue
121818942
ns/iter (± 925379
)124302157
ns/iter (± 192070
)0.98
es/visitor/compare/clone
2048236
ns/iter (± 21010
)2068497
ns/iter (± 20112
)0.99
es/visitor/compare/visit_mut_span
2344425
ns/iter (± 31443
)2398686
ns/iter (± 3101
)0.98
es/visitor/compare/visit_mut_span_panic
2388555
ns/iter (± 45869
)2448911
ns/iter (± 5885
)0.98
es/visitor/compare/fold_span
3401565
ns/iter (± 71023
)3465468
ns/iter (± 5966
)0.98
es/visitor/compare/fold_span_panic
3533401
ns/iter (± 61410
)3611167
ns/iter (± 5421
)0.98
es/lexer/colors
12963
ns/iter (± 199
)13692
ns/iter (± 47
)0.95
es/lexer/angular
6086383
ns/iter (± 132078
)6282668
ns/iter (± 17113
)0.97
es/lexer/backbone
824108
ns/iter (± 17421
)825969
ns/iter (± 4580
)1.00
es/lexer/jquery
4576391
ns/iter (± 81670
)4680110
ns/iter (± 2459
)0.98
es/lexer/jquery mobile
7163735
ns/iter (± 75192
)7185444
ns/iter (± 5982
)1.00
es/lexer/mootools
3680527
ns/iter (± 18032
)3683580
ns/iter (± 4194
)1.00
es/lexer/underscore
692428
ns/iter (± 1063
)686962
ns/iter (± 676
)1.01
es/lexer/three
21615812
ns/iter (± 234087
)22223667
ns/iter (± 34775
)0.97
es/lexer/yui
4017867
ns/iter (± 39464
)4175213
ns/iter (± 28998
)0.96
es/parser/colors
28639
ns/iter (± 137
)28832
ns/iter (± 63
)0.99
es/parser/angular
13815153
ns/iter (± 163209
)14176454
ns/iter (± 52872
)0.97
es/parser/backbone
2093812
ns/iter (± 30813
)2117291
ns/iter (± 7905
)0.99
es/parser/jquery
11281753
ns/iter (± 109128
)11602153
ns/iter (± 42703
)0.97
es/parser/jquery mobile
17316521
ns/iter (± 266254
)17659660
ns/iter (± 46544
)0.98
es/parser/mootools
8497691
ns/iter (± 121382
)8844481
ns/iter (± 16659
)0.96
es/parser/underscore
1809824
ns/iter (± 22143
)1826559
ns/iter (± 7906
)0.99
es/parser/three
47762868
ns/iter (± 719304
)48818634
ns/iter (± 151667
)0.98
es/parser/yui
8797331
ns/iter (± 50734
)8840203
ns/iter (± 85491
)1.00
es/preset-env/usage/builtin_type
143579
ns/iter (± 33542
)143117
ns/iter (± 33161
)1.00
es/preset-env/usage/property
18467
ns/iter (± 45
)18585
ns/iter (± 35
)0.99
es/resolver/typescript
93770120
ns/iter (± 949236
)93879809
ns/iter (± 608481
)1.00
es/fixer/typescript
64086211
ns/iter (± 347510
)65323720
ns/iter (± 466407
)0.98
es/hygiene/typescript
141236316
ns/iter (± 703680
)142943350
ns/iter (± 452248
)0.99
es/resolver_with_hygiene/typescript
299342153
ns/iter (± 2516556
)302473587
ns/iter (± 1616950
)0.99
es/visitor/base-perf/module_clone
60821
ns/iter (± 603
)61601
ns/iter (± 265
)0.99
es/visitor/base-perf/fold_empty
64084
ns/iter (± 573
)64923
ns/iter (± 220
)0.99
es/visitor/base-perf/fold_noop_impl_all
64419
ns/iter (± 250
)64948
ns/iter (± 260
)0.99
es/visitor/base-perf/fold_noop_impl_vec
64269
ns/iter (± 865
)65138
ns/iter (± 236
)0.99
es/visitor/base-perf/boxing_boxed_clone
56
ns/iter (± 0
)57
ns/iter (± 0
)0.98
es/visitor/base-perf/boxing_unboxed_clone
40
ns/iter (± 0
)40
ns/iter (± 0
)1
es/visitor/base-perf/boxing_boxed
113
ns/iter (± 0
)114
ns/iter (± 0
)0.99
es/visitor/base-perf/boxing_unboxed
79
ns/iter (± 0
)81
ns/iter (± 0
)0.98
es/visitor/base-perf/visit_empty
0
ns/iter (± 0
)0
ns/iter (± 0
)NaN
es/visitor/base-perf/visit_contains_this
2561
ns/iter (± 55
)2680
ns/iter (± 40
)0.96
es/base/parallel/resolver/typescript
4313968310
ns/iter (± 224937964
)4406967009
ns/iter (± 242975847
)0.98
es/base/parallel/hygiene/typescript
1566295485
ns/iter (± 11498481
)1581319862
ns/iter (± 6680169
)0.99
misc/visitors/time-complexity/time 5
100
ns/iter (± 1
)101
ns/iter (± 0
)0.99
misc/visitors/time-complexity/time 10
295
ns/iter (± 1
)263
ns/iter (± 0
)1.12
misc/visitors/time-complexity/time 15
514
ns/iter (± 13
)501
ns/iter (± 9
)1.03
misc/visitors/time-complexity/time 20
1022
ns/iter (± 7
)921
ns/iter (± 4
)1.11
misc/visitors/time-complexity/time 40
3754
ns/iter (± 37
)3738
ns/iter (± 21
)1.00
misc/visitors/time-complexity/time 60
8481
ns/iter (± 65
)7795
ns/iter (± 20
)1.09
es/full-target/es2016
232602
ns/iter (± 4211
)241978
ns/iter (± 470
)0.96
es/full-target/es2017
226055
ns/iter (± 3393
)229699
ns/iter (± 979
)0.98
es/full-target/es2018
209773
ns/iter (± 2857
)219385
ns/iter (± 25780
)0.96
es2020_nullish_coalescing
69422
ns/iter (± 661
)73195
ns/iter (± 375
)0.95
es2020_optional_chaining
80909
ns/iter (± 1454
)84430
ns/iter (± 1139
)0.96
es2022_class_properties
117504
ns/iter (± 829
)125275
ns/iter (± 413
)0.94
es2018_object_rest_spread
72989
ns/iter (± 1343
)77815
ns/iter (± 358
)0.94
es2019_optional_catch_binding
63228
ns/iter (± 716
)67388
ns/iter (± 291
)0.94
es2017_async_to_generator
63978
ns/iter (± 655
)65871
ns/iter (± 379
)0.97
es2016_exponentiation
68480
ns/iter (± 894
)71037
ns/iter (± 158
)0.96
es2015_arrow
71601
ns/iter (± 588
)75493
ns/iter (± 334
)0.95
es2015_block_scoped_fn
67733
ns/iter (± 916
)70686
ns/iter (± 220
)0.96
es2015_block_scoping
132835
ns/iter (± 2180
)135042
ns/iter (± 500
)0.98
This comment was automatically generated by workflow using github-action-benchmark.