@@ -1894,12 +1894,29 @@ impl Optimizer<'_> {
1894
1894
}
1895
1895
PropOrSpread :: Prop ( prop) => {
1896
1896
// Inline into key
1897
- let key = match & mut * * prop {
1897
+ let computed = match & mut * * prop {
1898
+ Prop :: Shorthand ( _) | Prop :: Assign ( _) => None ,
1899
+ Prop :: KeyValue ( prop) => prop. key . as_mut_computed ( ) ,
1900
+ Prop :: Getter ( prop) => prop. key . as_mut_computed ( ) ,
1901
+ Prop :: Setter ( prop) => prop. key . as_mut_computed ( ) ,
1902
+ Prop :: Method ( prop) => prop. key . as_mut_computed ( ) ,
1903
+ } ;
1904
+
1905
+ if let Some ( computed) = computed {
1906
+ if self . merge_sequential_expr ( a, & mut computed. expr ) ? {
1907
+ return Ok ( true ) ;
1908
+ }
1909
+
1910
+ if !self . is_skippable_for_seq ( Some ( a) , & computed. expr ) {
1911
+ return Ok ( false ) ;
1912
+ }
1913
+ }
1914
+
1915
+ match & mut * * prop {
1898
1916
Prop :: Shorthand ( shorthand) => {
1899
1917
// We can't ignore shorthand properties
1900
1918
//
1901
1919
// https://github.com/swc-project/swc/issues/6914
1902
-
1903
1920
let mut new_b = Box :: new ( Expr :: Ident ( shorthand. clone ( ) ) ) ;
1904
1921
if self . merge_sequential_expr ( a, & mut new_b) ? {
1905
1922
* prop = Box :: new ( Prop :: KeyValue ( KeyValueProp {
@@ -1908,40 +1925,15 @@ impl Optimizer<'_> {
1908
1925
shorthand. span . with_ctxt ( SyntaxContext :: empty ( ) ) ,
1909
1926
)
1910
1927
. into ( ) ,
1911
- value : new_b,
1928
+ value : new_b. clone ( ) ,
1912
1929
} ) ) ;
1913
1930
}
1914
1931
1915
- continue ;
1916
- }
1917
- Prop :: KeyValue ( prop) => Some ( & mut prop. key ) ,
1918
- Prop :: Assign ( _) => None ,
1919
- Prop :: Getter ( prop) => Some ( & mut prop. key ) ,
1920
- Prop :: Setter ( prop) => Some ( & mut prop. key ) ,
1921
- Prop :: Method ( prop) => Some ( & mut prop. key ) ,
1922
- } ;
1923
-
1924
- if let Some ( PropName :: Computed ( key) ) = key {
1925
- if self . merge_sequential_expr ( a, & mut key. expr ) ? {
1926
- return Ok ( true ) ;
1927
- }
1928
-
1929
- if !self . is_skippable_for_seq ( Some ( a) , & key. expr ) {
1930
- return Ok ( false ) ;
1931
- }
1932
- }
1933
-
1934
- match & mut * * prop {
1935
- Prop :: KeyValue ( prop) => {
1936
- if self . merge_sequential_expr ( a, & mut prop. value ) ? {
1937
- return Ok ( true ) ;
1938
- }
1939
-
1940
- if !self . is_skippable_for_seq ( Some ( a) , & prop. value ) {
1932
+ if !self . is_skippable_for_seq ( Some ( a) , & new_b) {
1941
1933
return Ok ( false ) ;
1942
1934
}
1943
1935
}
1944
- Prop :: Assign ( prop) => {
1936
+ Prop :: KeyValue ( prop) => {
1945
1937
if self . merge_sequential_expr ( a, & mut prop. value ) ? {
1946
1938
return Ok ( true ) ;
1947
1939
}
1 commit comments
github-actions[bot] commentedon Sep 30, 2023
Benchmark
es/full/bugs-1
278685
ns/iter (± 8799
)281753
ns/iter (± 8214
)0.99
es/full/minify/libraries/antd
1306400999
ns/iter (± 7553557
)1310902953
ns/iter (± 6290217
)1.00
es/full/minify/libraries/d3
280564034
ns/iter (± 4398582
)276267250
ns/iter (± 4052925
)1.02
es/full/minify/libraries/echarts
1050579974
ns/iter (± 18955008
)1068183291
ns/iter (± 24378636
)0.98
es/full/minify/libraries/jquery
84228909
ns/iter (± 211767
)83842395
ns/iter (± 312468
)1.00
es/full/minify/libraries/lodash
97849488
ns/iter (± 386897
)97117168
ns/iter (± 457172
)1.01
es/full/minify/libraries/moment
50011759
ns/iter (± 77942
)50227921
ns/iter (± 141711
)1.00
es/full/minify/libraries/react
18061141
ns/iter (± 28242
)17986911
ns/iter (± 69693
)1.00
es/full/minify/libraries/terser
217781149
ns/iter (± 785750
)217090952
ns/iter (± 564132
)1.00
es/full/minify/libraries/three
384443615
ns/iter (± 2360071
)383859496
ns/iter (± 1302227
)1.00
es/full/minify/libraries/typescript
2638394815
ns/iter (± 10720442
)2642355444
ns/iter (± 16280606
)1.00
es/full/minify/libraries/victory
565654261
ns/iter (± 5060400
)562936170
ns/iter (± 8543489
)1.00
es/full/minify/libraries/vue
119507821
ns/iter (± 981115
)119196850
ns/iter (± 380357
)1.00
es/full/codegen/es3
34122
ns/iter (± 99
)34217
ns/iter (± 137
)1.00
es/full/codegen/es5
34013
ns/iter (± 390
)34228
ns/iter (± 45
)0.99
es/full/codegen/es2015
34157
ns/iter (± 86
)34376
ns/iter (± 1709
)0.99
es/full/codegen/es2016
34072
ns/iter (± 85
)34225
ns/iter (± 125
)1.00
es/full/codegen/es2017
33967
ns/iter (± 131
)34247
ns/iter (± 55
)0.99
es/full/codegen/es2018
34195
ns/iter (± 254
)34321
ns/iter (± 133
)1.00
es/full/codegen/es2019
34235
ns/iter (± 116
)34352
ns/iter (± 62
)1.00
es/full/codegen/es2020
34272
ns/iter (± 146
)34201
ns/iter (± 51
)1.00
es/full/all/es3
165339227
ns/iter (± 1567430
)165378325
ns/iter (± 495175
)1.00
es/full/all/es5
157435136
ns/iter (± 726426
)157742655
ns/iter (± 863676
)1.00
es/full/all/es2015
116426100
ns/iter (± 505324
)117999119
ns/iter (± 868427
)0.99
es/full/all/es2016
116052403
ns/iter (± 763786
)116922708
ns/iter (± 758007
)0.99
es/full/all/es2017
115111908
ns/iter (± 897604
)116568097
ns/iter (± 2323613
)0.99
es/full/all/es2018
113507113
ns/iter (± 676021
)114292795
ns/iter (± 612608
)0.99
es/full/all/es2019
112016010
ns/iter (± 880499
)113934104
ns/iter (± 696130
)0.98
es/full/all/es2020
108530499
ns/iter (± 361150
)109367898
ns/iter (± 353843
)0.99
es/full/parser
484037
ns/iter (± 5246
)491699
ns/iter (± 6408
)0.98
es/full/base/fixer
20314
ns/iter (± 191
)17924
ns/iter (± 65
)1.13
es/full/base/resolver_and_hygiene
82457
ns/iter (± 150
)80678
ns/iter (± 214
)1.02
serialization of serde
291
ns/iter (± 2
)287
ns/iter (± 0
)1.01
This comment was automatically generated by workflow using github-action-benchmark.