RESOLVED FIXED 145618
Simplify unboxing of double JSValues known to be not NaN and not Int32
https://bugs.webkit.org/show_bug.cgi?id=145618
Summary Simplify unboxing of double JSValues known to be not NaN and not Int32
Filip Pizlo
Reported 2015-06-03 14:39:05 PDT
Patch forthcoming.
Attachments
work in progress (10.99 KB, patch)
2015-06-03 14:45 PDT, Filip Pizlo
no flags
the fully speculative approach (11.01 KB, patch)
2015-06-03 21:49 PDT, Filip Pizlo
no flags
the best approach (28.85 KB, patch)
2015-06-03 23:25 PDT, Filip Pizlo
ggaren: review+
patch for relanding (29.78 KB, patch)
2015-06-04 21:12 PDT, Filip Pizlo
no flags
Filip Pizlo
Comment 1 2015-06-03 14:45:53 PDT
Created attachment 254211 [details] work in progress
Filip Pizlo
Comment 2 2015-06-03 21:04:47 PDT
This is a speed-up on small benchmarks, but it hurts on larger codebases. We sort of slowly discover that things that usually loaded double might also load integers. That sucks.
Filip Pizlo
Comment 3 2015-06-03 21:49:44 PDT
Created attachment 254243 [details] the fully speculative approach It's not a speed-up. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r185168) "DoubleRealUse" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r185168) Collected 6 samples per benchmark/VM, with 6 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. TipOfTree DoubleRealUse SunSpider: 3d-cube 5.2075+-0.0833 ? 5.3324+-0.1867 ? might be 1.0240x slower 3d-morph 6.1673+-0.3740 5.8788+-0.1221 might be 1.0491x faster 3d-raytrace 6.5563+-0.0789 6.4498+-0.0731 might be 1.0165x faster access-binary-trees 2.4699+-0.2710 ? 2.5842+-0.3809 ? might be 1.0463x slower access-fannkuch 6.1806+-0.1458 6.1668+-0.0737 access-nbody 3.1104+-0.0510 3.0740+-0.3740 might be 1.0118x faster access-nsieve 3.5695+-0.2341 3.3698+-0.0740 might be 1.0592x faster bitops-3bit-bits-in-byte 1.6565+-0.0785 ? 1.6637+-0.0660 ? bitops-bits-in-byte 4.0986+-0.2763 4.0587+-0.3927 bitops-bitwise-and 2.1854+-0.0838 2.1850+-0.0748 bitops-nsieve-bits 3.2852+-0.0727 ? 3.3074+-0.1230 ? controlflow-recursive 3.0378+-0.1247 3.0242+-0.0948 crypto-aes 4.7883+-0.2016 ? 4.8606+-0.2916 ? might be 1.0151x slower crypto-md5 3.2500+-0.2745 ? 3.2623+-0.4295 ? crypto-sha1 3.8812+-0.3857 3.7139+-0.2853 might be 1.0450x faster date-format-tofte 9.3881+-0.3306 ? 9.4261+-0.1504 ? date-format-xparb 5.8167+-0.1341 ? 6.0332+-0.2083 ? might be 1.0372x slower math-cordic 3.2987+-0.2547 3.2331+-0.1280 might be 1.0203x faster math-partial-sums 5.7467+-0.8611 ? 5.8330+-1.0082 ? might be 1.0150x slower math-spectral-norm 2.0642+-0.0330 ? 2.1838+-0.1491 ? might be 1.0579x slower regexp-dna 8.6687+-1.6371 8.6411+-1.5925 string-base64 5.0812+-0.2293 ? 5.1669+-0.1582 ? might be 1.0169x slower string-fasta 7.4731+-1.0590 6.6886+-0.0766 might be 1.1173x faster string-tagcloud 10.2870+-1.0441 10.1497+-0.4703 might be 1.0135x faster string-unpack-code 21.3035+-0.8507 20.7372+-0.6711 might be 1.0273x faster string-validate-input 6.0163+-0.1456 5.9932+-0.2005 <arithmetic> 5.5611+-0.1496 5.5007+-0.0727 might be 1.0110x faster TipOfTree DoubleRealUse LongSpider: 3d-cube 902.2222+-7.6102 895.4152+-5.1156 3d-morph 1542.4805+-25.7183 1528.7774+-2.8184 3d-raytrace 696.4887+-3.9326 ? 725.1276+-37.4852 ? might be 1.0411x slower access-binary-trees 1002.5318+-7.2856 ? 1004.8466+-8.3921 ? access-fannkuch 332.7771+-7.6106 ? 339.3682+-16.9684 ? might be 1.0198x slower access-nbody 667.3458+-80.2716 607.5635+-26.6574 might be 1.0984x faster access-nsieve 478.9073+-6.4017 ? 480.7949+-6.8700 ? bitops-3bit-bits-in-byte 45.7203+-2.2841 45.2336+-1.0784 might be 1.0108x faster bitops-bits-in-byte 99.7555+-1.0750 ? 100.5952+-6.1329 ? bitops-nsieve-bits 423.4315+-4.3478 421.3146+-2.6293 controlflow-recursive 491.8769+-11.4132 486.4794+-13.3929 might be 1.0111x faster crypto-aes 705.0099+-7.8571 ? 709.0625+-8.0707 ? crypto-md5 517.1257+-7.5386 ! 545.3444+-19.6261 ! definitely 1.0546x slower crypto-sha1 607.4552+-4.2406 599.2410+-4.6065 might be 1.0137x faster date-format-tofte 770.1103+-61.8561 745.5965+-14.6196 might be 1.0329x faster date-format-xparb 812.3102+-18.3401 803.2241+-16.6033 might be 1.0113x faster hash-map 184.2764+-2.0028 ? 184.8893+-4.9793 ? math-cordic 590.9546+-4.5418 ^ 579.3164+-4.5807 ^ definitely 1.0201x faster math-partial-sums 510.2572+-9.0965 ? 513.2317+-15.0406 ? math-spectral-norm 575.7033+-26.2633 566.6305+-2.3492 might be 1.0160x faster string-base64 415.4858+-7.9618 415.1095+-13.2360 string-fasta 430.0212+-4.2098 ^ 422.5883+-2.9173 ^ definitely 1.0176x faster string-tagcloud 198.2579+-5.7287 194.8677+-2.9214 might be 1.0174x faster <geometric> 457.2412+-2.8887 454.8856+-3.3251 might be 1.0052x faster TipOfTree DoubleRealUse V8Spider: crypto 57.5230+-3.3151 55.8582+-2.2353 might be 1.0298x faster deltablue 99.6683+-2.8588 ? 103.4340+-4.3219 ? might be 1.0378x slower earley-boyer 50.1773+-2.4286 48.4775+-2.6288 might be 1.0351x faster raytrace 42.7799+-2.9050 41.6053+-2.1656 might be 1.0282x faster regexp 83.7779+-2.0596 ? 85.2198+-2.3967 ? might be 1.0172x slower richards 86.1364+-9.4491 78.6632+-1.8901 might be 1.0950x faster splay 38.9261+-2.6066 ? 38.9561+-2.8811 ? <geometric> 61.7590+-1.5058 60.6784+-1.2904 might be 1.0178x faster TipOfTree DoubleRealUse Octane: encrypt 0.20342+-0.00187 ? 0.20669+-0.00742 ? might be 1.0161x slower decrypt 3.59392+-0.04761 ? 3.61798+-0.16179 ? deltablue x2 0.19611+-0.00159 0.19557+-0.00139 earley 0.39254+-0.00559 ? 0.39506+-0.00622 ? boyer 5.18598+-0.05464 5.14634+-0.05711 navier-stokes x2 5.19834+-0.04226 ? 5.29325+-0.20832 ? might be 1.0183x slower raytrace x2 1.28006+-0.05758 1.26084+-0.05403 might be 1.0152x faster richards x2 0.13058+-0.00830 ? 0.13404+-0.01589 ? might be 1.0265x slower splay x2 0.40027+-0.00264 ? 0.40176+-0.00467 ? regexp x2 31.67856+-0.25548 31.66756+-0.19514 pdfjs x2 43.55866+-1.82793 42.77513+-0.39407 might be 1.0183x faster mandreel x2 50.56241+-0.60535 50.29173+-0.17694 gbemu x2 43.03807+-0.98079 42.18216+-0.60149 might be 1.0203x faster closure 0.59586+-0.00434 ^ 0.57045+-0.00935 ^ definitely 1.0445x faster jquery 8.11527+-1.03202 7.46431+-0.58215 might be 1.0872x faster box2d x2 12.57739+-0.13561 ! 13.08020+-0.23478 ! definitely 1.0400x slower zlib x2 384.27230+-18.61507 ? 398.42453+-1.88660 ? might be 1.0368x slower typescript x2 821.99406+-8.82742 ? 869.12850+-131.49051 ? might be 1.0573x slower <geometric> 6.64357+-0.03593 ? 6.66855+-0.08163 ? might be 1.0038x slower TipOfTree DoubleRealUse Kraken: ai-astar 236.443+-1.670 236.181+-1.787 audio-beat-detection 107.971+-0.979 ^ 105.016+-0.805 ^ definitely 1.0281x faster audio-dft 119.337+-2.966 ? 120.659+-4.208 ? might be 1.0111x slower audio-fft 85.316+-4.901 ? 87.926+-6.763 ? might be 1.0306x slower audio-oscillator 78.017+-2.126 77.422+-1.466 imaging-darkroom 105.233+-1.858 ? 108.444+-2.833 ? might be 1.0305x slower imaging-desaturate 64.715+-2.082 64.201+-1.512 imaging-gaussian-blur 113.112+-5.271 110.452+-1.969 might be 1.0241x faster json-parse-financial 48.111+-3.034 ? 49.360+-1.908 ? might be 1.0260x slower json-stringify-tinderbox 28.977+-1.646 28.150+-0.096 might be 1.0294x faster stanford-crypto-aes 57.852+-0.744 ? 58.111+-1.059 ? stanford-crypto-ccm 50.009+-2.686 47.360+-1.271 might be 1.0559x faster stanford-crypto-pbkdf2 110.913+-2.068 ? 113.451+-5.204 ? might be 1.0229x slower stanford-crypto-sha256-iterative 44.537+-2.003 42.976+-0.941 might be 1.0363x faster <arithmetic> 89.324+-0.609 89.265+-0.672 might be 1.0007x faster TipOfTree DoubleRealUse JSRegress: abs-boolean 2.8376+-0.3266 2.7451+-0.0865 might be 1.0337x faster adapt-to-double-divide 16.7734+-0.5426 ? 17.0118+-0.3433 ? might be 1.0142x slower aliased-arguments-getbyval 1.4055+-0.1806 1.3113+-0.0304 might be 1.0718x faster allocate-big-object 3.0466+-0.4180 3.0170+-0.4234 arguments-named-and-reflective 13.2015+-1.3778 12.6938+-0.9487 might be 1.0400x faster arguments-out-of-bounds 14.9971+-0.3518 ? 15.3243+-0.7902 ? might be 1.0218x slower arguments-strict-mode 10.8641+-0.3232 ? 11.1214+-0.9365 ? might be 1.0237x slower arguments 10.0681+-0.6876 9.8380+-0.3512 might be 1.0234x faster arity-mismatch-inlining 1.0291+-0.1555 1.0253+-0.1510 array-access-polymorphic-structure 7.0399+-0.2564 ? 7.3042+-1.0102 ? might be 1.0375x slower array-nonarray-polymorhpic-access 33.9204+-1.5068 33.8266+-1.2544 array-prototype-every 87.0354+-2.3006 84.2882+-2.7259 might be 1.0326x faster array-prototype-forEach 85.8264+-3.1040 82.1468+-2.9620 might be 1.0448x faster array-prototype-map 91.2099+-2.0517 ? 93.5383+-5.3774 ? might be 1.0255x slower array-prototype-reduce 82.2781+-4.1595 80.0555+-2.1708 might be 1.0278x faster array-prototype-reduceRight 79.4298+-1.3697 ? 80.3011+-1.5326 ? might be 1.0110x slower array-prototype-some 87.3388+-2.5978 83.0658+-3.1192 might be 1.0514x faster array-splice-contiguous 45.5822+-1.0578 43.6873+-1.0541 might be 1.0434x faster array-with-double-add 4.4175+-0.3048 ? 4.6088+-0.4721 ? might be 1.0433x slower array-with-double-increment 3.4209+-0.3021 3.3191+-0.0958 might be 1.0307x faster array-with-double-mul-add 5.3308+-0.1826 5.2437+-0.1354 might be 1.0166x faster array-with-double-sum 3.3361+-0.0229 ? 3.3625+-0.0653 ? array-with-int32-add-sub 6.8907+-0.1447 ? 6.9786+-0.2622 ? might be 1.0127x slower array-with-int32-or-double-sum 3.4983+-0.1685 3.4334+-0.0686 might be 1.0189x faster ArrayBuffer-DataView-alloc-large-long-lived 38.4041+-1.9034 38.1603+-1.8058 ArrayBuffer-DataView-alloc-long-lived 15.3880+-1.5195 14.1374+-0.1883 might be 1.0885x faster ArrayBuffer-Int32Array-byteOffset 4.2602+-0.6290 4.2323+-0.6394 ArrayBuffer-Int8Array-alloc-large-long-lived 39.0927+-1.6346 38.8737+-1.3288 ArrayBuffer-Int8Array-alloc-long-lived-buffer 22.8891+-1.4255 ? 24.0944+-2.4210 ? might be 1.0527x slower ArrayBuffer-Int8Array-alloc-long-lived 14.4453+-1.6649 13.8597+-1.1174 might be 1.0423x faster ArrayBuffer-Int8Array-alloc 10.6375+-0.2400 10.5234+-0.2488 might be 1.0108x faster asmjs_bool_bug 7.8302+-0.2158 7.8073+-0.2157 assign-custom-setter-polymorphic 3.5393+-0.6087 3.1836+-0.1760 might be 1.1117x faster assign-custom-setter 4.3242+-0.1463 ? 4.4461+-0.5629 ? might be 1.0282x slower basic-set 10.4209+-2.5099 10.3842+-1.3897 big-int-mul 4.2530+-0.0442 ? 4.3186+-0.1396 ? might be 1.0154x slower boolean-test 3.1616+-0.0397 ? 3.2970+-0.3065 ? might be 1.0428x slower branch-fold 4.1911+-0.3835 4.0564+-0.3298 might be 1.0332x faster branch-on-string-as-boolean 20.4595+-0.4351 ? 20.7202+-0.7411 ? might be 1.0127x slower by-val-generic 8.1837+-0.1469 ? 8.6629+-1.2123 ? might be 1.0586x slower call-spread-apply 30.8493+-1.0747 ? 32.0629+-1.5713 ? might be 1.0393x slower call-spread-call 26.0834+-0.7277 ? 26.7745+-2.2894 ? might be 1.0265x slower captured-assignments 0.5478+-0.0517 0.5298+-0.0321 might be 1.0339x faster cast-int-to-double 5.4578+-0.2206 5.4109+-0.1563 cell-argument 8.7883+-0.3329 ? 8.8635+-0.4228 ? cfg-simplify 2.9381+-0.1462 2.8512+-0.0344 might be 1.0305x faster chain-getter-access 9.5314+-0.1399 9.4527+-0.2901 cmpeq-obj-to-obj-other 11.9466+-1.0611 ? 12.1261+-0.8434 ? might be 1.0150x slower constant-test 5.0378+-0.0863 5.0149+-0.0348 create-lots-of-functions 11.7821+-0.4059 11.6198+-0.2246 might be 1.0140x faster cse-new-array-buffer 2.6167+-0.2285 2.5841+-0.0810 might be 1.0126x faster cse-new-array 2.6519+-0.0500 ? 2.6969+-0.1211 ? might be 1.0170x slower DataView-custom-properties 42.7445+-1.0516 ? 43.8654+-2.3752 ? might be 1.0262x slower deconstructing-parameters-overridden-by-function 0.6428+-0.1140 0.5741+-0.0199 might be 1.1196x faster delay-tear-off-arguments-strictmode 14.4125+-0.2257 ? 14.4250+-0.2993 ? deltablue-varargs 210.4035+-0.7795 ? 212.7792+-3.2653 ? might be 1.0113x slower destructuring-arguments 17.3330+-0.3969 ? 17.8540+-0.5462 ? might be 1.0301x slower destructuring-swap 5.2234+-0.1952 5.1254+-0.0739 might be 1.0191x faster direct-arguments-getbyval 1.3277+-0.0776 1.3091+-0.0347 might be 1.0142x faster div-boolean-double 5.3381+-0.1240 5.2511+-0.0229 might be 1.0166x faster div-boolean 7.8847+-0.1132 7.8754+-0.0961 double-get-by-val-out-of-bounds 4.5522+-0.0381 ? 4.7736+-0.2450 ? might be 1.0486x slower double-pollution-getbyval 8.9635+-0.1112 8.9047+-0.0870 double-pollution-putbyoffset 4.4185+-0.0732 ? 4.4722+-0.2199 ? might be 1.0122x slower double-real-use 39.0668+-1.6955 ^ 30.4990+-1.2299 ^ definitely 1.2809x faster double-to-int32-typed-array-no-inline 2.7313+-0.2043 ? 2.7535+-0.2377 ? double-to-int32-typed-array 2.1572+-0.2232 2.0500+-0.0574 might be 1.0523x faster double-to-uint32-typed-array-no-inline 2.7023+-0.2326 2.6252+-0.0622 might be 1.0294x faster double-to-uint32-typed-array 2.0720+-0.0287 ? 2.3260+-0.3393 ? might be 1.1226x slower elidable-new-object-dag 44.2897+-1.3454 ? 44.4213+-0.9309 ? elidable-new-object-roflcopter 44.8328+-1.5369 ? 45.4310+-1.6736 ? might be 1.0133x slower elidable-new-object-then-call 40.2274+-1.3271 ? 41.3258+-2.2996 ? might be 1.0273x slower elidable-new-object-tree 46.4532+-1.2336 45.0935+-1.1671 might be 1.0302x faster empty-string-plus-int 5.6277+-0.2631 5.5695+-0.2339 might be 1.0104x faster emscripten-cube2hash 39.1297+-1.4873 ? 41.1858+-4.3145 ? might be 1.0525x slower exit-length-on-plain-object 15.0299+-1.5489 14.8380+-1.5363 might be 1.0129x faster external-arguments-getbyval 1.3437+-0.1977 1.2830+-0.0798 might be 1.0473x faster external-arguments-putbyval 2.4117+-0.0928 ? 2.5052+-0.2451 ? might be 1.0388x slower fixed-typed-array-storage-var-index 1.2375+-0.0392 ? 1.3359+-0.1200 ? might be 1.0794x slower fixed-typed-array-storage 0.9421+-0.1219 ? 0.9768+-0.1244 ? might be 1.0368x slower Float32Array-matrix-mult 4.5734+-0.1918 ? 4.5754+-0.2368 ? Float32Array-to-Float64Array-set 57.2163+-1.1058 56.1418+-0.5572 might be 1.0191x faster Float64Array-alloc-long-lived 94.5553+-14.3392 88.8394+-2.0734 might be 1.0643x faster Float64Array-to-Int16Array-set 80.2882+-24.3991 71.4111+-2.2570 might be 1.1243x faster fold-double-to-int 13.5704+-0.2985 ? 14.6393+-1.3181 ? might be 1.0788x slower fold-get-by-id-to-multi-get-by-offset-rare-int 10.7907+-1.3939 10.1106+-1.3575 might be 1.0673x faster fold-get-by-id-to-multi-get-by-offset 10.7985+-1.0210 10.2894+-0.9842 might be 1.0495x faster fold-multi-get-by-offset-to-get-by-offset 9.8443+-0.7882 ? 10.0229+-1.1569 ? might be 1.0181x slower fold-multi-get-by-offset-to-poly-get-by-offset 9.9176+-0.6141 9.5675+-0.5345 might be 1.0366x faster fold-multi-put-by-offset-to-poly-put-by-offset 10.7037+-1.7508 8.9285+-0.5125 might be 1.1988x faster fold-multi-put-by-offset-to-put-by-offset 7.8844+-1.3119 7.6875+-1.5877 might be 1.0256x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 10.4602+-1.3174 10.4260+-0.9964 fold-put-by-id-to-multi-put-by-offset 9.9980+-1.9674 ? 10.4753+-0.8441 ? might be 1.0477x slower fold-put-structure 7.6666+-1.6118 7.4066+-1.4183 might be 1.0351x faster for-of-iterate-array-entries 4.6623+-0.1293 ? 4.7010+-0.1734 ? for-of-iterate-array-keys 3.9391+-0.3203 3.9340+-0.3743 for-of-iterate-array-values 3.6787+-0.1282 3.6475+-0.2078 fround 21.4746+-0.9308 20.8999+-0.5318 might be 1.0275x faster ftl-library-inlining-dataview 64.9382+-1.0983 ? 65.1637+-1.6433 ? ftl-library-inlining 74.2057+-18.0303 66.9991+-0.9306 might be 1.1076x faster function-dot-apply 2.5230+-0.2466 2.2663+-0.0386 might be 1.1133x faster function-test 3.0274+-0.2219 2.9648+-0.0695 might be 1.0211x faster function-with-eval 102.6410+-2.4377 102.6136+-2.3049 gcse-poly-get-less-obvious 18.5053+-1.0033 ? 18.7858+-0.8200 ? might be 1.0152x slower gcse-poly-get 20.1694+-1.5331 19.9557+-1.4433 might be 1.0107x faster gcse 4.4203+-0.0701 ? 4.5905+-0.4470 ? might be 1.0385x slower get-by-id-bimorphic-check-structure-elimination-simple 2.9832+-0.3608 2.8367+-0.1326 might be 1.0516x faster get-by-id-bimorphic-check-structure-elimination 6.1282+-0.1250 ? 6.2177+-0.2375 ? might be 1.0146x slower get-by-id-chain-from-try-block 7.0140+-0.5718 6.6600+-0.1425 might be 1.0531x faster get-by-id-check-structure-elimination 5.1483+-0.0670 5.1313+-0.0862 get-by-id-proto-or-self 19.4073+-1.6552 ? 19.9637+-2.1348 ? might be 1.0287x slower get-by-id-quadmorphic-check-structure-elimination-simple 3.0160+-0.0383 ? 3.0227+-0.0682 ? get-by-id-self-or-proto 19.9460+-1.7833 19.0833+-1.7449 might be 1.0452x faster get-by-val-out-of-bounds 4.5542+-0.1369 4.5197+-0.1044 get_callee_monomorphic 4.3585+-3.2620 2.9818+-0.2521 might be 1.4617x faster get_callee_polymorphic 3.9095+-0.2449 ? 4.0955+-0.3186 ? might be 1.0476x slower getter-no-activation 5.0218+-0.1814 ? 5.1886+-0.3417 ? might be 1.0332x slower getter-prototype 14.9541+-0.2419 ? 15.9630+-0.9818 ? might be 1.0675x slower getter-richards 124.2562+-6.2881 ? 125.4907+-6.0617 ? getter 6.6858+-0.6336 5.9235+-0.7752 might be 1.1287x faster global-var-const-infer-fire-from-opt 1.0173+-0.1377 1.0118+-0.1388 global-var-const-infer 0.9065+-0.1779 ? 0.9185+-0.1056 ? might be 1.0132x slower HashMap-put-get-iterate-keys 30.2247+-1.3320 ? 31.1772+-3.0472 ? might be 1.0315x slower HashMap-put-get-iterate 31.3045+-2.3697 ? 31.4943+-0.6194 ? HashMap-string-put-get-iterate 32.0721+-1.8685 ? 32.9683+-2.0579 ? might be 1.0279x slower hoist-make-rope 12.7364+-1.3327 12.2931+-0.7632 might be 1.0361x faster hoist-poly-check-structure-effectful-loop 5.1100+-0.0293 ? 5.2917+-0.2498 ? might be 1.0356x slower hoist-poly-check-structure 3.7509+-0.0777 ? 3.9055+-0.3564 ? might be 1.0412x slower imul-double-only 8.6060+-0.1512 8.6001+-0.2152 imul-int-only 10.4123+-1.4735 10.1228+-0.5164 might be 1.0286x faster imul-mixed 8.5044+-0.4534 ? 8.8334+-0.3452 ? might be 1.0387x slower in-four-cases 22.2348+-0.2869 ? 22.5486+-0.4569 ? might be 1.0141x slower in-one-case-false 11.0827+-0.0546 ? 11.1069+-0.1143 ? in-one-case-true 12.1269+-1.6875 11.1901+-0.1851 might be 1.0837x faster in-two-cases 11.8077+-0.1629 11.7408+-0.1111 indexed-properties-in-objects 2.9668+-0.0758 ? 3.1082+-0.4127 ? might be 1.0477x slower infer-closure-const-then-mov-no-inline 4.5200+-0.8152 4.2318+-0.2552 might be 1.0681x faster infer-closure-const-then-mov 19.8160+-0.2918 ? 20.1775+-0.3038 ? might be 1.0182x slower infer-closure-const-then-put-to-scope-no-inline 13.2520+-1.1941 13.1132+-0.9908 might be 1.0106x faster infer-closure-const-then-put-to-scope 21.8588+-1.0526 ? 22.2146+-1.2806 ? might be 1.0163x slower infer-closure-const-then-reenter-no-inline 54.5949+-0.3532 ? 56.0672+-2.8812 ? might be 1.0270x slower infer-closure-const-then-reenter 22.8127+-1.4267 ? 23.2625+-2.3935 ? might be 1.0197x slower infer-constant-global-property 4.0082+-0.3825 3.5937+-0.0933 might be 1.1153x faster infer-constant-property 2.8944+-0.2435 2.8083+-0.0785 might be 1.0307x faster infer-one-time-closure-ten-vars 13.3232+-1.4699 13.2872+-1.5319 infer-one-time-closure-two-vars 12.2513+-0.3514 ? 12.2869+-0.2255 ? infer-one-time-closure 12.6633+-1.5575 12.0705+-0.2563 might be 1.0491x faster infer-one-time-deep-closure 21.2947+-0.6907 ? 21.6072+-1.4548 ? might be 1.0147x slower inline-arguments-access 4.6730+-0.1381 ? 4.7654+-0.1724 ? might be 1.0198x slower inline-arguments-aliased-access 4.7504+-0.1716 4.7082+-0.0807 inline-arguments-local-escape 4.8551+-0.3103 4.6902+-0.0616 might be 1.0352x faster inline-get-scoped-var 5.1100+-0.1824 ? 5.1344+-0.5319 ? inlined-put-by-id-transition 11.9030+-0.5962 ? 12.2266+-0.3723 ? might be 1.0272x slower int-or-other-abs-then-get-by-val 5.1215+-0.2454 5.0756+-0.0787 int-or-other-abs-zero-then-get-by-val 17.8440+-0.9926 17.6526+-0.9544 might be 1.0108x faster int-or-other-add-then-get-by-val 4.4205+-0.1034 ? 4.4861+-0.1758 ? might be 1.0149x slower int-or-other-add 5.3848+-0.0202 ? 5.3971+-0.0357 ? int-or-other-div-then-get-by-val 4.3278+-0.1161 ? 4.3933+-0.2540 ? might be 1.0151x slower int-or-other-max-then-get-by-val 4.7248+-0.9101 4.5157+-0.2431 might be 1.0463x faster int-or-other-min-then-get-by-val 4.4384+-0.1156 ? 4.4504+-0.1541 ? int-or-other-mod-then-get-by-val 4.2196+-0.2621 4.1223+-0.2608 might be 1.0236x faster int-or-other-mul-then-get-by-val 3.9810+-0.0937 ? 4.1138+-0.2077 ? might be 1.0333x slower int-or-other-neg-then-get-by-val 4.8594+-0.1167 ? 4.8968+-0.1402 ? int-or-other-neg-zero-then-get-by-val 18.4589+-1.7394 ? 19.3217+-1.9011 ? might be 1.0467x slower int-or-other-sub-then-get-by-val 4.4002+-0.0115 4.3920+-0.0349 int-or-other-sub 3.7487+-0.1903 3.6540+-0.0526 might be 1.0259x faster int-overflow-local 4.6661+-0.1774 4.6343+-0.1715 Int16Array-alloc-long-lived 54.3511+-2.9206 ? 54.5292+-2.1662 ? Int16Array-bubble-sort-with-byteLength 19.9249+-0.9188 ? 20.2442+-0.6781 ? might be 1.0160x slower Int16Array-bubble-sort 20.8496+-1.4314 20.3274+-0.5610 might be 1.0257x faster Int16Array-load-int-mul 1.7804+-0.2673 ? 1.7904+-0.2219 ? Int16Array-to-Int32Array-set 57.8140+-1.8583 ? 58.3795+-2.3094 ? Int32Array-alloc-large 23.6589+-0.1905 ? 23.9900+-0.6308 ? might be 1.0140x slower Int32Array-alloc-long-lived 63.2822+-1.4778 ? 64.7022+-1.5537 ? might be 1.0224x slower Int32Array-alloc 3.7797+-0.4164 3.6362+-0.3875 might be 1.0395x faster Int32Array-Int8Array-view-alloc 7.1634+-1.0068 6.7926+-0.3483 might be 1.0546x faster int52-spill 6.2610+-0.7893 6.0571+-0.1953 might be 1.0337x faster Int8Array-alloc-long-lived 48.1276+-1.4136 ? 48.3827+-0.9814 ? Int8Array-load-with-byteLength 3.5852+-0.4155 3.4337+-0.0975 might be 1.0441x faster Int8Array-load 3.5115+-0.2397 3.4783+-0.1436 integer-divide 11.3422+-0.3493 10.9189+-0.1067 might be 1.0388x faster integer-modulo 2.1478+-0.1087 2.1188+-0.1170 might be 1.0137x faster is-boolean-fold-tricky 4.4830+-0.0704 ? 4.7302+-0.3595 ? might be 1.0551x slower is-boolean-fold 2.9036+-0.0376 ? 3.1035+-0.3258 ? might be 1.0688x slower is-function-fold-tricky-internal-function 11.9618+-0.0885 11.9406+-0.1377 is-function-fold-tricky 4.6790+-0.2567 4.6241+-0.0850 might be 1.0119x faster is-function-fold 2.9247+-0.0667 ? 2.9884+-0.1406 ? might be 1.0218x slower is-number-fold-tricky 4.5805+-0.1666 ? 4.6740+-0.3337 ? might be 1.0204x slower is-number-fold 2.9275+-0.0550 ? 3.1178+-0.3831 ? might be 1.0650x slower is-object-or-null-fold-functions 2.9695+-0.0318 ? 3.0308+-0.2409 ? might be 1.0206x slower is-object-or-null-fold-less-tricky 4.7665+-0.6049 4.6498+-0.0841 might be 1.0251x faster is-object-or-null-fold-tricky 6.6985+-0.0985 ? 6.7192+-0.1697 ? is-object-or-null-fold 3.0727+-0.2637 2.9555+-0.0719 might be 1.0396x faster is-object-or-null-trickier-function 5.0022+-0.5587 ? 5.0970+-0.5050 ? might be 1.0189x slower is-object-or-null-trickier-internal-function 12.7261+-0.3110 ? 13.0110+-0.6257 ? might be 1.0224x slower is-object-or-null-tricky-function 4.9194+-0.4001 4.7124+-0.0998 might be 1.0439x faster is-object-or-null-tricky-internal-function 9.4375+-0.1333 ? 9.4692+-0.1508 ? is-string-fold-tricky 4.6027+-0.2229 ? 4.6833+-0.2499 ? might be 1.0175x slower is-string-fold 2.9202+-0.1234 ? 2.9450+-0.1312 ? is-undefined-fold-tricky 3.8329+-0.1706 3.7989+-0.0864 is-undefined-fold 2.9125+-0.0294 ? 3.1643+-0.3385 ? might be 1.0865x slower large-int-captured 4.7419+-0.1537 ? 4.8794+-0.1371 ? might be 1.0290x slower large-int-neg 17.1477+-1.7475 16.3807+-0.4393 might be 1.0468x faster large-int 15.5111+-1.2273 ? 16.0937+-0.7750 ? might be 1.0376x slower load-varargs-elimination 24.2316+-1.2811 ? 24.4222+-1.9877 ? logical-not-weird-types 3.3941+-0.1888 3.3179+-0.0455 might be 1.0230x faster logical-not 4.6557+-0.0309 ? 4.6676+-0.0862 ? lots-of-fields 12.6707+-0.3571 12.5468+-0.1883 make-indexed-storage 3.1636+-0.3018 ? 3.3836+-0.6067 ? might be 1.0695x slower make-rope-cse 12.2181+-1.3334 11.8793+-1.1884 might be 1.0285x faster marsaglia-larger-ints 37.0295+-2.3763 ? 37.1607+-1.6921 ? marsaglia-osr-entry 24.4607+-2.0935 23.7255+-1.5469 might be 1.0310x faster math-with-out-of-bounds-array-values 25.5886+-1.8904 25.0866+-0.7850 might be 1.0200x faster max-boolean 2.5857+-0.0435 ? 2.6598+-0.1374 ? might be 1.0287x slower method-on-number 17.3110+-0.1650 ? 17.5668+-0.6050 ? might be 1.0148x slower min-boolean 2.5511+-0.0263 2.5465+-0.0703 minus-boolean-double 3.3351+-0.1154 ? 3.3551+-0.2793 ? minus-boolean 2.4524+-0.1014 ? 2.5657+-0.3028 ? might be 1.0462x slower misc-strict-eq 38.7204+-1.0216 ? 42.2240+-6.5308 ? might be 1.0905x slower mod-boolean-double 10.9502+-0.0796 10.9231+-0.1240 mod-boolean 8.0583+-0.1661 7.8685+-0.0303 might be 1.0241x faster mul-boolean-double 3.7335+-0.0744 ? 3.7753+-0.1276 ? might be 1.0112x slower mul-boolean 3.0894+-0.3625 2.9347+-0.0483 might be 1.0527x faster neg-boolean 3.4464+-0.4038 3.2710+-0.0869 might be 1.0536x faster negative-zero-divide 0.4207+-0.0578 0.4096+-0.0471 might be 1.0271x faster negative-zero-modulo 0.4023+-0.0598 0.3929+-0.0273 might be 1.0237x faster negative-zero-negate 0.3674+-0.0188 0.3531+-0.0190 might be 1.0403x faster nested-function-parsing 40.5914+-1.7576 ? 41.7058+-3.3320 ? might be 1.0275x slower new-array-buffer-dead 114.2998+-1.5549 ? 114.6182+-1.3925 ? new-array-buffer-push 7.2747+-0.9603 6.9245+-0.1207 might be 1.0506x faster new-array-dead 19.3903+-0.5255 ? 19.8325+-1.2238 ? might be 1.0228x slower new-array-push 6.7833+-0.3648 6.4696+-0.1749 might be 1.0485x faster no-inline-constructor 41.8991+-1.5522 ? 41.9394+-1.6583 ? number-test 3.1413+-0.1006 ? 3.2775+-0.3410 ? might be 1.0434x slower object-closure-call 5.7493+-0.0656 ? 6.0048+-0.2294 ? might be 1.0444x slower object-test 2.8927+-0.0469 ? 2.9446+-0.1355 ? might be 1.0179x slower obvious-sink-pathology-taken 142.9825+-2.1512 140.8191+-2.0056 might be 1.0154x faster obvious-sink-pathology 133.0490+-1.4301 ? 133.2569+-2.4277 ? obviously-elidable-new-object 35.7445+-1.7268 35.3518+-1.5200 might be 1.0111x faster plus-boolean-arith 2.5623+-0.0585 ? 2.6721+-0.2732 ? might be 1.0429x slower plus-boolean-double 3.3501+-0.2911 3.2718+-0.0602 might be 1.0239x faster plus-boolean 2.5957+-0.2950 2.5927+-0.3068 poly-chain-access-different-prototypes-simple 3.3689+-0.0501 ? 3.7232+-0.4822 ? might be 1.1052x slower poly-chain-access-different-prototypes 2.7000+-0.2363 ? 2.7984+-0.3462 ? might be 1.0364x slower poly-chain-access-simpler 3.3518+-0.0442 ? 3.3630+-0.0640 ? poly-chain-access 2.7590+-0.3102 2.7491+-0.3492 poly-stricteq 60.5506+-1.8994 ? 63.6329+-3.3601 ? might be 1.0509x slower polymorphic-array-call 1.4986+-0.1730 1.4307+-0.0843 might be 1.0474x faster polymorphic-get-by-id 3.2782+-0.2155 3.2665+-0.2156 polymorphic-put-by-id 33.4622+-1.7446 ? 33.6665+-3.0862 ? polymorphic-structure 15.0530+-0.2385 14.8111+-0.1080 might be 1.0163x faster polyvariant-monomorphic-get-by-id 8.8453+-0.2127 8.7787+-0.3083 proto-getter-access 9.2908+-0.1065 ? 9.3082+-0.1288 ? put-by-id-replace-and-transition 9.7959+-0.2382 ? 10.0859+-0.5009 ? might be 1.0296x slower put-by-id-slightly-polymorphic 3.1323+-0.4104 2.9204+-0.1634 might be 1.0726x faster put-by-id 13.0553+-0.4262 12.7040+-0.3052 might be 1.0277x faster put-by-val-direct 0.4283+-0.0795 0.4272+-0.0522 put-by-val-large-index-blank-indexing-type 13.1276+-1.4051 12.1064+-0.3343 might be 1.0844x faster put-by-val-machine-int 2.9094+-0.1600 ? 2.9724+-0.2621 ? might be 1.0216x slower rare-osr-exit-on-local 15.9099+-0.6103 15.8766+-0.9555 register-pressure-from-osr 21.9226+-1.2966 ? 22.2310+-1.3063 ? might be 1.0141x slower repeat-multi-get-by-offset 24.3743+-0.3086 ? 24.7098+-0.2497 ? might be 1.0138x slower setter-prototype 10.7619+-0.5196 10.4538+-0.1769 might be 1.0295x faster setter 6.2537+-0.8783 ? 6.3359+-0.5745 ? might be 1.0131x slower simple-activation-demo 25.2025+-0.4405 ? 25.4860+-0.4742 ? might be 1.0113x slower simple-getter-access 11.6899+-0.2631 ? 11.7480+-0.3036 ? simple-poly-call-nested 8.1728+-0.0876 8.1190+-0.1956 simple-poly-call 1.4102+-0.0767 1.3463+-0.0401 might be 1.0475x faster sin-boolean 22.6632+-0.5788 ? 23.3724+-1.3998 ? might be 1.0313x slower singleton-scope 63.9156+-1.9700 63.0796+-1.9565 might be 1.0133x faster sink-function 12.4641+-0.7043 ? 12.4647+-0.3738 ? sink-huge-activation 19.2975+-0.7630 ? 19.8514+-1.5714 ? might be 1.0287x slower sinkable-new-object-dag 71.9130+-2.4208 70.5653+-1.8497 might be 1.0191x faster sinkable-new-object-taken 52.0552+-3.0743 ? 52.3549+-4.9129 ? sinkable-new-object 39.1655+-0.6509 ? 39.7068+-1.5556 ? might be 1.0138x slower slow-array-profile-convergence 2.8878+-0.2076 ? 2.9471+-0.0751 ? might be 1.0205x slower slow-convergence 3.0730+-0.3470 2.7896+-0.0615 might be 1.1016x faster slow-ternaries 18.8223+-2.0692 ? 21.4842+-2.4291 ? might be 1.1414x slower sorting-benchmark 19.2030+-0.5318 18.6563+-0.4758 might be 1.0293x faster sparse-conditional 1.2264+-0.0749 ? 1.2312+-0.1474 ? splice-to-remove 16.0563+-1.7855 15.6812+-1.5290 might be 1.0239x faster string-char-code-at 16.7347+-0.8669 16.4208+-0.5914 might be 1.0191x faster string-concat-object 2.8617+-0.3465 2.7163+-0.2363 might be 1.0535x faster string-concat-pair-object 2.8368+-0.3453 2.7112+-0.2158 might be 1.0463x faster string-concat-pair-simple 12.3529+-1.0113 12.1772+-0.9165 might be 1.0144x faster string-concat-simple 12.4578+-0.4951 ? 12.5195+-1.1764 ? string-cons-repeat 8.0747+-0.2880 ? 8.2799+-0.3900 ? might be 1.0254x slower string-cons-tower 8.5498+-0.6764 8.4909+-0.6138 string-equality 18.5198+-1.5364 17.8836+-0.5688 might be 1.0356x faster string-get-by-val-big-char 7.3082+-0.0762 7.2928+-0.0735 string-get-by-val-out-of-bounds-insane 3.8822+-0.4778 3.7118+-0.2930 might be 1.0459x faster string-get-by-val-out-of-bounds 5.9774+-0.9069 5.5479+-0.0299 might be 1.0774x faster string-get-by-val 3.3770+-0.0225 3.3624+-0.0220 string-hash 2.1770+-0.1004 ? 2.2645+-0.2380 ? might be 1.0402x slower string-long-ident-equality 14.7213+-0.3649 ? 14.7865+-0.4588 ? string-out-of-bounds 15.2880+-0.4108 14.9545+-0.3898 might be 1.0223x faster string-repeat-arith 35.7542+-1.4529 35.4350+-2.9356 string-sub 67.8794+-4.3434 ? 68.5086+-4.5731 ? string-test 3.0181+-0.1270 ? 3.2303+-0.3456 ? might be 1.0703x slower string-var-equality 32.7290+-1.3032 ? 34.2165+-2.1635 ? might be 1.0454x slower structure-hoist-over-transitions 2.7901+-0.1108 ? 2.8010+-0.2556 ? substring-concat-weird 41.9108+-1.3926 40.7247+-1.8571 might be 1.0291x faster substring-concat 43.4109+-1.1216 ? 43.7703+-1.1727 ? substring 46.6959+-2.3642 46.0793+-1.8715 might be 1.0134x faster switch-char-constant 3.0058+-0.4271 ? 3.0671+-0.2604 ? might be 1.0204x slower switch-char 7.1657+-0.6936 ? 8.5056+-3.2870 ? might be 1.1870x slower switch-constant 9.0639+-1.1615 8.5501+-0.3464 might be 1.0601x faster switch-string-basic-big-var 18.5407+-0.3937 18.3272+-0.2640 might be 1.0116x faster switch-string-basic-big 15.0085+-0.2522 ? 15.3356+-0.5832 ? might be 1.0218x slower switch-string-basic-var 15.2753+-0.2562 ? 15.5671+-1.1621 ? might be 1.0191x slower switch-string-basic 13.4288+-0.1705 ? 14.1586+-0.7360 ? might be 1.0543x slower switch-string-big-length-tower-var 20.9299+-1.3765 20.1623+-0.4438 might be 1.0381x faster switch-string-length-tower-var 16.5822+-1.6813 15.7602+-0.2953 might be 1.0522x faster switch-string-length-tower 13.2035+-0.1588 ? 13.3005+-0.2497 ? switch-string-short 13.1145+-0.2329 ? 13.2142+-0.3672 ? switch 12.6549+-0.2787 ? 12.8795+-0.2741 ? might be 1.0177x slower tear-off-arguments-simple 3.6147+-0.2295 ? 3.6676+-0.2604 ? might be 1.0146x slower tear-off-arguments 4.8877+-0.1064 4.8542+-0.0646 temporal-structure 12.2610+-0.0931 ? 12.3354+-0.2138 ? to-int32-boolean 13.8328+-0.1757 ? 14.0223+-0.2766 ? might be 1.0137x slower try-catch-get-by-val-cloned-arguments 15.2725+-1.2145 ? 15.8356+-1.6117 ? might be 1.0369x slower try-catch-get-by-val-direct-arguments 6.7498+-0.2283 ? 7.1612+-0.9423 ? might be 1.0610x slower try-catch-get-by-val-scoped-arguments 8.1247+-0.9463 ? 8.6989+-1.4290 ? might be 1.0707x slower typed-array-get-set-by-val-profiling 32.0531+-0.4645 ? 33.2397+-1.5452 ? might be 1.0370x slower undefined-property-access 345.4032+-4.9826 343.1266+-3.7414 undefined-test 3.0913+-0.0947 ? 3.2022+-0.3273 ? might be 1.0359x slower unprofiled-licm 24.0673+-1.8458 22.7692+-0.2689 might be 1.0570x faster varargs-call 15.5179+-1.1307 ? 15.8522+-0.9078 ? might be 1.0215x slower varargs-construct-inline 27.9700+-0.3651 ? 28.1016+-0.4652 ? varargs-construct 23.2754+-1.1227 22.8737+-0.5924 might be 1.0176x faster varargs-inline 9.3752+-0.1059 ? 9.5979+-0.5112 ? might be 1.0238x slower varargs-strict-mode 10.1875+-0.3392 ? 10.6054+-1.0846 ? might be 1.0410x slower varargs 10.2556+-0.3138 10.1293+-0.1912 might be 1.0125x faster weird-inlining-const-prop 3.4197+-0.1985 ? 3.5808+-0.6880 ? might be 1.0471x slower <geometric> 9.0044+-0.0365 8.9777+-0.0336 might be 1.0030x faster TipOfTree DoubleRealUse AsmBench: bigfib.cpp 503.0432+-3.8539 ? 504.4475+-12.4463 ? cray.c 442.8666+-37.6423 433.9375+-11.7515 might be 1.0206x faster dry.c 497.8990+-32.9357 490.5914+-10.1555 might be 1.0149x faster FloatMM.c 728.0811+-8.9143 ? 732.2224+-7.0928 ? gcc-loops.cpp 4288.9237+-12.7884 4287.5203+-10.1031 n-body.c 986.8309+-16.8883 ? 987.5693+-4.1504 ? Quicksort.c 424.0061+-8.4774 420.4270+-5.0102 stepanov_container.cpp 3644.1721+-28.9923 3625.5382+-33.9577 Towers.c 262.4240+-4.6459 ? 268.7939+-11.3024 ? might be 1.0243x slower <geometric> 802.4849+-8.3162 801.3281+-5.0665 might be 1.0014x faster TipOfTree DoubleRealUse CompressionBench: huffman 372.1481+-2.4314 359.9830+-21.8492 might be 1.0338x faster arithmetic-simple 369.5149+-1.8958 365.4513+-3.8456 might be 1.0111x faster arithmetic-precise 284.2368+-4.0836 ? 285.6455+-4.0471 ? arithmetic-complex-precise 282.7521+-3.7237 ? 283.8317+-3.8072 ? arithmetic-precise-order-0 377.7775+-3.9822 ? 383.9491+-12.6373 ? might be 1.0163x slower arithmetic-precise-order-1 336.8847+-5.7941 335.5776+-3.4991 arithmetic-precise-order-2 367.8700+-2.4209 ? 369.9931+-4.7226 ? arithmetic-simple-order-1 425.8757+-3.1045 424.7941+-1.7873 arithmetic-simple-order-2 476.4365+-6.9473 ? 486.7944+-26.6505 ? might be 1.0217x slower lz-string 321.2834+-8.3610 ? 324.4677+-23.6514 ? <geometric> 357.0867+-1.0973 ? 357.3429+-2.1540 ? might be 1.0007x slower TipOfTree DoubleRealUse Geomean of preferred means: <scaled-result> 62.7480+-0.2255 62.4810+-0.2299 might be 1.0043x faster
Filip Pizlo
Comment 4 2015-06-03 23:24:39 PDT
Performance of my new approach, which doesn't exit on int32: Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r185168) "DoubleRealUse" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r185168) Collected 6 samples per benchmark/VM, with 6 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. TipOfTree DoubleRealUse SunSpider: 3d-cube 5.3221+-0.1115 5.2605+-0.1609 might be 1.0117x faster 3d-morph 5.9623+-0.2388 5.9599+-0.2709 3d-raytrace 6.8566+-0.6339 6.5788+-0.0808 might be 1.0422x faster access-binary-trees 2.4335+-0.1505 2.4120+-0.1860 access-fannkuch 6.1764+-0.1127 6.0918+-0.1051 might be 1.0139x faster access-nbody 3.3754+-0.4442 3.0621+-0.1999 might be 1.1023x faster access-nsieve 3.5551+-0.2637 3.5038+-0.3001 might be 1.0146x faster bitops-3bit-bits-in-byte 1.6198+-0.0319 ? 1.6975+-0.2081 ? might be 1.0480x slower bitops-bits-in-byte 3.8624+-0.2744 ? 3.9931+-0.2235 ? might be 1.0338x slower bitops-bitwise-and 2.2467+-0.2766 2.1314+-0.0466 might be 1.0541x faster bitops-nsieve-bits 3.3441+-0.1082 3.3337+-0.1040 controlflow-recursive 3.2377+-0.1895 2.8695+-0.2331 might be 1.1283x faster crypto-aes 4.9750+-0.3584 4.9052+-0.1531 might be 1.0142x faster crypto-md5 3.0975+-0.2459 2.8215+-0.1347 might be 1.0978x faster crypto-sha1 3.6498+-0.3771 ? 3.8837+-0.4193 ? might be 1.0641x slower date-format-tofte 9.3612+-0.1448 ? 9.4022+-0.1499 ? date-format-xparb 5.9841+-0.2561 ? 6.1887+-0.4810 ? might be 1.0342x slower math-cordic 3.2651+-0.1193 3.1871+-0.0546 might be 1.0245x faster math-partial-sums 5.8693+-0.4863 5.5940+-0.1428 might be 1.0492x faster math-spectral-norm 2.1519+-0.2269 2.1172+-0.1708 might be 1.0164x faster regexp-dna 7.5005+-0.0389 ? 8.0334+-1.3654 ? might be 1.0711x slower string-base64 5.9878+-1.0825 5.4905+-0.8090 might be 1.0906x faster string-fasta 7.1882+-0.8249 6.9584+-0.5457 might be 1.0330x faster string-tagcloud 10.3786+-0.8621 9.8961+-0.6123 might be 1.0488x faster string-unpack-code 23.0459+-2.2604 21.7979+-2.0024 might be 1.0573x faster string-validate-input 6.0846+-0.1851 ? 6.2032+-0.3189 ? might be 1.0195x slower <arithmetic> 5.6358+-0.0808 5.5144+-0.0886 might be 1.0220x faster TipOfTree DoubleRealUse LongSpider: 3d-cube 917.2194+-42.2956 ? 919.8247+-29.7549 ? 3d-morph 1544.4682+-11.9912 1543.7540+-17.2601 3d-raytrace 712.4201+-23.6070 ? 744.5203+-41.4073 ? might be 1.0451x slower access-binary-trees 1024.1423+-40.5805 1005.8717+-14.0052 might be 1.0182x faster access-fannkuch 337.8470+-12.8270 330.5921+-10.3222 might be 1.0219x faster access-nbody 652.9954+-61.6087 592.6971+-4.4409 might be 1.1017x faster access-nsieve 479.2895+-7.5068 ? 491.1532+-34.0588 ? might be 1.0248x slower bitops-3bit-bits-in-byte 44.5645+-0.5171 ? 44.5877+-0.7342 ? bitops-bits-in-byte 105.0497+-7.8977 101.3522+-5.3547 might be 1.0365x faster bitops-nsieve-bits 434.1840+-16.4957 422.4702+-3.5278 might be 1.0277x faster controlflow-recursive 501.1655+-18.4525 ? 505.2799+-25.5211 ? crypto-aes 726.6181+-33.2660 712.1210+-5.9667 might be 1.0204x faster crypto-md5 530.9701+-10.8298 528.4897+-12.8996 crypto-sha1 606.7327+-3.9739 ? 612.4525+-38.4913 ? date-format-tofte 746.2010+-23.1563 727.0964+-9.3464 might be 1.0263x faster date-format-xparb 811.0345+-28.4121 ? 838.2397+-41.7665 ? might be 1.0335x slower hash-map 184.8923+-3.1517 181.2685+-3.3051 might be 1.0200x faster math-cordic 612.3558+-35.5435 577.8084+-3.0599 might be 1.0598x faster math-partial-sums 504.5493+-3.3006 ? 512.5730+-8.6444 ? might be 1.0159x slower math-spectral-norm 565.8687+-2.6923 ? 567.4092+-4.9666 ? string-base64 415.3897+-4.6097 ? 418.6079+-12.7659 ? string-fasta 444.6607+-23.0503 430.0969+-15.9991 might be 1.0339x faster string-tagcloud 207.4302+-16.2675 204.3066+-17.9218 might be 1.0153x faster <geometric> 461.8882+-1.8881 457.3781+-3.3135 might be 1.0099x faster TipOfTree DoubleRealUse V8Spider: crypto 57.7496+-3.0320 ? 60.8284+-5.8435 ? might be 1.0533x slower deltablue 104.7713+-3.4896 102.1827+-8.1962 might be 1.0253x faster earley-boyer 50.5662+-5.5138 ? 52.0559+-4.4320 ? might be 1.0295x slower raytrace 44.7061+-3.0388 42.8388+-2.8336 might be 1.0436x faster regexp 84.5137+-2.2940 83.1131+-2.1030 might be 1.0169x faster richards 81.2517+-6.0775 79.8196+-0.8812 might be 1.0179x faster splay 42.0199+-3.0746 40.0898+-2.0098 might be 1.0481x faster <geometric> 62.9252+-1.4146 62.3231+-1.5881 might be 1.0097x faster TipOfTree DoubleRealUse Octane: encrypt 0.20854+-0.00863 0.20386+-0.00186 might be 1.0230x faster decrypt 3.56241+-0.03378 ? 3.58548+-0.04629 ? deltablue x2 0.20159+-0.01385 ? 0.20415+-0.01228 ? might be 1.0127x slower earley 0.39619+-0.00396 0.39215+-0.00405 might be 1.0103x faster boyer 5.17320+-0.04329 ? 5.26057+-0.30956 ? might be 1.0169x slower navier-stokes x2 5.27705+-0.20541 5.22030+-0.03267 might be 1.0109x faster raytrace x2 1.28515+-0.03617 ? 1.29003+-0.05392 ? richards x2 0.12848+-0.00126 ? 0.12886+-0.00325 ? splay x2 0.39996+-0.00159 0.39906+-0.00255 regexp x2 32.90609+-3.06426 31.85910+-0.56316 might be 1.0329x faster pdfjs x2 42.91595+-0.38536 ^ 42.25975+-0.19507 ^ definitely 1.0155x faster mandreel x2 50.32801+-0.54515 ? 50.69274+-0.30064 ? gbemu x2 45.82190+-4.12467 42.43828+-0.80124 might be 1.0797x faster closure 0.59536+-0.00585 ^ 0.56619+-0.00379 ^ definitely 1.0515x faster jquery 7.63519+-0.02944 ^ 7.16633+-0.03314 ^ definitely 1.0654x faster box2d x2 12.93921+-0.94770 11.97389+-0.08236 might be 1.0806x faster zlib x2 405.26081+-9.29927 395.88812+-15.06107 might be 1.0237x faster typescript x2 853.36060+-44.88187 819.22392+-11.70259 might be 1.0417x faster <geometric> 6.73528+-0.07313 ^ 6.59899+-0.03044 ^ definitely 1.0207x faster TipOfTree DoubleRealUse Kraken: ai-astar 242.602+-12.660 240.309+-9.473 audio-beat-detection 108.350+-1.467 107.936+-1.428 audio-dft 122.741+-5.550 122.306+-3.750 audio-fft 88.611+-0.392 86.581+-5.400 might be 1.0235x faster audio-oscillator 80.961+-6.072 77.711+-1.794 might be 1.0418x faster imaging-darkroom 105.736+-3.112 ? 108.799+-5.380 ? might be 1.0290x slower imaging-desaturate 63.841+-1.471 ? 65.774+-5.839 ? might be 1.0303x slower imaging-gaussian-blur 115.439+-7.592 114.226+-6.674 might be 1.0106x faster json-parse-financial 50.726+-2.791 48.051+-1.766 might be 1.0557x faster json-stringify-tinderbox 30.833+-3.090 29.742+-1.794 might be 1.0367x faster stanford-crypto-aes 59.024+-2.176 58.361+-0.809 might be 1.0114x faster stanford-crypto-ccm 47.892+-0.821 ? 48.995+-2.995 ? might be 1.0230x slower stanford-crypto-pbkdf2 113.131+-4.454 112.259+-2.244 stanford-crypto-sha256-iterative 43.465+-1.807 ? 45.898+-3.345 ? might be 1.0560x slower <arithmetic> 90.954+-1.477 90.496+-0.787 might be 1.0051x faster TipOfTree DoubleRealUse JSRegress: abs-boolean 2.8114+-0.2897 ? 2.8145+-0.2992 ? adapt-to-double-divide 16.8920+-0.3431 ? 16.9135+-0.4199 ? aliased-arguments-getbyval 1.5129+-0.2248 1.3359+-0.0451 might be 1.1325x faster allocate-big-object 2.9823+-0.2318 2.8687+-0.0812 might be 1.0396x faster arguments-named-and-reflective 12.8610+-1.3388 12.4720+-0.4148 might be 1.0312x faster arguments-out-of-bounds 15.1156+-0.6290 14.8651+-0.3375 might be 1.0168x faster arguments-strict-mode 11.6353+-1.7941 10.8552+-0.3270 might be 1.0719x faster arguments 9.5457+-0.3407 ? 9.9382+-0.5204 ? might be 1.0411x slower arity-mismatch-inlining 0.8903+-0.0256 ? 0.9446+-0.1076 ? might be 1.0610x slower array-access-polymorphic-structure 7.0231+-0.2917 6.8479+-0.0999 might be 1.0256x faster array-nonarray-polymorhpic-access 32.5298+-0.9568 ? 33.4861+-0.7683 ? might be 1.0294x slower array-prototype-every 88.4079+-6.0190 86.5592+-1.1108 might be 1.0214x faster array-prototype-forEach 85.6392+-1.5240 ? 86.3467+-3.8160 ? array-prototype-map 90.6049+-1.7808 ? 94.0712+-4.1318 ? might be 1.0383x slower array-prototype-reduce 82.9908+-4.2836 ? 83.8667+-3.0509 ? might be 1.0106x slower array-prototype-reduceRight 85.3295+-4.9150 83.9731+-4.0075 might be 1.0162x faster array-prototype-some 86.9649+-2.0917 ? 87.4474+-1.2406 ? array-splice-contiguous 51.2373+-16.4331 44.1206+-2.2141 might be 1.1613x faster array-with-double-add 4.3380+-0.1882 4.3306+-0.1389 array-with-double-increment 3.3798+-0.1068 ? 3.5820+-0.3674 ? might be 1.0598x slower array-with-double-mul-add 5.3164+-0.2988 5.2090+-0.1939 might be 1.0206x faster array-with-double-sum 3.3680+-0.0680 ? 3.4962+-0.2408 ? might be 1.0381x slower array-with-int32-add-sub 6.8637+-0.1116 ? 7.1249+-0.3921 ? might be 1.0380x slower array-with-int32-or-double-sum 3.4480+-0.0914 ? 3.7091+-0.3780 ? might be 1.0757x slower ArrayBuffer-DataView-alloc-large-long-lived 41.8827+-10.6098 37.8267+-2.4433 might be 1.1072x faster ArrayBuffer-DataView-alloc-long-lived 15.6614+-1.7170 ? 15.8339+-1.6042 ? might be 1.0110x slower ArrayBuffer-Int32Array-byteOffset 3.9434+-0.2392 ? 4.1202+-0.5129 ? might be 1.0448x slower ArrayBuffer-Int8Array-alloc-large-long-lived 38.8276+-1.2156 ? 39.8738+-2.4821 ? might be 1.0269x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 23.7090+-1.6928 23.4332+-1.6092 might be 1.0118x faster ArrayBuffer-Int8Array-alloc-long-lived 13.5720+-0.2512 ? 15.4474+-1.7530 ? might be 1.1382x slower ArrayBuffer-Int8Array-alloc 10.7818+-0.9576 ? 11.9685+-1.8215 ? might be 1.1101x slower asmjs_bool_bug 7.7734+-0.1244 ? 7.8242+-0.1816 ? assign-custom-setter-polymorphic 3.4442+-0.3955 ? 3.6086+-0.4517 ? might be 1.0477x slower assign-custom-setter 4.4948+-0.6149 ? 4.6045+-0.1211 ? might be 1.0244x slower basic-set 9.5898+-0.2172 ? 9.7019+-0.4752 ? might be 1.0117x slower big-int-mul 4.2476+-0.0231 ? 4.2749+-0.0544 ? boolean-test 3.2785+-0.3509 3.1678+-0.0555 might be 1.0350x faster branch-fold 3.9665+-0.1242 ? 4.1718+-0.2495 ? might be 1.0518x slower branch-on-string-as-boolean 20.8798+-1.4349 ? 21.4420+-1.6542 ? might be 1.0269x slower by-val-generic 8.3175+-0.2430 8.1008+-0.2063 might be 1.0267x faster call-spread-apply 31.7943+-1.4148 30.6744+-1.2583 might be 1.0365x faster call-spread-call 28.4733+-3.2890 26.0910+-1.2132 might be 1.0913x faster captured-assignments 0.5201+-0.0411 ? 0.5244+-0.0315 ? cast-int-to-double 5.3133+-0.0640 ? 5.3871+-0.1743 ? might be 1.0139x slower cell-argument 8.8143+-0.3961 ? 8.9379+-0.5941 ? might be 1.0140x slower cfg-simplify 2.9262+-0.0997 ? 3.1070+-0.4300 ? might be 1.0618x slower chain-getter-access 9.4799+-0.2662 ? 10.3308+-2.4842 ? might be 1.0898x slower cmpeq-obj-to-obj-other 12.5308+-1.0451 12.3457+-1.2009 might be 1.0150x faster constant-test 5.1180+-0.1499 5.1128+-0.1452 create-lots-of-functions 11.9613+-0.5257 11.6611+-0.3488 might be 1.0257x faster cse-new-array-buffer 2.6289+-0.2152 2.5493+-0.0377 might be 1.0312x faster cse-new-array 2.7060+-0.1238 ? 2.7336+-0.1666 ? might be 1.0102x slower DataView-custom-properties 43.2959+-1.7895 42.8274+-1.4969 might be 1.0109x faster deconstructing-parameters-overridden-by-function 0.6073+-0.0723 ? 0.6098+-0.0724 ? delay-tear-off-arguments-strictmode 14.7008+-0.4581 ? 14.9596+-0.7625 ? might be 1.0176x slower deltablue-varargs 214.7441+-2.7793 ^ 208.2834+-2.4455 ^ definitely 1.0310x faster destructuring-arguments 17.4799+-0.2621 ? 17.7035+-1.1765 ? might be 1.0128x slower destructuring-swap 5.1204+-0.0825 ? 5.3871+-0.4405 ? might be 1.0521x slower direct-arguments-getbyval 1.3741+-0.1787 1.3575+-0.1039 might be 1.0122x faster div-boolean-double 5.2666+-0.0183 ? 5.4085+-0.1748 ? might be 1.0269x slower div-boolean 7.9165+-0.1262 ? 8.0062+-0.2171 ? might be 1.0113x slower double-get-by-val-out-of-bounds 4.7349+-0.2299 4.6386+-0.1325 might be 1.0208x faster double-pollution-getbyval 8.9498+-0.1430 ? 9.0498+-0.1603 ? might be 1.0112x slower double-pollution-putbyoffset 4.4456+-0.0673 ? 4.5197+-0.1755 ? might be 1.0166x slower double-real-use 39.1786+-1.8233 ^ 30.8531+-1.8957 ^ definitely 1.2698x faster double-to-int32-typed-array-no-inline 2.5629+-0.1765 ? 2.7885+-0.3717 ? might be 1.0880x slower double-to-int32-typed-array 2.0853+-0.1308 ? 2.1274+-0.2535 ? might be 1.0202x slower double-to-uint32-typed-array-no-inline 2.7319+-0.3297 2.7048+-0.2044 might be 1.0100x faster double-to-uint32-typed-array 2.1392+-0.1100 ? 2.2248+-0.2762 ? might be 1.0400x slower elidable-new-object-dag 44.7008+-2.3656 ? 45.1475+-2.2248 ? elidable-new-object-roflcopter 44.3101+-0.4757 ? 44.7950+-1.1877 ? might be 1.0109x slower elidable-new-object-then-call 41.0045+-2.0075 40.3546+-1.4403 might be 1.0161x faster elidable-new-object-tree 46.8196+-1.9683 46.2384+-1.3045 might be 1.0126x faster empty-string-plus-int 5.7489+-0.4892 5.6980+-0.3887 emscripten-cube2hash 39.5624+-1.8832 ? 39.7053+-2.8232 ? exit-length-on-plain-object 15.1968+-0.9972 15.0829+-1.3701 external-arguments-getbyval 1.3080+-0.0767 ? 1.3283+-0.1358 ? might be 1.0155x slower external-arguments-putbyval 2.4663+-0.0725 ? 2.5273+-0.2738 ? might be 1.0247x slower fixed-typed-array-storage-var-index 1.2515+-0.0646 ? 1.2721+-0.1496 ? might be 1.0165x slower fixed-typed-array-storage 0.9309+-0.0596 ? 1.0026+-0.2316 ? might be 1.0771x slower Float32Array-matrix-mult 4.5619+-0.1972 ? 4.6108+-0.3491 ? might be 1.0107x slower Float32Array-to-Float64Array-set 57.3800+-1.6022 ^ 53.8384+-1.2295 ^ definitely 1.0658x faster Float64Array-alloc-long-lived 86.8374+-1.3782 ? 88.6209+-2.6563 ? might be 1.0205x slower Float64Array-to-Int16Array-set 70.5072+-1.2068 70.1819+-2.0211 fold-double-to-int 14.4996+-1.4479 14.2610+-1.1076 might be 1.0167x faster fold-get-by-id-to-multi-get-by-offset-rare-int 10.5252+-0.3477 9.8842+-0.9565 might be 1.0649x faster fold-get-by-id-to-multi-get-by-offset 10.8769+-1.3505 10.2194+-0.8194 might be 1.0643x faster fold-multi-get-by-offset-to-get-by-offset 9.7946+-0.5263 ? 10.5529+-0.7976 ? might be 1.0774x slower fold-multi-get-by-offset-to-poly-get-by-offset 10.3841+-0.7463 9.4507+-0.7456 might be 1.0988x faster fold-multi-put-by-offset-to-poly-put-by-offset 10.3845+-0.7569 ? 10.6707+-1.3360 ? might be 1.0276x slower fold-multi-put-by-offset-to-put-by-offset 7.6596+-0.4136 6.1729+-1.2491 might be 1.2408x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 10.1639+-0.4948 ? 10.3641+-0.9431 ? might be 1.0197x slower fold-put-by-id-to-multi-put-by-offset 10.8777+-1.3103 10.1400+-0.7171 might be 1.0728x faster fold-put-structure 6.8127+-1.6188 ? 8.1930+-0.9459 ? might be 1.2026x slower for-of-iterate-array-entries 4.7464+-0.2574 4.6472+-0.1876 might be 1.0213x faster for-of-iterate-array-keys 4.0723+-0.2996 3.9709+-0.4581 might be 1.0255x faster for-of-iterate-array-values 3.7769+-0.2057 3.6478+-0.1476 might be 1.0354x faster fround 21.3029+-1.2740 20.8685+-0.5585 might be 1.0208x faster ftl-library-inlining-dataview 64.6773+-1.0438 ? 66.2338+-1.7576 ? might be 1.0241x slower ftl-library-inlining 75.7161+-18.2590 ? 76.7194+-14.5666 ? might be 1.0133x slower function-dot-apply 2.3244+-0.1769 ? 2.3845+-0.2273 ? might be 1.0259x slower function-test 2.9386+-0.0986 ? 3.1374+-0.4538 ? might be 1.0676x slower function-with-eval 105.0135+-4.8879 ? 105.1054+-4.5495 ? gcse-poly-get-less-obvious 18.0062+-0.3045 ? 19.2136+-1.4151 ? might be 1.0671x slower gcse-poly-get 21.7950+-1.2984 20.8569+-2.3297 might be 1.0450x faster gcse 4.5926+-0.3118 4.5278+-0.3258 might be 1.0143x faster get-by-id-bimorphic-check-structure-elimination-simple 2.7787+-0.0358 ? 2.8595+-0.0911 ? might be 1.0291x slower get-by-id-bimorphic-check-structure-elimination 6.2432+-0.2184 ? 6.3842+-0.3752 ? might be 1.0226x slower get-by-id-chain-from-try-block 6.8829+-0.7322 6.7402+-0.2689 might be 1.0212x faster get-by-id-check-structure-elimination 5.2436+-0.1873 ? 5.4378+-0.6713 ? might be 1.0370x slower get-by-id-proto-or-self 19.5225+-2.1985 19.0816+-1.3728 might be 1.0231x faster get-by-id-quadmorphic-check-structure-elimination-simple 3.1508+-0.1719 ? 3.1845+-0.3532 ? might be 1.0107x slower get-by-id-self-or-proto 19.3795+-1.6346 19.3105+-2.0013 get-by-val-out-of-bounds 4.5187+-0.0898 4.5018+-0.1283 get_callee_monomorphic 3.1096+-0.3292 ? 3.1187+-0.2847 ? get_callee_polymorphic 3.8514+-0.1523 ? 3.8957+-0.3576 ? might be 1.0115x slower getter-no-activation 5.1573+-0.2709 ? 5.1873+-0.2737 ? getter-prototype 15.5717+-1.4198 15.4470+-0.8811 getter-richards 122.4377+-6.3844 ? 127.9659+-11.7732 ? might be 1.0452x slower getter 5.8061+-0.7873 ? 6.5084+-0.8060 ? might be 1.1210x slower global-var-const-infer-fire-from-opt 0.9237+-0.0748 ? 0.9508+-0.0335 ? might be 1.0292x slower global-var-const-infer 1.0044+-0.2326 0.9635+-0.1915 might be 1.0424x faster HashMap-put-get-iterate-keys 31.9761+-2.3091 30.5245+-3.2805 might be 1.0476x faster HashMap-put-get-iterate 33.8839+-1.6019 32.6040+-0.7785 might be 1.0393x faster HashMap-string-put-get-iterate 32.9646+-1.3268 ? 33.0186+-2.2479 ? hoist-make-rope 13.2138+-0.5259 ^ 11.7207+-0.3643 ^ definitely 1.1274x faster hoist-poly-check-structure-effectful-loop 5.1246+-0.0401 5.1134+-0.1054 hoist-poly-check-structure 3.7417+-0.0490 ? 3.7914+-0.0514 ? might be 1.0133x slower imul-double-only 8.9388+-0.6346 ? 9.0351+-0.6244 ? might be 1.0108x slower imul-int-only 10.1606+-1.0664 10.0148+-0.6802 might be 1.0146x faster imul-mixed 8.3631+-0.8105 ? 8.8562+-1.4634 ? might be 1.0590x slower in-four-cases 22.4516+-0.2337 ? 24.4944+-4.0805 ? might be 1.0910x slower in-one-case-false 11.1368+-0.1508 ? 12.2178+-1.5564 ? might be 1.0971x slower in-one-case-true 11.2594+-0.4072 ? 11.2805+-0.3854 ? in-two-cases 11.6828+-0.1881 11.6370+-0.0706 indexed-properties-in-objects 3.0941+-0.3590 2.9584+-0.0428 might be 1.0459x faster infer-closure-const-then-mov-no-inline 4.2793+-0.3960 4.0385+-0.1232 might be 1.0596x faster infer-closure-const-then-mov 19.8404+-0.3855 ? 20.0677+-0.3620 ? might be 1.0115x slower infer-closure-const-then-put-to-scope-no-inline 13.4953+-1.0339 13.0972+-0.7097 might be 1.0304x faster infer-closure-const-then-put-to-scope 22.2641+-1.1405 ? 23.1667+-1.6480 ? might be 1.0405x slower infer-closure-const-then-reenter-no-inline 54.4719+-0.5209 ? 56.2917+-2.8050 ? might be 1.0334x slower infer-closure-const-then-reenter 23.5198+-1.4825 22.5830+-0.9684 might be 1.0415x faster infer-constant-global-property 3.6351+-0.1083 3.6045+-0.0644 infer-constant-property 2.7953+-0.0392 ? 2.8058+-0.1099 ? infer-one-time-closure-ten-vars 13.1030+-0.9390 12.7433+-0.8129 might be 1.0282x faster infer-one-time-closure-two-vars 12.1914+-0.3297 12.0424+-0.3273 might be 1.0124x faster infer-one-time-closure 12.1316+-0.2544 ? 12.4941+-0.9584 ? might be 1.0299x slower infer-one-time-deep-closure 21.2563+-1.2864 ? 22.1341+-1.7041 ? might be 1.0413x slower inline-arguments-access 4.8317+-0.4726 4.6950+-0.2604 might be 1.0291x faster inline-arguments-aliased-access 4.6918+-0.0734 ? 4.8013+-0.2213 ? might be 1.0233x slower inline-arguments-local-escape 4.9218+-0.3120 4.7498+-0.1426 might be 1.0362x faster inline-get-scoped-var 5.0800+-0.2111 ? 5.1424+-0.3498 ? might be 1.0123x slower inlined-put-by-id-transition 12.0632+-1.0561 11.8208+-0.4582 might be 1.0205x faster int-or-other-abs-then-get-by-val 5.0432+-0.0761 ? 5.1066+-0.1840 ? might be 1.0126x slower int-or-other-abs-zero-then-get-by-val 17.4413+-0.4036 ? 18.5194+-1.3740 ? might be 1.0618x slower int-or-other-add-then-get-by-val 4.4347+-0.0825 ? 4.5955+-0.3175 ? might be 1.0363x slower int-or-other-add 5.3702+-0.0278 ? 5.8728+-0.9776 ? might be 1.0936x slower int-or-other-div-then-get-by-val 4.3114+-0.0669 ? 4.3470+-0.1079 ? int-or-other-max-then-get-by-val 4.5511+-0.2799 4.3501+-0.0323 might be 1.0462x faster int-or-other-min-then-get-by-val 4.5540+-0.3184 ? 4.5587+-0.3321 ? int-or-other-mod-then-get-by-val 3.9918+-0.0814 ? 4.2338+-0.2763 ? might be 1.0606x slower int-or-other-mul-then-get-by-val 4.0608+-0.1752 4.0204+-0.1237 might be 1.0100x faster int-or-other-neg-then-get-by-val 5.0430+-0.2364 4.8081+-0.0107 might be 1.0489x faster int-or-other-neg-zero-then-get-by-val 17.6216+-0.2645 ? 17.9727+-0.3929 ? might be 1.0199x slower int-or-other-sub-then-get-by-val 4.4516+-0.0919 ? 4.5013+-0.2086 ? might be 1.0112x slower int-or-other-sub 3.7262+-0.1549 ? 3.7862+-0.3329 ? might be 1.0161x slower int-overflow-local 4.6991+-0.1066 ? 5.2985+-1.8016 ? might be 1.1275x slower Int16Array-alloc-long-lived 53.2579+-1.2255 ? 53.4637+-1.4634 ? Int16Array-bubble-sort-with-byteLength 20.8310+-1.3066 20.3810+-0.1387 might be 1.0221x faster Int16Array-bubble-sort 20.9899+-1.5208 ? 21.4960+-0.4231 ? might be 1.0241x slower Int16Array-load-int-mul 1.5481+-0.0248 ? 1.5492+-0.0581 ? Int16Array-to-Int32Array-set 58.5953+-2.1180 ! 87.0462+-2.0388 ! definitely 1.4855x slower Int32Array-alloc-large 24.0928+-0.7134 23.7636+-0.8337 might be 1.0139x faster Int32Array-alloc-long-lived 64.6822+-1.2487 63.9060+-1.4974 might be 1.0121x faster Int32Array-alloc 3.4528+-0.1495 ? 3.5756+-0.2745 ? might be 1.0356x slower Int32Array-Int8Array-view-alloc 7.3626+-0.9694 6.6453+-0.1471 might be 1.1079x faster int52-spill 5.8572+-0.0881 ! 6.6057+-0.2007 ! definitely 1.1278x slower Int8Array-alloc-long-lived 47.5931+-0.9026 ? 47.8157+-1.1874 ? Int8Array-load-with-byteLength 3.4464+-0.0892 3.4091+-0.0603 might be 1.0109x faster Int8Array-load 3.4590+-0.0989 ? 3.5804+-0.4295 ? might be 1.0351x slower integer-divide 11.1394+-0.2960 10.9485+-0.1081 might be 1.0174x faster integer-modulo 2.1705+-0.1468 2.1366+-0.1366 might be 1.0158x faster is-boolean-fold-tricky 4.5005+-0.0733 ? 4.7784+-0.2219 ? might be 1.0618x slower is-boolean-fold 2.9912+-0.2254 2.9220+-0.0554 might be 1.0237x faster is-function-fold-tricky-internal-function 11.9466+-0.1336 ? 12.4842+-0.9593 ? might be 1.0450x slower is-function-fold-tricky 4.6517+-0.1944 4.6147+-0.0594 is-function-fold 2.9396+-0.0610 ? 2.9736+-0.0606 ? might be 1.0116x slower is-number-fold-tricky 4.4688+-0.0638 ? 4.7042+-0.3811 ? might be 1.0527x slower is-number-fold 2.9264+-0.1368 ? 3.1362+-0.3365 ? might be 1.0717x slower is-object-or-null-fold-functions 2.9731+-0.0263 ? 3.0087+-0.0577 ? might be 1.0120x slower is-object-or-null-fold-less-tricky 4.9979+-0.5992 4.6989+-0.2243 might be 1.0636x faster is-object-or-null-fold-tricky 6.7910+-0.2055 6.7454+-0.1395 is-object-or-null-fold 2.9794+-0.1718 2.9431+-0.0445 might be 1.0123x faster is-object-or-null-trickier-function 4.7193+-0.2030 ? 4.7338+-0.1885 ? is-object-or-null-trickier-internal-function 13.0205+-1.1077 12.7615+-0.1580 might be 1.0203x faster is-object-or-null-tricky-function 4.7392+-0.1004 ? 4.7966+-0.3045 ? might be 1.0121x slower is-object-or-null-tricky-internal-function 9.5158+-0.1467 9.3372+-0.1174 might be 1.0191x faster is-string-fold-tricky 4.6525+-0.2771 4.5609+-0.0529 might be 1.0201x faster is-string-fold 2.9078+-0.0969 ? 3.1592+-0.3217 ? might be 1.0865x slower is-undefined-fold-tricky 3.9989+-0.4170 3.8263+-0.0715 might be 1.0451x faster is-undefined-fold 3.0665+-0.4244 3.0613+-0.3426 large-int-captured 4.7270+-0.0664 ? 5.0343+-0.3677 ? might be 1.0650x slower large-int-neg 16.1226+-0.1969 ? 18.4455+-5.2215 ? might be 1.1441x slower large-int 15.6311+-1.3657 14.6141+-0.2640 might be 1.0696x faster load-varargs-elimination 22.8688+-0.2632 ? 23.5152+-0.7849 ? might be 1.0283x slower logical-not-weird-types 3.3622+-0.0416 ? 3.3722+-0.1416 ? logical-not 4.6353+-0.0490 4.5875+-0.0528 might be 1.0104x faster lots-of-fields 12.6048+-0.3528 12.4803+-0.2305 make-indexed-storage 3.3081+-0.1141 3.2760+-0.0847 make-rope-cse 11.8657+-1.2716 11.5791+-0.9861 might be 1.0248x faster marsaglia-larger-ints 36.6383+-0.9094 ? 36.9322+-0.8724 ? marsaglia-osr-entry 24.8483+-3.2181 24.1886+-1.6482 might be 1.0273x faster math-with-out-of-bounds-array-values 24.6324+-0.2971 ? 25.6852+-1.9280 ? might be 1.0427x slower max-boolean 2.6772+-0.2922 2.6512+-0.3039 method-on-number 18.3747+-1.3804 17.7392+-0.7767 might be 1.0358x faster min-boolean 2.6519+-0.0752 2.6467+-0.2027 minus-boolean-double 3.3043+-0.1456 ? 3.3566+-0.2622 ? might be 1.0158x slower minus-boolean 2.5179+-0.2882 2.4880+-0.1529 might be 1.0120x faster misc-strict-eq 40.1883+-3.4439 39.7957+-2.0677 mod-boolean-double 11.0357+-0.2610 ? 11.2461+-0.4919 ? might be 1.0191x slower mod-boolean 8.0228+-0.2189 7.9757+-0.2379 mul-boolean-double 3.9513+-0.2687 3.8156+-0.0636 might be 1.0356x faster mul-boolean 3.0155+-0.0862 2.9323+-0.0505 might be 1.0283x faster neg-boolean 3.3316+-0.1652 3.2722+-0.1184 might be 1.0182x faster negative-zero-divide 0.4189+-0.0607 0.4084+-0.0371 might be 1.0256x faster negative-zero-modulo 0.3932+-0.0140 ? 0.4098+-0.0553 ? might be 1.0422x slower negative-zero-negate 0.3679+-0.0204 ? 0.3810+-0.0613 ? might be 1.0356x slower nested-function-parsing 40.9829+-2.8663 39.7147+-1.4549 might be 1.0319x faster new-array-buffer-dead 116.5228+-3.5705 114.8875+-3.6648 might be 1.0142x faster new-array-buffer-push 7.1389+-0.5711 ? 7.2685+-0.3968 ? might be 1.0182x slower new-array-dead 19.8783+-0.7806 19.4840+-0.4646 might be 1.0202x faster new-array-push 6.4842+-0.1715 ? 7.0729+-1.0964 ? might be 1.0908x slower no-inline-constructor 41.1329+-1.1680 ? 42.3153+-1.4673 ? might be 1.0287x slower number-test 3.3175+-0.3128 3.1242+-0.0769 might be 1.0619x faster object-closure-call 6.6723+-2.4675 ? 6.9599+-2.8078 ? might be 1.0431x slower object-test 2.9133+-0.0602 ? 3.0579+-0.2771 ? might be 1.0496x slower obvious-sink-pathology-taken 146.2438+-7.2540 145.1579+-7.3554 obvious-sink-pathology 133.9435+-2.6962 ? 134.6573+-6.6222 ? obviously-elidable-new-object 36.4064+-2.0877 35.3983+-1.4125 might be 1.0285x faster plus-boolean-arith 2.5663+-0.0334 ? 2.7342+-0.3410 ? might be 1.0654x slower plus-boolean-double 3.2665+-0.0768 ? 3.3694+-0.3092 ? might be 1.0315x slower plus-boolean 2.6465+-0.2831 2.5819+-0.2684 might be 1.0250x faster poly-chain-access-different-prototypes-simple 3.3791+-0.1125 ? 3.4765+-0.2635 ? might be 1.0288x slower poly-chain-access-different-prototypes 2.8866+-0.3795 2.6135+-0.0316 might be 1.1045x faster poly-chain-access-simpler 3.4803+-0.3513 ? 3.5109+-0.2623 ? poly-chain-access 2.6293+-0.0338 ? 2.6722+-0.0678 ? might be 1.0163x slower poly-stricteq 62.3378+-4.2474 61.3070+-2.8681 might be 1.0168x faster polymorphic-array-call 1.5722+-0.2331 ? 1.5788+-0.1851 ? polymorphic-get-by-id 3.3204+-0.2173 ? 3.3369+-0.2809 ? polymorphic-put-by-id 30.4176+-2.0487 ? 33.5857+-3.0898 ? might be 1.1042x slower polymorphic-structure 15.7642+-1.6749 ? 16.1063+-1.3548 ? might be 1.0217x slower polyvariant-monomorphic-get-by-id 8.8915+-0.7234 8.8010+-0.2973 might be 1.0103x faster proto-getter-access 9.2603+-0.1010 ? 9.4116+-0.1047 ? might be 1.0163x slower put-by-id-replace-and-transition 9.9561+-0.2371 ? 10.0173+-0.5196 ? put-by-id-slightly-polymorphic 3.0058+-0.3558 2.8665+-0.0209 might be 1.0486x faster put-by-id 13.1625+-0.7817 13.1198+-0.5997 put-by-val-direct 0.3978+-0.0234 ? 0.4090+-0.0201 ? might be 1.0281x slower put-by-val-large-index-blank-indexing-type 12.5117+-0.8008 ? 12.5155+-1.1926 ? put-by-val-machine-int 2.8490+-0.0573 ? 2.8655+-0.0459 ? rare-osr-exit-on-local 15.4760+-0.7914 ? 15.6964+-0.9254 ? might be 1.0142x slower register-pressure-from-osr 21.8500+-1.1353 21.4581+-0.2381 might be 1.0183x faster repeat-multi-get-by-offset 26.2705+-1.5164 25.5339+-1.5595 might be 1.0289x faster setter-prototype 10.3936+-0.0765 ? 10.6021+-0.2289 ? might be 1.0201x slower setter 6.4727+-1.1381 6.1420+-0.9220 might be 1.0538x faster simple-activation-demo 25.4780+-0.7757 ? 25.4843+-0.6526 ? simple-getter-access 12.0555+-0.5549 ? 12.1281+-0.5233 ? simple-poly-call-nested 8.4959+-0.4501 ? 8.5973+-0.5802 ? might be 1.0119x slower simple-poly-call 1.4036+-0.1996 ? 1.4580+-0.1725 ? might be 1.0388x slower sin-boolean 23.0189+-1.2927 ? 23.5117+-1.2151 ? might be 1.0214x slower singleton-scope 62.2816+-0.5644 ? 64.3267+-3.4082 ? might be 1.0328x slower sink-function 12.2345+-0.2793 ? 12.4375+-0.5234 ? might be 1.0166x slower sink-huge-activation 19.5452+-0.6955 19.4954+-1.6026 sinkable-new-object-dag 71.8970+-2.4000 ? 72.1729+-3.1456 ? sinkable-new-object-taken 53.4487+-4.3083 ? 53.4896+-3.7812 ? sinkable-new-object 41.0754+-1.8944 39.8442+-1.5570 might be 1.0309x faster slow-array-profile-convergence 2.9406+-0.1362 ? 3.1369+-0.4300 ? might be 1.0668x slower slow-convergence 2.7920+-0.1450 ? 3.1395+-0.4592 ? might be 1.1245x slower slow-ternaries 19.6669+-2.5399 ? 21.3606+-2.3525 ? might be 1.0861x slower sorting-benchmark 18.8436+-0.4924 18.7901+-0.2727 sparse-conditional 1.2684+-0.1808 1.2070+-0.0547 might be 1.0508x faster splice-to-remove 16.1900+-1.7071 16.1652+-1.9601 string-char-code-at 16.5265+-0.5441 ? 16.8091+-1.4586 ? might be 1.0171x slower string-concat-object 2.7056+-0.1068 ? 2.7931+-0.2133 ? might be 1.0323x slower string-concat-pair-object 2.7020+-0.1053 2.6384+-0.1148 might be 1.0241x faster string-concat-pair-simple 12.8510+-1.6452 12.1397+-0.5975 might be 1.0586x faster string-concat-simple 13.2045+-1.2903 12.7945+-1.2119 might be 1.0320x faster string-cons-repeat 8.9475+-1.0274 ? 9.0047+-1.2322 ? string-cons-tower 8.7348+-0.4938 ? 8.9245+-1.0792 ? might be 1.0217x slower string-equality 18.0052+-0.7431 ? 18.1871+-0.8178 ? might be 1.0101x slower string-get-by-val-big-char 7.9296+-1.5597 7.2378+-0.0583 might be 1.0956x faster string-get-by-val-out-of-bounds-insane 3.7111+-0.2049 3.6165+-0.0799 might be 1.0262x faster string-get-by-val-out-of-bounds 5.6405+-0.1309 5.6151+-0.1039 string-get-by-val 3.4892+-0.3435 ? 3.8206+-1.1454 ? might be 1.0950x slower string-hash 2.3642+-0.3967 2.2887+-0.2090 might be 1.0330x faster string-long-ident-equality 14.8783+-0.2863 14.7138+-0.2758 might be 1.0112x faster string-out-of-bounds 15.2030+-0.6894 ? 15.5404+-1.4605 ? might be 1.0222x slower string-repeat-arith 35.2340+-1.8705 34.7127+-2.2871 might be 1.0150x faster string-sub 67.1257+-1.4318 66.4390+-4.4738 might be 1.0103x faster string-test 3.0470+-0.1627 ? 3.1121+-0.1076 ? might be 1.0214x slower string-var-equality 32.1891+-0.4765 ? 33.4429+-1.2621 ? might be 1.0389x slower structure-hoist-over-transitions 2.8652+-0.2707 2.8005+-0.2231 might be 1.0231x faster substring-concat-weird 40.4087+-0.3936 ? 41.3549+-1.5362 ? might be 1.0234x slower substring-concat 43.0608+-0.6943 42.7293+-0.7460 substring 45.5489+-0.5227 ? 48.1099+-4.1626 ? might be 1.0562x slower switch-char-constant 3.1151+-0.4200 3.0975+-0.4064 switch-char 7.7828+-2.8346 ? 7.7878+-2.7107 ? switch-constant 8.7140+-0.6519 8.4566+-0.1854 might be 1.0304x faster switch-string-basic-big-var 18.3619+-0.2243 ? 18.8311+-0.3725 ? might be 1.0256x slower switch-string-basic-big 14.8380+-0.2850 ? 15.7090+-1.1136 ? might be 1.0587x slower switch-string-basic-var 15.4687+-0.5082 15.2678+-0.3530 might be 1.0132x faster switch-string-basic 13.5540+-0.2108 ? 13.6899+-0.2105 ? might be 1.0100x slower switch-string-big-length-tower-var 20.9254+-1.1904 ? 21.0904+-1.1275 ? switch-string-length-tower-var 15.8864+-0.3595 ? 16.3394+-0.7493 ? might be 1.0285x slower switch-string-length-tower 13.3218+-0.1852 13.1422+-0.1413 might be 1.0137x faster switch-string-short 13.4403+-0.6141 13.2874+-0.3013 might be 1.0115x faster switch 12.7922+-0.2465 12.7230+-0.1607 tear-off-arguments-simple 3.6452+-0.1268 ? 3.8313+-0.4198 ? might be 1.0510x slower tear-off-arguments 5.2900+-0.7428 4.8188+-0.0460 might be 1.0978x faster temporal-structure 12.2795+-0.4360 ? 12.3909+-0.3273 ? to-int32-boolean 14.1243+-1.1032 ? 14.4255+-0.5901 ? might be 1.0213x slower try-catch-get-by-val-cloned-arguments 15.5437+-1.2737 15.3269+-1.4182 might be 1.0141x faster try-catch-get-by-val-direct-arguments 6.8077+-0.1795 ? 7.3624+-1.2003 ? might be 1.0815x slower try-catch-get-by-val-scoped-arguments 8.2208+-1.1171 7.8603+-0.4170 might be 1.0459x faster typed-array-get-set-by-val-profiling 33.1695+-1.3411 ? 33.5614+-2.2356 ? might be 1.0118x slower undefined-property-access 344.8654+-6.1666 ? 345.0793+-5.0147 ? undefined-test 3.1023+-0.0744 ? 3.2363+-0.3026 ? might be 1.0432x slower unprofiled-licm 23.5878+-1.6899 23.3000+-0.8779 might be 1.0124x faster varargs-call 14.9572+-0.2133 ? 15.4218+-0.6636 ? might be 1.0311x slower varargs-construct-inline 28.0513+-0.4670 ? 28.5467+-1.0283 ? might be 1.0177x slower varargs-construct 23.1161+-0.9771 22.9963+-0.6595 varargs-inline 9.4993+-0.2461 ? 9.7183+-0.4031 ? might be 1.0231x slower varargs-strict-mode 10.3865+-0.4436 10.3680+-0.6278 varargs 10.2161+-0.3311 10.1215+-0.1238 weird-inlining-const-prop 3.4757+-0.2676 3.3995+-0.3688 might be 1.0224x faster <geometric> 9.0072+-0.0414 ? 9.0500+-0.0258 ? might be 1.0047x slower TipOfTree DoubleRealUse AsmBench: bigfib.cpp 527.3094+-43.0637 500.3729+-0.9951 might be 1.0538x faster cray.c 434.0237+-5.9763 427.9939+-4.5663 might be 1.0141x faster dry.c 489.8357+-6.7331 ? 497.7663+-29.8481 ? might be 1.0162x slower FloatMM.c 733.1705+-12.7840 ? 744.6158+-36.3405 ? might be 1.0156x slower gcc-loops.cpp 4298.8606+-33.0480 ? 4379.6672+-235.0977 ? might be 1.0188x slower n-body.c 1027.0808+-74.1027 1005.6156+-51.8324 might be 1.0213x faster Quicksort.c 429.9165+-21.9303 421.4313+-5.3643 might be 1.0201x faster stepanov_container.cpp 3629.3052+-12.1689 ? 3648.4669+-21.5411 ? Towers.c 265.9443+-7.6005 265.3615+-9.2464 <geometric> 809.8567+-14.0131 805.0211+-5.7733 might be 1.0060x faster TipOfTree DoubleRealUse CompressionBench: huffman 379.4922+-13.7496 ? 380.0467+-2.1474 ? arithmetic-simple 371.0971+-6.6682 370.0134+-3.8310 arithmetic-precise 283.1228+-3.1358 ? 285.7389+-10.3425 ? arithmetic-complex-precise 288.9532+-6.6155 283.2126+-3.6934 might be 1.0203x faster arithmetic-precise-order-0 390.1610+-19.3233 380.7223+-5.7522 might be 1.0248x faster arithmetic-precise-order-1 335.6155+-5.8232 332.9047+-5.6272 arithmetic-precise-order-2 371.9170+-7.0694 ? 374.6683+-14.0849 ? arithmetic-simple-order-1 446.9975+-34.3723 425.2524+-3.4415 might be 1.0511x faster arithmetic-simple-order-2 478.2733+-9.3357 ? 489.0075+-38.7198 ? might be 1.0224x slower lz-string 314.5315+-5.5190 ? 326.9615+-18.4241 ? might be 1.0395x slower <geometric> 360.9749+-1.4394 360.0230+-3.7051 might be 1.0026x faster TipOfTree DoubleRealUse Geomean of preferred means: <scaled-result> 63.4921+-0.2623 ^ 62.9351+-0.2809 ^ definitely 1.0089x faster
Filip Pizlo
Comment 5 2015-06-03 23:25:16 PDT
Created attachment 254252 [details] the best approach
WebKit Commit Bot
Comment 6 2015-06-03 23:26:42 PDT
Attachment 254252 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2099: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] Total errors found: 1 in 16 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 7 2015-06-04 13:06:00 PDT
(In reply to comment #6) > Attachment 254252 [details] did not pass style-queue: > > > ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2099: When wrapping > a line, only indent 4 spaces. [whitespace/indent] [3] > Total errors found: 1 in 16 files > > > If any of these errors are false positives, please file a bug against > check-webkit-style. Fixed.
Geoffrey Garen
Comment 8 2015-06-04 13:32:52 PDT
Comment on attachment 254252 [details] the best approach r=me
Filip Pizlo
Comment 9 2015-06-04 13:53:46 PDT
WebKit Commit Bot
Comment 10 2015-06-04 15:07:46 PDT
Re-opened since this is blocked by bug 145666
Filip Pizlo
Comment 11 2015-06-04 20:53:04 PDT
(In reply to comment #10) > Re-opened since this is blocked by bug 145666 Looks like it was an incorrect JIT assertion. Removing the assertion is the right fix. I'll reland shortly.
Filip Pizlo
Comment 12 2015-06-04 21:12:37 PDT
Created attachment 254338 [details] patch for relanding
Filip Pizlo
Comment 13 2015-06-04 22:00:10 PDT
Note You need to log in before you can comment on or make changes to this bug.