Summary: | Crash in JSC::FTL::LowerDFGToLLVM::compileCompareStrictEq | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Vanessa Freudenberg <vanessa> | ||||||||
Component: | JavaScriptCore | Assignee: | Michael Saboff <msaboff> | ||||||||
Status: | RESOLVED FIXED | ||||||||||
Severity: | Major | CC: | cody.taylor, fpizlo, msaboff, webkit-bug-importer | ||||||||
Priority: | P2 | Keywords: | InRadar | ||||||||
Version: | 528+ (Nightly build) | ||||||||||
Hardware: | Mac (Intel) | ||||||||||
OS: | OS X 10.10 | ||||||||||
URL: | http://bertfreudenberg.github.io/SqueakJS/etoys/ | ||||||||||
See Also: | https://bugs.webkit.org/show_bug.cgi?id=136803 | ||||||||||
Attachments: |
|
Description
Vanessa Freudenberg
2014-12-08 07:29:15 PST
I could reproduce with Safari 8 (didn't try nightlies or trunk). Have a fix need to write a test. Created attachment 246196 [details]
Work in progress patch without test
Comment on attachment 246196 [details] Work in progress patch without test View in context: https://bugs.webkit.org/attachment.cgi?id=246196&action=review > Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp:3552 > + || m_node->isBinaryUseKind(UntypedUse) This is wrong. The code below will not generate correct results for UntypedUse. Here is the source for the function that is being compiled: function tallyIntoMapwith(sourceWord, destinationWord) { var pixMask; var mapIndex; var destShifted; var i; var maskShifted; var pixVal; if ((cmFlags & (ColorMapPresent | ColorMapIndexedPart)) !== (ColorMapPresent | ColorMapIndexedPart)) { return destinationWord; } pixMask = maskTable[destDepth]; destShifted = destinationWord; maskShifted = destMask; for (i = 1; i <= destPPW; i++) { if ((maskShifted & pixMask) !== 0) { /* Only tally pixels within the destination rectangle */ pixVal = destShifted & pixMask; if (destDepth < 16) { mapIndex = pixVal; } else { // Crashes checking the IR generated for the next statement if (destDepth === 16) { mapIndex = rgbMapfromto(pixVal, 5, cmBitsPerColor); } else { mapIndex = rgbMapfromto(pixVal, 8, cmBitsPerColor); } } tallyMapAtput(mapIndex, tallyMapAt(mapIndex) + 1); } maskShifted = SHR(maskShifted, destDepth); destShifted = SHR(destShifted, destDepth); } return destinationWord; } Created attachment 246308 [details]
Updated work in Progress
Tested performance with of adding the a FTL::canCompile() check to validate that the DFG graph is suitable for lowering to LLVM and got a huge slowdown. 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 "CheckFTLCapabilitesAgain" 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 CheckFTLCapabilitesAgain SunSpider: 3d-cube 8.4254+-0.2303 8.2947+-0.4883 might be 1.0158x faster 3d-morph 12.5574+-0.2270 ? 12.6633+-0.5515 ? 3d-raytrace 11.0907+-0.3086 10.8575+-0.3941 might be 1.0215x faster access-binary-trees 3.3362+-0.1887 3.3247+-0.2178 access-fannkuch 10.2742+-0.2233 ? 10.4454+-0.3724 ? might be 1.0167x slower access-nbody 5.3285+-0.1665 ? 5.3630+-0.2529 ? access-nsieve 5.8448+-0.0553 5.7865+-0.1660 might be 1.0101x faster bitops-3bit-bits-in-byte 2.3517+-0.1475 ? 2.4132+-0.1010 ? might be 1.0262x slower bitops-bits-in-byte 6.3422+-0.0406 ? 6.3508+-0.1032 ? bitops-bitwise-and 3.1060+-0.1512 ? 3.1929+-0.1980 ? might be 1.0280x slower bitops-nsieve-bits 6.7874+-0.2680 6.7325+-0.2410 controlflow-recursive 3.6476+-0.2466 3.4430+-0.1825 might be 1.0594x faster crypto-aes 7.0080+-0.2997 ? 7.1836+-0.2734 ? might be 1.0251x slower crypto-md5 4.2530+-0.2816 4.2493+-0.3246 crypto-sha1 4.2775+-0.3129 ? 4.2863+-0.3765 ? date-format-tofte 17.0318+-0.7223 16.5503+-0.5088 might be 1.0291x faster date-format-xparb 8.8958+-0.4373 ? 8.9974+-0.4338 ? might be 1.0114x slower math-cordic 5.5435+-0.2909 ? 5.5732+-0.2498 ? math-partial-sums 10.9012+-0.1222 ? 11.0506+-0.1198 ? might be 1.0137x slower math-spectral-norm 3.5137+-0.1778 3.4557+-0.2000 might be 1.0168x faster regexp-dna 11.4762+-0.2570 ? 11.6005+-0.1091 ? might be 1.0108x slower string-base64 7.1635+-0.3972 ? 7.2466+-0.2875 ? might be 1.0116x slower string-fasta 12.1312+-0.3163 12.0148+-0.2926 string-tagcloud 17.8674+-0.3081 17.2139+-0.5594 might be 1.0380x faster string-unpack-code 37.7999+-1.1774 ? 38.5540+-1.0918 ? might be 1.0199x slower string-validate-input 8.3782+-0.3113 8.1863+-0.4700 might be 1.0234x faster <arithmetic> * 9.0513+-0.0522 9.0396+-0.1029 might be 1.0013x faster <geometric> 7.3470+-0.0350 7.3334+-0.0974 might be 1.0018x faster <harmonic> 6.1554+-0.0667 6.1513+-0.1069 might be 1.0007x faster Baseline CheckFTLCapabilitesAgain LongSpider: 3d-cube 1684.4370+-366.0668 ! 2379.1963+-9.0939 ! definitely 1.4125x slower 3d-morph 1978.3196+-3.0337 ! 2189.1918+-3.8531 ! definitely 1.1066x slower 3d-raytrace 1542.9747+-3.8720 ^ 1525.5170+-7.5645 ^ definitely 1.0114x faster access-binary-trees 1859.5215+-5.2750 ^ 1797.2401+-1.6667 ^ definitely 1.0347x faster access-fannkuch 591.7411+-28.0623 ! 733.6613+-8.7177 ! definitely 1.2398x slower access-nbody 1479.0960+-1.7625 ! 1837.4803+-1.8035 ! definitely 1.2423x slower access-nsieve 1804.3760+-9.1209 1800.7350+-20.1102 bitops-3bit-bits-in-byte 70.3105+-0.2038 ! 135.6770+-0.8051 ! definitely 1.9297x slower bitops-bits-in-byte 364.0190+-5.1025 ! 549.7675+-0.1606 ! definitely 1.5103x slower bitops-nsieve-bits 1454.5776+-4.7530 ^ 1328.5969+-2.7677 ^ definitely 1.0948x faster controlflow-recursive 1089.2863+-6.4276 ^ 925.0367+-2.4511 ^ definitely 1.1776x faster crypto-aes 1290.7263+-3.5353 ! 1949.4685+-12.6533 ! definitely 1.5104x slower crypto-md5 1070.2658+-5.3137 ! 1281.9777+-13.4215 ! definitely 1.1978x slower crypto-sha1 1449.4285+-9.4458 ! 1906.0695+-7.5645 ! definitely 1.3150x slower date-format-tofte 1507.5335+-68.9748 ! 1601.1042+-9.8061 ! definitely 1.0621x slower date-format-xparb 1403.2462+-68.1595 1378.9893+-26.0171 might be 1.0176x faster math-cordic 1049.3808+-8.0381 ! 2001.6452+-5.9398 ! definitely 1.9075x slower math-partial-sums 1278.9943+-2.5430 ! 1312.8829+-2.2899 ! definitely 1.0265x slower math-spectral-norm 1217.8057+-1.6660 ! 2113.2379+-3.1426 ! definitely 1.7353x slower string-base64 631.4800+-1.8253 ^ 623.7205+-3.5519 ^ definitely 1.0124x faster string-fasta 860.3738+-11.4774 ! 995.1693+-3.4808 ! definitely 1.1567x slower string-tagcloud 420.2945+-5.2666 ? 424.2668+-6.7480 ? <arithmetic> 1186.2813+-20.6741 ! 1399.5742+-0.9272 ! definitely 1.1798x slower <geometric> * 998.2024+-11.7829 ! 1193.3721+-1.5206 ! definitely 1.1955x slower <harmonic> 624.1823+-3.3413 ! 864.7079+-2.7638 ! definitely 1.3853x slower Baseline CheckFTLCapabilitesAgain V8Spider: crypto 100.4189+-1.2812 ? 100.8250+-1.0864 ? deltablue 124.8494+-11.2373 ? 126.9690+-1.8237 ? might be 1.0170x slower earley-boyer 81.0970+-2.7328 ? 81.7010+-0.6636 ? raytrace 49.1834+-2.8370 ? 50.7105+-2.8897 ? might be 1.0310x slower regexp 128.6553+-1.9744 127.4943+-1.8847 richards 132.0338+-3.9614 ! 141.1838+-3.6683 ! definitely 1.0693x slower splay 58.8062+-2.4803 ? 59.0485+-3.7745 ? <arithmetic> 96.4349+-1.5936 ? 98.2760+-0.8584 ? might be 1.0191x slower <geometric> * 90.5335+-1.5304 ? 92.1233+-1.0666 ? might be 1.0176x slower <harmonic> 84.3103+-1.8796 ? 85.7321+-1.5327 ? might be 1.0169x slower Baseline CheckFTLCapabilitesAgain Octane: encrypt 0.45952+-0.01251 ! 0.58129+-0.00736 ! definitely 1.2650x slower decrypt 8.25512+-0.12867 ! 10.52647+-0.03494 ! definitely 1.2751x slower deltablue x2 0.38899+-0.00336 ! 0.66973+-0.01270 ! definitely 1.7217x slower earley 1.32078+-0.01135 ? 1.32944+-0.01362 ? boyer 11.85747+-0.09610 ! 14.12994+-0.13250 ! definitely 1.1916x slower navier-stokes x2 7.39018+-0.02564 ! 11.46404+-0.05493 ! definitely 1.5513x slower raytrace x2 2.51232+-0.21192 ! 5.01789+-0.38755 ! definitely 1.9973x slower richards x2 0.24088+-0.00288 ! 0.37012+-0.00096 ! definitely 1.5365x slower splay x2 0.66895+-0.00390 ! 0.82139+-0.10543 ! definitely 1.2279x slower regexp x2 62.96479+-1.59686 62.76995+-0.86524 pdfjs x2 96.49107+-0.59789 ? 96.60619+-0.85911 ? mandreel x2 107.02375+-0.73439 ! 170.95224+-0.96348 ! definitely 1.5973x slower gbemu x2 96.66876+-4.03324 ! 102.54764+-1.25550 ! definitely 1.0608x slower closure 0.96826+-0.00344 ? 0.97132+-0.00897 ? jquery 12.31582+-0.03684 12.29063+-0.11049 box2d x2 28.08956+-0.28453 ! 29.98011+-0.09508 ! definitely 1.0673x slower zlib x2 888.53666+-2.12592 ! 1098.63363+-3.57671 ! definitely 1.2365x slower typescript x2 1453.91418+-47.57047 1399.21326+-27.99842 might be 1.0391x faster <arithmetic> 184.16524+-3.08111 ! 199.93071+-1.81436 ! definitely 1.0856x slower <geometric> * 13.28100+-0.10741 ! 16.66220+-0.12331 ! definitely 1.2546x slower <harmonic> 1.36844+-0.00310 ! 1.95929+-0.04402 ! definitely 1.4318x slower Baseline CheckFTLCapabilitesAgain Kraken: ai-astar 819.725+-28.565 794.124+-29.497 might be 1.0322x faster audio-beat-detection 220.882+-0.994 ! 224.379+-0.295 ! definitely 1.0158x slower audio-dft 301.660+-36.392 291.005+-1.251 might be 1.0366x faster audio-fft 155.742+-1.005 154.937+-1.268 audio-oscillator 427.917+-2.562 ^ 274.321+-1.218 ^ definitely 1.5599x faster imaging-darkroom 335.383+-1.813 ^ 331.140+-0.757 ^ definitely 1.0128x faster imaging-desaturate 145.258+-0.255 ! 212.677+-0.465 ! definitely 1.4641x slower imaging-gaussian-blur 216.181+-1.743 ! 387.265+-1.061 ! definitely 1.7914x slower json-parse-financial 92.461+-0.793 ? 93.396+-2.274 ? might be 1.0101x slower json-stringify-tinderbox 113.586+-5.365 112.786+-1.501 stanford-crypto-aes 116.779+-2.412 ? 117.935+-1.778 ? stanford-crypto-ccm 111.485+-3.146 ^ 93.090+-2.939 ^ definitely 1.1976x faster stanford-crypto-pbkdf2 313.339+-2.938 ^ 264.435+-5.494 ^ definitely 1.1849x faster stanford-crypto-sha256-iterative 95.082+-1.401 ! 97.102+-0.552 ! definitely 1.0212x slower <arithmetic> * 247.534+-4.298 246.328+-1.970 might be 1.0049x faster <geometric> 199.280+-2.395 ? 201.219+-0.919 ? might be 1.0097x slower <harmonic> 168.280+-1.318 ? 169.825+-0.949 ? might be 1.0092x slower Baseline CheckFTLCapabilitesAgain JSRegress: abs-boolean 4.6240+-0.1165 ? 4.6695+-0.1843 ? adapt-to-double-divide 19.3786+-0.3969 ! 20.3898+-0.3619 ! definitely 1.0522x slower aliased-arguments-getbyval 1.4614+-0.1168 1.4613+-0.1833 allocate-big-object 3.5966+-0.2758 ? 3.5994+-0.1604 ? arity-mismatch-inlining 1.3419+-0.2591 1.3115+-0.0532 might be 1.0231x faster array-access-polymorphic-structure 12.5099+-0.1738 12.4674+-0.2858 array-nonarray-polymorhpic-access 69.0966+-0.6658 ? 69.5461+-8.2680 ? array-prototype-every 188.6152+-5.4459 186.7556+-8.4325 array-prototype-forEach 186.2267+-15.3484 ? 189.5630+-10.3126 ? might be 1.0179x slower array-prototype-map 223.6080+-5.1404 220.3545+-4.3256 might be 1.0148x faster array-prototype-some 197.2348+-13.7463 192.0667+-8.1613 might be 1.0269x faster array-splice-contiguous 89.5582+-4.6993 ? 90.2499+-4.8957 ? array-with-double-add 7.4485+-0.1674 7.4044+-0.0914 array-with-double-increment 5.5300+-0.1445 ? 5.5310+-0.1298 ? array-with-double-mul-add 11.6240+-0.1131 11.5105+-0.1456 array-with-double-sum 5.3740+-0.1061 ? 5.4253+-0.1557 ? array-with-int32-add-sub 13.1236+-0.2279 12.8990+-0.2262 might be 1.0174x faster array-with-int32-or-double-sum 5.2505+-0.1243 ? 5.3434+-0.0824 ? might be 1.0177x slower ArrayBuffer-DataView-alloc-large-long-lived 65.4079+-2.6091 64.4221+-0.6485 might be 1.0153x faster ArrayBuffer-DataView-alloc-long-lived 27.1077+-1.3025 26.2334+-0.3690 might be 1.0333x faster ArrayBuffer-Int32Array-byteOffset 5.3918+-0.2344 5.1122+-0.3690 might be 1.0547x faster ArrayBuffer-Int8Array-alloc-large-long-lived 68.6993+-1.3282 ? 70.6108+-3.7409 ? might be 1.0278x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 43.7990+-1.3709 ? 44.3135+-1.4476 ? might be 1.0117x slower ArrayBuffer-Int8Array-alloc-long-lived 25.3255+-0.8341 ? 27.1045+-2.7248 ? might be 1.0702x slower ArrayBuffer-Int8Array-alloc 21.4498+-0.9400 ? 21.6425+-1.0428 ? asmjs_bool_bug 12.7160+-0.2284 12.6465+-0.2307 assign-custom-setter-polymorphic 6.0016+-0.1905 ? 6.0761+-0.1493 ? might be 1.0124x slower assign-custom-setter 8.2315+-0.1746 ? 8.3250+-0.0711 ? might be 1.0114x slower basic-set 18.0435+-1.5026 16.8120+-1.2060 might be 1.0733x faster big-int-mul 7.7390+-0.0810 ? 7.7891+-0.2318 ? boolean-test 4.8981+-0.2104 4.7920+-0.0972 might be 1.0221x faster branch-fold 5.2663+-0.1577 ? 5.3416+-0.1572 ? might be 1.0143x slower by-val-generic 15.3765+-0.3021 15.3273+-0.6053 call-spread-apply 26.7298+-0.2589 ^ 26.0934+-0.2417 ^ definitely 1.0244x faster call-spread-call 11.5486+-0.2806 11.2810+-0.2555 might be 1.0237x faster captured-assignments 0.8494+-0.2058 0.8127+-0.1360 might be 1.0451x faster cast-int-to-double 8.6546+-0.1895 8.5427+-0.0844 might be 1.0131x faster cell-argument 12.1551+-0.1365 ! 15.7473+-0.1257 ! definitely 1.2955x slower cfg-simplify 3.9940+-0.1929 ? 4.0381+-0.1133 ? might be 1.0110x slower chain-getter-access 16.7128+-0.4791 ! 22.1323+-0.2905 ! definitely 1.3243x slower cmpeq-obj-to-obj-other 16.3000+-0.4354 ? 16.9847+-0.7668 ? might be 1.0420x slower constant-test 8.0817+-0.1085 7.9722+-0.2230 might be 1.0137x faster DataView-custom-properties 73.4356+-1.2568 ? 73.7570+-2.8189 ? delay-tear-off-arguments-strictmode 44.0186+-0.5679 43.8254+-2.2986 destructuring-arguments 9.1373+-0.1351 9.0717+-0.2135 destructuring-swap 8.1918+-0.1754 ? 8.2317+-0.2375 ? direct-arguments-getbyval 1.5794+-0.2850 1.5415+-0.1012 might be 1.0246x faster div-boolean-double 5.9225+-0.2271 5.7382+-0.2442 might be 1.0321x faster div-boolean 10.1893+-0.1093 10.1876+-0.1200 double-get-by-val-out-of-bounds 7.9057+-0.3169 7.7896+-0.2344 might be 1.0149x faster double-pollution-getbyval 10.2017+-0.2023 10.0055+-0.2051 might be 1.0196x faster double-pollution-putbyoffset 7.9363+-0.1543 7.8453+-0.1986 might be 1.0116x faster double-to-int32-typed-array-no-inline 3.6616+-0.1544 ? 3.7155+-0.3031 ? might be 1.0147x slower double-to-int32-typed-array 3.1696+-0.1668 ? 3.1974+-0.2120 ? double-to-uint32-typed-array-no-inline 3.7192+-0.1000 ? 3.7934+-0.1485 ? might be 1.0199x slower double-to-uint32-typed-array 3.3278+-0.2488 3.2569+-0.0613 might be 1.0218x faster elidable-new-object-dag 63.1037+-0.7777 ! 396.1140+-6.2530 ! definitely 6.2772x slower elidable-new-object-roflcopter 237.3107+-0.6990 237.0347+-0.9520 elidable-new-object-then-call 59.1095+-0.8220 ! 259.2364+-6.0201 ! definitely 4.3857x slower elidable-new-object-tree 69.5731+-1.3086 ! 393.7665+-4.8424 ! definitely 5.6598x slower empty-string-plus-int 10.3997+-0.1950 10.1263+-0.2315 might be 1.0270x faster emscripten-cube2hash 57.2567+-0.4616 ? 57.5522+-1.4530 ? external-arguments-getbyval 2.4247+-0.2277 ? 2.4348+-0.2186 ? external-arguments-putbyval 3.6743+-0.2111 ? 3.7758+-0.2266 ? might be 1.0276x slower fixed-typed-array-storage-var-index 1.8537+-0.0563 ! 2.0468+-0.1165 ! definitely 1.1041x slower fixed-typed-array-storage 1.4429+-0.0992 ? 1.5068+-0.1887 ? might be 1.0442x slower Float32Array-matrix-mult 8.3763+-0.5623 ? 8.8171+-1.5045 ? might be 1.0526x slower Float32Array-to-Float64Array-set 119.1960+-4.1940 116.5704+-1.0105 might be 1.0225x faster Float64Array-alloc-long-lived 103.5098+-0.7632 ? 103.9840+-1.4414 ? Float64Array-to-Int16Array-set 144.8483+-2.7642 144.8109+-4.4859 fold-double-to-int 23.7125+-0.4981 ! 34.6306+-1.0998 ! definitely 1.4604x slower fold-get-by-id-to-multi-get-by-offset-rare-int 14.5103+-0.8095 14.3445+-0.3931 might be 1.0116x faster fold-get-by-id-to-multi-get-by-offset 12.3757+-0.4647 ? 12.5439+-0.4257 ? might be 1.0136x slower fold-multi-get-by-offset-to-get-by-offset 10.7960+-1.7112 ? 10.8817+-2.1934 ? fold-multi-get-by-offset-to-poly-get-by-offset 10.9042+-1.0602 10.5978+-0.3201 might be 1.0289x faster fold-multi-put-by-offset-to-poly-put-by-offset 9.8348+-1.1391 ? 10.1268+-1.3330 ? might be 1.0297x slower fold-multi-put-by-offset-to-put-by-offset 8.8740+-1.1242 8.0186+-1.3234 might be 1.1067x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 16.0674+-1.2591 15.4662+-2.5596 might be 1.0389x faster fold-put-by-id-to-multi-put-by-offset 11.4954+-0.7012 ? 11.6194+-1.4441 ? might be 1.0108x slower fold-put-structure 8.6396+-0.7585 ? 8.8072+-1.1558 ? might be 1.0194x slower for-of-iterate-array-entries 10.9670+-0.3609 10.8669+-0.3066 for-of-iterate-array-keys 5.0760+-0.1750 5.0153+-0.2392 might be 1.0121x faster for-of-iterate-array-values 4.0119+-0.3122 ? 4.4427+-0.2013 ? might be 1.1074x slower fround 25.6963+-0.2118 ! 26.9955+-0.1115 ! definitely 1.0506x slower ftl-library-inlining-dataview 155.8597+-22.1040 152.9064+-2.0952 might be 1.0193x faster ftl-library-inlining 135.4794+-7.6702 ! 145.0245+-0.2659 ! definitely 1.0705x slower function-dot-apply 2.8680+-0.1800 2.8400+-0.2309 function-test 5.5325+-0.2112 5.4984+-0.2358 function-with-eval 223.1771+-2.0292 219.8792+-24.2283 might be 1.0150x faster gcse-poly-get-less-obvious 36.9563+-0.6808 36.2575+-1.0252 might be 1.0193x faster gcse-poly-get 36.8305+-0.2743 36.8132+-1.0005 gcse 9.1937+-0.1077 9.0728+-0.2076 might be 1.0133x faster get-by-id-bimorphic-check-structure-elimination-simple 4.1334+-0.1258 4.0856+-0.1403 might be 1.0117x faster get-by-id-bimorphic-check-structure-elimination 12.1049+-0.0943 11.9789+-0.1516 might be 1.0105x faster get-by-id-chain-from-try-block 19.7538+-0.1189 19.6180+-0.1033 get-by-id-check-structure-elimination 10.7063+-0.4386 10.6670+-0.1560 get-by-id-proto-or-self 30.8511+-0.6974 ! 34.7138+-0.6516 ! definitely 1.1252x slower get-by-id-quadmorphic-check-structure-elimination-simple 5.2753+-0.1731 5.1339+-0.1196 might be 1.0275x faster get-by-id-self-or-proto 31.8908+-6.4890 ? 34.8402+-2.3304 ? might be 1.0925x slower get-by-val-out-of-bounds 7.5349+-0.2843 7.3873+-0.1681 might be 1.0200x faster get_callee_monomorphic 6.0526+-0.3895 ? 6.2784+-0.5388 ? might be 1.0373x slower get_callee_polymorphic 5.4689+-0.1834 5.2090+-0.2557 might be 1.0499x faster getter-no-activation 6.3060+-0.1271 ? 6.3098+-0.1127 ? getter-richards 179.2745+-3.6649 169.4739+-8.3713 might be 1.0578x faster getter 9.0842+-0.5308 8.8842+-0.3596 might be 1.0225x faster global-var-const-infer-fire-from-opt 1.8119+-0.1247 1.7501+-0.1884 might be 1.0353x faster global-var-const-infer 1.4200+-0.1673 ? 1.5260+-0.2394 ? might be 1.0746x slower HashMap-put-get-iterate-keys 50.5900+-0.5999 49.9011+-0.8957 might be 1.0138x faster HashMap-put-get-iterate 49.9439+-1.1221 48.5055+-0.3857 might be 1.0297x faster HashMap-string-put-get-iterate 49.7173+-1.1275 ? 50.7897+-1.2250 ? might be 1.0216x slower hoist-make-rope 16.7797+-2.4051 ! 96.5465+-0.6237 ! definitely 5.7538x slower hoist-poly-check-structure-effectful-loop 9.5635+-0.1147 ^ 9.3412+-0.1072 ^ definitely 1.0238x faster hoist-poly-check-structure 6.3197+-0.1809 6.1780+-0.2422 might be 1.0229x faster imul-double-only 13.4333+-1.8984 ! 21.2166+-0.1331 ! definitely 1.5794x slower imul-int-only 14.5253+-0.1249 14.4742+-0.1747 imul-mixed 12.6605+-1.6708 ! 26.9069+-0.2395 ! definitely 2.1253x slower in-four-cases 36.2841+-0.7934 35.1251+-0.7375 might be 1.0330x faster in-one-case-false 18.7558+-0.4603 18.2859+-0.1467 might be 1.0257x faster in-one-case-true 18.5046+-0.1471 18.3490+-0.3288 in-two-cases 19.3170+-0.1691 19.0038+-0.1558 might be 1.0165x faster indexed-properties-in-objects 4.6625+-0.1717 4.6201+-0.1983 infer-closure-const-then-mov-no-inline 6.0481+-0.0413 5.9131+-0.1266 might be 1.0228x faster infer-closure-const-then-mov 26.2275+-0.3431 26.0132+-0.1356 infer-closure-const-then-put-to-scope-no-inline 19.7618+-0.2721 ! 22.2540+-0.2305 ! definitely 1.1261x slower infer-closure-const-then-put-to-scope 33.7224+-1.1604 ? 34.5884+-0.7527 ? might be 1.0257x slower infer-closure-const-then-reenter-no-inline 92.8353+-0.1746 ! 106.8552+-0.2427 ! definitely 1.1510x slower infer-closure-const-then-reenter 31.6918+-0.2544 ? 36.6333+-15.7428 ? might be 1.1559x slower infer-constant-global-property 38.8754+-0.0466 ^ 38.6995+-0.1082 ^ definitely 1.0045x faster infer-constant-property 3.7210+-0.0641 3.5969+-0.0974 might be 1.0345x faster infer-one-time-closure-ten-vars 17.7138+-0.1977 ! 27.1662+-0.0665 ! definitely 1.5336x slower infer-one-time-closure-two-vars 16.9888+-0.8368 ! 26.8641+-0.2370 ! definitely 1.5813x slower infer-one-time-closure 16.7379+-0.5725 ! 27.8843+-3.9084 ! definitely 1.6659x slower infer-one-time-deep-closure 29.6984+-0.3056 ! 53.3060+-0.1967 ! definitely 1.7949x slower inline-arguments-access 2.8155+-0.1350 2.7695+-0.1123 might be 1.0166x faster inline-arguments-aliased-access 3.1365+-0.0726 3.0220+-0.1744 might be 1.0379x faster inline-arguments-local-escape 25.7418+-0.1349 25.7292+-0.7041 inline-get-scoped-var 5.8198+-0.1463 ? 5.9213+-0.1525 ? might be 1.0174x slower inlined-put-by-id-transition 16.8721+-1.7771 ? 18.0001+-1.6120 ? might be 1.0669x slower int-or-other-abs-then-get-by-val 9.5490+-0.0351 9.4943+-0.1991 int-or-other-abs-zero-then-get-by-val 34.0172+-0.2931 ? 34.1624+-0.8267 ? int-or-other-add-then-get-by-val 8.4006+-0.1908 8.3348+-0.1562 int-or-other-add 9.1472+-0.2646 8.9370+-0.1878 might be 1.0235x faster int-or-other-div-then-get-by-val 6.5130+-0.1475 ? 6.5466+-0.1541 ? int-or-other-max-then-get-by-val 7.9655+-0.1190 7.8763+-0.2495 might be 1.0113x faster int-or-other-min-then-get-by-val 7.2291+-0.0852 7.1592+-0.1205 int-or-other-mod-then-get-by-val 6.0799+-0.1594 ? 6.1268+-0.1704 ? int-or-other-mul-then-get-by-val 6.4827+-0.3017 6.4816+-0.2086 int-or-other-neg-then-get-by-val 8.0347+-0.1788 ? 8.0956+-0.1627 ? int-or-other-neg-zero-then-get-by-val 34.2698+-0.6073 34.1738+-0.4280 int-or-other-sub-then-get-by-val 8.7798+-0.3754 8.6645+-0.1254 might be 1.0133x faster int-or-other-sub 6.8898+-0.0309 6.8373+-0.2975 int-overflow-local 8.0093+-0.2453 7.8735+-0.2589 might be 1.0172x faster Int16Array-alloc-long-lived 76.9608+-1.0634 76.7668+-0.6921 Int16Array-bubble-sort-with-byteLength 51.9716+-1.1528 50.7997+-0.2815 might be 1.0231x faster Int16Array-bubble-sort 49.0795+-2.3672 ? 49.4153+-0.2929 ? Int16Array-load-int-mul 2.2545+-0.0352 ? 2.3665+-0.1657 ? might be 1.0497x slower Int16Array-to-Int32Array-set 115.0621+-2.7538 113.6673+-1.8571 might be 1.0123x faster Int32Array-alloc-large 38.2499+-2.0791 ? 38.7213+-1.3738 ? might be 1.0123x slower Int32Array-alloc-long-lived 83.4545+-0.1762 ? 84.2670+-0.9991 ? Int32Array-alloc 4.8250+-0.0842 ? 4.8977+-0.1246 ? might be 1.0151x slower Int32Array-Int8Array-view-alloc 12.5760+-0.5129 ? 12.5898+-0.4951 ? int52-spill 12.3936+-0.3048 ? 12.5532+-0.3837 ? might be 1.0129x slower Int8Array-alloc-long-lived 71.3570+-1.8304 71.0410+-1.1916 Int8Array-load-with-byteLength 5.1310+-0.1025 ? 5.2275+-0.1936 ? might be 1.0188x slower Int8Array-load 5.3022+-0.1295 5.1945+-0.1809 might be 1.0207x faster integer-divide 19.2576+-0.1415 ? 19.2896+-0.1823 ? integer-modulo 3.6686+-0.2285 ? 3.6914+-0.1971 ? large-int-captured 12.6235+-0.5776 12.4000+-0.1304 might be 1.0180x faster large-int-neg 30.3953+-0.4732 ! 36.6799+-0.1073 ! definitely 1.2068x slower large-int 27.6955+-0.6522 ! 33.9491+-0.1690 ! definitely 1.2258x slower logical-not 8.3284+-0.4757 7.9944+-0.1381 might be 1.0418x faster lots-of-fields 19.4020+-0.9630 ? 19.4133+-0.9242 ? make-indexed-storage 5.3406+-0.3512 5.1228+-0.6225 might be 1.0425x faster make-rope-cse 6.4365+-0.4104 ? 6.6588+-0.5304 ? might be 1.0345x slower marsaglia-larger-ints 68.9099+-0.9061 ! 121.5530+-0.3809 ! definitely 1.7639x slower marsaglia-osr-entry 34.9568+-1.0049 ! 59.0480+-0.7334 ! definitely 1.6892x slower max-boolean 4.0038+-0.0170 ^ 3.8951+-0.0801 ^ definitely 1.0279x faster method-on-number 34.2491+-1.1027 33.6317+-0.7463 might be 1.0184x faster min-boolean 3.8400+-0.1737 ? 3.8627+-0.1242 ? minus-boolean-double 4.4599+-0.1204 4.4465+-0.1406 minus-boolean 3.6945+-0.1564 3.6124+-0.0474 might be 1.0227x faster misc-strict-eq 71.1572+-2.3636 ! 104.2823+-1.1226 ! definitely 1.4655x slower mod-boolean-double 14.3255+-0.1245 14.2023+-0.1021 mod-boolean 9.1544+-0.2036 ? 9.1627+-0.2649 ? mul-boolean-double 4.9484+-0.0711 ? 5.0229+-0.1017 ? might be 1.0151x slower mul-boolean 4.0357+-0.0906 3.9935+-0.0778 might be 1.0106x faster neg-boolean 4.5553+-0.0352 ? 4.5628+-0.0856 ? negative-zero-divide 0.5441+-0.0411 ? 0.6057+-0.0983 ? might be 1.1132x slower negative-zero-modulo 0.5522+-0.0144 ? 0.5700+-0.0280 ? might be 1.0322x slower negative-zero-negate 0.5751+-0.0882 ? 0.6095+-0.1020 ? might be 1.0597x slower nested-function-parsing 41.3818+-1.5392 41.0739+-0.2268 new-array-buffer-dead 3.9998+-0.1372 ? 4.0690+-0.1849 ? might be 1.0173x slower new-array-buffer-push 10.6415+-0.2570 10.4905+-0.6459 might be 1.0144x faster new-array-dead 17.0543+-0.7157 ! 25.2828+-0.1657 ! definitely 1.4825x slower new-array-push 8.0736+-0.2456 7.5189+-0.3417 might be 1.0738x faster number-test 4.7886+-0.1771 ? 4.8571+-0.1646 ? might be 1.0143x slower object-closure-call 10.5224+-0.0792 10.4433+-0.2217 object-test 5.3250+-0.2935 5.3174+-0.1343 obvious-sink-pathology-taken 214.2635+-0.5744 ! 252.3495+-1.4259 ! definitely 1.1778x slower obvious-sink-pathology 199.7045+-3.3389 ! 224.1775+-1.8527 ! definitely 1.1225x slower obviously-elidable-new-object 53.3845+-4.6002 ! 200.5685+-1.9052 ! definitely 3.7571x slower plus-boolean-arith 4.0507+-0.1373 ? 4.0516+-0.1596 ? plus-boolean-double 4.6918+-0.7086 4.4555+-0.0604 might be 1.0530x faster plus-boolean 3.7067+-0.2186 3.6240+-0.0470 might be 1.0228x faster poly-chain-access-different-prototypes-simple 5.0992+-0.0941 5.0823+-0.0442 poly-chain-access-different-prototypes 3.6006+-0.1246 ? 3.6530+-0.1820 ? might be 1.0146x slower poly-chain-access-simpler 5.1478+-0.0630 ? 5.1702+-0.1423 ? poly-chain-access 3.5235+-0.1836 3.4802+-0.1359 might be 1.0124x faster poly-stricteq 100.5943+-1.4958 ? 101.7350+-2.4594 ? might be 1.0113x slower polymorphic-array-call 2.8863+-0.2757 ? 2.9764+-0.4590 ? might be 1.0312x slower polymorphic-get-by-id 5.4058+-0.6572 5.2473+-0.1539 might be 1.0302x faster polymorphic-put-by-id 45.8995+-2.7530 ! 59.6768+-2.3528 ! definitely 1.3002x slower polymorphic-structure 32.9184+-0.5850 32.7490+-0.7483 polyvariant-monomorphic-get-by-id 16.8973+-0.1670 ^ 16.3267+-0.2350 ^ definitely 1.0349x faster proto-getter-access 16.7477+-0.4001 ! 22.1210+-0.2567 ! definitely 1.3208x slower put-by-id-replace-and-transition 13.5422+-0.1951 13.4939+-0.5020 put-by-id-slightly-polymorphic 4.1270+-0.0970 4.1242+-0.0515 put-by-id 19.9316+-0.6846 19.7304+-0.2602 might be 1.0102x faster put-by-val-direct 1.0460+-0.1421 0.9971+-0.1184 might be 1.0490x faster put-by-val-large-index-blank-indexing-type 10.6899+-0.9303 ? 11.5063+-0.2884 ? might be 1.0764x slower put-by-val-machine-int 4.2477+-0.3137 4.1003+-0.2610 might be 1.0359x faster rare-osr-exit-on-local 25.4911+-0.2411 24.4973+-0.8674 might be 1.0406x faster register-pressure-from-osr 38.5587+-0.1077 ^ 38.0007+-0.2934 ^ definitely 1.0147x faster setter 7.2455+-0.1543 7.0966+-0.1738 might be 1.0210x faster simple-activation-demo 44.9509+-0.7473 44.9391+-0.9497 simple-getter-access 21.6575+-0.0892 ! 39.9102+-0.2885 ! definitely 1.8428x slower simple-poly-call-nested 13.4908+-0.4527 13.4630+-0.1723 simple-poly-call 2.1773+-0.0952 2.1533+-0.2194 might be 1.0111x faster sin-boolean 29.4828+-1.5170 ! 37.4934+-0.0964 ! definitely 1.2717x slower sinkable-new-object-dag 116.6228+-0.8593 ! 453.6685+-2.4984 ! definitely 3.8900x slower sinkable-new-object-taken 91.1771+-4.4688 ! 242.0369+-0.6390 ! definitely 2.6546x slower sinkable-new-object 60.9850+-0.9860 ! 225.5914+-2.3441 ! definitely 3.6991x slower slow-array-profile-convergence 5.0558+-0.2884 5.0335+-0.2434 slow-convergence 5.6465+-0.3511 ? 5.6841+-0.3164 ? sparse-conditional 1.8359+-0.1020 1.8192+-0.0972 splice-to-remove 36.6088+-7.1041 34.9860+-5.2682 might be 1.0464x faster string-char-code-at 30.3575+-0.5042 ? 30.5596+-0.1255 ? string-concat-object 3.2576+-0.3479 3.0875+-0.0603 might be 1.0551x faster string-concat-pair-object 3.2261+-0.4070 3.1658+-0.2467 might be 1.0190x faster string-concat-pair-simple 18.6556+-0.2096 18.5200+-0.2180 string-concat-simple 19.8800+-1.4408 19.3168+-0.2418 might be 1.0292x faster string-cons-repeat 12.0523+-0.2335 11.9501+-0.2123 string-cons-tower 11.4610+-0.2810 ? 11.5821+-0.3386 ? might be 1.0106x slower string-equality 33.8660+-1.2201 33.4109+-0.1460 might be 1.0136x faster string-get-by-val-big-char 13.1780+-0.2773 ? 13.2233+-0.3382 ? string-get-by-val-out-of-bounds-insane 8.4455+-0.1898 8.3916+-0.2080 string-get-by-val-out-of-bounds 9.5274+-0.0718 ? 9.5297+-0.1453 ? string-get-by-val 6.7510+-0.1086 6.6613+-0.1287 might be 1.0135x faster string-hash 3.5029+-0.0523 ? 3.5790+-0.1316 ? might be 1.0217x slower string-long-ident-equality 26.6472+-0.2015 ? 26.7075+-0.2235 ? string-repeat-arith 62.1497+-0.6698 ? 62.3445+-0.3617 ? string-sub 128.3932+-13.1800 124.9559+-10.3201 might be 1.0275x faster string-test 4.7396+-0.2010 4.7198+-0.1920 string-var-equality 62.2034+-0.3990 ? 62.4970+-1.1900 ? structure-hoist-over-transitions 4.0231+-0.2828 3.9997+-0.2371 substring-concat-weird 73.2336+-0.6126 73.0629+-0.6829 substring-concat 77.4042+-1.1964 ? 77.5797+-0.8602 ? substring 88.8140+-0.2364 ? 88.9866+-0.1945 ? switch-char-constant 3.8516+-0.1636 ? 3.8702+-0.1977 ? switch-char 11.4363+-0.8443 11.0693+-0.1606 might be 1.0331x faster switch-constant 16.0402+-1.4455 ^ 11.8289+-0.0993 ^ definitely 1.3560x faster switch-string-basic-big-var 28.9197+-3.5943 27.5436+-1.5166 might be 1.0500x faster switch-string-basic-big 24.7867+-1.3142 ? 26.5432+-3.1280 ? might be 1.0709x slower switch-string-basic-var 32.5650+-1.1665 32.4203+-0.6607 switch-string-basic 25.6594+-2.2299 24.6808+-1.9929 might be 1.0396x faster switch-string-big-length-tower-var 30.3538+-0.1972 ? 30.3622+-0.1693 ? switch-string-length-tower-var 25.9030+-0.1544 ? 25.9549+-0.3374 ? switch-string-length-tower 20.7535+-0.1659 ? 20.8020+-0.0925 ? switch-string-short 20.5867+-0.2700 ? 20.7989+-0.5326 ? might be 1.0103x slower switch 19.2795+-1.5976 17.6420+-1.2611 might be 1.0928x faster tear-off-arguments-simple 2.9830+-0.2528 2.9618+-0.2471 tear-off-arguments 4.6494+-0.1883 4.5898+-0.1310 might be 1.0130x faster temporal-structure 20.3470+-0.1224 20.3274+-0.1620 to-int32-boolean 25.0353+-0.1112 24.9971+-0.1751 undefined-property-access 583.9514+-2.0631 ! 1248.4633+-4.2484 ! definitely 2.1380x slower undefined-test 4.9692+-0.1013 ? 5.0055+-0.1810 ? unprofiled-licm 34.7032+-0.5001 ! 92.2252+-0.1580 ! definitely 2.6575x slower weird-inlining-const-prop 3.4278+-0.1809 3.2885+-0.1343 might be 1.0424x faster <arithmetic> 30.5198+-0.0685 ! 40.5466+-0.0709 ! definitely 1.3285x slower <geometric> * 13.5534+-0.0390 ! 14.6148+-0.0240 ! definitely 1.0783x slower <harmonic> 6.7218+-0.0736 ? 6.8254+-0.0598 ? might be 1.0154x slower Baseline CheckFTLCapabilitesAgain AsmBench: bigfib.cpp 878.0169+-4.1164 ! 1629.5879+-8.3457 ! definitely 1.8560x slower cray.c 932.9725+-6.5789 ! 1196.9877+-5.0369 ! definitely 1.2830x slower dry.c 1037.2360+-51.1077 ! 2211.6805+-5.8159 ! definitely 2.1323x slower FloatMM.c 1300.6982+-1.1365 ! 3104.3005+-7.1997 ! definitely 2.3866x slower gcc-loops.cpp 8242.9375+-11.8682 ! 21128.2677+-85.1920 ! definitely 2.5632x slower n-body.c 2459.0804+-1.8172 ! 3349.5526+-7.2435 ! definitely 1.3621x slower Quicksort.c 716.3071+-2.8297 ! 1174.3195+-2.6994 ! definitely 1.6394x slower stepanov_container.cpp 6097.1636+-59.6463 ! 8004.3325+-69.4672 ! definitely 1.3128x slower Towers.c 603.8243+-2.3533 ! 843.3235+-3.4249 ! definitely 1.3966x slower <arithmetic> 2474.2485+-7.4511 ! 4738.0392+-16.7050 ! definitely 1.9149x slower <geometric> * 1573.2813+-7.0126 ! 2695.5319+-4.5170 ! definitely 1.7133x slower <harmonic> 1170.5747+-6.0796 ! 1902.1325+-2.1761 ! definitely 1.6250x slower Baseline CheckFTLCapabilitesAgain CompressionBench: huffman 986.6367+-3.9390 ? 993.3391+-5.5206 ? arithmetic-simple 755.8078+-4.0038 ! 823.0468+-8.9523 ! definitely 1.0890x slower arithmetic-precise 583.7607+-3.9752 ! 638.0286+-11.1589 ! definitely 1.0930x slower arithmetic-complex-precise 581.1090+-4.6540 ! 632.3051+-5.3181 ! definitely 1.0881x slower arithmetic-precise-order-0 880.3327+-2.1561 ! 993.3704+-7.3136 ! definitely 1.1284x slower arithmetic-precise-order-1 634.4040+-7.7519 ! 720.2720+-6.7940 ! definitely 1.1354x slower arithmetic-precise-order-2 695.2308+-2.2665 ! 734.2612+-4.0503 ! definitely 1.0561x slower arithmetic-simple-order-1 783.2249+-24.0466 ! 926.2104+-8.3223 ! definitely 1.1826x slower arithmetic-simple-order-2 856.9854+-9.3096 ! 1010.2057+-10.4138 ! definitely 1.1788x slower lz-string 650.6823+-35.1524 648.1721+-37.3666 <arithmetic> 740.8174+-3.1775 ! 811.9211+-3.9340 ! definitely 1.0960x slower <geometric> * 729.8222+-3.3225 ! 798.2359+-4.8790 ! definitely 1.0937x slower <harmonic> 719.2511+-3.5920 ! 784.8371+-5.8218 ! definitely 1.0912x slower Baseline CheckFTLCapabilitesAgain All benchmarks: <arithmetic> 187.2725+-1.3372 ! 260.5900+-0.3086 ! definitely 1.3915x slower <geometric> 23.1282+-0.0289 ! 25.4349+-0.0259 ! definitely 1.0997x slower <harmonic> 5.8469+-0.0445 ! 6.5479+-0.0676 ! definitely 1.1199x slower Baseline CheckFTLCapabilitesAgain Geomean of preferred means: <scaled-result> 119.5923+-0.4503 ! 137.5658+-0.2518 ! definitely 1.1503x slower Seems like capabilities is rejecting some SSA-only node. Have you checked which one? The verboseFTLFailure option helps. Created attachment 246339 [details]
Patch for Review
With the addition of GetArgument to nodes the FTL can compile, performance of this change is neutral.
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
"GCDontDropLocks" 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 GCDontDropLocks
SunSpider:
3d-cube 8.4182+-0.1632 ? 8.4540+-0.2904 ?
3d-morph 12.5315+-0.1126 12.3455+-0.1700 might be 1.0151x faster
3d-raytrace 11.2659+-0.2415 ? 11.2862+-0.5272 ?
access-binary-trees 3.3699+-0.2193 ? 3.3897+-0.1905 ?
access-fannkuch 10.3343+-0.1275 ? 10.3641+-0.1133 ?
access-nbody 5.3344+-0.1630 ? 5.4145+-0.1666 ? might be 1.0150x slower
access-nsieve 5.7599+-0.2325 ? 5.8395+-0.4122 ? might be 1.0138x slower
bitops-3bit-bits-in-byte 2.3200+-0.0779 ? 2.3464+-0.1267 ? might be 1.0114x slower
bitops-bits-in-byte 6.4326+-0.0727 6.3898+-0.1107
bitops-bitwise-and 3.2323+-0.5347 3.0872+-0.0985 might be 1.0470x faster
bitops-nsieve-bits 6.7697+-0.2507 6.7692+-0.2439
controlflow-recursive 3.5411+-0.1371 ? 3.5575+-0.1420 ?
crypto-aes 7.3265+-0.1178 7.2000+-0.2995 might be 1.0176x faster
crypto-md5 4.1788+-0.1741 ? 4.2330+-0.3140 ? might be 1.0130x slower
crypto-sha1 4.2776+-0.1844 4.1335+-0.1470 might be 1.0349x faster
date-format-tofte 16.4802+-0.8108 ? 16.7255+-0.4282 ? might be 1.0149x slower
date-format-xparb 9.0560+-0.3985 ? 9.2162+-0.5968 ? might be 1.0177x slower
math-cordic 5.5895+-0.0596 5.5720+-0.2297
math-partial-sums 10.9075+-0.1516 ? 11.0041+-0.1998 ?
math-spectral-norm 3.6575+-0.0922 3.5025+-0.0993 might be 1.0443x faster
regexp-dna 11.5829+-0.4284 11.5226+-0.3204
string-base64 7.2734+-0.4649 7.0970+-0.2133 might be 1.0249x faster
string-fasta 12.1530+-0.1269 11.8853+-0.3384 might be 1.0225x faster
string-tagcloud 17.6798+-0.7478 ? 17.8823+-0.8228 ? might be 1.0115x slower
string-unpack-code 37.7018+-0.8088 ? 38.7096+-1.0123 ? might be 1.0267x slower
string-validate-input 8.4999+-0.2591 8.3740+-0.0986 might be 1.0150x faster
<arithmetic> * 9.0644+-0.0219 ? 9.0885+-0.0890 ? might be 1.0027x slower
<geometric> 7.3782+-0.0384 7.3558+-0.0622 might be 1.0031x faster
<harmonic> 6.1857+-0.0489 6.1506+-0.0511 might be 1.0057x faster
Baseline GCDontDropLocks
LongSpider:
3d-cube 1572.4506+-15.8268 ? 1579.3855+-14.0683 ?
3d-morph 1978.3008+-2.8752 ? 1979.7406+-5.3939 ?
3d-raytrace 1545.5157+-5.8466 1542.8701+-13.7048
access-binary-trees 1857.8989+-12.9700 ? 1865.8145+-14.8117 ?
access-fannkuch 612.4640+-16.6624 603.9508+-27.4607 might be 1.0141x faster
access-nbody 1479.2485+-0.7502 ? 1480.2745+-2.9993 ?
access-nsieve 1815.8328+-22.5018 ? 1816.2382+-1.3841 ?
bitops-3bit-bits-in-byte 70.5505+-0.4485 ? 71.1366+-0.8852 ?
bitops-bits-in-byte 364.9235+-9.0461 ? 371.5090+-20.2799 ? might be 1.0180x slower
bitops-nsieve-bits 1451.4608+-9.9395 ? 1454.1737+-3.7660 ?
controlflow-recursive 1088.8662+-3.8220 ! 1100.7425+-4.0526 ! definitely 1.0109x slower
crypto-aes 1290.4815+-7.2738 1287.4751+-8.8507
crypto-md5 1074.3110+-11.4371 ? 1077.0363+-9.5350 ?
crypto-sha1 1451.3952+-6.7547 1447.1078+-2.2909
date-format-tofte 1504.3210+-34.7836 ? 1505.2068+-46.5842 ?
date-format-xparb 1382.9160+-34.4685 ? 1386.0083+-58.8536 ?
math-cordic 1048.7971+-2.3046 1047.6755+-3.3711
math-partial-sums 1278.7834+-1.2912 ? 1279.2395+-4.4666 ?
math-spectral-norm 1220.3388+-5.9809 1218.7812+-2.6360
string-base64 633.7208+-2.0387 631.6899+-0.6469
string-fasta 856.6053+-9.0596 854.2009+-7.9423
string-tagcloud 420.4265+-3.1453 ? 427.4407+-4.9112 ? might be 1.0167x slower
<arithmetic> 1181.8004+-1.9563 ? 1183.0772+-3.1142 ? might be 1.0011x slower
<geometric> * 996.9258+-2.5696 ? 998.8010+-5.1858 ? might be 1.0019x slower
<harmonic> 625.5198+-2.7878 ? 628.8298+-5.7468 ? might be 1.0053x slower
Baseline GCDontDropLocks
V8Spider:
crypto 101.2330+-0.9714 99.7784+-1.0863 might be 1.0146x faster
deltablue 124.5154+-4.9894 ? 126.6332+-5.5302 ? might be 1.0170x slower
earley-boyer 81.0359+-2.9248 80.9374+-2.3870
raytrace 51.1403+-1.9148 50.2490+-2.2622 might be 1.0177x faster
regexp 127.8777+-1.2461 ? 128.4796+-1.9493 ?
richards 131.1280+-2.5493 130.1443+-3.1131
splay 58.5543+-2.9304 ? 59.8976+-7.3677 ? might be 1.0229x slower
<arithmetic> 96.4978+-1.0637 ? 96.5885+-1.9003 ? might be 1.0009x slower
<geometric> * 90.8896+-0.8476 ? 90.9124+-2.0287 ? might be 1.0003x slower
<harmonic> 84.9957+-0.6852 84.9280+-2.2587 might be 1.0008x faster
Baseline GCDontDropLocks
Octane:
encrypt 0.46304+-0.01328 ? 0.46374+-0.01389 ?
decrypt 8.23338+-0.05522 8.23142+-0.02429
deltablue x2 0.39298+-0.01138 ? 0.39656+-0.01005 ?
earley 1.31261+-0.01279 ? 1.31339+-0.01974 ?
boyer 11.82759+-0.18553 ? 11.93536+-0.17688 ?
navier-stokes x2 7.37550+-0.00269 ? 7.38452+-0.03123 ?
raytrace x2 2.61455+-0.06000 2.59075+-0.10635
richards x2 0.24120+-0.00097 0.24073+-0.00149
splay x2 0.66273+-0.00946 0.66208+-0.00847
regexp x2 62.70158+-1.07559 62.29042+-2.17956
pdfjs x2 97.02221+-0.86093 96.58048+-1.72717
mandreel x2 107.28598+-0.41204 106.62174+-0.70212
gbemu x2 96.74476+-4.03921 ? 97.38819+-5.47451 ?
closure 0.96883+-0.00451 ? 0.96913+-0.00360 ?
jquery 12.32544+-0.08550 ? 12.35530+-0.10213 ?
box2d x2 28.16444+-0.20330 ? 28.17626+-0.14401 ?
zlib x2 860.01270+-77.42407 859.88035+-84.05314
typescript x2 1470.67902+-9.90368 ? 1496.47662+-28.37605 ? might be 1.0175x slower
<arithmetic> 183.43087+-5.00017 ? 185.08819+-3.90105 ? might be 1.0090x slower
<geometric> * 13.30281+-0.04420 ? 13.31272+-0.06124 ? might be 1.0007x slower
<harmonic> 1.37335+-0.00442 ? 1.37490+-0.00435 ? might be 1.0011x slower
Baseline GCDontDropLocks
Kraken:
ai-astar 828.281+-2.947 818.522+-28.189 might be 1.0119x faster
audio-beat-detection 220.410+-1.706 217.615+-5.702 might be 1.0128x faster
audio-dft 292.362+-1.850 ? 298.274+-24.488 ? might be 1.0202x slower
audio-fft 155.227+-0.530 ? 156.124+-0.490 ?
audio-oscillator 427.786+-2.012 ? 428.788+-3.065 ?
imaging-darkroom 335.533+-1.042 ? 336.196+-3.089 ?
imaging-desaturate 144.997+-0.237 ? 145.393+-1.363 ?
imaging-gaussian-blur 222.434+-16.802 216.910+-0.663 might be 1.0255x faster
json-parse-financial 92.556+-1.588 ? 92.907+-1.619 ?
json-stringify-tinderbox 112.199+-1.240 ? 114.627+-5.114 ? might be 1.0216x slower
stanford-crypto-aes 117.362+-4.287 ? 120.658+-2.694 ? might be 1.0281x slower
stanford-crypto-ccm 96.086+-8.788 ? 103.093+-18.441 ? might be 1.0729x slower
stanford-crypto-pbkdf2 313.001+-1.601 ? 313.086+-2.011 ?
stanford-crypto-sha256-iterative 95.575+-0.941 94.668+-1.720
<arithmetic> * 246.701+-0.818 ? 246.918+-3.371 ? might be 1.0009x slower
<geometric> 197.155+-0.961 ? 198.474+-3.148 ? might be 1.0067x slower
<harmonic> 165.377+-1.442 ? 167.266+-3.681 ? might be 1.0114x slower
Baseline GCDontDropLocks
JSRegress:
abs-boolean 4.6545+-0.1008 ? 4.6977+-0.0741 ?
adapt-to-double-divide 19.3527+-0.6111 ? 19.9943+-0.4514 ? might be 1.0332x slower
aliased-arguments-getbyval 1.4955+-0.0319 1.4733+-0.0986 might be 1.0151x faster
allocate-big-object 3.8573+-0.5466 3.6166+-0.2219 might be 1.0666x faster
arity-mismatch-inlining 1.4124+-0.0974 1.2565+-0.0749 might be 1.1240x faster
array-access-polymorphic-structure 12.4926+-0.2404 ? 12.5963+-0.1836 ?
array-nonarray-polymorhpic-access 71.9895+-8.8771 68.9149+-0.1559 might be 1.0446x faster
array-prototype-every 187.1476+-5.9625 ? 187.2065+-9.4322 ?
array-prototype-forEach 185.5018+-16.1921 ? 185.6143+-5.2219 ?
array-prototype-map 223.3948+-6.2899 221.9315+-8.4885
array-prototype-some 192.0681+-9.1314 190.5795+-16.8366
array-splice-contiguous 90.4393+-4.8265 ? 91.5522+-4.7159 ? might be 1.0123x slower
array-with-double-add 7.5663+-0.1389 7.4557+-0.2137 might be 1.0148x faster
array-with-double-increment 5.4986+-0.0963 5.4875+-0.1367
array-with-double-mul-add 11.7545+-0.1279 11.5923+-0.1017 might be 1.0140x faster
array-with-double-sum 5.5007+-0.1519 ? 5.5163+-0.1817 ?
array-with-int32-add-sub 13.1166+-0.1854 ? 13.1217+-0.1490 ?
array-with-int32-or-double-sum 5.2689+-0.1974 ? 5.3748+-0.2729 ? might be 1.0201x slower
ArrayBuffer-DataView-alloc-large-long-lived
65.6398+-2.5010 ? 65.8452+-3.7800 ?
ArrayBuffer-DataView-alloc-long-lived 27.2765+-1.3810 ? 27.8345+-3.0536 ? might be 1.0205x slower
ArrayBuffer-Int32Array-byteOffset 5.2795+-0.1901 ? 5.2905+-0.4848 ?
ArrayBuffer-Int8Array-alloc-large-long-lived
69.6019+-1.3762 ? 71.2387+-5.1734 ? might be 1.0235x slower
ArrayBuffer-Int8Array-alloc-long-lived-buffer
44.7752+-2.0712 44.2270+-1.2250 might be 1.0124x faster
ArrayBuffer-Int8Array-alloc-long-lived 25.0690+-0.6854 ? 27.1992+-3.2519 ? might be 1.0850x slower
ArrayBuffer-Int8Array-alloc 21.3313+-0.8172 21.1887+-0.8477
asmjs_bool_bug 12.9000+-0.2973 12.7668+-0.0764 might be 1.0104x faster
assign-custom-setter-polymorphic 6.1367+-0.1806 6.0308+-0.2188 might be 1.0176x faster
assign-custom-setter 8.1672+-0.1334 ? 8.2919+-0.2043 ? might be 1.0153x slower
basic-set 17.5738+-0.4739 ? 18.1650+-1.2100 ? might be 1.0336x slower
big-int-mul 7.7270+-0.1088 7.7198+-0.0846
boolean-test 4.9018+-0.0622 ? 4.9471+-0.0962 ?
branch-fold 5.1659+-0.1001 ? 5.1785+-0.0697 ?
by-val-generic 15.2974+-0.2972 ? 15.6628+-0.2196 ? might be 1.0239x slower
call-spread-apply 26.5145+-0.7496 26.2604+-0.8804
call-spread-call 11.6060+-0.6335 ? 11.6605+-0.5409 ?
captured-assignments 0.8287+-0.1338 ? 0.8297+-0.1586 ?
cast-int-to-double 8.5576+-0.1353 8.5499+-0.1462
cell-argument 12.0210+-0.2253 ? 12.1844+-0.2870 ? might be 1.0136x slower
cfg-simplify 4.0751+-0.2984 3.9841+-0.1415 might be 1.0228x faster
chain-getter-access 17.0258+-0.6231 16.9030+-0.2355
cmpeq-obj-to-obj-other 16.3461+-0.8813 16.1530+-0.2867 might be 1.0120x faster
constant-test 8.0795+-0.1347 ? 8.0857+-0.0887 ?
DataView-custom-properties 74.0634+-3.0873 72.5284+-1.9700 might be 1.0212x faster
delay-tear-off-arguments-strictmode 44.4702+-2.4880 44.3380+-0.9907
destructuring-arguments 9.1158+-0.1124 ? 9.2268+-0.3004 ? might be 1.0122x slower
destructuring-swap 8.2737+-0.2112 8.2017+-0.1495
direct-arguments-getbyval 1.5498+-0.0580 ? 1.5948+-0.0885 ? might be 1.0290x slower
div-boolean-double 5.9710+-0.1101 5.9473+-0.1471
div-boolean 10.1363+-0.1685 ? 10.1957+-0.0914 ?
double-get-by-val-out-of-bounds 7.9268+-0.1203 ? 7.9448+-0.3699 ?
double-pollution-getbyval 10.0666+-0.0848 10.0246+-0.1511
double-pollution-putbyoffset 7.9918+-0.1625 7.9761+-0.0645
double-to-int32-typed-array-no-inline 3.6428+-0.1966 ? 3.7709+-0.2960 ? might be 1.0352x slower
double-to-int32-typed-array 3.1005+-0.1723 ? 3.2510+-0.0592 ? might be 1.0485x slower
double-to-uint32-typed-array-no-inline 3.7531+-0.1611 ? 3.7822+-0.1117 ?
double-to-uint32-typed-array 3.3169+-0.1672 ? 3.4016+-0.0778 ? might be 1.0255x slower
elidable-new-object-dag 62.3590+-1.7917 ? 62.3649+-0.9649 ?
elidable-new-object-roflcopter 237.8345+-0.5354 237.2275+-3.8306
elidable-new-object-then-call 59.6786+-1.0979 ? 59.7554+-0.6394 ?
elidable-new-object-tree 69.5608+-2.0522 69.3770+-1.7358
empty-string-plus-int 10.3713+-0.4963 ? 10.4081+-0.2331 ?
emscripten-cube2hash 58.9937+-2.8777 57.2469+-0.8571 might be 1.0305x faster
external-arguments-getbyval 2.4733+-0.1644 ? 2.6055+-0.0549 ? might be 1.0535x slower
external-arguments-putbyval 3.8029+-0.2167 3.7583+-0.2723 might be 1.0119x faster
fixed-typed-array-storage-var-index 1.9705+-0.1155 1.9130+-0.1172 might be 1.0300x faster
fixed-typed-array-storage 1.4205+-0.1536 ? 1.5037+-0.1146 ? might be 1.0585x slower
Float32Array-matrix-mult 8.6047+-0.6410 ? 8.7645+-1.0707 ? might be 1.0186x slower
Float32Array-to-Float64Array-set 116.5335+-1.2744 ? 119.3748+-7.6337 ? might be 1.0244x slower
Float64Array-alloc-long-lived 104.0468+-0.2593 103.6662+-0.3895
Float64Array-to-Int16Array-set 148.9898+-6.4143 143.4996+-0.3547 might be 1.0383x faster
fold-double-to-int 23.9456+-0.1385 23.7025+-0.3318 might be 1.0103x faster
fold-get-by-id-to-multi-get-by-offset-rare-int
14.5051+-0.5287 ? 14.8297+-1.3090 ? might be 1.0224x slower
fold-get-by-id-to-multi-get-by-offset 12.3587+-0.6665 ? 12.5906+-0.4061 ? might be 1.0188x slower
fold-multi-get-by-offset-to-get-by-offset
10.8820+-1.2692 ? 11.0045+-1.3174 ? might be 1.0113x slower
fold-multi-get-by-offset-to-poly-get-by-offset
10.7514+-0.1000 ? 11.3784+-1.2265 ? might be 1.0583x slower
fold-multi-put-by-offset-to-poly-put-by-offset
10.3288+-1.2627 9.9453+-0.9965 might be 1.0386x faster
fold-multi-put-by-offset-to-put-by-offset
8.8533+-1.0844 8.1558+-1.2579 might be 1.0855x faster
fold-multi-put-by-offset-to-replace-or-transition-put-by-offset
15.7582+-1.4230 15.6997+-1.5090
fold-put-by-id-to-multi-put-by-offset 12.3923+-0.6360 ^ 11.2931+-0.2172 ^ definitely 1.0973x faster
fold-put-structure 8.7355+-1.2192 8.4242+-0.7025 might be 1.0370x faster
for-of-iterate-array-entries 10.8713+-0.2986 ? 11.1339+-0.3514 ? might be 1.0242x slower
for-of-iterate-array-keys 4.9062+-0.1528 ? 5.1445+-0.1526 ? might be 1.0486x slower
for-of-iterate-array-values 4.2009+-0.3647 ? 4.4331+-0.3128 ? might be 1.0553x slower
fround 25.7797+-0.9133 ? 25.8633+-0.4932 ?
ftl-library-inlining-dataview 154.1937+-16.4122 ? 163.3884+-35.6620 ? might be 1.0596x slower
ftl-library-inlining 137.4650+-7.6708 132.9558+-0.2219 might be 1.0339x faster
function-dot-apply 2.8934+-0.1718 2.8358+-0.1823 might be 1.0203x faster
function-test 5.4753+-0.1121 ? 5.5850+-0.0873 ? might be 1.0200x slower
function-with-eval 221.8502+-2.4193 ? 224.4473+-3.2197 ? might be 1.0117x slower
gcse-poly-get-less-obvious 36.7003+-0.3625 ? 36.8351+-0.5225 ?
gcse-poly-get 36.8918+-0.5441 36.7315+-0.2858
gcse 9.1646+-0.1711 ? 9.2031+-0.2400 ?
get-by-id-bimorphic-check-structure-elimination-simple
4.1537+-0.2285 4.0828+-0.1580 might be 1.0174x faster
get-by-id-bimorphic-check-structure-elimination
12.0768+-0.0904 11.9962+-0.0835
get-by-id-chain-from-try-block 19.6868+-0.1434 19.5738+-0.1529
get-by-id-check-structure-elimination 10.7141+-0.1719 ? 10.7539+-0.1667 ?
get-by-id-proto-or-self 32.2889+-4.9828 30.8953+-0.8073 might be 1.0451x faster
get-by-id-quadmorphic-check-structure-elimination-simple
5.2346+-0.1283 5.0843+-0.0552 might be 1.0296x faster
get-by-id-self-or-proto 32.5116+-3.3519 31.6240+-3.8106 might be 1.0281x faster
get-by-val-out-of-bounds 7.5823+-0.0792 ? 7.8698+-0.4309 ? might be 1.0379x slower
get_callee_monomorphic 6.0835+-0.6218 ? 6.3014+-0.5218 ? might be 1.0358x slower
get_callee_polymorphic 5.2173+-0.2648 ? 5.3146+-0.3111 ? might be 1.0187x slower
getter-no-activation 6.3169+-0.0424 ? 6.3377+-0.0557 ?
getter-richards 179.4138+-4.1424 ? 179.5891+-4.4725 ?
getter 9.0655+-0.6084 9.0225+-0.3642
global-var-const-infer-fire-from-opt 1.6066+-0.2165 1.5850+-0.2767 might be 1.0136x faster
global-var-const-infer 1.5861+-0.0430 ? 1.6118+-0.2625 ? might be 1.0162x slower
HashMap-put-get-iterate-keys 50.1355+-0.4759 ? 50.6242+-2.4185 ?
HashMap-put-get-iterate 48.8799+-0.8023 ? 49.1795+-0.7087 ?
HashMap-string-put-get-iterate 49.7312+-0.8450 ? 49.8484+-0.5696 ?
hoist-make-rope 16.1805+-0.6725 ? 16.9859+-1.6259 ? might be 1.0498x slower
hoist-poly-check-structure-effectful-loop
9.6718+-0.1211 9.5989+-0.2094
hoist-poly-check-structure 6.2363+-0.1985 ? 6.3167+-0.0493 ? might be 1.0129x slower
imul-double-only 13.1089+-2.2498 12.6905+-1.4664 might be 1.0330x faster
imul-int-only 14.5789+-0.1185 ? 14.6594+-0.3395 ?
imul-mixed 12.2266+-0.4641 ? 12.8387+-1.1413 ? might be 1.0501x slower
in-four-cases 36.2007+-0.5397 35.9999+-0.0827
in-one-case-false 18.6770+-0.3047 18.5905+-0.2504
in-one-case-true 18.5460+-0.1473 ? 18.6664+-0.3203 ?
in-two-cases 19.3434+-0.0931 ? 19.4129+-0.0942 ?
indexed-properties-in-objects 4.6365+-0.1307 ? 4.6815+-0.0618 ?
infer-closure-const-then-mov-no-inline 5.9440+-0.1169 ? 6.0260+-0.1108 ? might be 1.0138x slower
infer-closure-const-then-mov 26.4353+-1.0216 26.2432+-0.1218
infer-closure-const-then-put-to-scope-no-inline
19.8334+-0.1292 ? 19.9190+-0.1847 ?
infer-closure-const-then-put-to-scope 33.5945+-1.1687 ? 34.1675+-1.2123 ? might be 1.0171x slower
infer-closure-const-then-reenter-no-inline
92.9028+-0.1778 92.8307+-0.2439
infer-closure-const-then-reenter 31.6311+-0.2693 ? 31.9343+-0.3087 ?
infer-constant-global-property 38.9811+-0.1272 38.8700+-0.0992
infer-constant-property 3.5612+-0.1180 ? 3.6152+-0.1376 ? might be 1.0152x slower
infer-one-time-closure-ten-vars 17.7716+-0.2258 ? 18.0256+-0.9638 ? might be 1.0143x slower
infer-one-time-closure-two-vars 16.8160+-0.6024 ? 17.1002+-0.2575 ? might be 1.0169x slower
infer-one-time-closure 16.8242+-0.2903 ? 16.8865+-0.3971 ?
infer-one-time-deep-closure 29.9249+-1.2084 ? 29.9713+-0.4506 ?
inline-arguments-access 2.7684+-0.0437 ? 2.8510+-0.2293 ? might be 1.0299x slower
inline-arguments-aliased-access 3.1318+-0.0828 ? 3.1490+-0.1237 ?
inline-arguments-local-escape 25.7004+-0.6012 ? 25.8563+-0.3643 ?
inline-get-scoped-var 5.9445+-0.1765 5.8370+-0.1153 might be 1.0184x faster
inlined-put-by-id-transition 18.0613+-1.9021 ? 18.4288+-0.1420 ? might be 1.0203x slower
int-or-other-abs-then-get-by-val 9.4550+-0.1142 ? 9.4913+-0.1928 ?
int-or-other-abs-zero-then-get-by-val 34.2383+-0.6654 33.9043+-0.3192
int-or-other-add-then-get-by-val 8.4260+-0.2032 ? 8.5445+-0.2433 ? might be 1.0141x slower
int-or-other-add 9.0619+-0.0778 ? 9.0886+-0.2179 ?
int-or-other-div-then-get-by-val 6.4757+-0.0938 ? 6.5332+-0.1177 ?
int-or-other-max-then-get-by-val 7.9882+-0.1066 ? 8.1210+-0.2448 ? might be 1.0166x slower
int-or-other-min-then-get-by-val 7.2601+-0.1107 ? 7.2715+-0.1845 ?
int-or-other-mod-then-get-by-val 6.2218+-0.2850 6.1956+-0.0833
int-or-other-mul-then-get-by-val 6.4114+-0.1926 ? 6.4952+-0.1481 ? might be 1.0131x slower
int-or-other-neg-then-get-by-val 8.0944+-0.1098 8.0889+-0.1770
int-or-other-neg-zero-then-get-by-val 34.1515+-0.4809 33.8409+-0.2093
int-or-other-sub-then-get-by-val 8.7601+-0.1033 8.6185+-0.0679 might be 1.0164x faster
int-or-other-sub 6.9061+-0.3401 ? 6.9680+-0.1051 ?
int-overflow-local 7.9780+-0.1877 ? 7.9924+-0.0832 ?
Int16Array-alloc-long-lived 77.0925+-0.1268 ^ 76.5705+-0.3326 ^ definitely 1.0068x faster
Int16Array-bubble-sort-with-byteLength 51.0751+-0.4058 ? 51.3408+-0.5052 ?
Int16Array-bubble-sort 49.8894+-0.4473 49.6786+-0.2021
Int16Array-load-int-mul 2.3148+-0.0959 2.3042+-0.1090
Int16Array-to-Int32Array-set 126.8885+-37.2383 ? 128.5230+-38.8723 ? might be 1.0129x slower
Int32Array-alloc-large 38.2947+-0.8977 38.0353+-1.3629
Int32Array-alloc-long-lived 84.4915+-0.8421 ? 84.5505+-1.3463 ?
Int32Array-alloc 4.9767+-0.1688 4.7601+-0.1492 might be 1.0455x faster
Int32Array-Int8Array-view-alloc 12.7070+-0.5780 12.3931+-0.5526 might be 1.0253x faster
int52-spill 12.1982+-0.4893 ? 12.6000+-0.3576 ? might be 1.0329x slower
Int8Array-alloc-long-lived 71.3340+-1.1899 70.4129+-0.7941 might be 1.0131x faster
Int8Array-load-with-byteLength 5.2761+-0.2294 5.2421+-0.2216
Int8Array-load 5.1584+-0.1096 ? 5.2700+-0.0917 ? might be 1.0216x slower
integer-divide 19.2887+-0.1819 ? 19.3428+-0.1846 ?
integer-modulo 3.6653+-0.1631 3.5782+-0.1457 might be 1.0243x faster
large-int-captured 12.2614+-0.1279 ? 12.6848+-0.4867 ? might be 1.0345x slower
large-int-neg 30.6094+-0.3377 ? 30.6644+-0.0403 ?
large-int 27.7270+-0.1358 ? 27.7870+-0.1581 ?
logical-not 8.4051+-0.2113 8.0862+-0.3146 might be 1.0394x faster
lots-of-fields 19.1578+-0.3510 ? 19.3359+-0.2173 ?
make-indexed-storage 5.2587+-0.6761 ? 5.4574+-0.1207 ? might be 1.0378x slower
make-rope-cse 6.4254+-0.3720 6.3045+-0.3535 might be 1.0192x faster
marsaglia-larger-ints 68.4944+-1.2980 68.3429+-0.8048
marsaglia-osr-entry 34.6706+-1.1035 ? 34.7924+-0.6926 ?
max-boolean 4.0743+-0.1784 3.9473+-0.1376 might be 1.0322x faster
method-on-number 33.9269+-0.2022 ? 34.1981+-1.0151 ?
min-boolean 3.8382+-0.1578 ? 3.8660+-0.2156 ?
minus-boolean-double 4.4182+-0.1638 ? 4.4248+-0.1018 ?
minus-boolean 3.7380+-0.0944 ? 3.7861+-0.0624 ? might be 1.0129x slower
misc-strict-eq 74.3518+-7.9824 71.5353+-1.3269 might be 1.0394x faster
mod-boolean-double 14.4360+-0.2254 14.3428+-0.1270
mod-boolean 9.1984+-0.0591 9.1083+-0.1100
mul-boolean-double 5.1852+-0.6855 5.0608+-0.1051 might be 1.0246x faster
mul-boolean 4.0546+-0.1205 4.0192+-0.1044
neg-boolean 4.6334+-0.1319 ? 4.6467+-0.1506 ?
negative-zero-divide 0.6107+-0.1278 ? 0.6289+-0.1460 ? might be 1.0298x slower
negative-zero-modulo 0.5576+-0.0173 ? 0.5930+-0.0952 ? might be 1.0635x slower
negative-zero-negate 0.5408+-0.1091 0.5388+-0.1032
nested-function-parsing 41.5181+-1.7234 ? 42.3985+-1.5201 ? might be 1.0212x slower
new-array-buffer-dead 4.0348+-0.2512 ? 4.1336+-0.1203 ? might be 1.0245x slower
new-array-buffer-push 10.3823+-0.3156 ? 10.4253+-0.0880 ?
new-array-dead 17.5992+-1.5918 17.5905+-0.9402
new-array-push 8.0272+-0.1962 ? 8.0565+-0.3378 ?
number-test 4.8040+-0.1225 ? 4.8043+-0.1512 ?
object-closure-call 10.6111+-0.2575 10.5595+-0.1573
object-test 5.2485+-0.1693 5.1948+-0.1835 might be 1.0103x faster
obvious-sink-pathology-taken 215.1147+-3.3997 214.1620+-0.4644
obvious-sink-pathology 200.1269+-8.1760 199.9217+-1.9846
obviously-elidable-new-object 55.3165+-1.5017 54.9796+-1.2386
plus-boolean-arith 4.0870+-0.1010 4.0074+-0.1210 might be 1.0199x faster
plus-boolean-double 4.4862+-0.1642 4.4242+-0.0713 might be 1.0140x faster
plus-boolean 3.5700+-0.1719 ? 3.7527+-0.0908 ? might be 1.0512x slower
poly-chain-access-different-prototypes-simple
5.1960+-0.2069 5.0916+-0.0796 might be 1.0205x faster
poly-chain-access-different-prototypes 3.6784+-0.1030 3.5420+-0.0853 might be 1.0385x faster
poly-chain-access-simpler 5.2195+-0.1059 5.1636+-0.1145 might be 1.0108x faster
poly-chain-access 3.4917+-0.1433 ? 3.5483+-0.1412 ? might be 1.0162x slower
poly-stricteq 100.1656+-0.1469 100.0320+-0.4477
polymorphic-array-call 2.9268+-0.1696 2.7316+-0.1322 might be 1.0715x faster
polymorphic-get-by-id 5.2484+-0.1124 ? 5.2796+-0.1482 ?
polymorphic-put-by-id 48.1115+-0.5151 ? 49.0697+-8.2517 ? might be 1.0199x slower
polymorphic-structure 33.3530+-1.2016 32.7623+-0.9687 might be 1.0180x faster
polyvariant-monomorphic-get-by-id 16.9235+-0.1080 16.8543+-0.1604
proto-getter-access 16.7967+-0.6746 ? 16.8078+-0.5516 ?
put-by-id-replace-and-transition 13.6254+-0.0431 ? 13.6846+-0.2404 ?
put-by-id-slightly-polymorphic 4.0937+-0.1532 ? 4.1898+-0.0794 ? might be 1.0235x slower
put-by-id 19.5258+-0.1566 ? 19.9422+-0.7256 ? might be 1.0213x slower
put-by-val-direct 0.9742+-0.0450 ? 1.0237+-0.1441 ? might be 1.0508x slower
put-by-val-large-index-blank-indexing-type
10.8092+-0.8496 ? 11.6863+-0.2738 ? might be 1.0811x slower
put-by-val-machine-int 4.1487+-0.1740 ? 4.1952+-0.2794 ? might be 1.0112x slower
rare-osr-exit-on-local 25.5348+-0.1545 25.5187+-0.3310
register-pressure-from-osr 38.4960+-0.1936 ? 38.6727+-0.0769 ?
setter 7.2130+-0.0968 ? 7.2328+-0.0739 ?
simple-activation-demo 44.9634+-0.3848 44.7938+-0.5353
simple-getter-access 21.7957+-0.4772 ? 22.1135+-0.7077 ? might be 1.0146x slower
simple-poly-call-nested 13.0504+-0.3860 ? 13.3170+-0.2746 ? might be 1.0204x slower
simple-poly-call 2.1075+-0.2394 ? 2.1107+-0.3298 ?
sin-boolean 29.0068+-0.6013 ? 30.5367+-1.1111 ? might be 1.0527x slower
sinkable-new-object-dag 116.1004+-1.2779 ? 116.1453+-1.2708 ?
sinkable-new-object-taken 90.1947+-1.1470 ? 90.2230+-0.6040 ?
sinkable-new-object 60.7133+-0.7831 60.1281+-1.4341
slow-array-profile-convergence 5.1678+-0.2608 5.1115+-0.5768 might be 1.0110x faster
slow-convergence 5.5082+-0.2399 ? 5.7157+-0.3581 ? might be 1.0377x slower
sparse-conditional 1.8230+-0.0778 1.8137+-0.1822
splice-to-remove 36.6860+-6.2339 ? 37.4087+-4.8565 ? might be 1.0197x slower
string-char-code-at 30.4198+-0.5544 ? 30.6482+-0.6200 ?
string-concat-object 3.2625+-0.4250 3.2300+-0.2563 might be 1.0101x faster
string-concat-pair-object 3.4754+-0.1915 ? 3.5167+-0.0466 ? might be 1.0119x slower
string-concat-pair-simple 18.8889+-0.4752 18.6403+-0.3163 might be 1.0133x faster
string-concat-simple 19.6453+-0.5054 19.4712+-0.6016
string-cons-repeat 12.0885+-0.4172 11.7490+-0.1585 might be 1.0289x faster
string-cons-tower 11.7847+-0.3797 11.4280+-0.4871 might be 1.0312x faster
string-equality 33.8126+-0.9173 33.6017+-0.3902
string-get-by-val-big-char 13.4598+-0.3470 ? 13.8488+-1.1826 ? might be 1.0289x slower
string-get-by-val-out-of-bounds-insane 8.3265+-0.3481 ? 8.5162+-0.3630 ? might be 1.0228x slower
string-get-by-val-out-of-bounds 9.5153+-0.2000 ? 9.6157+-0.2603 ? might be 1.0106x slower
string-get-by-val 6.7004+-0.0627 ? 6.8144+-0.2128 ? might be 1.0170x slower
string-hash 3.6866+-0.0850 3.6252+-0.2137 might be 1.0169x faster
string-long-ident-equality 26.6011+-0.2583 ? 26.7570+-0.2267 ?
string-repeat-arith 62.3745+-0.1286 ? 62.6171+-0.3591 ?
string-sub 122.9592+-7.1406 ? 123.6145+-6.0449 ?
string-test 4.6650+-0.1218 ? 4.7573+-0.2209 ? might be 1.0198x slower
string-var-equality 61.9735+-0.4045 ? 62.0135+-0.4012 ?
structure-hoist-over-transitions 4.0211+-0.2445 ? 4.0335+-0.2540 ?
substring-concat-weird 73.1310+-0.4691 ? 73.1920+-0.7983 ?
substring-concat 77.1300+-0.4742 ? 77.7907+-0.9704 ?
substring 89.0831+-0.7636 88.9203+-0.4069
switch-char-constant 3.8557+-0.2372 ? 3.8702+-0.1269 ?
switch-char 11.2290+-0.0767 11.1948+-0.0271
switch-constant 15.9353+-0.5084 15.4952+-0.7201 might be 1.0284x faster
switch-string-basic-big-var 30.1849+-0.6670 ? 30.8915+-4.0400 ? might be 1.0234x slower
switch-string-basic-big 24.2051+-1.0537 ? 24.4816+-1.0980 ? might be 1.0114x slower
switch-string-basic-var 32.3972+-0.7530 32.2527+-1.1010
switch-string-basic 24.6594+-1.1668 ? 24.7790+-3.6750 ?
switch-string-big-length-tower-var 30.3163+-0.1803 30.2670+-0.1426
switch-string-length-tower-var 25.9023+-0.2995 ? 26.0675+-0.3798 ?
switch-string-length-tower 20.9170+-0.3035 ? 20.9708+-0.3997 ?
switch-string-short 20.4302+-0.4061 ? 20.6995+-0.2808 ? might be 1.0132x slower
switch 20.1923+-3.0800 20.1823+-3.7469
tear-off-arguments-simple 3.1180+-0.2133 ? 3.1375+-0.1730 ?
tear-off-arguments 4.7030+-0.0983 4.6130+-0.2698 might be 1.0195x faster
temporal-structure 20.2697+-0.3275 ? 20.4108+-0.3703 ?
to-int32-boolean 25.0076+-0.1309 ? 25.2031+-0.6102 ?
undefined-property-access 586.5524+-3.5528 ? 594.8389+-13.0704 ? might be 1.0141x slower
undefined-test 4.9396+-0.1152 ? 4.9655+-0.1334 ?
unprofiled-licm 34.9355+-0.6572 34.6259+-0.9224
weird-inlining-const-prop 3.3925+-0.2007 ? 3.4482+-0.1229 ? might be 1.0164x slower
<arithmetic> 30.5943+-0.1601 ? 30.6418+-0.1686 ? might be 1.0016x slower
<geometric> * 13.5852+-0.0523 ? 13.6146+-0.0772 ? might be 1.0022x slower
<harmonic> 6.7466+-0.1351 ? 6.7761+-0.0829 ? might be 1.0044x slower
Baseline GCDontDropLocks
AsmBench:
bigfib.cpp 885.9561+-14.4322 885.2551+-10.2143
cray.c 939.0995+-19.5729 937.8809+-9.9572
dry.c 1036.8992+-49.4114 ? 1040.2014+-52.5562 ?
FloatMM.c 1300.5830+-1.2492 ? 1301.7482+-4.2456 ?
gcc-loops.cpp 8243.2223+-26.0528 8239.2985+-37.6850
n-body.c 2461.7712+-5.4009 2461.5670+-2.6966
Quicksort.c 716.7245+-4.6225 709.4655+-15.1560 might be 1.0102x faster
stepanov_container.cpp 6126.7295+-52.5106 ? 6141.3320+-143.1878 ?
Towers.c 604.7589+-1.0772 ? 604.8128+-2.1064 ?
<arithmetic> 2479.5271+-8.2109 ? 2480.1735+-10.5904 ? might be 1.0003x slower
<geometric> * 1577.3336+-5.9145 1576.2140+-6.6186 might be 1.0007x faster
<harmonic> 1173.8192+-4.9787 1171.9223+-8.9496 might be 1.0016x faster
Baseline GCDontDropLocks
CompressionBench:
huffman 985.9033+-6.2595 ? 994.1664+-5.1978 ?
arithmetic-simple 757.3226+-4.5343 756.6260+-4.4654
arithmetic-precise 583.3495+-0.7610 580.8860+-1.9744
arithmetic-complex-precise 579.1113+-5.5740 ? 582.7550+-6.9453 ?
arithmetic-precise-order-0 876.9205+-17.1287 872.4954+-13.8249
arithmetic-precise-order-1 648.0650+-37.3673 635.1788+-3.8598 might be 1.0203x faster
arithmetic-precise-order-2 692.7225+-2.0392 688.6235+-3.1584
arithmetic-simple-order-1 774.2105+-1.9221 ? 775.4611+-2.0768 ?
arithmetic-simple-order-2 865.3110+-11.6704 860.4604+-8.5941
lz-string 648.7929+-32.9223 636.9789+-28.2791 might be 1.0185x faster
<arithmetic> 741.1709+-3.7991 738.3632+-2.2673 might be 1.0038x faster
<geometric> * 730.2445+-4.4793 727.0790+-2.4987 might be 1.0044x faster
<harmonic> 719.7312+-5.0940 716.3110+-2.6989 might be 1.0048x faster
Baseline GCDontDropLocks
All benchmarks:
<arithmetic> 187.1217+-0.5054 ? 187.3061+-0.4097 ? might be 1.0010x slower
<geometric> 23.1686+-0.0660 ? 23.2056+-0.1036 ? might be 1.0016x slower
<harmonic> 5.8685+-0.0738 ? 5.8843+-0.0394 ? might be 1.0027x slower
Baseline GCDontDropLocks
Geomean of preferred means:
<scaled-result> 119.7111+-0.2297 ? 119.7625+-0.3776 ? might be 1.0004x slower
Comment on attachment 246339 [details] Patch for Review View in context: https://bugs.webkit.org/attachment.cgi?id=246339&action=review > Source/JavaScriptCore/dfg/DFGPlan.cpp:387 > - > + > + if (FTL::canCompile(dfg) == FTL::CannotCompile) { > + finalizer = std::make_unique<FailedFinalizer>(*this); > + return FailPath; > + } > + Maybe it's even better to do this before the LLVM initialization step? Perhaps just before the dumpAndVerifyGraph(dfg, "Graph jump before FTL lowering:"). > Maybe it's even better to do this before the LLVM initialization step?
> Perhaps just before the dumpAndVerifyGraph(dfg, "Graph jump before FTL
> lowering:").
I moved it as you suggested.
Committed r179882: <http://trac.webkit.org/changeset/179882> *** Bug 141042 has been marked as a duplicate of this bug. *** I still see the linked application crash with Safari 8.0.4 on OS X Yosemite 10.10.2. Is it expected that this fixed is in Safari 8.0.4? (In reply to comment #15) > I still see the linked application crash with Safari 8.0.4 on OS X Yosemite > 10.10.2. > > Is it expected that this fixed is in Safari 8.0.4? This fix is not in 8.0.4 because we missed the deadline. It should be in the next Safari update/release. *** Bug 141042 has been marked as a duplicate of this bug. *** |