WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
148661
[ES6] Implement tail calls in the LLInt and Baseline JIT
https://bugs.webkit.org/show_bug.cgi?id=148661
Summary
[ES6] Implement tail calls in the LLInt and Baseline JIT
Basile Clement
Reported
2015-08-31 17:43:41 PDT
...
Attachments
Patch (there is a bug in there)
(143.06 KB, patch)
2015-09-04 14:16 PDT
,
Basile Clement
no flags
Details
Formatted Diff
Diff
Patch
(124.68 KB, patch)
2015-09-04 14:54 PDT
,
Basile Clement
no flags
Details
Formatted Diff
Diff
Rebased patch with Windows 64 bit fix
(121.94 KB, patch)
2015-09-10 16:54 PDT
,
Michael Saboff
no flags
Details
Formatted Diff
Diff
Prior patch with tabs removed.
(121.54 KB, patch)
2015-09-10 17:00 PDT
,
Michael Saboff
buildbot
: commit-queue-
Details
Formatted Diff
Diff
Archive of layout-test-results from ews104 for mac-mavericks-wk2
(644.12 KB, application/zip)
2015-09-10 17:55 PDT
,
Build Bot
no flags
Details
Archive of layout-test-results from ews103 for mac-mavericks
(729.85 KB, application/zip)
2015-09-10 18:10 PDT
,
Build Bot
no flags
Details
Updated patch
(122.35 KB, patch)
2015-09-10 20:11 PDT
,
Michael Saboff
fpizlo
: review+
Details
Formatted Diff
Diff
Show Obsolete
(6)
View All
Add attachment
proposed patch, testcase, etc.
Basile Clement
Comment 1
2015-09-04 13:15:35 PDT
***
Bug 147195
has been marked as a duplicate of this bug. ***
Basile Clement
Comment 2
2015-09-04 14:16:32 PDT
Created
attachment 260617
[details]
Patch (there is a bug in there)
Basile Clement
Comment 3
2015-09-04 14:19:16 PDT
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.
Geoffrey Garen
Comment 4
2015-09-04 14:52:26 PDT
Comment on
attachment 260617
[details]
Patch (there is a bug in there) Looks good to me (though not ready to land).
Basile Clement
Comment 5
2015-09-04 14:54:25 PDT
Created
attachment 260624
[details]
Patch Updated patch, enable adequate ES6 tests
Michael Saboff
Comment 6
2015-09-10 16:54:53 PDT
Created
attachment 260970
[details]
Rebased patch with Windows 64 bit fix
WebKit Commit Bot
Comment 7
2015-09-10 16:56:09 PDT
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.
Michael Saboff
Comment 8
2015-09-10 17:00:56 PDT
Created
attachment 260971
[details]
Prior patch with tabs removed.
Michael Saboff
Comment 9
2015-09-10 17:04:48 PDT
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
Build Bot
Comment 10
2015-09-10 17:55:34 PDT
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
Build Bot
Comment 11
2015-09-10 17:55:38 PDT
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
Build Bot
Comment 12
2015-09-10 18:10:06 PDT
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
Build Bot
Comment 13
2015-09-10 18:10:10 PDT
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
Michael Saboff
Comment 14
2015-09-10 20:11:04 PDT
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
.
Filip Pizlo
Comment 15
2015-09-14 10:13:38 PDT
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.
Michael Saboff
Comment 16
2015-09-14 16:34:21 PDT
(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.
Michael Saboff
Comment 17
2015-09-14 16:51:41 PDT
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
Michael Saboff
Comment 18
2015-09-14 20:00:47 PDT
Committed
r189774
: <
http://trac.webkit.org/changeset/189774
>
Alexey Proskuryakov
Comment 19
2015-09-14 22:19:21 PDT
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
Csaba Osztrogonác
Comment 20
2015-09-15 07:00:54 PDT
A buildfix landed in
http://trac.webkit.org/changeset/189805
.. but the CLOOP build is still broken, I assume it fixed an other issue.
Csaba Osztrogonác
Comment 21
2015-09-15 08:56:43 PDT
(In reply to
comment #18
)
> Committed
r189774
: <
http://trac.webkit.org/changeset/189774
>
It made Speedometer/Full.html crash, see
bug149162
for details.
Michael Saboff
Comment 22
2015-09-15 10:58:41 PDT
(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.
Sukolsak Sakshuwong
Comment 23
2015-09-15 23:57:12 PDT
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().
Michael Saboff
Comment 24
2015-09-16 16:35:38 PDT
Rolled out in
r189848
<
http://trac.webkit.org/changeset/189848
>
Michael Saboff
Comment 25
2015-09-16 16:40:48 PDT
Committed
r189884
: <
http://trac.webkit.org/changeset/189884
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug