...
*** Bug 147195 has been marked as a duplicate of this bug. ***
Created attachment 260617 [details] Patch (there is a bug in there)
Comment on attachment 260617 [details] Patch (there is a bug in there) View in context: https://bugs.webkit.org/attachment.cgi?id=260617&action=review > Source/JavaScriptCore/ChangeLog:177 > +2015-08-27 Basile Clement <basile_clement@apple.com> > + > + Don't waste stack space when arity fixup was performed > + Need the bug URL (OOPS!). I'll remove that bogus ChangeLog entry.
Comment on attachment 260617 [details] Patch (there is a bug in there) Looks good to me (though not ready to land).
Created attachment 260624 [details] Patch Updated patch, enable adequate ES6 tests
Created attachment 260970 [details] Rebased patch with Windows 64 bit fix
Attachment 260970 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:87: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:88: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:88: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:89: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:90: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:91: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:92: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:93: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:94: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:95: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:96: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:97: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:98: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:99: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:100: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:102: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:103: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:104: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:108: Tab found; better to use spaces [whitespace/tab] [1] ERROR: Source/JavaScriptCore/jit/ThunkGenerators.cpp:109: Tab found; better to use spaces [whitespace/tab] [1] Total errors found: 20 in 54 files If any of these errors are false positives, please file a bug against check-webkit-style.
Created attachment 260971 [details] Prior patch with tabs removed.
Looks neutral on performance. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on msaboff-pro (MacPro5,1). VMs tested: "Baseline" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc "TailCallLLintBaseline" at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. Baseline TailCallLLintBaseline SunSpider: 3d-cube 7.9900+-0.5392 ? 8.2051+-0.4886 ? might be 1.0269x slower 3d-morph 8.1512+-0.1119 ? 8.1757+-0.1670 ? 3d-raytrace 8.6974+-0.2520 ? 8.6988+-0.2690 ? access-binary-trees 3.0598+-0.0975 ? 3.1104+-0.2954 ? might be 1.0165x slower access-fannkuch 8.4940+-0.1779 ? 8.5927+-0.2508 ? might be 1.0116x slower access-nbody 4.3290+-0.1465 4.2594+-0.2278 might be 1.0163x faster access-nsieve 4.5695+-0.1461 ? 4.5700+-0.1469 ? bitops-3bit-bits-in-byte 1.7109+-0.0826 ? 1.8132+-0.0737 ? might be 1.0598x slower bitops-bits-in-byte 5.5978+-0.1075 ? 5.6358+-0.1258 ? bitops-bitwise-and 2.8273+-0.1274 ? 2.8729+-0.1387 ? might be 1.0161x slower bitops-nsieve-bits 4.3372+-0.2291 4.3363+-0.1237 controlflow-recursive 3.3355+-0.0900 ? 3.3741+-0.2464 ? might be 1.0116x slower crypto-aes 6.3621+-0.2557 6.2751+-0.3727 might be 1.0139x faster crypto-md5 4.1255+-0.2256 4.1180+-0.2030 crypto-sha1 3.3990+-0.1185 ? 3.4265+-0.1266 ? date-format-tofte 12.7264+-0.6881 ? 12.7905+-0.4982 ? date-format-xparb 7.7400+-0.3098 7.6136+-0.3692 might be 1.0166x faster math-cordic 4.3574+-0.2295 ? 4.4665+-0.1137 ? might be 1.0250x slower math-partial-sums 9.6602+-0.2923 ? 9.9313+-0.2142 ? might be 1.0281x slower math-spectral-norm 3.0410+-0.0671 3.0308+-0.0605 regexp-dna 9.6045+-0.3334 ? 9.6887+-0.2189 ? string-base64 6.7166+-0.3200 6.4955+-0.3161 might be 1.0340x faster string-fasta 9.2414+-0.2604 ? 9.2773+-0.1319 ? string-tagcloud 12.9885+-0.1990 12.9555+-0.2202 string-unpack-code 27.2217+-0.5889 26.9775+-1.8750 string-validate-input 6.8607+-0.3022 6.8123+-0.1394 <arithmetic> 7.1979+-0.0428 ? 7.2117+-0.0811 ? might be 1.0019x slower Baseline TailCallLLintBaseline LongSpider: 3d-cube 1167.3314+-38.6808 ? 1181.5132+-27.9042 ? might be 1.0121x slower 3d-morph 1888.1689+-13.9212 ? 1893.4813+-26.1817 ? 3d-raytrace 1024.7347+-1.6894 ? 1028.3860+-16.2314 ? access-binary-trees 1394.1152+-25.3902 1391.3838+-3.4955 access-fannkuch 443.1098+-6.9629 ? 447.1206+-11.9273 ? access-nbody 1014.7333+-2.2810 ? 1022.7019+-10.0302 ? access-nsieve 675.7314+-1.1357 ? 682.8737+-14.8059 ? might be 1.0106x slower bitops-3bit-bits-in-byte 44.5345+-0.3753 44.4144+-0.2661 bitops-bits-in-byte 341.9902+-2.3509 ? 345.1937+-6.0364 ? bitops-nsieve-bits 618.1560+-5.8417 ? 619.2817+-7.3145 ? controlflow-recursive 749.5283+-11.3946 ^ 731.4562+-1.3053 ^ definitely 1.0247x faster crypto-aes 879.4976+-6.0170 877.3869+-4.0433 crypto-md5 791.2980+-11.6898 788.1599+-10.7560 crypto-sha1 1055.1870+-1.2140 ^ 1052.0834+-1.3899 ^ definitely 1.0029x faster date-format-tofte 973.3914+-29.0969 ? 992.1632+-21.2524 ? might be 1.0193x slower date-format-xparb 1070.6765+-15.6300 ? 1073.7831+-20.8172 ? hash-map 231.2808+-0.5143 ? 233.0270+-1.5212 ? math-cordic 645.8419+-5.6784 639.4562+-4.8900 math-partial-sums 1130.4283+-4.4214 ! 1141.8686+-3.3339 ! definitely 1.0101x slower math-spectral-norm 1065.3986+-1.6932 ? 1065.6096+-2.2225 ? string-base64 534.5762+-6.1064 ? 541.6856+-17.2722 ? might be 1.0133x slower string-fasta 594.0465+-17.2904 585.0918+-5.5062 might be 1.0153x faster string-tagcloud 295.3430+-12.7914 294.5233+-9.6551 <geometric> 666.0062+-1.7595 ? 667.2731+-2.2467 ? might be 1.0019x slower Baseline TailCallLLintBaseline V8Spider: crypto 70.6442+-1.0758 70.6392+-1.2695 deltablue 91.4703+-4.5412 90.2460+-2.2554 might be 1.0136x faster earley-boyer 63.9042+-0.8657 63.4375+-0.8762 raytrace 39.1057+-0.9802 39.0158+-1.4216 regexp 104.0843+-3.6457 ? 105.0150+-2.7282 ? richards 83.4481+-2.7716 82.0284+-0.7802 might be 1.0173x faster splay 53.7968+-4.2957 ? 54.0759+-3.6323 ? <geometric> 69.1128+-0.3484 68.8625+-1.0014 might be 1.0036x faster Baseline TailCallLLintBaseline Octane: encrypt 0.31256+-0.00350 0.30655+-0.00855 might be 1.0196x faster decrypt 5.72514+-0.02609 ? 5.72600+-0.03726 ? deltablue x2 0.26328+-0.01554 0.25789+-0.00586 might be 1.0209x faster earley 0.51232+-0.00352 ? 0.51331+-0.00989 ? boyer 8.71021+-0.12578 8.58319+-0.06698 might be 1.0148x faster navier-stokes x2 6.44600+-0.15610 6.40907+-0.05772 raytrace x2 1.70879+-0.06502 ? 1.71104+-0.11954 ? richards x2 0.17134+-0.00153 ? 0.17161+-0.00089 ? splay x2 0.52050+-0.00779 0.51794+-0.01144 regexp x2 38.61531+-2.10099 38.59521+-1.26724 pdfjs x2 59.60857+-0.33258 ! 63.38079+-0.94768 ! definitely 1.0633x slower mandreel x2 67.83837+-0.93595 ? 68.02840+-0.68689 ? gbemu x2 60.53964+-1.29477 ? 60.73393+-0.83395 ? closure 0.93254+-0.01836 ? 0.93894+-0.02689 ? jquery 11.91034+-0.15297 11.85166+-0.15302 box2d x2 17.41933+-0.18837 ? 17.50016+-0.20662 ? zlib x2 573.26906+-2.99829 ? 576.13025+-10.13746 ? typescript x2 1107.51038+-15.77511 ? 1108.42169+-31.16583 ? <geometric> 9.12764+-0.09009 ? 9.14814+-0.05360 ? might be 1.0022x slower Baseline TailCallLLintBaseline Kraken: ai-astar 332.120+-6.812 324.425+-6.545 might be 1.0237x faster audio-beat-detection 80.738+-1.740 ? 80.784+-0.600 ? audio-dft 128.894+-2.589 ? 131.466+-6.226 ? might be 1.0200x slower audio-fft 59.573+-0.355 ? 60.030+-2.385 ? audio-oscillator 102.750+-1.514 ? 102.940+-0.526 ? imaging-darkroom 96.049+-0.315 ? 96.116+-0.232 ? imaging-desaturate 89.974+-1.279 89.317+-0.812 imaging-gaussian-blur 144.117+-1.001 ? 148.869+-15.116 ? might be 1.0330x slower json-parse-financial 70.556+-0.444 ^ 68.909+-1.087 ^ definitely 1.0239x faster json-stringify-tinderbox 40.847+-0.134 ? 41.279+-1.377 ? might be 1.0106x slower stanford-crypto-aes 64.787+-3.057 ? 66.920+-2.934 ? might be 1.0329x slower stanford-crypto-ccm 60.246+-3.297 ! 72.178+-2.895 ! definitely 1.1981x slower stanford-crypto-pbkdf2 141.327+-1.641 ! 147.057+-3.799 ! definitely 1.0405x slower stanford-crypto-sha256-iterative 57.052+-0.085 ! 58.820+-1.018 ! definitely 1.0310x slower <arithmetic> 104.931+-0.644 ? 106.365+-1.488 ? might be 1.0137x slower Baseline TailCallLLintBaseline JSRegress: abc-forward-loop-equal 55.5932+-1.9680 55.3093+-1.0146 abc-postfix-backward-loop 54.5142+-0.0546 54.4483+-0.7278 abc-simple-backward-loop 54.2937+-0.2200 54.2530+-0.1774 abc-simple-forward-loop 54.5640+-0.1446 54.2796+-0.3768 abc-skippy-loop 37.4628+-0.0743 ? 37.6884+-0.7390 ? abs-boolean 3.8348+-0.1280 3.7986+-0.1218 adapt-to-double-divide 17.3724+-0.3986 17.2817+-0.6030 aliased-arguments-getbyval 1.8135+-0.1808 1.6430+-0.2259 might be 1.1038x faster allocate-big-object 3.9569+-0.4486 3.7980+-0.1805 might be 1.0418x faster arguments-named-and-reflective 14.3909+-0.6931 ? 14.5040+-0.4930 ? arguments-out-of-bounds 14.4586+-0.3478 14.2245+-0.2076 might be 1.0165x faster arguments-strict-mode 12.5959+-0.2492 ? 12.7986+-0.8980 ? might be 1.0161x slower arguments 11.0512+-0.4502 ? 11.3985+-0.6568 ? might be 1.0314x slower arity-mismatch-inlining 1.2859+-0.1502 1.2822+-0.1000 array-access-polymorphic-structure 9.3504+-0.3995 ? 9.5931+-0.1889 ? might be 1.0260x slower array-nonarray-polymorhpic-access 40.7702+-0.8141 ? 40.9650+-0.8621 ? array-prototype-every 127.3831+-3.7812 123.5865+-0.4346 might be 1.0307x faster array-prototype-forEach 125.5991+-3.0541 122.9905+-4.6534 might be 1.0212x faster array-prototype-map 135.6763+-2.0407 134.6779+-2.5429 array-prototype-reduce 114.0757+-1.7158 ? 114.8637+-0.8291 ? array-prototype-reduceRight 112.2315+-0.3933 ! 114.9570+-1.7643 ! definitely 1.0243x slower array-prototype-some 126.7886+-1.2037 ^ 123.2098+-0.9777 ^ definitely 1.0290x faster array-splice-contiguous 33.2841+-1.2506 ? 33.6624+-1.0461 ? might be 1.0114x slower array-with-double-add 5.4307+-0.1070 ? 5.4903+-0.1078 ? might be 1.0110x slower array-with-double-increment 4.1762+-0.1659 4.1736+-0.1189 array-with-double-mul-add 7.2952+-0.1308 ? 7.4238+-0.1953 ? might be 1.0176x slower array-with-double-sum 4.3933+-0.1109 ? 4.4780+-0.0630 ? might be 1.0193x slower array-with-int32-add-sub 9.5535+-0.0814 9.4297+-0.2632 might be 1.0131x faster array-with-int32-or-double-sum 4.4473+-0.1486 ? 4.5443+-0.1374 ? might be 1.0218x slower ArrayBuffer-DataView-alloc-large-long-lived 45.4503+-0.5405 45.0729+-0.3230 ArrayBuffer-DataView-alloc-long-lived 17.9761+-0.5979 ? 18.3361+-0.0652 ? might be 1.0200x slower ArrayBuffer-Int32Array-byteOffset 5.5547+-0.1129 ? 5.6166+-0.0558 ? might be 1.0111x slower ArrayBuffer-Int8Array-alloc-large-long-lived 45.8250+-1.7149 ? 46.8060+-0.6234 ? might be 1.0214x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 29.6412+-1.3931 29.3428+-1.0517 might be 1.0102x faster ArrayBuffer-Int8Array-alloc-long-lived 16.8812+-0.2245 ? 16.9222+-0.1876 ? ArrayBuffer-Int8Array-alloc 14.1391+-0.4199 ? 14.4715+-0.7032 ? might be 1.0235x slower arrowfunction-call 15.0475+-0.2563 14.9440+-0.0696 asmjs_bool_bug 9.8116+-0.2511 9.7906+-0.4757 assign-custom-setter-polymorphic 4.2182+-0.2352 4.1331+-0.0585 might be 1.0206x faster assign-custom-setter 5.6968+-0.1344 ? 5.8862+-0.4884 ? might be 1.0332x slower basic-set 11.5295+-0.3181 11.3514+-0.0774 might be 1.0157x faster big-int-mul 5.9429+-0.1306 5.8491+-0.0444 might be 1.0160x faster boolean-test 4.4153+-0.2146 ? 4.4373+-0.1690 ? branch-fold 4.8162+-0.2028 ? 4.9061+-0.0704 ? might be 1.0187x slower branch-on-string-as-boolean 22.4008+-0.4707 22.3793+-0.9253 by-val-generic 3.7415+-0.1884 3.7126+-0.2472 call-spread-apply 39.4160+-2.8711 ? 40.1526+-0.6694 ? might be 1.0187x slower call-spread-call 31.8911+-0.9712 ? 33.8477+-2.7202 ? might be 1.0614x slower captured-assignments 0.7646+-0.1242 0.7278+-0.1483 might be 1.0506x faster cast-int-to-double 8.6705+-0.0589 8.5461+-0.2169 might be 1.0146x faster cell-argument 8.6838+-0.3988 8.5636+-0.3862 might be 1.0140x faster cfg-simplify 3.8201+-0.1051 ? 3.8303+-0.0797 ? chain-getter-access 10.2377+-0.3685 ? 10.2497+-0.2608 ? cmpeq-obj-to-obj-other 14.7891+-0.4545 14.6385+-0.3323 might be 1.0103x faster constant-test 8.1891+-0.1982 8.0837+-0.0963 might be 1.0130x faster create-lots-of-functions 16.6671+-0.3138 16.6431+-0.4926 cse-new-array-buffer 3.2567+-0.2686 ? 3.3768+-0.2297 ? might be 1.0369x slower cse-new-array 3.4226+-0.1615 3.4147+-0.1294 DataView-custom-properties 52.4323+-1.4553 ? 53.3127+-1.1655 ? might be 1.0168x slower delay-tear-off-arguments-strictmode 18.3430+-0.0745 ? 18.7626+-0.4880 ? might be 1.0229x slower deltablue-varargs 272.8372+-6.0251 ? 273.0087+-3.6219 ? destructuring-arguments 243.1577+-6.7181 240.3514+-3.6544 might be 1.0117x faster destructuring-parameters-overridden-by-function 0.6934+-0.0865 ? 0.8030+-0.1295 ? might be 1.1580x slower destructuring-swap 7.7818+-0.3133 ? 7.9366+-0.1902 ? might be 1.0199x slower direct-arguments-getbyval 1.7236+-0.0773 1.7027+-0.2854 might be 1.0123x faster div-boolean-double 5.5505+-0.1400 ? 5.6351+-0.1424 ? might be 1.0153x slower div-boolean 9.9814+-0.1240 ? 10.1425+-0.1539 ? might be 1.0161x slower double-get-by-val-out-of-bounds 6.1537+-0.2660 ? 6.1862+-0.1238 ? double-pollution-getbyval 9.7312+-0.3615 ? 9.8408+-0.1945 ? might be 1.0113x slower double-pollution-putbyoffset 5.6418+-0.3223 ? 5.7512+-0.1569 ? might be 1.0194x slower double-real-use 39.2555+-0.3936 ? 39.6169+-0.7129 ? double-to-int32-typed-array-no-inline 3.0451+-0.1491 ? 3.1473+-0.0865 ? might be 1.0336x slower double-to-int32-typed-array 2.9482+-0.1652 2.9474+-0.1794 double-to-uint32-typed-array-no-inline 3.1115+-0.1482 ? 3.1973+-0.2006 ? might be 1.0276x slower double-to-uint32-typed-array 2.8963+-0.1748 ? 2.9418+-0.1223 ? might be 1.0157x slower elidable-new-object-dag 54.0412+-1.0622 ? 54.2830+-1.2758 ? elidable-new-object-roflcopter 53.7482+-1.0681 ? 54.2342+-1.7990 ? elidable-new-object-then-call 48.9013+-1.5729 ? 49.5427+-1.2354 ? might be 1.0131x slower elidable-new-object-tree 62.7503+-0.8147 ! 65.2486+-0.8248 ! definitely 1.0398x slower empty-string-plus-int 7.6225+-0.2046 7.5997+-0.2584 emscripten-cube2hash 45.1840+-0.7248 ? 45.5240+-0.4390 ? exit-length-on-plain-object 18.6739+-0.4114 ? 19.2262+-1.2302 ? might be 1.0296x slower external-arguments-getbyval 1.7640+-0.1286 ? 1.8151+-0.2030 ? might be 1.0290x slower external-arguments-putbyval 3.2260+-0.1751 ? 3.2866+-0.2276 ? might be 1.0188x slower fixed-typed-array-storage-var-index 1.6381+-0.1005 ? 1.7199+-0.0868 ? might be 1.0500x slower fixed-typed-array-storage 1.2908+-0.0564 ? 1.3683+-0.1229 ? might be 1.0600x slower Float32Array-matrix-mult 6.2230+-0.2717 ? 6.2550+-0.3331 ? Float32Array-to-Float64Array-set 78.9798+-0.2140 78.6758+-1.1631 Float64Array-alloc-long-lived 94.3184+-1.6927 ? 94.8424+-3.1267 ? Float64Array-to-Int16Array-set 93.7504+-3.0805 93.6881+-2.7074 fold-double-to-int 19.0367+-0.4022 ? 19.1760+-0.6585 ? fold-get-by-id-to-multi-get-by-offset-rare-int 11.7715+-0.4970 ? 11.8060+-0.9742 ? fold-get-by-id-to-multi-get-by-offset 9.6276+-0.2620 9.6132+-0.4834 fold-multi-get-by-offset-to-get-by-offset 9.3300+-0.6834 9.2772+-0.6616 fold-multi-get-by-offset-to-poly-get-by-offset 9.0733+-0.6307 ? 9.3145+-0.0645 ? might be 1.0266x slower fold-multi-put-by-offset-to-poly-put-by-offset 9.7032+-0.1788 9.4863+-0.2358 might be 1.0229x faster fold-multi-put-by-offset-to-put-by-offset 8.4797+-0.0798 8.4417+-0.2765 fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 14.0189+-1.0837 ? 14.2297+-0.9740 ? might be 1.0150x slower fold-put-by-id-to-multi-put-by-offset 10.2213+-0.1674 ? 10.3617+-0.6758 ? might be 1.0137x slower fold-put-by-val-with-string-to-multi-put-by-offset 10.4869+-0.3102 ? 10.5432+-0.8574 ? fold-put-by-val-with-symbol-to-multi-put-by-offset 10.7365+-0.4590 10.7050+-0.8155 fold-put-structure 7.8827+-0.8118 7.6942+-0.1282 might be 1.0245x faster for-of-iterate-array-entries 16.6826+-0.6140 16.5429+-0.1666 for-of-iterate-array-keys 5.1823+-0.2120 5.1562+-0.1789 for-of-iterate-array-values 5.1611+-0.1357 ? 5.2052+-0.3852 ? fround 18.8640+-0.8719 ? 19.2764+-1.0672 ? might be 1.0219x slower ftl-library-inlining-dataview 93.0921+-0.6410 ? 94.2582+-2.7856 ? might be 1.0125x slower ftl-library-inlining 129.5355+-32.7734 ? 131.9037+-13.6040 ? might be 1.0183x slower function-call 15.0218+-0.3822 ? 15.1019+-0.2137 ? function-dot-apply 3.1340+-0.3376 3.1036+-0.0761 function-test 4.4845+-0.1250 ? 4.9783+-1.7245 ? might be 1.1101x slower function-with-eval 146.3682+-1.4935 ? 147.1374+-4.2266 ? gcse-poly-get-less-obvious 24.8766+-0.1747 24.6876+-0.5344 gcse-poly-get 24.5870+-0.1933 ? 24.7530+-0.5955 ? gcse 6.4228+-0.1070 6.3810+-0.0980 get-by-id-bimorphic-check-structure-elimination-simple 3.2191+-0.1702 3.1902+-0.1420 get-by-id-bimorphic-check-structure-elimination 8.2577+-0.1826 ? 8.4214+-0.0839 ? might be 1.0198x slower get-by-id-chain-from-try-block 6.9084+-0.0416 6.7780+-0.2250 might be 1.0192x faster get-by-id-check-structure-elimination 8.0172+-0.1950 ? 8.0704+-0.1440 ? get-by-id-proto-or-self 20.9142+-2.5010 ? 21.1453+-2.6810 ? might be 1.0110x slower get-by-id-quadmorphic-check-structure-elimination-simple 3.8829+-0.1625 ? 3.9500+-0.0751 ? might be 1.0173x slower get-by-id-self-or-proto 21.4286+-3.6963 20.9987+-3.1180 might be 1.0205x faster get-by-val-out-of-bounds 5.8392+-0.4038 ? 5.8917+-0.2262 ? get-by-val-with-string-bimorphic-check-structure-elimination-simple 4.2742+-0.1284 ? 4.3142+-0.1782 ? get-by-val-with-string-bimorphic-check-structure-elimination 10.1437+-0.2924 10.1345+-0.2469 get-by-val-with-string-chain-from-try-block 7.7554+-0.1515 7.7073+-0.2146 get-by-val-with-string-check-structure-elimination 9.2551+-0.2208 9.2445+-0.3326 get-by-val-with-string-proto-or-self 20.0782+-0.8870 ? 20.9498+-3.6699 ? might be 1.0434x slower get-by-val-with-string-quadmorphic-check-structure-elimination-simple 4.7977+-0.1413 ? 4.8262+-0.1067 ? get-by-val-with-string-self-or-proto 20.8973+-1.9607 ? 21.5134+-3.2013 ? might be 1.0295x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 4.7748+-0.1371 4.7612+-0.1095 get-by-val-with-symbol-bimorphic-check-structure-elimination 19.3663+-0.4450 ? 19.5701+-0.4871 ? might be 1.0105x slower get-by-val-with-symbol-chain-from-try-block 7.8145+-0.3819 ? 8.0042+-0.4132 ? might be 1.0243x slower get-by-val-with-symbol-check-structure-elimination 18.5794+-0.2509 18.3350+-0.4655 might be 1.0133x faster get-by-val-with-symbol-proto-or-self 20.3610+-1.3665 ? 21.6561+-2.9897 ? might be 1.0636x slower get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 5.7035+-0.1168 ? 5.7230+-0.1606 ? get-by-val-with-symbol-self-or-proto 21.1887+-2.8359 20.4617+-0.2199 might be 1.0355x faster get_callee_monomorphic 3.7474+-0.2068 3.6798+-0.1071 might be 1.0184x faster get_callee_polymorphic 4.7731+-0.2831 4.7596+-0.1015 getter-no-activation 5.8510+-0.3127 ? 5.8790+-0.0862 ? getter-prototype 14.2033+-0.4373 14.1389+-0.2406 getter-richards 130.1267+-4.4292 127.6689+-6.3784 might be 1.0193x faster getter 7.4402+-0.1331 ? 7.4572+-0.1166 ? global-object-access-with-mutating-structure 7.5618+-0.2010 ? 7.6537+-0.3098 ? might be 1.0122x slower global-var-const-infer-fire-from-opt 1.4100+-0.2977 1.3825+-0.2350 might be 1.0199x faster global-var-const-infer 1.0599+-0.1280 ? 1.1152+-0.1087 ? might be 1.0522x slower hard-overflow-check-equal 60.4600+-0.4826 ? 60.8538+-1.8088 ? hard-overflow-check 60.2836+-1.7588 ? 60.3361+-1.8415 ? HashMap-put-get-iterate-keys 33.8110+-0.7541 ? 33.9781+-0.5562 ? HashMap-put-get-iterate 33.6450+-0.8278 33.2700+-0.6203 might be 1.0113x faster HashMap-string-put-get-iterate 36.9426+-2.4992 ? 37.4179+-1.7641 ? might be 1.0129x slower hoist-make-rope 13.0765+-1.5219 12.1495+-0.8763 might be 1.0763x faster hoist-poly-check-structure-effectful-loop 6.6782+-0.1737 ? 6.6833+-0.2162 ? hoist-poly-check-structure 5.0175+-0.2020 ? 5.1312+-0.1272 ? might be 1.0227x slower imul-double-only 8.7800+-0.2944 ? 9.1215+-0.3723 ? might be 1.0389x slower imul-int-only 10.5558+-0.3867 ? 10.6564+-0.6530 ? imul-mixed 7.8847+-0.1479 ? 8.5661+-0.9432 ? might be 1.0864x slower in-four-cases 25.2771+-0.4533 ? 25.3773+-0.1168 ? in-one-case-false 14.8396+-0.2734 14.7167+-0.1469 in-one-case-true 14.9918+-0.9301 14.9078+-0.0656 in-two-cases 15.4725+-0.3908 15.4370+-0.2689 indexed-properties-in-objects 3.8207+-0.0599 ? 3.8942+-0.0742 ? might be 1.0192x slower infer-closure-const-then-mov-no-inline 4.8735+-0.0286 ? 4.9064+-0.0954 ? infer-closure-const-then-mov 21.5792+-0.3400 ? 22.0696+-1.6182 ? might be 1.0227x slower infer-closure-const-then-put-to-scope-no-inline 15.6147+-0.2048 ? 15.7830+-0.1540 ? might be 1.0108x slower infer-closure-const-then-put-to-scope 28.0709+-0.2021 ? 28.2794+-0.7872 ? infer-closure-const-then-reenter-no-inline 70.7915+-0.2727 ? 70.9719+-0.3063 ? infer-closure-const-then-reenter 32.7182+-0.4137 32.3308+-1.5897 might be 1.0120x faster infer-constant-global-property 4.8712+-0.1624 ? 4.9017+-0.1474 ? infer-constant-property 3.4046+-0.1113 3.3521+-0.1851 might be 1.0157x faster infer-one-time-closure-ten-vars 11.4140+-0.3681 11.3251+-0.3175 infer-one-time-closure-two-vars 10.8627+-0.5122 10.6718+-0.6652 might be 1.0179x faster infer-one-time-closure 10.7178+-0.1775 ? 10.8133+-0.3497 ? infer-one-time-deep-closure 18.2063+-0.5893 17.9438+-0.6596 might be 1.0146x faster inline-arguments-access 5.9609+-0.1595 ? 6.1211+-0.1870 ? might be 1.0269x slower inline-arguments-aliased-access 6.0837+-0.2128 ? 6.2505+-0.2303 ? might be 1.0274x slower inline-arguments-local-escape 6.1401+-0.1727 ? 6.1685+-0.4340 ? inline-get-scoped-var 5.7383+-0.1515 5.7112+-0.0457 inlined-put-by-id-transition 17.1307+-0.3459 ? 17.1511+-0.1765 ? inlined-put-by-val-with-string-transition 114.3830+-6.4419 ? 117.9223+-5.7117 ? might be 1.0309x slower inlined-put-by-val-with-symbol-transition 109.5823+-6.1014 ? 113.1262+-4.8190 ? might be 1.0323x slower int-or-other-abs-then-get-by-val 6.5796+-0.1552 ? 6.6555+-0.1339 ? might be 1.0115x slower int-or-other-abs-zero-then-get-by-val 27.5446+-0.4873 ? 27.7777+-0.8846 ? int-or-other-add-then-get-by-val 6.0157+-0.1155 ? 6.1085+-0.0462 ? might be 1.0154x slower int-or-other-add 8.2922+-0.1273 8.2055+-0.1984 might be 1.0106x faster int-or-other-div-then-get-by-val 5.0861+-0.0717 5.0529+-0.2277 int-or-other-max-then-get-by-val 5.0404+-0.0990 ? 5.1484+-0.1040 ? might be 1.0214x slower int-or-other-min-then-get-by-val 5.1449+-0.1694 ? 5.1847+-0.1172 ? int-or-other-mod-then-get-by-val 5.0728+-0.2710 4.9891+-0.1989 might be 1.0168x faster int-or-other-mul-then-get-by-val 5.0888+-0.1690 ? 5.1559+-0.0353 ? might be 1.0132x slower int-or-other-neg-then-get-by-val 5.6775+-0.0913 ? 5.7433+-0.0780 ? might be 1.0116x slower int-or-other-neg-zero-then-get-by-val 27.6607+-0.4035 ? 27.9297+-0.6148 ? int-or-other-sub-then-get-by-val 6.1187+-0.0402 6.1034+-0.0579 int-or-other-sub 5.3409+-0.2102 5.3207+-0.1465 int-overflow-local 6.0917+-0.0884 ? 6.2495+-0.3135 ? might be 1.0259x slower Int16Array-alloc-long-lived 65.4407+-0.6280 ? 65.9910+-0.4964 ? Int16Array-bubble-sort-with-byteLength 35.0176+-0.3453 ? 35.7781+-1.5192 ? might be 1.0217x slower Int16Array-bubble-sort 34.9700+-0.1391 ? 35.0272+-0.2580 ? Int16Array-load-int-mul 1.9973+-0.0738 ? 2.0782+-0.1583 ? might be 1.0405x slower Int16Array-to-Int32Array-set 71.9913+-0.8145 ? 72.6465+-1.2069 ? Int32Array-alloc-large 32.8768+-1.0092 ? 33.8290+-2.6778 ? might be 1.0290x slower Int32Array-alloc-long-lived 75.3970+-3.3213 74.7645+-0.7745 Int32Array-alloc 4.4984+-0.0660 ? 4.6203+-0.2741 ? might be 1.0271x slower Int32Array-Int8Array-view-alloc 9.3253+-0.4487 9.1780+-0.1329 might be 1.0160x faster int52-spill 7.1403+-0.2436 ? 7.2697+-0.1474 ? might be 1.0181x slower Int8Array-alloc-long-lived 58.2586+-1.2810 ? 58.3925+-1.1054 ? Int8Array-load-with-byteLength 4.8538+-0.1546 ? 4.8808+-0.1958 ? Int8Array-load 4.8267+-0.1046 ? 4.8339+-0.0705 ? integer-divide 14.1480+-0.1135 13.9567+-0.0822 might be 1.0137x faster integer-modulo 2.7315+-0.0792 ? 2.8090+-0.1162 ? might be 1.0284x slower is-boolean-fold-tricky 5.6492+-0.2014 ? 5.6583+-0.1570 ? is-boolean-fold 4.0565+-0.0920 4.0261+-0.0917 is-function-fold-tricky-internal-function 15.1768+-0.7153 14.8912+-0.1649 might be 1.0192x faster is-function-fold-tricky 5.7668+-0.1513 ? 5.8277+-0.1530 ? might be 1.0106x slower is-function-fold 4.0627+-0.1606 4.0580+-0.1062 is-number-fold-tricky 5.6876+-0.1414 ? 5.6945+-0.1246 ? is-number-fold 4.0385+-0.1321 ? 4.1057+-0.0907 ? might be 1.0166x slower is-object-or-null-fold-functions 4.1446+-0.1846 ? 4.1472+-0.1345 ? is-object-or-null-fold-less-tricky 5.8080+-0.1104 5.7712+-0.1857 is-object-or-null-fold-tricky 7.4338+-0.1782 ? 7.4620+-0.1432 ? is-object-or-null-fold 4.0812+-0.1433 4.0163+-0.0449 might be 1.0162x faster is-object-or-null-trickier-function 5.8040+-0.0482 ? 5.8326+-0.0781 ? is-object-or-null-trickier-internal-function 15.5937+-0.1726 ? 15.6030+-0.2450 ? is-object-or-null-tricky-function 5.8270+-0.0685 5.7928+-0.1258 is-object-or-null-tricky-internal-function 11.4726+-0.1932 11.3204+-0.2569 might be 1.0134x faster is-string-fold-tricky 5.7000+-0.0526 5.6727+-0.1572 is-string-fold 4.0598+-0.0507 4.0576+-0.1196 is-undefined-fold-tricky 4.8572+-0.0729 4.8502+-0.1989 is-undefined-fold 3.9895+-0.1178 ? 4.0062+-0.0833 ? JSONP-negative-0 0.4133+-0.0742 ? 0.4587+-0.0402 ? might be 1.1099x slower large-int-captured 6.4138+-0.6668 ? 6.7441+-0.2263 ? might be 1.0515x slower large-int-neg 19.8516+-0.3593 19.6356+-0.4744 might be 1.0110x faster large-int 17.8601+-0.4099 17.7438+-1.1059 load-varargs-elimination 29.8640+-1.0257 ? 30.3342+-1.8685 ? might be 1.0157x slower logical-not-weird-types 5.1385+-0.2365 ? 5.1612+-0.1272 ? logical-not 6.6078+-0.3135 ? 6.6868+-0.3499 ? might be 1.0120x slower lots-of-fields 16.1671+-0.4559 ? 16.2050+-0.3527 ? make-indexed-storage 4.1417+-0.4605 ? 4.3248+-0.1302 ? might be 1.0442x slower make-rope-cse 6.6580+-0.1481 6.6235+-0.2081 marsaglia-larger-ints 53.5493+-0.8255 ? 54.2161+-2.4547 ? might be 1.0125x slower marsaglia-osr-entry 31.1308+-15.7311 26.2458+-0.4494 might be 1.1861x faster math-with-out-of-bounds-array-values 33.2242+-1.9253 32.3027+-0.4613 might be 1.0285x faster max-boolean 3.3350+-0.1026 ? 3.3630+-0.2236 ? method-on-number 23.0524+-0.8926 23.0385+-0.8280 min-boolean 3.3583+-0.1683 ? 3.4529+-0.1220 ? might be 1.0282x slower minus-boolean-double 4.3516+-0.1767 4.2438+-0.1137 might be 1.0254x faster minus-boolean 3.4257+-0.1479 3.3100+-0.0671 might be 1.0350x faster misc-strict-eq 46.2297+-1.3723 45.8906+-1.1330 mod-boolean-double 11.9110+-0.3685 ? 11.9793+-0.2826 ? mod-boolean 9.0388+-0.4352 ? 9.2078+-0.1053 ? might be 1.0187x slower mul-boolean-double 4.9370+-0.1819 ? 4.9413+-0.0530 ? mul-boolean 3.6316+-0.0667 3.6168+-0.0787 neg-boolean 4.2172+-0.1181 ? 4.2320+-0.1103 ? negative-zero-divide 0.6102+-0.1636 0.5792+-0.1328 might be 1.0534x faster negative-zero-modulo 0.5063+-0.0202 ? 0.5460+-0.1367 ? might be 1.0785x slower negative-zero-negate 0.5721+-0.1412 0.5478+-0.0978 might be 1.0443x faster nested-function-parsing 72.0728+-0.4219 ? 72.3958+-0.4105 ? new-array-buffer-dead 146.2168+-2.2701 145.1675+-1.4281 new-array-buffer-push 9.8545+-0.1700 ? 10.1403+-0.1619 ? might be 1.0290x slower new-array-dead 19.0963+-1.8893 18.3168+-1.0613 might be 1.0426x faster new-array-push 5.5561+-0.1481 5.4167+-0.2667 might be 1.0257x faster no-inline-constructor 50.7375+-0.8967 50.2914+-0.3864 number-test 4.4644+-0.1121 4.4392+-0.1615 object-closure-call 7.8126+-0.1458 ? 7.8765+-0.0700 ? object-get-own-property-symbols-on-large-array 5.1237+-0.5919 5.0742+-0.2733 object-test 4.2249+-0.2312 4.2098+-0.0991 obvious-sink-pathology-taken 172.8404+-4.0011 172.4941+-2.1343 obvious-sink-pathology 158.3254+-1.4669 ? 159.7570+-1.7128 ? obviously-elidable-new-object 43.2120+-1.5581 ? 43.4961+-1.4111 ? plus-boolean-arith 3.3420+-0.1929 3.3252+-0.1405 plus-boolean-double 4.3015+-0.0999 4.2901+-0.1269 plus-boolean 3.2446+-0.1412 3.1965+-0.1338 might be 1.0150x faster poly-chain-access-different-prototypes-simple 5.0810+-0.1166 5.0374+-0.0825 poly-chain-access-different-prototypes 5.1033+-0.1141 ? 5.1947+-0.0884 ? might be 1.0179x slower poly-chain-access-simpler 5.1234+-0.1584 5.1129+-0.0789 poly-chain-access 4.9783+-0.1343 4.9636+-0.1530 poly-stricteq 80.1172+-3.5774 79.6475+-2.3682 polymorphic-array-call 1.9498+-0.3202 ? 1.9592+-0.0953 ? polymorphic-get-by-id 3.8221+-0.0784 ? 3.8912+-0.2038 ? might be 1.0181x slower polymorphic-put-by-id 37.2547+-1.2830 36.0667+-2.2726 might be 1.0329x faster polymorphic-put-by-val-with-string 38.0490+-4.9596 37.7552+-3.7658 polymorphic-put-by-val-with-symbol 39.6910+-3.9243 ? 40.2683+-1.7645 ? might be 1.0145x slower polymorphic-structure 23.6878+-0.2442 23.4798+-0.2981 polyvariant-monomorphic-get-by-id 11.5134+-0.0756 ? 11.6885+-0.1888 ? might be 1.0152x slower proto-getter-access 10.3953+-0.5266 10.2810+-0.3991 might be 1.0111x faster prototype-access-with-mutating-prototype 7.5663+-0.4764 7.5572+-0.2775 put-by-id-replace-and-transition 12.6980+-0.5678 12.6730+-0.3493 put-by-id-slightly-polymorphic 3.5540+-0.0970 3.5434+-0.0790 put-by-id 18.4845+-0.8375 ? 18.9078+-0.8021 ? might be 1.0229x slower put-by-val-direct 0.6017+-0.0945 ? 0.6047+-0.1298 ? put-by-val-large-index-blank-indexing-type 8.4907+-0.3128 ? 8.6899+-0.5692 ? might be 1.0235x slower put-by-val-machine-int 3.6626+-0.1386 ? 3.7459+-0.2997 ? might be 1.0227x slower put-by-val-with-string-replace-and-transition 18.8735+-0.4719 ? 19.5501+-0.4321 ? might be 1.0359x slower put-by-val-with-string-slightly-polymorphic 4.6506+-0.0434 4.6218+-0.0812 put-by-val-with-string 19.4742+-0.4781 19.3607+-0.2616 put-by-val-with-symbol-replace-and-transition 20.8197+-0.5530 ? 20.9518+-0.5820 ? put-by-val-with-symbol-slightly-polymorphic 4.6487+-0.1842 ? 4.6762+-0.1238 ? put-by-val-with-symbol 19.3850+-0.4845 ? 19.3936+-0.7593 ? rare-osr-exit-on-local 16.8043+-0.5209 16.7222+-0.2299 register-pressure-from-osr 27.0998+-0.1271 ? 27.1456+-0.1920 ? repeat-multi-get-by-offset 29.4512+-0.3222 29.0771+-0.3966 might be 1.0129x faster setter-prototype 11.1748+-0.4941 ? 11.2009+-0.4376 ? setter 6.8228+-0.1663 ? 6.9048+-0.1356 ? might be 1.0120x slower simple-activation-demo 33.5602+-0.0627 33.4155+-0.1937 simple-getter-access 14.0812+-0.5172 ? 14.2283+-0.3098 ? might be 1.0104x slower simple-poly-call-nested 9.0899+-0.2475 ? 9.2321+-0.3667 ? might be 1.0156x slower simple-poly-call 1.8206+-0.0868 ? 1.8574+-0.1426 ? might be 1.0202x slower sin-boolean 20.8203+-0.7948 ? 21.1702+-0.7888 ? might be 1.0168x slower singleton-scope 84.4256+-1.3345 ? 84.9225+-2.8574 ? sink-function 13.5368+-0.5343 13.5246+-0.4149 sink-huge-activation 20.2505+-0.9823 ? 20.6418+-1.3189 ? might be 1.0193x slower sinkable-new-object-dag 84.5868+-0.6755 84.2952+-0.5284 sinkable-new-object-taken 67.0085+-1.2592 ? 67.4115+-1.3893 ? sinkable-new-object 48.0883+-3.4321 47.6657+-4.0284 slow-array-profile-convergence 3.9409+-0.0954 3.9258+-0.2226 slow-convergence 3.8490+-0.1508 3.8125+-0.2461 slow-ternaries 33.2820+-0.5048 32.7756+-1.0019 might be 1.0155x faster sorting-benchmark 25.3578+-0.8161 ? 25.4520+-1.0394 ? sparse-conditional 1.7038+-0.0677 ? 1.7442+-0.1229 ? might be 1.0237x slower splice-to-remove 19.1769+-0.2828 ? 19.1800+-0.1084 ? string-char-code-at 20.8522+-0.2118 20.7590+-0.2139 string-concat-object 3.2493+-0.0870 3.1763+-0.1073 might be 1.0230x faster string-concat-pair-object 3.1715+-0.1328 ? 3.1948+-0.1924 ? string-concat-pair-simple 17.0702+-0.3368 16.9003+-0.2907 might be 1.0101x faster string-concat-simple 17.4120+-0.4866 ? 17.5608+-0.7066 ? string-cons-repeat 11.5793+-0.7387 11.5240+-0.1351 string-cons-tower 10.3281+-0.0970 ! 10.8531+-0.1027 ! definitely 1.0508x slower string-equality 22.8758+-0.5852 ? 23.1566+-0.4394 ? might be 1.0123x slower string-get-by-val-big-char 11.0356+-0.1645 10.9299+-0.1516 string-get-by-val-out-of-bounds-insane 5.0178+-0.1928 4.9861+-0.2782 string-get-by-val-out-of-bounds 6.9396+-0.0893 6.9014+-0.1616 string-get-by-val 4.7939+-0.1256 ? 4.8410+-0.1491 ? string-hash 2.7419+-0.0736 ? 2.8688+-0.0706 ? might be 1.0463x slower string-long-ident-equality 18.8074+-0.0862 18.7390+-0.1929 string-out-of-bounds 15.0411+-0.4715 ? 15.2696+-0.6961 ? might be 1.0152x slower string-repeat-arith 42.7178+-1.3654 ? 42.9442+-0.4371 ? string-sub 84.4343+-3.0118 ? 86.0114+-1.0327 ? might be 1.0187x slower string-test 4.4930+-0.1272 4.4663+-0.0886 string-var-equality 59.5635+-2.9001 ? 60.2244+-1.6241 ? might be 1.0111x slower structure-hoist-over-transitions 3.6000+-0.2475 ? 3.7130+-0.0466 ? might be 1.0314x slower substring-concat-weird 58.0670+-0.2876 ? 58.9647+-2.4670 ? might be 1.0155x slower substring-concat 62.3072+-0.2284 ! 62.7437+-0.1889 ! definitely 1.0070x slower substring 69.2201+-0.3329 ? 69.3810+-0.9940 ? switch-char-constant 3.4011+-0.1456 ? 3.4210+-0.1559 ? switch-char 7.9564+-0.1473 ? 7.9640+-0.0499 ? switch-constant 13.3135+-2.0429 ? 14.6697+-1.5656 ? might be 1.1019x slower switch-string-basic-big-var 31.8267+-0.9428 ? 31.9996+-0.3666 ? switch-string-basic-big 29.4371+-1.2160 ? 29.7672+-0.7792 ? might be 1.0112x slower switch-string-basic-var 31.6559+-1.0026 ? 32.3504+-0.6846 ? might be 1.0219x slower switch-string-basic 20.5031+-1.4892 20.0071+-1.0090 might be 1.0248x faster switch-string-big-length-tower-var 28.1355+-0.9756 27.8248+-0.9752 might be 1.0112x faster switch-string-length-tower-var 20.7993+-0.2221 ? 20.8152+-0.1714 ? switch-string-length-tower 14.9489+-0.2551 ? 14.9540+-0.3016 ? switch-string-short 15.2338+-0.2888 15.0000+-0.2771 might be 1.0156x faster switch 16.2444+-1.5457 ? 16.7495+-1.9505 ? might be 1.0311x slower tear-off-arguments-simple 4.4763+-0.2081 4.4656+-0.1902 tear-off-arguments 6.2977+-0.2889 ? 6.3038+-0.2952 ? temporal-structure 16.6071+-0.4085 16.4213+-0.0995 might be 1.0113x faster to-int32-boolean 21.3875+-0.6480 21.2475+-0.1689 try-catch-get-by-val-cloned-arguments 20.6373+-0.4093 20.6047+-0.6839 try-catch-get-by-val-direct-arguments 9.9358+-0.2242 ? 10.0714+-0.4843 ? might be 1.0136x slower try-catch-get-by-val-scoped-arguments 11.4075+-0.2331 11.2610+-0.1621 might be 1.0130x faster typed-array-get-set-by-val-profiling 32.4664+-1.6927 ? 32.5465+-0.7885 ? undefined-property-access 469.5744+-8.8029 463.1611+-2.7299 might be 1.0138x faster undefined-test 4.7151+-0.1559 4.6427+-0.1701 might be 1.0156x faster unprofiled-licm 23.7433+-0.1846 23.6940+-0.6978 varargs-call 18.5705+-0.2302 18.4597+-0.2212 varargs-construct-inline 36.1083+-0.9512 36.0655+-0.3023 varargs-construct 30.1324+-0.9117 29.7595+-0.1950 might be 1.0125x faster varargs-inline 12.4796+-0.2342 12.3530+-0.2095 might be 1.0103x faster varargs-strict-mode 14.6041+-0.1320 ! 241.2838+-9.0598 ! definitely 16.5217x slower varargs 14.5745+-0.2275 ? 14.5799+-0.1586 ? weird-inlining-const-prop 3.1784+-0.0634 ? 3.2510+-0.1277 ? might be 1.0229x slower <geometric> 11.7445+-0.0365 ! 11.8852+-0.0214 ! definitely 1.0120x slower Baseline TailCallLLintBaseline AsmBench: bigfib.cpp 677.4565+-8.2618 673.8677+-32.1066 cray.c 618.7600+-9.8398 ? 621.1315+-1.9756 ? dry.c 638.7906+-90.4474 ? 662.5519+-78.3183 ? might be 1.0372x slower FloatMM.c 918.8600+-2.1928 917.6738+-1.6431 gcc-loops.cpp 5984.3683+-52.0262 5960.7186+-22.2085 n-body.c 1686.1657+-30.7672 1679.4186+-31.3262 Quicksort.c 568.8926+-12.4465 567.8512+-13.8601 stepanov_container.cpp 4848.8120+-79.3638 4843.8467+-18.5891 Towers.c 397.2208+-1.4369 ^ 394.4124+-0.7819 ^ definitely 1.0071x faster <geometric> 1117.2533+-16.8660 ? 1119.2870+-16.8775 ? might be 1.0018x slower Baseline TailCallLLintBaseline CompressionBench: huffman 80.1432+-1.3473 80.1425+-0.9337 arithmetic-simple 431.2031+-2.9249 ? 432.0532+-0.9470 ? arithmetic-precise 359.8757+-1.2113 ? 361.7055+-3.9750 ? arithmetic-complex-precise 363.4456+-6.6797 361.0577+-6.7346 arithmetic-precise-order-0 441.0519+-3.4260 440.1137+-2.0113 arithmetic-precise-order-1 416.1600+-2.3150 ? 422.9104+-6.1984 ? might be 1.0162x slower arithmetic-precise-order-2 485.2374+-6.1892 ? 485.5505+-3.6091 ? arithmetic-simple-order-1 494.8174+-2.0553 ? 500.0624+-8.3118 ? might be 1.0106x slower arithmetic-simple-order-2 552.2460+-2.2475 ? 553.2711+-5.5514 ? lz-string 446.0264+-20.1157 431.0753+-4.3037 might be 1.0347x faster <geometric> 370.7313+-0.9445 370.4938+-0.8587 might be 1.0006x faster Baseline TailCallLLintBaseline Geomean of preferred means: <scaled-result> 79.1708+-0.1081 ? 79.4588+-0.2945 ? might be 1.0036x slower
Comment on attachment 260971 [details] Prior patch with tabs removed. Attachment 260971 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.webkit.org/results/158658 New failing tests: js/dfg-strict-mode-to-this.html
Created attachment 260976 [details] Archive of layout-test-results from ews104 for mac-mavericks-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-mavericks-wk2 Platform: Mac OS X 10.9.5
Comment on attachment 260971 [details] Prior patch with tabs removed. Attachment 260971 [details] did not pass mac-ews (mac): Output: http://webkit-queues.webkit.org/results/158696 New failing tests: js/dfg-strict-mode-to-this.html
Created attachment 260978 [details] Archive of layout-test-results from ews103 for mac-mavericks The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews103 Port: mac-mavericks Platform: Mac OS X 10.9.5
Created attachment 260985 [details] Updated patch Speculative fix for linux build. Turned LayoutTests/js/dfg-strict-mode-to-this.html into a simple test as it will never terminate without tail calls enabled for the DFG. Will restore and re-enable the test as part of https://bugs.webkit.org/show_bug.cgi?id=148663.
Comment on attachment 260985 [details] Updated patch Seems super dangerous to land this, unless we also disable use of op_tail_call and op_tail_call_varargs. This is because this patch disables DFG/FTL when those opcodes are in use. Prior to this patch, such code would end up in the DFG/FTL just fine, because it would be using op_call/op_call_varargs instead. Otherwise, LGTM. Is it possible to create an Options thing that disables this for now, say by not emitting op_tail_call in BytecodeGenerator? The new tests could be made to run with --enableTailCalls=true. When the DFG and FTL support is landed, we can turn it on. Anyway, such an option will be super useful in the future - if anyone claims to find a regression due to tail calls, we can just flip the switch to check if tail calls are at fault.
(In reply to comment #15) > Comment on attachment 260985 [details] > Updated patch > > Seems super dangerous to land this, unless we also disable use of > op_tail_call and op_tail_call_varargs. This is because this patch disables > DFG/FTL when those opcodes are in use. Prior to this patch, such code would > end up in the DFG/FTL just fine, because it would be using > op_call/op_call_varargs instead. Otherwise, LGTM. > > Is it possible to create an Options thing that disables this for now, say by > not emitting op_tail_call in BytecodeGenerator? The new tests could be made > to run with --enableTailCalls=true. When the DFG and FTL support is landed, > we can turn it on. Anyway, such an option will be super useful in the > future - if anyone claims to find a regression due to tail calls, we can > just flip the switch to check if tail calls are at fault. The patch already adds the enableTailCalls option. I changed its default value to false and modified the new tests accordingly.
Updated performance results with tail calls disabled by default. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, and Kraken on msaboff-pro (MacPro5,1). VMs tested: "Baseline" at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc "EnableTailCall" at /Volumes/Data/src/webkit/WebKitBuild/Release/JavaScriptCore.framework/Versions/A/Resources/jsc Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. Baseline EnableTailCall SunSpider: 3d-cube 7.9787+-0.3502 ? 8.1906+-0.3744 ? might be 1.0266x slower 3d-morph 8.1746+-0.3164 8.0234+-0.1431 might be 1.0188x faster 3d-raytrace 8.8362+-0.3590 ? 8.8875+-0.2331 ? access-binary-trees 3.1159+-0.2532 3.0709+-0.2360 might be 1.0147x faster access-fannkuch 8.7685+-0.2219 8.5602+-0.2567 might be 1.0243x faster access-nbody 4.4216+-0.1088 4.2797+-0.0487 might be 1.0332x faster access-nsieve 4.5527+-0.1635 4.4366+-0.1155 might be 1.0262x faster bitops-3bit-bits-in-byte 1.7042+-0.1716 ? 1.7542+-0.1749 ? might be 1.0293x slower bitops-bits-in-byte 5.6108+-0.0857 5.6000+-0.1137 bitops-bitwise-and 2.8146+-0.1993 2.7955+-0.2204 bitops-nsieve-bits 4.2871+-0.1013 ? 4.3180+-0.0781 ? controlflow-recursive 3.3831+-0.0668 3.3395+-0.0341 might be 1.0131x faster crypto-aes 6.3668+-0.3041 ? 6.5012+-0.1836 ? might be 1.0211x slower crypto-md5 4.1866+-0.1507 ^ 3.8560+-0.1752 ^ definitely 1.0858x faster crypto-sha1 3.4173+-0.1180 3.4067+-0.2076 date-format-tofte 12.6700+-1.1440 ? 13.1775+-0.8491 ? might be 1.0401x slower date-format-xparb 7.8401+-0.1879 ? 7.8452+-0.2632 ? math-cordic 4.4442+-0.2025 ? 4.5212+-0.1422 ? might be 1.0173x slower math-partial-sums 9.9587+-0.1533 ? 10.0480+-0.1347 ? math-spectral-norm 3.0797+-0.2335 ? 3.1287+-0.0763 ? might be 1.0159x slower regexp-dna 10.3685+-0.3506 9.8422+-0.3228 might be 1.0535x faster string-base64 6.8195+-0.1605 6.7132+-0.1649 might be 1.0158x faster string-fasta 9.3681+-0.1838 9.1815+-0.1937 might be 1.0203x faster string-tagcloud 12.9913+-0.5309 12.9171+-0.4813 string-unpack-code 27.2876+-0.5922 ? 27.9875+-0.6440 ? might be 1.0256x slower string-validate-input 6.7988+-0.2010 ? 6.9005+-0.1366 ? might be 1.0150x slower <arithmetic> 7.2787+-0.0503 ? 7.2801+-0.0688 ? might be 1.0002x slower Baseline EnableTailCall LongSpider: 3d-cube 1167.1637+-15.7118 1160.9732+-10.8831 3d-morph 1885.5887+-5.6235 ? 1888.7269+-4.5676 ? 3d-raytrace 1000.0950+-6.4235 ? 1001.0823+-19.5209 ? access-binary-trees 1419.8430+-20.5413 ? 1422.2787+-17.1661 ? access-fannkuch 451.7099+-22.5342 450.1942+-14.9763 access-nbody 1034.4722+-39.6714 1014.9007+-2.3640 might be 1.0193x faster access-nsieve 684.3599+-19.7313 681.8265+-11.5708 bitops-3bit-bits-in-byte 44.8321+-0.5736 ? 44.9542+-0.5128 ? bitops-bits-in-byte 340.5080+-9.0539 340.2966+-7.6170 bitops-nsieve-bits 624.3997+-20.1850 ? 628.6476+-23.1317 ? controlflow-recursive 748.5463+-3.0073 743.8698+-3.2913 crypto-aes 907.0733+-28.1384 906.2454+-11.7713 crypto-md5 800.1708+-27.7225 792.1677+-17.4619 might be 1.0101x faster crypto-sha1 1061.4943+-10.4350 ? 1061.6551+-12.9467 ? date-format-tofte 1001.1060+-54.8127 990.3685+-7.6843 might be 1.0108x faster date-format-xparb 1172.7764+-60.3822 ^ 1076.2301+-28.4371 ^ definitely 1.0897x faster hash-map 233.0875+-2.0525 ? 234.2341+-1.5749 ? math-cordic 646.3778+-5.3533 642.2267+-3.4693 math-partial-sums 1137.4988+-8.2042 ? 1141.1158+-10.4139 ? math-spectral-norm 1077.2220+-34.7370 1065.6173+-3.6566 might be 1.0109x faster string-base64 546.2556+-18.4637 539.5311+-7.9793 might be 1.0125x faster string-fasta 583.9337+-10.6510 ? 586.0088+-12.0577 ? string-tagcloud 284.1082+-5.3042 ? 290.3342+-7.3244 ? might be 1.0219x slower <geometric> 672.1641+-3.1432 668.4708+-3.2632 might be 1.0055x faster Baseline EnableTailCall V8Spider: crypto 72.1465+-1.3158 71.7795+-2.0447 deltablue 92.2687+-4.5636 91.3663+-0.9497 earley-boyer 64.4252+-1.4015 64.3504+-1.1525 raytrace 39.2795+-0.9601 39.0566+-1.0349 regexp 104.2842+-0.9249 ? 104.8156+-4.9734 ? richards 83.3737+-0.8321 ? 83.4599+-1.6499 ? splay 50.9180+-1.4405 ! 53.3694+-0.6103 ! definitely 1.0481x slower <geometric> 69.0082+-0.2851 ? 69.3184+-0.3781 ? might be 1.0045x slower Baseline EnableTailCall Octane: encrypt 0.30970+-0.00137 0.30709+-0.00646 decrypt 5.75351+-0.03406 ? 5.76574+-0.04003 ? deltablue x2 0.26619+-0.01426 ? 0.26991+-0.01606 ? might be 1.0140x slower earley 0.52744+-0.00658 0.52560+-0.01222 boyer 8.83008+-0.07762 ? 8.95108+-0.17284 ? might be 1.0137x slower navier-stokes x2 6.39343+-0.02680 6.38559+-0.02329 raytrace x2 1.59858+-0.01950 ? 1.63518+-0.12742 ? might be 1.0229x slower richards x2 0.17490+-0.00757 0.17275+-0.00129 might be 1.0124x faster splay x2 0.52325+-0.01017 ! 0.57145+-0.01468 ! definitely 1.0921x slower regexp x2 39.59903+-1.29465 39.37680+-1.75011 pdfjs x2 60.28340+-0.92062 ? 60.99022+-0.90931 ? might be 1.0117x slower mandreel x2 68.88702+-0.91604 68.54950+-1.52330 gbemu x2 61.55142+-2.14390 ? 61.63182+-1.70110 ? closure 0.92961+-0.01382 0.92818+-0.01003 jquery 12.11622+-0.31260 11.97052+-0.11198 might be 1.0122x faster box2d x2 17.87444+-0.22994 17.69194+-0.08294 might be 1.0103x faster zlib x2 561.83974+-39.47269 ? 579.08148+-9.27994 ? might be 1.0307x slower typescript x2 1074.07153+-19.45717 ? 1081.31104+-29.93094 ? <geometric> 9.14651+-0.09145 ? 9.22919+-0.08132 ? might be 1.0090x slower Baseline EnableTailCall Kraken: ai-astar 332.627+-5.083 331.841+-1.412 audio-beat-detection 81.369+-2.814 80.468+-0.384 might be 1.0112x faster audio-dft 132.461+-7.311 ? 133.882+-7.323 ? might be 1.0107x slower audio-fft 58.759+-0.741 ? 59.308+-1.775 ? audio-oscillator 102.651+-0.883 102.517+-0.961 imaging-darkroom 96.495+-1.032 96.354+-0.922 imaging-desaturate 90.172+-3.322 89.900+-1.002 imaging-gaussian-blur 144.685+-1.062 ? 144.884+-1.959 ? json-parse-financial 69.946+-1.008 69.765+-2.538 json-stringify-tinderbox 40.982+-1.049 40.879+-0.192 stanford-crypto-aes 64.921+-1.095 ? 65.021+-2.253 ? stanford-crypto-ccm 59.481+-3.459 59.009+-3.346 stanford-crypto-pbkdf2 145.604+-1.968 143.560+-4.133 might be 1.0142x faster stanford-crypto-sha256-iterative 58.433+-2.225 57.320+-0.830 might be 1.0194x faster <arithmetic> 105.613+-0.222 105.336+-0.645 might be 1.0026x faster Baseline EnableTailCall Geomean of preferred means: <scaled-result> 50.4289+-0.2223 ? 50.4848+-0.2794 ? might be 1.0011x slower
Committed r189774: <http://trac.webkit.org/changeset/189774>
This broke CLOOP build with many errors: https://build.webkit.org/builders/Apple%20Yosemite%20LLINT%20CLoop%20%28BuildAndTest%29/builds/9168/steps/compile-webkit/logs/stdio
A buildfix landed in http://trac.webkit.org/changeset/189805 .. but the CLOOP build is still broken, I assume it fixed an other issue.
(In reply to comment #18) > Committed r189774: <http://trac.webkit.org/changeset/189774> It made Speedometer/Full.html crash, see bug149162 for details.
(In reply to comment #19) > This broke CLOOP build with many errors: > > https://build.webkit.org/builders/ > Apple%20Yosemite%20LLINT%20CLoop%20%28BuildAndTest%29/builds/9168/steps/ > compile-webkit/logs/stdio Tracked in https://bugs.webkit.org/show_bug.cgi?id=149171. Patch in the works.
Comment on attachment 260985 [details] Updated patch View in context: https://bugs.webkit.org/attachment.cgi?id=260985&action=review > Source/JavaScriptCore/jit/JITOperations.cpp:856 > - return reinterpret_cast<char*>(vm->getCTIStub(throwExceptionFromCallSlowPathGenerator).code().executableAddress()); > + return encodeResult( > + vm->getCTIStub(throwExceptionFromCallSlowPathGenerator).code().executableAddress(), > + reinterpret_cast<void*>(KeepTheFrame)); > } > } else { > #if ENABLE(WEBASSEMBLY) Please also update the code in #if ENABLE(WEBASSEMBLY) to use encodeResult().
Rolled out in r189848 <http://trac.webkit.org/changeset/189848>
Committed r189884: <http://trac.webkit.org/changeset/189884>