Open Bug 1912712 Opened 6 months ago Updated 6 months ago

Online text demo (https://onlinetexttools.com/calculate-text-entropy) is slower than Chrome and we appear to spend the first 400ms in Baseline

Categories

(Core :: JavaScript Engine, task, P3)

task

Tracking

()

People

(Reporter: mayankleoboy1, Unassigned)

References

(Blocks 2 open bugs, )

Details

Attachments

(1 file)

Attached file sample text

The w function is pretty large and uses a lot of bitwise OR expressions.

    function w(e) {
        return 1536 <= e && e <= 1541 || e == 1757 || e == 1807 || e == 2274 || e == 3406 || e == 69821 || 70082 <= e && e <= 70083 || e == 72250 || 72326 <= e && e <= 72329 || e == 73030 ? b : e == 13 ? d : e == 10 ? s : 0 <= e && e <= 9 || 11 <= e && e <= 12 || 14 <= e && e <= 31 || 127 <= e && e <= 159 || e == 173 || e == 1564 || e == 6158 || e == 8203 || 8206 <= e && e <= 8207 || e == 8232 || e == 8233 || 8234 <= e && e <= 8238 || 8288 <= e && e <= 8292 || e == 8293 || 8294 <= e && e <= 8303 || 55296 <= e && e <= 57343 || e == 65279 || 65520 <= e && e <= 65528 || 65529 <= e && e <= 65531 || 113824 <= e && e <= 113827 || 119155 <= e && e <= 119162 || e == 917504 || e == 917505 || 917506 <= e && e <= 917535 || 917632 <= e && e <= 917759 || 918e3 <= e && e <= 921599 ? y : 768 <= e && e <= 879 || 1155 <= e && e <= 1159 || 1160 <= e && e <= 1161 || 1425 <= e && e <= 1469 || e == 1471 || 1473 <= e && e <= 1474 || 1476 <= e && e <= 1477 || e == 1479 || 1552 <= e && e <= 1562 || 1611 <= e && e <= 1631 || e == 1648 || 1750 <= e && e <= 1756 || 1759 <= e && e <= 1764 || 1767 <= e && e <= 1768 || 1770 <= e && e <= 1773 || e == 1809 || 1840 <= e && e <= 1866 || 1958 <= e && e <= 1968 || 2027 <= e && e <= 2035 || 2070 <= e && e <= 2073 || 2075 <= e && e <= 2083 || 2085 <= e && e <= 2087 || 2089 <= e && e <= 2093 || 2137 <= e && e <= 2139 || 2260 <= e && e <= 2273 || 2275 <= e && e <= 2306 || e == 2362 || e == 2364 || 2369 <= e && e <= 2376 || e == 2381 || 2385 <= e && e <= 2391 || 2402 <= e && e <= 2403 || e == 2433 || e == 2492 || e == 2494 || 2497 <= e && e <= 2500 || e == 2509 || e == 2519 || 2530 <= e && e <= 2531 || 2561 <= e && e <= 2562 || e == 2620 || 2625 <= e && e <= 2626 || 2631 <= e && e <= 2632 || 2635 <= e && e <= 2637 || e == 2641 || 2672 <= e && e <= 2673 || e == 2677 || 2689 <= e && e <= 2690 || e == 2748 || 2753 <= e && e <= 2757 || 2759 <= e && e <= 2760 || e == 2765 || 2786 <= e && e <= 2787 || 2810 <= e && e <= 2815 || e == 2817 || e == 2876 || e == 2878 || e == 2879 || 2881 <= e && e <= 2884 || e == 2893 || e == 2902 || e == 2903 || 2914 <= e && e <= 2915 || e == 2946 || e == 3006 || e == 3008 || e == 3021 || e == 3031 || e == 3072 || 3134 <= e && e <= 3136 || 3142 <= e && e <= 3144 || 3146 <= e && e <= 3149 || 3157 <= e && e <= 3158 || 3170 <= e && e <= 3171 || e == 3201 || e == 3260 || e == 3263 || e == 3266 || e == 3270 || 3276 <= e && e <= 3277 || 3285 <= e && e <= 3286 || 3298 <= e && e <= 3299 || 3328 <= e && e <= 3329 || 3387 <= e && e <= 3388 || e == 3390 || 3393 <= e && e <= 3396 || e == 3405 || e == 3415 || 3426 <= e && e <= 3427 || e == 3530 || e == 3535 || 3538 <= e && e <= 3540 || e == 3542 || e == 3551 || e == 3633 || 3636 <= e && e <= 3642 || 3655 <= e && e <= 3662 || e == 3761 || 3764 <= e && e <= 3769 || 3771 <= e && e <= 3772 || 3784 <= e && e <= 3789 || 3864 <= e && e <= 3865 || e == 3893 || e == 3895 || e == 3897 || 3953 <= e && e <= 3966 || 3968 <= e && e <= 3972 || 3974 <= e && e <= 3975 || 3981 <= e && e <= 3991 || 3993 <= e && e <= 4028 || e == 4038 || 4141 <= e && e <= 4144 || 4146 <= e && e <= 4151 || 4153 <= e && e <= 4154 || 4157 <= e && e <= 4158 || 4184 <= e && e <= 4185 || 4190 <= e && e <= 4192 || 4209 <= e && e <= 4212 || e == 4226 || 4229 <= e && e <= 4230 || e == 4237 || e == 4253 || 4957 <= e && e <= 4959 || 5906 <= e && e <= 5908 || 5938 <= e && e <= 5940 || 5970 <= e && e <= 5971 || 6002 <= e && e <= 6003 || 6068 <= e && e <= 6069 || 6071 <= e && e <= 6077 || e == 6086 || 6089 <= e && e <= 6099 || e == 6109 || 6155 <= e && e <= 6157 || 6277 <= e && e <= 6278 || e == 6313 || 6432 <= e && e <= 6434 || 6439 <= e && e <= 6440 || e == 6450 || 6457 <= e && e <= 6459 || 6679 <= e && e <= 6680 || e == 6683 || e == 6742 || 6744 <= e && e <= 6750 || e == 6752 || e == 6754 || 6757 <= e && e <= 6764 || 6771 <= e && e <= 6780 || e == 6783 || 6832 <= e && e <= 6845 || e == 6846 || 6912 <= e && e <= 6915 || e == 6964 || 6966 <= e && e <= 6970 || e == 6972 || e == 6978 || 7019 <= e && e <= 7027 || 7040 <= e && e <= 7041 || 7074 <= e && e <= 7077 || 7080 <= e && e <= 7081 || 7083 <= e && e <= 7085 || e == 7142 || 7144 <= e && e <= 7145 || e == 7149 || 7151 <= e && e <= 7153 || 7212 <= e && e <= 7219 || 7222 <= e && e <= 7223 || 7376 <= e && e <= 7378 || 7380 <= e && e <= 7392 || 7394 <= e && e <= 7400 || e == 7405 || e == 7412 || 7416 <= e && e <= 7417 || 7616 <= e && e <= 7673 || 7675 <= e && e <= 7679 || e == 8204 || 8400 <= e && e <= 8412 || 8413 <= e && e <= 8416 || e == 8417 || 8418 <= e && e <= 8420 || 8421 <= e && e <= 8432 || 11503 <= e && e <= 11505 || e == 11647 || 11744 <= e && e <= 11775 || 12330 <= e && e <= 12333 || 12334 <= e && e <= 12335 || 12441 <= e && e <= 12442 || e == 42607 || 42608 <= e && e <= 42610 || 42612 <= e && e <= 42621 || 42654 <= e && e <= 42655 || 42736 <= e && e <= 42737 || e == 43010 || e == 43014 || e == 43019 || 43045 <= e && e <= 43046 || 43204 <= e && e <= 43205 || 43232 <= e && e <= 43249 || 43302 <= e && e <= 43309 || 43335 <= e && e <= 43345 || 43392 <= e && e <= 43394 || e == 43443 || 43446 <= e && e <= 43449 || e == 43452 || e == 43493 || 43561 <= e && e <= 43566 || 43569 <= e && e <= 43570 || 43573 <= e && e <= 43574 || e == 43587 || e == 43596 || e == 43644 || e == 43696 || 43698 <= e && e <= 43700 || 43703 <= e && e <= 43704 || 43710 <= e && e <= 43711 || e == 43713 || 43756 <= e && e <= 43757 || e == 43766 || e == 44005 || e == 44008 || e == 44013 || e == 64286 || 65024 <= e && e <= 65039 || 65056 <= e && e <= 65071 || 65438 <= e && e <= 65439 || e == 66045 || e == 66272 || 66422 <= e && e <= 66426 || 68097 <= e && e <= 68099 || 68101 <= e && e <= 68102 || 68108 <= e && e <= 68111 || 68152 <= e && e <= 68154 || e == 68159 || 68325 <= e && e <= 68326 || e == 69633 || 69688 <= e && e <= 69702 || 69759 <= e && e <= 69761 || 69811 <= e && e <= 69814 || 69817 <= e && e <= 69818 || 69888 <= e && e <= 69890 || 69927 <= e && e <= 69931 || 69933 <= e && e <= 69940 || e == 70003 || 70016 <= e && e <= 70017 || 70070 <= e && e <= 70078 || 70090 <= e && e <= 70092 || 70191 <= e && e <= 70193 || e == 70196 || 70198 <= e && e <= 70199 || e == 70206 || e == 70367 || 70371 <= e && e <= 70378 || 70400 <= e && e <= 70401 || e == 70460 || e == 70462 || e == 70464 || e == 70487 || 70502 <= e && e <= 70508 || 70512 <= e && e <= 70516 || 70712 <= e && e <= 70719 || 70722 <= e && e <= 70724 || e == 70726 || e == 70832 || 70835 <= e && e <= 70840 || e == 70842 || e == 70845 || 70847 <= e && e <= 70848 || 70850 <= e && e <= 70851 || e == 71087 || 71090 <= e && e <= 71093 || 71100 <= e && e <= 71101 || 71103 <= e && e <= 71104 || 71132 <= e && e <= 71133 || 71219 <= e && e <= 71226 || e == 71229 || 71231 <= e && e <= 71232 || e == 71339 || e == 71341 || 71344 <= e && e <= 71349 || e == 71351 || 71453 <= e && e <= 71455 || 71458 <= e && e <= 71461 || 71463 <= e && e <= 71467 || 72193 <= e && e <= 72198 || 72201 <= e && e <= 72202 || 72243 <= e && e <= 72248 || 72251 <= e && e <= 72254 || e == 72263 || 72273 <= e && e <= 72278 || 72281 <= e && e <= 72283 || 72330 <= e && e <= 72342 || 72344 <= e && e <= 72345 || 72752 <= e && e <= 72758 || 72760 <= e && e <= 72765 || e == 72767 || 72850 <= e && e <= 72871 || 72874 <= e && e <= 72880 || 72882 <= e && e <= 72883 || 72885 <= e && e <= 72886 || 73009 <= e && e <= 73014 || e == 73018 || 73020 <= e && e <= 73021 || 73023 <= e && e <= 73029 || e == 73031 || 92912 <= e && e <= 92916 || 92976 <= e && e <= 92982 || 94095 <= e && e <= 94098 || 113821 <= e && e <= 113822 || e == 119141 || 119143 <= e && e <= 119145 || 119150 <= e && e <= 119154 || 119163 <= e && e <= 119170 || 119173 <= e && e <= 119179 || 119210 <= e && e <= 119213 || 119362 <= e && e <= 119364 || 121344 <= e && e <= 121398 || 121403 <= e && e <= 121452 || e == 121461 || e == 121476 || 121499 <= e && e <= 121503 || 121505 <= e && e <= 121519 || 122880 <= e && e <= 122886 || 122888 <= e && e <= 122904 || 122907 <= e && e <= 122913 || 122915 <= e && e <= 122916 || 122918 <= e && e <= 122922 || 125136 <= e && e <= 125142 || 125252 <= e && e <= 125258 || 917536 <= e && e <= 917631 || 917760 <= e && e <= 917999 ? a : 127462 <= e && e <= 127487 ? h : e == 2307 || e == 2363 || 2366 <= e && e <= 2368 || 2377 <= e && e <= 2380 || 2382 <= e && e <= 2383 || 2434 <= e && e <= 2435 || 2495 <= e && e <= 2496 || 2503 <= e && e <= 2504 || 2507 <= e && e <= 2508 || e == 2563 || 2622 <= e && e <= 2624 || e == 2691 || 2750 <= e && e <= 2752 || e == 2761 || 2763 <= e && e <= 2764 || 2818 <= e && e <= 2819 || e == 2880 || 2887 <= e && e <= 2888 || 2891 <= e && e <= 2892 || e == 3007 || 3009 <= e && e <= 3010 || 3014 <= e && e <= 3016 || 3018 <= e && e <= 3020 || 3073 <= e && e <= 3075 || 3137 <= e && e <= 3140 || 3202 <= e && e <= 3203 || e == 3262 || 3264 <= e && e <= 3265 || 3267 <= e && e <= 3268 || 3271 <= e && e <= 3272 || 3274 <= e && e <= 3275 || 3330 <= e && e <= 3331 || 3391 <= e && e <= 3392 || 3398 <= e && e <= 3400 || 3402 <= e && e <= 3404 || 3458 <= e && e <= 3459 || 3536 <= e && e <= 3537 || 3544 <= e && e <= 3550 || 3570 <= e && e <= 3571 || e == 3635 || e == 3763 || 3902 <= e && e <= 3903 || e == 3967 || e == 4145 || 4155 <= e && e <= 4156 || 4182 <= e && e <= 4183 || e == 4228 || e == 6070 || 6078 <= e && e <= 6085 || 6087 <= e && e <= 6088 || 6435 <= e && e <= 6438 || 6441 <= e && e <= 6443 || 6448 <= e && e <= 6449 || 6451 <= e && e <= 6456 || 6681 <= e && e <= 6682 || e == 6741 || e == 6743 || 6765 <= e && e <= 6770 || e == 6916 || e == 6965 || e == 6971 || 6973 <= e && e <= 6977 || 6979 <= e && e <= 6980 || e == 7042 || e == 7073 || 7078 <= e && e <= 7079 || e == 7082 || e == 7143 || 7146 <= e && e <= 7148 || e == 7150 || 7154 <= e && e <= 7155 || 7204 <= e && e <= 7211 || 7220 <= e && e <= 7221 || e == 7393 || 7410 <= e && e <= 7411 || e == 7415 || 43043 <= e && e <= 43044 || e == 43047 || 43136 <= e && e <= 43137 || 43188 <= e && e <= 43203 || 43346 <= e && e <= 43347 || e == 43395 || 43444 <= e && e <= 43445 || 43450 <= e && e <= 43451 || 43453 <= e && e <= 43456 || 43567 <= e && e <= 43568 || 43571 <= e && e <= 43572 || e == 43597 || e == 43755 || 43758 <= e && e <= 43759 || e == 43765 || 44003 <= e && e <= 44004 || 44006 <= e && e <= 44007 || 44009 <= e && e <= 44010 || e == 44012 || e == 69632 || e == 69634 || e == 69762 || 69808 <= e && e <= 69810 || 69815 <= e && e <= 69816 || e == 69932 || e == 70018 || 70067 <= e && e <= 70069 || 70079 <= e && e <= 70080 || 70188 <= e && e <= 70190 || 70194 <= e && e <= 70195 || e == 70197 || 70368 <= e && e <= 70370 || 70402 <= e && e <= 70403 || e == 70463 || 70465 <= e && e <= 70468 || 70471 <= e && e <= 70472 || 70475 <= e && e <= 70477 || 70498 <= e && e <= 70499 || 70709 <= e && e <= 70711 || 70720 <= e && e <= 70721 || e == 70725 || 70833 <= e && e <= 70834 || e == 70841 || 70843 <= e && e <= 70844 || e == 70846 || e == 70849 || 71088 <= e && e <= 71089 || 71096 <= e && e <= 71099 || e == 71102 || 71216 <= e && e <= 71218 || 71227 <= e && e <= 71228 || e == 71230 || e == 71340 || 71342 <= e && e <= 71343 || e == 71350 || 71456 <= e && e <= 71457 || e == 71462 || 72199 <= e && e <= 72200 || e == 72249 || 72279 <= e && e <= 72280 || e == 72343 || e == 72751 || e == 72766 || e == 72873 || e == 72881 || e == 72884 || 94033 <= e && e <= 94078 || e == 119142 || e == 119149 ? G : 4352 <= e && e <= 4447 || 43360 <= e && e <= 43388 ? O : 4448 <= e && e <= 4519 || 55216 <= e && e <= 55238 ? v : 4520 <= e && e <= 4607 || 55243 <= e && e <= 55291 ? x : e == 44032 || e == 44060 || e == 44088 || e == 44116 || e == 44144 || e == 44172 || e == 44200 || e == 44228 || e == 44256 || e == 44284 || e == 44312 || e == 44340 || e == 44368 || e == 44396 || e == 44424 || e == 44452 || e == 44480 || e == 44508 || e == 44536 || e == 44564 || e == 44592 || e == 44620 || e == 44648 || e == 44676 || e == 44704 || e == 44732 || e == 44760 || e == 44788 || e == 44816 || e == 44844 || e == 44872 || e == 44900 || e == 44928 || e == 44956 || e == 44984 || e == 45012 || e == 45040 || e == 45068 || e == 45096 || e == 45124 || e == 45152 || e == 45180 || e == 45208 || e == 45236 || e == 45264 || e == 45292 || e == 45320 || e == 45348 || e == 45376 || e == 45404 || e == 45432 || e == 45460 || e == 45488 || e == 45516 || e == 45544 || e == 45572 || e == 45600 || e == 45628 || e == 45656 || e == 45684 || e == 45712 || e == 45740 || e == 45768 || e == 45796 || e == 45824 || e == 45852 || e == 45880 || e == 45908 || e == 45936 || e == 45964 || e == 45992 || e == 46020 || e == 46048 || e == 46076 || e == 46104 || e == 46132 || e == 46160 || e == 46188 || e == 46216 || e == 46244 || e == 46272 || e == 46300 || e == 46328 || e == 46356 || e == 46384 || e == 46412 || e == 46440 || e == 46468 || e == 46496 || e == 46524 || e == 46552 || e == 46580 || e == 46608 || e == 46636 || e == 46664 || e == 46692 || e == 46720 || e == 46748 || e == 46776 || e == 46804 || e == 46832 || e == 46860 || e == 46888 || e == 46916 || e == 46944 || e == 46972 || e == 47e3 || e == 47028 || e == 47056 || e == 47084 || e == 47112 || e == 47140 || e == 47168 || e == 47196 || e == 47224 || e == 47252 || e == 47280 || e == 47308 || e == 47336 || e == 47364 || e == 47392 || e == 47420 || e == 47448 || e == 47476 || e == 47504 || e == 47532 || e == 47560 || e == 47588 || e == 47616 || e == 47644 || e == 47672 || e == 47700 || e == 47728 || e == 47756 || e == 47784 || e == 47812 || e == 47840 || e == 47868 || e == 47896 || e == 47924 || e == 47952 || e == 47980 || e == 48008 || e == 48036 || e == 48064 || e == 48092 || e == 48120 || e == 48148 || e == 48176 || e == 48204 || e == 48232 || e == 48260 || e == 48288 || e == 48316 || e == 48344 || e == 48372 || e == 48400 || e == 48428 || e == 48456 || e == 48484 || e == 48512 || e == 48540 || e == 48568 || e == 48596 || e == 48624 || e == 48652 || e == 48680 || e == 48708 || e == 48736 || e == 48764 || e == 48792 || e == 48820 || e == 48848 || e == 48876 || e == 48904 || e == 48932 || e == 48960 || e == 48988 || e == 49016 || e == 49044 || e == 49072 || e == 49100 || e == 49128 || e == 49156 || e == 49184 || e == 49212 || e == 49240 || e == 49268 || e == 49296 || e == 49324 || e == 49352 || e == 49380 || e == 49408 || e == 49436 || e == 49464 || e == 49492 || e == 49520 || e == 49548 || e == 49576 || e == 49604 || e == 49632 || e == 49660 || e == 49688 || e == 49716 || e == 49744 || e == 49772 || e == 49800 || e == 49828 || e == 49856 || e == 49884 || e == 49912 || e == 49940 || e == 49968 || e == 49996 || e == 50024 || e == 50052 || e == 50080 || e == 50108 || e == 50136 || e == 50164 || e == 50192 || e == 50220 || e == 50248 || e == 50276 || e == 50304 || e == 50332 || e == 50360 || e == 50388 || e == 50416 || e == 50444 || e == 50472 || e == 50500 || e == 50528 || e == 50556 || e == 50584 || e == 50612 || e == 50640 || e == 50668 || e == 50696 || e == 50724 || e == 50752 || e == 50780 || e == 50808 || e == 50836 || e == 50864 || e == 50892 || e == 50920 || e == 50948 || e == 50976 || e == 51004 || e == 51032 || e == 51060 || e == 51088 || e == 51116 || e == 51144 || e == 51172 || e == 51200 || e == 51228 || e == 51256 || e == 51284 || e == 51312 || e == 51340 || e == 51368 || e == 51396 || e == 51424 || e == 51452 || e == 51480 || e == 51508 || e == 51536 || e == 51564 || e == 51592 || e == 51620 || e == 51648 || e == 51676 || e == 51704 || e == 51732 || e == 51760 || e == 51788 || e == 51816 || e == 51844 || e == 51872 || e == 51900 || e == 51928 || e == 51956 || e == 51984 || e == 52012 || e == 52040 || e == 52068 || e == 52096 || e == 52124 || e == 52152 || e == 52180 || e == 52208 || e == 52236 || e == 52264 || e == 52292 || e == 52320 || e == 52348 || e == 52376 || e == 52404 || e == 52432 || e == 52460 || e == 52488 || e == 52516 || e == 52544 || e == 52572 || e == 52600 || e == 52628 || e == 52656 || e == 52684 || e == 52712 || e == 52740 || e == 52768 || e == 52796 || e == 52824 || e == 52852 || e == 52880 || e == 52908 || e == 52936 || e == 52964 || e == 52992 || e == 53020 || e == 53048 || e == 53076 || e == 53104 || e == 53132 || e == 53160 || e == 53188 || e == 53216 || e == 53244 || e == 53272 || e == 53300 || e == 53328 || e == 53356 || e == 53384 || e == 53412 || e == 53440 || e == 53468 || e == 53496 || e == 53524 || e == 53552 || e == 53580 || e == 53608 || e == 53636 || e == 53664 || e == 53692 || e == 53720 || e == 53748 || e == 53776 || e == 53804 || e == 53832 || e == 53860 || e == 53888 || e == 53916 || e == 53944 || e == 53972 || e == 54e3 || e == 54028 || e == 54056 || e == 54084 || e == 54112 || e == 54140 || e == 54168 || e == 54196 || e == 54224 || e == 54252 || e == 54280 || e == 54308 || e == 54336 || e == 54364 || e == 54392 || e == 54420 || e == 54448 || e == 54476 || e == 54504 || e == 54532 || e == 54560 || e == 54588 || e == 54616 || e == 54644 || e == 54672 || e == 54700 || e == 54728 || e == 54756 || e == 54784 || e == 54812 || e == 54840 || e == 54868 || e == 54896 || e == 54924 || e == 54952 || e == 54980 || e == 55008 || e == 55036 || e == 55064 || e == 55092 || e == 55120 || e == 55148 || e == 55176 ? A : 44033 <= e && e <= 44059 || 44061 <= e && e <= 44087 || 44089 <= e && e <= 44115 || 44117 <= e && e <= 44143 || 44145 <= e && e <= 44171 || 44173 <= e && e <= 44199 || 44201 <= e && e <= 44227 || 44229 <= e && e <= 44255 || 44257 <= e && e <= 44283 || 44285 <= e && e <= 44311 || 44313 <= e && e <= 44339 || 44341 <= e && e <= 44367 || 44369 <= e && e <= 44395 || 44397 <= e && e <= 44423 || 44425 <= e && e <= 44451 || 44453 <= e && e <= 44479 || 44481 <= e && e <= 44507 || 44509 <= e && e <= 44535 || 44537 <= e && e <= 44563 || 44565 <= e && e <= 44591 || 44593 <= e && e <= 44619 || 44621 <= e && e <= 44647 || 44649 <= e && e <= 44675 || 44677 <= e && e <= 44703 || 44705 <= e && e <= 44731 || 44733 <= e && e <= 44759 || 44761 <= e && e <= 44787 || 44789 <= e && e <= 44815 || 44817 <= e && e <= 44843 || 44845 <= e && e <= 44871 || 44873 <= e && e <= 44899 || 44901 <= e && e <= 44927 || 44929 <= e && e <= 44955 || 44957 <= e && e <= 44983 || 44985 <= e && e <= 45011 || 45013 <= e && e <= 45039 || 45041 <= e && e <= 45067 || 45069 <= e && e <= 45095 || 45097 <= e && e <= 45123 || 45125 <= e && e <= 45151 || 45153 <= e && e <= 45179 || 45181 <= e && e <= 45207 || 45209 <= e && e <= 45235 || 45237 <= e && e <= 45263 || 45265 <= e && e <= 45291 || 45293 <= e && e <= 45319 || 45321 <= e && e <= 45347 || 45349 <= e && e <= 45375 || 45377 <= e && e <= 45403 || 45405 <= e && e <= 45431 || 45433 <= e && e <= 45459 || 45461 <= e && e <= 45487 || 45489 <= e && e <= 45515 || 45517 <= e && e <= 45543 || 45545 <= e && e <= 45571 || 45573 <= e && e <= 45599 || 45601 <= e && e <= 45627 || 45629 <= e && e <= 45655 || 45657 <= e && e <= 45683 || 45685 <= e && e <= 45711 || 45713 <= e && e <= 45739 || 45741 <= e && e <= 45767 || 45769 <= e && e <= 45795 || 45797 <= e && e <= 45823 || 45825 <= e && e <= 45851 || 45853 <= e && e <= 45879 || 45881 <= e && e <= 45907 || 45909 <= e && e <= 45935 || 45937 <= e && e <= 45963 || 45965 <= e && e <= 45991 || 45993 <= e && e <= 46019 || 46021 <= e && e <= 46047 || 46049 <= e && e <= 46075 || 46077 <= e && e <= 46103 || 46105 <= e && e <= 46131 || 46133 <= e && e <= 46159 || 46161 <= e && e <= 46187 || 46189 <= e && e <= 46215 || 46217 <= e && e <= 46243 || 46245 <= e && e <= 46271 || 46273 <= e && e <= 46299 || 46301 <= e && e <= 46327 || 46329 <= e && e <= 46355 || 46357 <= e && e <= 46383 || 46385 <= e && e <= 46411 || 46413 <= e && e <= 46439 || 46441 <= e && e <= 46467 || 46469 <= e && e <= 46495 || 46497 <= e && e <= 46523 || 46525 <= e && e <= 46551 || 46553 <= e && e <= 46579 || 46581 <= e && e <= 46607 || 46609 <= e && e <= 46635 || 46637 <= e && e <= 46663 || 46665 <= e && e <= 46691 || 46693 <= e && e <= 46719 || 46721 <= e && e <= 46747 || 46749 <= e && e <= 46775 || 46777 <= e && e <= 46803 || 46805 <= e && e <= 46831 || 46833 <= e && e <= 46859 || 46861 <= e && e <= 46887 || 46889 <= e && e <= 46915 || 46917 <= e && e <= 46943 || 46945 <= e && e <= 46971 || 46973 <= e && e <= 46999 || 47001 <= e && e <= 47027 || 47029 <= e && e <= 47055 || 47057 <= e && e <= 47083 || 47085 <= e && e <= 47111 || 47113 <= e && e <= 47139 || 47141 <= e && e <= 47167 || 47169 <= e && e <= 47195 || 47197 <= e && e <= 47223 || 47225 <= e && e <= 47251 || 47253 <= e && e <= 47279 || 47281 <= e && e <= 47307 || 47309 <= e && e <= 47335 || 47337 <= e && e <= 47363 || 47365 <= e && e <= 47391 || 47393 <= e && e <= 47419 || 47421 <= e && e <= 47447 || 47449 <= e && e <= 47475 || 47477 <= e && e <= 47503 || 47505 <= e && e <= 47531 || 47533 <= e && e <= 47559 || 47561 <= e && e <= 47587 || 47589 <= e && e <= 47615 || 47617 <= e && e <= 47643 || 47645 <= e && e <= 47671 || 47673 <= e && e <= 47699 || 47701 <= e && e <= 47727 || 47729 <= e && e <= 47755 || 47757 <= e && e <= 47783 || 47785 <= e && e <= 47811 || 47813 <= e && e <= 47839 || 47841 <= e && e <= 47867 || 47869 <= e && e <= 47895 || 47897 <= e && e <= 47923 || 47925 <= e && e <= 47951 || 47953 <= e && e <= 47979 || 47981 <= e && e <= 48007 || 48009 <= e && e <= 48035 || 48037 <= e && e <= 48063 || 48065 <= e && e <= 48091 || 48093 <= e && e <= 48119 || 48121 <= e && e <= 48147 || 48149 <= e && e <= 48175 || 48177 <= e && e <= 48203 || 48205 <= e && e <= 48231 || 48233 <= e && e <= 48259 || 48261 <= e && e <= 48287 || 48289 <= e && e <= 48315 || 48317 <= e && e <= 48343 || 48345 <= e && e <= 48371 || 48373 <= e && e <= 48399 || 48401 <= e && e <= 48427 || 48429 <= e && e <= 48455 || 48457 <= e && e <= 48483 || 48485 <= e && e <= 48511 || 48513 <= e && e <= 48539 || 48541 <= e && e <= 48567 || 48569 <= e && e <= 48595 || 48597 <= e && e <= 48623 || 48625 <= e && e <= 48651 || 48653 <= e && e <= 48679 || 48681 <= e && e <= 48707 || 48709 <= e && e <= 48735 || 48737 <= e && e <= 48763 || 48765 <= e && e <= 48791 || 48793 <= e && e <= 48819 || 48821 <= e && e <= 48847 || 48849 <= e && e <= 48875 || 48877 <= e && e <= 48903 || 48905 <= e && e <= 48931 || 48933 <= e && e <= 48959 || 48961 <= e && e <= 48987 || 48989 <= e && e <= 49015 || 49017 <= e && e <= 49043 || 49045 <= e && e <= 49071 || 49073 <= e && e <= 49099 || 49101 <= e && e <= 49127 || 49129 <= e && e <= 49155 || 49157 <= e && e <= 49183 || 49185 <= e && e <= 49211 || 49213 <= e && e <= 49239 || 49241 <= e && e <= 49267 || 49269 <= e && e <= 49295 || 49297 <= e && e <= 49323 || 49325 <= e && e <= 49351 || 49353 <= e && e <= 49379 || 49381 <= e && e <= 49407 || 49409 <= e && e <= 49435 || 49437 <= e && e <= 49463 || 49465 <= e && e <= 49491 || 49493 <= e && e <= 49519 || 49521 <= e && e <= 49547 || 49549 <= e && e <= 49575 || 49577 <= e && e <= 49603 || 49605 <= e && e <= 49631 || 49633 <= e && e <= 49659 || 49661 <= e && e <= 49687 || 49689 <= e && e <= 49715 || 49717 <= e && e <= 49743 || 49745 <= e && e <= 49771 || 49773 <= e && e <= 49799 || 49801 <= e && e <= 49827 || 49829 <= e && e <= 49855 || 49857 <= e && e <= 49883 || 49885 <= e && e <= 49911 || 49913 <= e && e <= 49939 || 49941 <= e && e <= 49967 || 49969 <= e && e <= 49995 || 49997 <= e && e <= 50023 || 50025 <= e && e <= 50051 || 50053 <= e && e <= 50079 || 50081 <= e && e <= 50107 || 50109 <= e && e <= 50135 || 50137 <= e && e <= 50163 || 50165 <= e && e <= 50191 || 50193 <= e && e <= 50219 || 50221 <= e && e <= 50247 || 50249 <= e && e <= 50275 || 50277 <= e && e <= 50303 || 50305 <= e && e <= 50331 || 50333 <= e && e <= 50359 || 50361 <= e && e <= 50387 || 50389 <= e && e <= 50415 || 50417 <= e && e <= 50443 || 50445 <= e && e <= 50471 || 50473 <= e && e <= 50499 || 50501 <= e && e <= 50527 || 50529 <= e && e <= 50555 || 50557 <= e && e <= 50583 || 50585 <= e && e <= 50611 || 50613 <= e && e <= 50639 || 50641 <= e && e <= 50667 || 50669 <= e && e <= 50695 || 50697 <= e && e <= 50723 || 50725 <= e && e <= 50751 || 50753 <= e && e <= 50779 || 50781 <= e && e <= 50807 || 50809 <= e && e <= 50835 || 50837 <= e && e <= 50863 || 50865 <= e && e <= 50891 || 50893 <= e && e <= 50919 || 50921 <= e && e <= 50947 || 50949 <= e && e <= 50975 || 50977 <= e && e <= 51003 || 51005 <= e && e <= 51031 || 51033 <= e && e <= 51059 || 51061 <= e && e <= 51087 || 51089 <= e && e <= 51115 || 51117 <= e && e <= 51143 || 51145 <= e && e <= 51171 || 51173 <= e && e <= 51199 || 51201 <= e && e <= 51227 || 51229 <= e && e <= 51255 || 51257 <= e && e <= 51283 || 51285 <= e && e <= 51311 || 51313 <= e && e <= 51339 || 51341 <= e && e <= 51367 || 51369 <= e && e <= 51395 || 51397 <= e && e <= 51423 || 51425 <= e && e <= 51451 || 51453 <= e && e <= 51479 || 51481 <= e && e <= 51507 || 51509 <= e && e <= 51535 || 51537 <= e && e <= 51563 || 51565 <= e && e <= 51591 || 51593 <= e && e <= 51619 || 51621 <= e && e <= 51647 || 51649 <= e && e <= 51675 || 51677 <= e && e <= 51703 || 51705 <= e && e <= 51731 || 51733 <= e && e <= 51759 || 51761 <= e && e <= 51787 || 51789 <= e && e <= 51815 || 51817 <= e && e <= 51843 || 51845 <= e && e <= 51871 || 51873 <= e && e <= 51899 || 51901 <= e && e <= 51927 || 51929 <= e && e <= 51955 || 51957 <= e && e <= 51983 || 51985 <= e && e <= 52011 || 52013 <= e && e <= 52039 || 52041 <= e && e <= 52067 || 52069 <= e && e <= 52095 || 52097 <= e && e <= 52123 || 52125 <= e && e <= 52151 || 52153 <= e && e <= 52179 || 52181 <= e && e <= 52207 || 52209 <= e && e <= 52235 || 52237 <= e && e <= 52263 || 52265 <= e && e <= 52291 || 52293 <= e && e <= 52319 || 52321 <= e && e <= 52347 || 52349 <= e && e <= 52375 || 52377 <= e && e <= 52403 || 52405 <= e && e <= 52431 || 52433 <= e && e <= 52459 || 52461 <= e && e <= 52487 || 52489 <= e && e <= 52515 || 52517 <= e && e <= 52543 || 52545 <= e && e <= 52571 || 52573 <= e && e <= 52599 || 52601 <= e && e <= 52627 || 52629 <= e && e <= 52655 || 52657 <= e && e <= 52683 || 52685 <= e && e <= 52711 || 52713 <= e && e <= 52739 || 52741 <= e && e <= 52767 || 52769 <= e && e <= 52795 || 52797 <= e && e <= 52823 || 52825 <= e && e <= 52851 || 52853 <= e && e <= 52879 || 52881 <= e && e <= 52907 || 52909 <= e && e <= 52935 || 52937 <= e && e <= 52963 || 52965 <= e && e <= 52991 || 52993 <= e && e <= 53019 || 53021 <= e && e <= 53047 || 53049 <= e && e <= 53075 || 53077 <= e && e <= 53103 || 53105 <= e && e <= 53131 || 53133 <= e && e <= 53159 || 53161 <= e && e <= 53187 || 53189 <= e && e <= 53215 || 53217 <= e && e <= 53243 || 53245 <= e && e <= 53271 || 53273 <= e && e <= 53299 || 53301 <= e && e <= 53327 || 53329 <= e && e <= 53355 || 53357 <= e && e <= 53383 || 53385 <= e && e <= 53411 || 53413 <= e && e <= 53439 || 53441 <= e && e <= 53467 || 53469 <= e && e <= 53495 || 53497 <= e && e <= 53523 || 53525 <= e && e <= 53551 || 53553 <= e && e <= 53579 || 53581 <= e && e <= 53607 || 53609 <= e && e <= 53635 || 53637 <= e && e <= 53663 || 53665 <= e && e <= 53691 || 53693 <= e && e <= 53719 || 53721 <= e && e <= 53747 || 53749 <= e && e <= 53775 || 53777 <= e && e <= 53803 || 53805 <= e && e <= 53831 || 53833 <= e && e <= 53859 || 53861 <= e && e <= 53887 || 53889 <= e && e <= 53915 || 53917 <= e && e <= 53943 || 53945 <= e && e <= 53971 || 53973 <= e && e <= 53999 || 54001 <= e && e <= 54027 || 54029 <= e && e <= 54055 || 54057 <= e && e <= 54083 || 54085 <= e && e <= 54111 || 54113 <= e && e <= 54139 || 54141 <= e && e <= 54167 || 54169 <= e && e <= 54195 || 54197 <= e && e <= 54223 || 54225 <= e && e <= 54251 || 54253 <= e && e <= 54279 || 54281 <= e && e <= 54307 || 54309 <= e && e <= 54335 || 54337 <= e && e <= 54363 || 54365 <= e && e <= 54391 || 54393 <= e && e <= 54419 || 54421 <= e && e <= 54447 || 54449 <= e && e <= 54475 || 54477 <= e && e <= 54503 || 54505 <= e && e <= 54531 || 54533 <= e && e <= 54559 || 54561 <= e && e <= 54587 || 54589 <= e && e <= 54615 || 54617 <= e && e <= 54643 || 54645 <= e && e <= 54671 || 54673 <= e && e <= 54699 || 54701 <= e && e <= 54727 || 54729 <= e && e <= 54755 || 54757 <= e && e <= 54783 || 54785 <= e && e <= 54811 || 54813 <= e && e <= 54839 || 54841 <= e && e <= 54867 || 54869 <= e && e <= 54895 || 54897 <= e && e <= 54923 || 54925 <= e && e <= 54951 || 54953 <= e && e <= 54979 || 54981 <= e && e <= 55007 || 55009 <= e && e <= 55035 || 55037 <= e && e <= 55063 || 55065 <= e && e <= 55091 || 55093 <= e && e <= 55119 || 55121 <= e && e <= 55147 || 55149 <= e && e <= 55175 || 55177 <= e && e <= 55203 ? C : e == 9757 || e == 9977 || 9994 <= e && e <= 9997 || e == 127877 || 127938 <= e && e <= 127940 || e == 127943 || 127946 <= e && e <= 127948 || 128066 <= e && e <= 128067 || 128070 <= e && e <= 128080 || e == 128110 || 128112 <= e && e <= 128120 || e == 128124 || 128129 <= e && e <= 128131 || 128133 <= e && e <= 128135 || e == 128170 || 128372 <= e && e <= 128373 || e == 128378 || e == 128400 || 128405 <= e && e <= 128406 || 128581 <= e && e <= 128583 || 128587 <= e && e <= 128591 || e == 128675 || 128692 <= e && e <= 128694 || e == 128704 || e == 128716 || 129304 <= e && e <= 129308 || 129310 <= e && e <= 129311 || e == 129318 || 129328 <= e && e <= 129337 || 129341 <= e && e <= 129342 || 129489 <= e && e <= 129501 ? k : 127995 <= e && e <= 127999 ? g : e == 8205 ? B : e == 9792 || e == 9794 || 9877 <= e && e <= 9878 || e == 9992 || e == 10084 || e == 127752 || e == 127806 || e == 127859 || e == 127891 || e == 127908 || e == 127912 || e == 127979 || e == 127981 || e == 128139 || 128187 <= e && e <= 128188 || e == 128295 || e == 128300 || e == 128488 || e == 128640 || e == 128658 ? j : 128102 <= e && e <= 128105 ? p : D
    }
Severity: -- → N/A
Priority: -- → P3

This code is weird, but I guess this difference might be in the cost of accessing the arguments more than running the comparisons.
This is something I want revisit at one point, whether we can change our JIT ABI to have rooted-registers as arguments.

For code like this that is checking a single value against a bunch of intervals, I think there's probably an optimization that can be done to reorder the checks to be more binary-search-y instead of doing the comparisons in order.

Here's a much smaller version of the code:

function foo(i) {
  return i == 0 || i == 2 || i == 4 || i == 6;
}

for (var j = 0; j < 1000000; j++) {
    foo(j % 10);
}

If I run this in d8 and disassemble it, I get this for the core of the function:

// load i as smi (shifted left 1 bit)
0x628ce00448ad    REX.W movq rdx,[rbp+0x18]    
0x628ce00448b1    testb rdx,0x1
0x628ce00448b4    jnz 0x628ce004495d  <+0xdd>

// compare vs smi(4)
0x628ce00448ba    cmpl rdx,0x8
0x628ce00448bd    jl 0x628ce00448d7  <+0x57>
0x628ce00448c3    jz 0x628ce0044918  <+0x98>

// compare vs smi(6)
0x628ce00448c9    cmpl rdx,0xc
0x628ce00448cc    jz 0x628ce004490f  <+0x8f>
0x628ce00448d2    jmp 0x628ce00448ee  <+0x6e>

// compare vs smi(0)
0x628ce00448d7    cmpl rdx,0x0
0x628ce00448da    jz 0x628ce004492a  <+0xaa>

// compare vs smi(2)
0x628ce00448e0    cmpl rdx,0x4
0x628ce00448e3    jz 0x628ce0044921  <+0xa1>
0x628ce00448e9    jmp 0x628ce00448ee  <+0x6e>

Note that the comparisons are not being done in order. So it looks to me like V8 is reordering the comparisons to minimize the total number of comparisons necessary, and we aren't. Poking around in the V8 code a bit, I think their version is implemented here. It turns an if-else cascade into a switch.

I'm not sure how often this occurs in practice.

I note that we don't have a lot of switch optimizations in general. Might be something to consider; I feel like I sometimes see switches over enum values in React code.

Since bug 1767966 we can (again) generate good assembly for test instructions. Maybe it's possible to change that code to also support boolean results?

Comment #4 currently emits these instructions for a single comparison:

[Codegen]                                 # LIR=Compare:Eq
[Codegen] cmpl       $0x4, %ecx
[Codegen] sete       %al
[Codegen] movzbl     %al, %eax
[Codegen]                                 # LIR=TestIAndBranch
[Codegen] testl      %eax, %eax
[Codegen] jne        .Lfrom81

When changing the function to:

function foo(i) {
  if (i == 0 || i == 2 || i == 4 || i == 6) {
    return true;
  }
  return false;
}

We're instead generating:

[Codegen]                                 # LIR=CompareAndBranch:Eq
[Codegen] cmpl       $0x4, %eax
[Codegen] je         .Lfrom57
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: