Commit 44af53b
authored
[clang][modules] Avoid calling expensive
The `ASTWriter` algorithm for computing affecting module maps uses
`SourceManager::translateFile()` to get a `FileID` from a `FileEntry`.
This is slow (O(n)) since the function performs a linear walk over
`SLocEntries` until it finds one with a matching `FileEntry`.
This patch removes this use of `SourceManager::translateFile()` by
tracking `FileID` instead of `FileEntry` in couple of places in
`ModuleMap`, giving `ASTWriter` the desired `FileID` directly. There are
no changes required for clients that still want a `FileEntry` from
`ModuleMap`: the existing APIs internally use `SourceManager` to perform
the reverse `FileID` to `FileEntry` conversion in O(1).SourceManager::translateFile() (#86216)1 parent 5b06de7 commit 44af53b
File tree
6 files changed
+78
-50
lines changed- clang
- include/clang/Lex
- lib
- Frontend
- Lex
- Serialization
- test/ClangScanDeps
6 files changed
+78
-50
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
263 | 263 | | |
264 | 264 | | |
265 | 265 | | |
266 | | - | |
267 | | - | |
| 266 | + | |
| 267 | + | |
268 | 268 | | |
269 | 269 | | |
270 | 270 | | |
| |||
279 | 279 | | |
280 | 280 | | |
281 | 281 | | |
282 | | - | |
283 | | - | |
| 282 | + | |
284 | 283 | | |
285 | 284 | | |
286 | 285 | | |
| |||
618 | 617 | | |
619 | 618 | | |
620 | 619 | | |
621 | | - | |
622 | | - | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
623 | 623 | | |
624 | 624 | | |
625 | 625 | | |
| |||
631 | 631 | | |
632 | 632 | | |
633 | 633 | | |
| 634 | + | |
634 | 635 | | |
635 | 636 | | |
636 | | - | |
| 637 | + | |
637 | 638 | | |
638 | 639 | | |
639 | 640 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1337 | 1337 | | |
1338 | 1338 | | |
1339 | 1339 | | |
| 1340 | + | |
1340 | 1341 | | |
1341 | | - | |
1342 | | - | |
| 1342 | + | |
| 1343 | + | |
| 1344 | + | |
| 1345 | + | |
| 1346 | + | |
| 1347 | + | |
| 1348 | + | |
| 1349 | + | |
| 1350 | + | |
| 1351 | + | |
| 1352 | + | |
| 1353 | + | |
| 1354 | + | |
| 1355 | + | |
| 1356 | + | |
| 1357 | + | |
1343 | 1358 | | |
1344 | 1359 | | |
1345 | 1360 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
535 | 535 | | |
536 | 536 | | |
537 | 537 | | |
538 | | - | |
539 | | - | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
540 | 546 | | |
541 | 547 | | |
542 | 548 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
648 | 648 | | |
649 | 649 | | |
650 | 650 | | |
651 | | - | |
652 | | - | |
| 651 | + | |
653 | 652 | | |
654 | 653 | | |
655 | 654 | | |
| |||
1021 | 1020 | | |
1022 | 1021 | | |
1023 | 1022 | | |
1024 | | - | |
| 1023 | + | |
1025 | 1024 | | |
1026 | 1025 | | |
1027 | 1026 | | |
| |||
1060 | 1059 | | |
1061 | 1060 | | |
1062 | 1061 | | |
1063 | | - | |
| 1062 | + | |
1064 | 1063 | | |
1065 | 1064 | | |
1066 | 1065 | | |
| |||
1069 | 1068 | | |
1070 | 1069 | | |
1071 | 1070 | | |
1072 | | - | |
| 1071 | + | |
1073 | 1072 | | |
1074 | 1073 | | |
1075 | 1074 | | |
| |||
1086 | 1085 | | |
1087 | 1086 | | |
1088 | 1087 | | |
1089 | | - | |
| 1088 | + | |
1090 | 1089 | | |
1091 | 1090 | | |
1092 | 1091 | | |
| |||
1307 | 1306 | | |
1308 | 1307 | | |
1309 | 1308 | | |
1310 | | - | |
1311 | | - | |
| 1309 | + | |
1312 | 1310 | | |
1313 | | - | |
| 1311 | + | |
1314 | 1312 | | |
1315 | | - | |
1316 | | - | |
| 1313 | + | |
1317 | 1314 | | |
1318 | 1315 | | |
1319 | 1316 | | |
1320 | | - | |
| 1317 | + | |
| 1318 | + | |
| 1319 | + | |
| 1320 | + | |
| 1321 | + | |
1321 | 1322 | | |
1322 | 1323 | | |
1323 | 1324 | | |
1324 | 1325 | | |
1325 | | - | |
| 1326 | + | |
| 1327 | + | |
| 1328 | + | |
| 1329 | + | |
| 1330 | + | |
| 1331 | + | |
1326 | 1332 | | |
1327 | 1333 | | |
1328 | | - | |
1329 | | - | |
| 1334 | + | |
1330 | 1335 | | |
1331 | | - | |
| 1336 | + | |
1332 | 1337 | | |
1333 | 1338 | | |
1334 | 1339 | | |
| |||
1517 | 1522 | | |
1518 | 1523 | | |
1519 | 1524 | | |
1520 | | - | |
| 1525 | + | |
1521 | 1526 | | |
1522 | 1527 | | |
1523 | 1528 | | |
| |||
1585 | 1590 | | |
1586 | 1591 | | |
1587 | 1592 | | |
1588 | | - | |
1589 | | - | |
1590 | | - | |
1591 | | - | |
| 1593 | + | |
| 1594 | + | |
| 1595 | + | |
| 1596 | + | |
1592 | 1597 | | |
1593 | | - | |
1594 | | - | |
| 1598 | + | |
1595 | 1599 | | |
1596 | 1600 | | |
1597 | 1601 | | |
| |||
2011 | 2015 | | |
2012 | 2016 | | |
2013 | 2017 | | |
2014 | | - | |
2015 | | - | |
| 2018 | + | |
| 2019 | + | |
| 2020 | + | |
2016 | 2021 | | |
2017 | 2022 | | |
2018 | | - | |
| 2023 | + | |
| 2024 | + | |
2019 | 2025 | | |
2020 | 2026 | | |
2021 | 2027 | | |
| |||
2120 | 2126 | | |
2121 | 2127 | | |
2122 | 2128 | | |
2123 | | - | |
| 2129 | + | |
| 2130 | + | |
2124 | 2131 | | |
2125 | 2132 | | |
2126 | 2133 | | |
| |||
2906 | 2913 | | |
2907 | 2914 | | |
2908 | 2915 | | |
2909 | | - | |
| 2916 | + | |
2910 | 2917 | | |
2911 | 2918 | | |
2912 | 2919 | | |
| |||
3139 | 3146 | | |
3140 | 3147 | | |
3141 | 3148 | | |
3142 | | - | |
3143 | | - | |
| 3149 | + | |
3144 | 3150 | | |
3145 | 3151 | | |
3146 | 3152 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
193 | 193 | | |
194 | 194 | | |
195 | 195 | | |
196 | | - | |
197 | | - | |
| 196 | + | |
| 197 | + | |
198 | 198 | | |
199 | 199 | | |
200 | | - | |
201 | 200 | | |
202 | 201 | | |
203 | 202 | | |
204 | 203 | | |
205 | 204 | | |
206 | | - | |
| 205 | + | |
| 206 | + | |
207 | 207 | | |
208 | 208 | | |
209 | 209 | | |
| |||
216 | 216 | | |
217 | 217 | | |
218 | 218 | | |
219 | | - | |
220 | | - | |
| 219 | + | |
| 220 | + | |
221 | 221 | | |
222 | 222 | | |
223 | 223 | | |
224 | | - | |
225 | | - | |
| 224 | + | |
| 225 | + | |
226 | 226 | | |
227 | 227 | | |
228 | 228 | | |
| |||
4728 | 4728 | | |
4729 | 4729 | | |
4730 | 4730 | | |
4731 | | - | |
4732 | 4731 | | |
4733 | 4732 | | |
4734 | 4733 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
71 | 71 | | |
72 | 72 | | |
73 | 73 | | |
| 74 | + | |
74 | 75 | | |
75 | 76 | | |
76 | 77 | | |
| |||
0 commit comments