Skip to content

Commit

Permalink
refactor(es/fixer): Move comments with the insertion order (#7097)
Browse files Browse the repository at this point in the history
  • Loading branch information
Austaras committed Mar 20, 2023
1 parent 85c51a8 commit f250f24
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 4 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions crates/swc_ecma_transforms_base/Cargo.toml
Expand Up @@ -19,6 +19,7 @@ concurrent-renamer = ["rayon"]
[dependencies]
better_scoped_tls = { version = "0.1.0", path = "../better_scoped_tls" }
bitflags = "1"
indexmap = "1.6.1"
once_cell = "1.10.0"
phf = { version = "0.10", features = ["macros"] }
rayon = { version = "1", optional = true }
Expand Down
11 changes: 7 additions & 4 deletions crates/swc_ecma_transforms_base/src/fixer.rs
@@ -1,4 +1,7 @@
use rustc_hash::FxHashMap;
use std::{hash::BuildHasherDefault, ops::RangeFull};

use indexmap::IndexMap;
use rustc_hash::FxHasher;
use swc_atoms::js_word;
use swc_common::{comments::Comments, util::take::Take, Span, Spanned};
use swc_ecma_ast::*;
Expand Down Expand Up @@ -37,7 +40,7 @@ struct Fixer<'a> {
///
/// Key is span of inner expression, and value is span of the paren
/// expression.
span_map: FxHashMap<Span, Span>,
span_map: IndexMap<Span, Span, BuildHasherDefault<FxHasher>>,

in_for_stmt_head: bool,

Expand Down Expand Up @@ -613,7 +616,7 @@ impl VisitMut for Fixer<'_> {

n.visit_mut_children_with(self);
if let Some(c) = self.comments {
for (to, from) in self.span_map.drain() {
for (to, from) in self.span_map.drain(RangeFull).rev() {
c.move_leading(from.lo, to.lo);
c.move_trailing(from.hi, to.hi);
}
Expand Down Expand Up @@ -673,7 +676,7 @@ impl VisitMut for Fixer<'_> {

n.visit_mut_children_with(self);
if let Some(c) = self.comments {
for (to, from) in self.span_map.drain() {
for (to, from) in self.span_map.drain(RangeFull).rev() {
c.move_leading(from.lo, to.lo);
c.move_trailing(from.hi, to.hi);
}
Expand Down

1 comment on commit f250f24

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark

Benchmark suite Current: f250f24 Previous: c114f00 Ratio
es/full/bugs-1 300512 ns/iter (± 11863) 308272 ns/iter (± 8605) 0.97
es/full/minify/libraries/antd 1705588855 ns/iter (± 18051346) 1575086125 ns/iter (± 34030267) 1.08
es/full/minify/libraries/d3 315287996 ns/iter (± 8061177) 291709257 ns/iter (± 8681193) 1.08
es/full/minify/libraries/echarts 1293586893 ns/iter (± 11427579) 1202996247 ns/iter (± 13872076) 1.08
es/full/minify/libraries/jquery 92503230 ns/iter (± 1312047) 90123953 ns/iter (± 1135915) 1.03
es/full/minify/libraries/lodash 107386812 ns/iter (± 1329869) 104292647 ns/iter (± 875448) 1.03
es/full/minify/libraries/moment 53176502 ns/iter (± 714105) 51566788 ns/iter (± 345558) 1.03
es/full/minify/libraries/react 19153802 ns/iter (± 126133) 18804348 ns/iter (± 105802) 1.02
es/full/minify/libraries/terser 254306316 ns/iter (± 4919178) 241527945 ns/iter (± 3713319) 1.05
es/full/minify/libraries/three 455384083 ns/iter (± 5652383) 426448556 ns/iter (± 5910576) 1.07
es/full/minify/libraries/typescript 3189235644 ns/iter (± 34640844) 3049196063 ns/iter (± 14098162) 1.05
es/full/minify/libraries/victory 727142990 ns/iter (± 18132965) 682897228 ns/iter (± 8938686) 1.06
es/full/minify/libraries/vue 132174193 ns/iter (± 1106806) 130180219 ns/iter (± 1455814) 1.02
es/full/codegen/es3 26477 ns/iter (± 63) 26378 ns/iter (± 62) 1.00
es/full/codegen/es5 26581 ns/iter (± 36) 26481 ns/iter (± 57) 1.00
es/full/codegen/es2015 26579 ns/iter (± 55) 26463 ns/iter (± 107) 1.00
es/full/codegen/es2016 26557 ns/iter (± 500) 26213 ns/iter (± 111) 1.01
es/full/codegen/es2017 26583 ns/iter (± 63) 26342 ns/iter (± 140) 1.01
es/full/codegen/es2018 26590 ns/iter (± 41) 26342 ns/iter (± 133) 1.01
es/full/codegen/es2019 26591 ns/iter (± 37) 26492 ns/iter (± 86) 1.00
es/full/codegen/es2020 26559 ns/iter (± 47) 26498 ns/iter (± 59) 1.00
es/full/all/es3 182297281 ns/iter (± 2924503) 181943704 ns/iter (± 1565542) 1.00
es/full/all/es5 172214499 ns/iter (± 2666148) 173750289 ns/iter (± 3311427) 0.99
es/full/all/es2015 139867101 ns/iter (± 1742989) 139383703 ns/iter (± 3181280) 1.00
es/full/all/es2016 134116321 ns/iter (± 3223084) 134849770 ns/iter (± 2899369) 0.99
es/full/all/es2017 136852410 ns/iter (± 1770382) 134584852 ns/iter (± 1810368) 1.02
es/full/all/es2018 133292888 ns/iter (± 2310809) 129354362 ns/iter (± 1893877) 1.03
es/full/all/es2019 129933489 ns/iter (± 1617752) 128856063 ns/iter (± 1486742) 1.01
es/full/all/es2020 119688435 ns/iter (± 901777) 119379776 ns/iter (± 888715) 1.00
es/full/parser 542767 ns/iter (± 11948) 540132 ns/iter (± 7574) 1.00
es/full/base/fixer 22396 ns/iter (± 56) 22710 ns/iter (± 54) 0.99
es/full/base/resolver_and_hygiene 82545 ns/iter (± 93) 83112 ns/iter (± 285) 0.99
serialization of ast node 124 ns/iter (± 0) 124 ns/iter (± 2) 1
serialization of serde 126 ns/iter (± 0) 128 ns/iter (± 0) 0.98
css/minify/libraries/bootstrap 29827106 ns/iter (± 81997) 28166445 ns/iter (± 135768) 1.06
css/visitor/compare/clone 2141118 ns/iter (± 75686) 2072625 ns/iter (± 13736) 1.03
css/visitor/compare/visit_mut_span 2316981 ns/iter (± 17624) 2266175 ns/iter (± 10791) 1.02
css/visitor/compare/visit_mut_span_panic 2377107 ns/iter (± 11450) 2311237 ns/iter (± 5493) 1.03
css/visitor/compare/fold_span 3140638 ns/iter (± 27346) 3006721 ns/iter (± 14942) 1.04
css/visitor/compare/fold_span_panic 3407327 ns/iter (± 46010) 3176818 ns/iter (± 20455) 1.07
css/lexer/bootstrap_5_1_3 5121666 ns/iter (± 17682) 5168530 ns/iter (± 23289) 0.99
css/lexer/foundation_6_7_4 4312587 ns/iter (± 2913) 4377944 ns/iter (± 9866) 0.99
css/lexer/tailwind_3_1_1 818388 ns/iter (± 399) 827387 ns/iter (± 3228) 0.99
css/parser/bootstrap_5_1_3 23085911 ns/iter (± 110072) 21835358 ns/iter (± 105493) 1.06
css/parser/foundation_6_7_4 18261217 ns/iter (± 74463) 17325972 ns/iter (± 66186) 1.05
css/parser/tailwind_3_1_1 3353004 ns/iter (± 3851) 3318860 ns/iter (± 11828) 1.01
es/codegen/colors 321446 ns/iter (± 179682) 328743 ns/iter (± 180805) 0.98
es/codegen/large 1173097 ns/iter (± 605096) 1200845 ns/iter (± 587070) 0.98
es/codegen/with-parser/colors 47934 ns/iter (± 465) 48446 ns/iter (± 123) 0.99
es/codegen/with-parser/large 521836 ns/iter (± 1126) 521562 ns/iter (± 2413) 1.00
es/minify/libraries/antd 1560731427 ns/iter (± 14605578) 1405095241 ns/iter (± 23481891) 1.11
es/minify/libraries/d3 289558423 ns/iter (± 3032214) 248976609 ns/iter (± 1964949) 1.16
es/minify/libraries/echarts 1182561910 ns/iter (± 5646564) 1061477488 ns/iter (± 20551602) 1.11
es/minify/libraries/jquery 85754137 ns/iter (± 1370167) 78534822 ns/iter (± 981194) 1.09
es/minify/libraries/lodash 100613050 ns/iter (± 1257598) 94386233 ns/iter (± 1253632) 1.07
es/minify/libraries/moment 48236380 ns/iter (± 794966) 45293838 ns/iter (± 274380) 1.06
es/minify/libraries/react 17322161 ns/iter (± 119085) 16976720 ns/iter (± 184870) 1.02
es/minify/libraries/terser 219390830 ns/iter (± 2566634) 207681333 ns/iter (± 3642185) 1.06
es/minify/libraries/three 373565899 ns/iter (± 5225472) 352937833 ns/iter (± 5524688) 1.06
es/minify/libraries/typescript 2728810021 ns/iter (± 44815615) 2585317063 ns/iter (± 13325844) 1.06
es/minify/libraries/victory 629527886 ns/iter (± 22041619) 555359781 ns/iter (± 7380632) 1.13
es/minify/libraries/vue 123818286 ns/iter (± 4439200) 114519975 ns/iter (± 1099781) 1.08
es/visitor/compare/clone 2300131 ns/iter (± 23938) 2307107 ns/iter (± 11155) 1.00
es/visitor/compare/visit_mut_span 2685831 ns/iter (± 7989) 2674138 ns/iter (± 5406) 1.00
es/visitor/compare/visit_mut_span_panic 2722563 ns/iter (± 9523) 2714055 ns/iter (± 10941) 1.00
es/visitor/compare/fold_span 3829251 ns/iter (± 23095) 3778283 ns/iter (± 17681) 1.01
es/visitor/compare/fold_span_panic 3950020 ns/iter (± 31361) 3924913 ns/iter (± 12688) 1.01
es/lexer/colors 15401 ns/iter (± 70) 15334 ns/iter (± 56) 1.00
es/lexer/angular 7499064 ns/iter (± 18944) 7426316 ns/iter (± 22410) 1.01
es/lexer/backbone 1002237 ns/iter (± 314) 989310 ns/iter (± 4355) 1.01
es/lexer/jquery 5624505 ns/iter (± 1341) 5584764 ns/iter (± 8763) 1.01
es/lexer/jquery mobile 8665126 ns/iter (± 8242) 8568400 ns/iter (± 44096) 1.01
es/lexer/mootools 4468543 ns/iter (± 46305) 4401972 ns/iter (± 8022) 1.02
es/lexer/underscore 841329 ns/iter (± 544) 827627 ns/iter (± 4256) 1.02
es/lexer/three 26529677 ns/iter (± 22190) 26105919 ns/iter (± 91216) 1.02
es/lexer/yui 4699013 ns/iter (± 3234) 4658922 ns/iter (± 17704) 1.01
es/parser/colors 29694 ns/iter (± 141) 29365 ns/iter (± 88) 1.01
es/parser/angular 16130156 ns/iter (± 284551) 15225487 ns/iter (± 113378) 1.06
es/parser/backbone 2249039 ns/iter (± 12576) 2221050 ns/iter (± 15236) 1.01
es/parser/jquery 12417204 ns/iter (± 156561) 11956874 ns/iter (± 161334) 1.04
es/parser/jquery mobile 20984515 ns/iter (± 710675) 18892113 ns/iter (± 248475) 1.11
es/parser/mootools 9338383 ns/iter (± 121562) 9168766 ns/iter (± 22571) 1.02
es/parser/underscore 1908392 ns/iter (± 10970) 1870151 ns/iter (± 10484) 1.02
es/parser/three 58078718 ns/iter (± 239020) 54538903 ns/iter (± 761019) 1.06
es/parser/yui 9409410 ns/iter (± 108847) 9234659 ns/iter (± 74767) 1.02
es/preset-env/usage/builtin_type 144755 ns/iter (± 35839) 141212 ns/iter (± 34929) 1.03
es/preset-env/usage/property 21435 ns/iter (± 102) 21178 ns/iter (± 120) 1.01
es/resolver/typescript 124941206 ns/iter (± 2944315) 121103494 ns/iter (± 2092544) 1.03
es/fixer/typescript 88878927 ns/iter (± 2271320) 86874806 ns/iter (± 641826) 1.02
es/hygiene/typescript 187118528 ns/iter (± 1580451) 181986286 ns/iter (± 1262569) 1.03
es/resolver_with_hygiene/typescript 335507379 ns/iter (± 2020109) 325098349 ns/iter (± 3924245) 1.03
es/visitor/base-perf/module_clone 80558 ns/iter (± 1265) 79919 ns/iter (± 1043) 1.01
es/visitor/base-perf/fold_empty 88967 ns/iter (± 1380) 88658 ns/iter (± 1700) 1.00
es/visitor/base-perf/fold_noop_impl_all 89516 ns/iter (± 1850) 88900 ns/iter (± 1192) 1.01
es/visitor/base-perf/fold_noop_impl_vec 89844 ns/iter (± 1635) 91458 ns/iter (± 1486) 0.98
es/visitor/base-perf/boxing_boxed_clone 56 ns/iter (± 0) 57 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed_clone 53 ns/iter (± 0) 53 ns/iter (± 0) 1
es/visitor/base-perf/boxing_boxed 101 ns/iter (± 0) 103 ns/iter (± 0) 0.98
es/visitor/base-perf/boxing_unboxed 96 ns/iter (± 0) 99 ns/iter (± 0) 0.97
es/visitor/base-perf/visit_contains_this 3278 ns/iter (± 64) 3357 ns/iter (± 47) 0.98
es/base/parallel/resolver/typescript 6664488762 ns/iter (± 407125478) 7160791310 ns/iter (± 478404987) 0.93
es/base/parallel/hygiene/typescript 2136286658 ns/iter (± 22735351) 2192504329 ns/iter (± 26267783) 0.97
misc/visitors/time-complexity/time 5 89 ns/iter (± 1) 101 ns/iter (± 0) 0.88
misc/visitors/time-complexity/time 10 303 ns/iter (± 6) 333 ns/iter (± 0) 0.91
misc/visitors/time-complexity/time 15 576 ns/iter (± 5) 695 ns/iter (± 1) 0.83
misc/visitors/time-complexity/time 20 1106 ns/iter (± 11) 1306 ns/iter (± 2) 0.85
misc/visitors/time-complexity/time 40 5979 ns/iter (± 102) 6879 ns/iter (± 7) 0.87
misc/visitors/time-complexity/time 60 15156 ns/iter (± 56) 17493 ns/iter (± 41) 0.87
es/full-target/es2016 246778 ns/iter (± 4882) 250804 ns/iter (± 1420) 0.98
es/full-target/es2017 232452 ns/iter (± 1720) 242793 ns/iter (± 345) 0.96
es/full-target/es2018 220973 ns/iter (± 1002) 231953 ns/iter (± 352) 0.95
es2020_nullish_coalescing 86875 ns/iter (± 807) 91264 ns/iter (± 139) 0.95
es2020_optional_chaining 117849 ns/iter (± 1131) 124266 ns/iter (± 438) 0.95
es2022_class_properties 140251 ns/iter (± 1350) 147178 ns/iter (± 365) 0.95
es2018_object_rest_spread 91138 ns/iter (± 1579) 95531 ns/iter (± 247) 0.95
es2019_optional_catch_binding 79868 ns/iter (± 444) 84913 ns/iter (± 255) 0.94
es2017_async_to_generator 80409 ns/iter (± 447) 85480 ns/iter (± 248) 0.94
es2016_exponentiation 84252 ns/iter (± 353) 89206 ns/iter (± 254) 0.94
es2015_arrow 88655 ns/iter (± 789) 93644 ns/iter (± 196) 0.95
es2015_block_scoped_fn 86369 ns/iter (± 604) 91105 ns/iter (± 101) 0.95
es2015_block_scoping 159704 ns/iter (± 966) 169753 ns/iter (± 241) 0.94

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.