Commit dd0743a
Optimize undefined lookup
* Create Undefined token to reduce lookups
This creates a new token to treat undefined as a special case since it comes up so frequently. The vast majority of the time we end up using these optimizations, but there are a few cases where we just keep the previous behavior of treating undefined as a normal name: deleting and assigning. These cases are likely to be very infrequent so there would likely not be any noticible performance improvements, as well as a lot of similar code to what already exists.
With the introduction of this new behavior, the main difference was to recreate looking up if undefined was redefined somewhere in this scope stack, which is the reason for the extra tests.
---------
Co-authored-by: cam.walter <cam.walter@servicenow.com>1 parent c0afafe commit dd0743a
11 files changed
Lines changed: 193 additions & 52 deletions
File tree
- rhino/src/main/java/org/mozilla/javascript
- ast
- optimizer
- tests
- src/test/java/org/mozilla/javascript/tests
- testsrc/jstests
Lines changed: 9 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
725 | 725 | | |
726 | 726 | | |
727 | 727 | | |
728 | | - | |
| 728 | + | |
729 | 729 | | |
730 | 730 | | |
731 | 731 | | |
| |||
770 | 770 | | |
771 | 771 | | |
772 | 772 | | |
773 | | - | |
| 773 | + | |
774 | 774 | | |
775 | 775 | | |
776 | 776 | | |
| |||
1008 | 1008 | | |
1009 | 1009 | | |
1010 | 1010 | | |
| 1011 | + | |
| 1012 | + | |
| 1013 | + | |
| 1014 | + | |
| 1015 | + | |
1011 | 1016 | | |
1012 | 1017 | | |
1013 | 1018 | | |
| |||
1054 | 1059 | | |
1055 | 1060 | | |
1056 | 1061 | | |
1057 | | - | |
| 1062 | + | |
1058 | 1063 | | |
1059 | 1064 | | |
1060 | 1065 | | |
| |||
1265 | 1270 | | |
1266 | 1271 | | |
1267 | 1272 | | |
1268 | | - | |
| 1273 | + | |
1269 | 1274 | | |
1270 | 1275 | | |
1271 | 1276 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
196 | 196 | | |
197 | 197 | | |
198 | 198 | | |
| 199 | + | |
199 | 200 | | |
200 | 201 | | |
201 | 202 | | |
| |||
660 | 661 | | |
661 | 662 | | |
662 | 663 | | |
663 | | - | |
| 664 | + | |
664 | 665 | | |
665 | 666 | | |
666 | 667 | | |
| |||
1953 | 1954 | | |
1954 | 1955 | | |
1955 | 1956 | | |
| 1957 | + | |
| 1958 | + | |
| 1959 | + | |
| 1960 | + | |
1956 | 1961 | | |
1957 | 1962 | | |
1958 | 1963 | | |
| |||
2426 | 2431 | | |
2427 | 2432 | | |
2428 | 2433 | | |
| 2434 | + | |
2429 | 2435 | | |
2430 | 2436 | | |
2431 | 2437 | | |
| |||
2443 | 2449 | | |
2444 | 2450 | | |
2445 | 2451 | | |
| 2452 | + | |
2446 | 2453 | | |
2447 | 2454 | | |
2448 | 2455 | | |
| |||
Lines changed: 2 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
330 | 330 | | |
331 | 331 | | |
332 | 332 | | |
333 | | - | |
334 | | - | |
| 333 | + | |
335 | 334 | | |
336 | | - | |
337 | | - | |
| 335 | + | |
338 | 336 | | |
339 | 337 | | |
340 | 338 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
| 153 | + | |
153 | 154 | | |
154 | 155 | | |
155 | 156 | | |
| |||
865 | 866 | | |
866 | 867 | | |
867 | 868 | | |
868 | | - | |
| 869 | + | |
| 870 | + | |
| 871 | + | |
869 | 872 | | |
870 | 873 | | |
871 | 874 | | |
| |||
946 | 949 | | |
947 | 950 | | |
948 | 951 | | |
949 | | - | |
| 952 | + | |
950 | 953 | | |
951 | 954 | | |
952 | 955 | | |
| |||
1801 | 1804 | | |
1802 | 1805 | | |
1803 | 1806 | | |
| 1807 | + | |
| 1808 | + | |
1804 | 1809 | | |
1805 | 1810 | | |
1806 | 1811 | | |
| |||
1821 | 1826 | | |
1822 | 1827 | | |
1823 | 1828 | | |
1824 | | - | |
| 1829 | + | |
| 1830 | + | |
| 1831 | + | |
1825 | 1832 | | |
1826 | 1833 | | |
1827 | 1834 | | |
1828 | 1835 | | |
1829 | 1836 | | |
1830 | 1837 | | |
1831 | 1838 | | |
| 1839 | + | |
| 1840 | + | |
| 1841 | + | |
1832 | 1842 | | |
1833 | 1843 | | |
1834 | 1844 | | |
| |||
1868 | 1878 | | |
1869 | 1879 | | |
1870 | 1880 | | |
| 1881 | + | |
1871 | 1882 | | |
1872 | 1883 | | |
1873 | 1884 | | |
| |||
2036 | 2047 | | |
2037 | 2048 | | |
2038 | 2049 | | |
2039 | | - | |
2040 | | - | |
2041 | | - | |
2042 | | - | |
2043 | | - | |
2044 | | - | |
2045 | | - | |
| 2050 | + | |
| 2051 | + | |
| 2052 | + | |
| 2053 | + | |
| 2054 | + | |
| 2055 | + | |
| 2056 | + | |
| 2057 | + | |
| 2058 | + | |
| 2059 | + | |
| 2060 | + | |
| 2061 | + | |
| 2062 | + | |
| 2063 | + | |
| 2064 | + | |
| 2065 | + | |
2046 | 2066 | | |
2047 | 2067 | | |
2048 | 2068 | | |
| |||
2318 | 2338 | | |
2319 | 2339 | | |
2320 | 2340 | | |
2321 | | - | |
| 2341 | + | |
| 2342 | + | |
| 2343 | + | |
| 2344 | + | |
| 2345 | + | |
2322 | 2346 | | |
2323 | 2347 | | |
2324 | 2348 | | |
| |||
2412 | 2436 | | |
2413 | 2437 | | |
2414 | 2438 | | |
| 2439 | + | |
| 2440 | + | |
2415 | 2441 | | |
2416 | 2442 | | |
2417 | 2443 | | |
| |||
3382 | 3408 | | |
3383 | 3409 | | |
3384 | 3410 | | |
| 3411 | + | |
| 3412 | + | |
| 3413 | + | |
| 3414 | + | |
| 3415 | + | |
| 3416 | + | |
| 3417 | + | |
| 3418 | + | |
| 3419 | + | |
| 3420 | + | |
| 3421 | + | |
| 3422 | + | |
| 3423 | + | |
| 3424 | + | |
3385 | 3425 | | |
3386 | 3426 | | |
3387 | 3427 | | |
| |||
4347 | 4387 | | |
4348 | 4388 | | |
4349 | 4389 | | |
| 4390 | + | |
4350 | 4391 | | |
4351 | 4392 | | |
4352 | 4393 | | |
| |||
4369 | 4410 | | |
4370 | 4411 | | |
4371 | 4412 | | |
| 4413 | + | |
| 4414 | + | |
| 4415 | + | |
4372 | 4416 | | |
4373 | 4417 | | |
4374 | 4418 | | |
| |||
4379 | 4423 | | |
4380 | 4424 | | |
4381 | 4425 | | |
| 4426 | + | |
4382 | 4427 | | |
4383 | 4428 | | |
4384 | 4429 | | |
| |||
4555 | 4600 | | |
4556 | 4601 | | |
4557 | 4602 | | |
4558 | | - | |
| 4603 | + | |
| 4604 | + | |
| 4605 | + | |
| 4606 | + | |
4559 | 4607 | | |
4560 | 4608 | | |
4561 | 4609 | | |
4562 | 4610 | | |
4563 | 4611 | | |
4564 | 4612 | | |
4565 | | - | |
| 4613 | + | |
| 4614 | + | |
| 4615 | + | |
| 4616 | + | |
4566 | 4617 | | |
4567 | 4618 | | |
4568 | 4619 | | |
| |||
4613 | 4664 | | |
4614 | 4665 | | |
4615 | 4666 | | |
| 4667 | + | |
| 4668 | + | |
4616 | 4669 | | |
4617 | 4670 | | |
4618 | 4671 | | |
4619 | | - | |
| 4672 | + | |
4620 | 4673 | | |
4621 | 4674 | | |
4622 | 4675 | | |
| |||
4771 | 4824 | | |
4772 | 4825 | | |
4773 | 4826 | | |
| 4827 | + | |
| 4828 | + | |
| 4829 | + | |
| 4830 | + | |
4774 | 4831 | | |
4775 | 4832 | | |
4776 | 4833 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
89 | | - | |
| 89 | + | |
| 90 | + | |
90 | 91 | | |
91 | 92 | | |
92 | 93 | | |
| |||
365 | 366 | | |
366 | 367 | | |
367 | 368 | | |
| 369 | + | |
| 370 | + | |
368 | 371 | | |
369 | 372 | | |
370 | 373 | | |
| |||
696 | 699 | | |
697 | 700 | | |
698 | 701 | | |
| 702 | + | |
| 703 | + | |
699 | 704 | | |
700 | 705 | | |
701 | 706 | | |
| |||
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
| 117 | + | |
117 | 118 | | |
118 | 119 | | |
119 | 120 | | |
| |||
222 | 223 | | |
223 | 224 | | |
224 | 225 | | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
225 | 229 | | |
226 | 230 | | |
227 | 231 | | |
| |||
407 | 411 | | |
408 | 412 | | |
409 | 413 | | |
| 414 | + | |
410 | 415 | | |
411 | 416 | | |
412 | 417 | | |
| |||
556 | 561 | | |
557 | 562 | | |
558 | 563 | | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
559 | 567 | | |
560 | 568 | | |
561 | 569 | | |
| |||
0 commit comments