Commit 93542e6
authored
Optimizations (#4006)
* Use an arena for parser metadata
* Use the parser arena for the constant pool
* Speed up the constant hash function
* Small optimization for parser_lex_magic_comment
* Scan forward through inline whitespace to avoid writing to parser->current.end continuously
* Fast-paths for ASCII-only identifiers
* Avoid unnecessary zero-ing of memory
* Pre-size arena to avoid unnecessary growth
* Force the allocation to be inlined
* Inline pm_node_list_append, pm_char_is_whitespace, and pm_char_is_inline_whitespace
* Avoid redundant whitespace scanning in magic comment lexing
* Potentially skip whitespace scanning for speed
* Inline three more functions, and lower the hash threshold for locals
* Lex simple integer values as we are lexing
* Only dispatch to lex_optional_float_suffix when it is possible
* Optimize constant pool hash for short strings
* Include string in constant pool entry to avoid chasing pointer
* SIMD/SWAR for strpbrk
* Fix a bug where we removed the \r warning
* Use a bloom filter to quickly reject local lookups
* Cache strpbrk lookup tables
* Fix up rebase errors
* More correctly detect SIMD on MSVC
* Ensure allocations to the constant pool are through the arena
* Fix ASAN reading off end of strpbrk cache
ruby/ruby@968b999
Co-Authored-By: Kevin Newton <kddnewton@gmail.com>
* Do not use GCC-specific syntax for lookup tables
ruby/ruby@5026acf
Co-Authored-By: Kevin Newton <kddnewton@gmail.com>
* Fix infinite loop in parser_lex_magic_comment
ruby/ruby@ec3162c
Co-Authored-By: Kevin Newton <kddnewton@gmail.com>
* Fix C coverage by moving stuff slightly around
---------
Co-authored-by: Earlopain <14981592+Earlopain@users.noreply.github.com>18 files changed
Lines changed: 1043 additions & 481 deletions
File tree
- include/prism
- util
- src
- util
- templates
- include/prism
- src
- test/prism
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
91 | 91 | | |
92 | 92 | | |
93 | 93 | | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
94 | 106 | | |
95 | 107 | | |
96 | 108 | | |
| |||
264 | 276 | | |
265 | 277 | | |
266 | 278 | | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
267 | 322 | | |
268 | 323 | | |
269 | 324 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
20 | 30 | | |
21 | 31 | | |
22 | 32 | | |
23 | 33 | | |
24 | 34 | | |
25 | 35 | | |
26 | 36 | | |
27 | | - | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
28 | 45 | | |
29 | 46 | | |
30 | 47 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
100 | 100 | | |
101 | 101 | | |
102 | 102 | | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
103 | 110 | | |
104 | 111 | | |
105 | 112 | | |
| |||
169 | 176 | | |
170 | 177 | | |
171 | 178 | | |
172 | | - | |
| 179 | + | |
173 | 180 | | |
174 | 181 | | |
175 | 182 | | |
| |||
191 | 198 | | |
192 | 199 | | |
193 | 200 | | |
194 | | - | |
| 201 | + | |
195 | 202 | | |
196 | 203 | | |
197 | 204 | | |
| |||
224 | 231 | | |
225 | 232 | | |
226 | 233 | | |
227 | | - | |
| 234 | + | |
228 | 235 | | |
229 | 236 | | |
230 | 237 | | |
| |||
556 | 563 | | |
557 | 564 | | |
558 | 565 | | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
559 | 573 | | |
560 | 574 | | |
561 | 575 | | |
| |||
639 | 653 | | |
640 | 654 | | |
641 | 655 | | |
| 656 | + | |
| 657 | + | |
| 658 | + | |
642 | 659 | | |
643 | 660 | | |
644 | 661 | | |
| |||
790 | 807 | | |
791 | 808 | | |
792 | 809 | | |
793 | | - | |
794 | | - | |
795 | | - | |
796 | | - | |
| 810 | + | |
797 | 811 | | |
798 | | - | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
799 | 830 | | |
800 | 831 | | |
801 | 832 | | |
| |||
938 | 969 | | |
939 | 970 | | |
940 | 971 | | |
| 972 | + | |
| 973 | + | |
| 974 | + | |
| 975 | + | |
| 976 | + | |
| 977 | + | |
| 978 | + | |
| 979 | + | |
| 980 | + | |
| 981 | + | |
| 982 | + | |
| 983 | + | |
| 984 | + | |
| 985 | + | |
| 986 | + | |
| 987 | + | |
| 988 | + | |
| 989 | + | |
| 990 | + | |
| 991 | + | |
| 992 | + | |
941 | 993 | | |
942 | 994 | | |
943 | 995 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
47 | 67 | | |
48 | 68 | | |
49 | 69 | | |
50 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
51 | 74 | | |
52 | 75 | | |
53 | 76 | | |
54 | 77 | | |
55 | 78 | | |
56 | | - | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
57 | 93 | | |
58 | 94 | | |
59 | 95 | | |
| |||
64 | 100 | | |
65 | 101 | | |
66 | 102 | | |
67 | | - | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
68 | 109 | | |
69 | 110 | | |
70 | 111 | | |
| |||
76 | 117 | | |
77 | 118 | | |
78 | 119 | | |
79 | | - | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
80 | 126 | | |
81 | 127 | | |
82 | 128 | | |
| |||
0 commit comments