RESOLVED FIXED 145092
[JSC] When entering a CheckTierUp without OSREntry, force the CheckTierUp for the outer loops with OSR Entry
https://bugs.webkit.org/show_bug.cgi?id=145092
Summary [JSC] When entering a CheckTierUp without OSREntry, force the CheckTierUp for...
Benjamin Poulain
Reported 2015-05-15 22:38:25 PDT
[JSC] When entering a CheckTierUp without OSREntry, force the CheckTierUp for the outer loops with OSR Entry
Attachments
Patch (19.02 KB, patch)
2015-05-15 23:06 PDT, Benjamin Poulain
no flags
Patch (19.04 KB, patch)
2015-05-15 23:16 PDT, Benjamin Poulain
no flags
Benjamin Poulain
Comment 1 2015-05-15 23:06:18 PDT
Benjamin Poulain
Comment 2 2015-05-15 23:07:05 PDT
Conf#1 Conf#2 SunSpider: 3d-cube 7.4096+-0.4321 7.2295+-0.1111 might be 1.0249x faster 3d-morph 7.8741+-0.1753 ? 7.9550+-0.3005 ? might be 1.0103x slower 3d-raytrace 8.8748+-0.2838 8.7518+-0.2634 might be 1.0141x faster access-binary-trees 3.0294+-0.4368 ? 3.1710+-0.2458 ? might be 1.0468x slower access-fannkuch 8.3342+-0.1834 ? 8.3436+-0.2267 ? access-nbody 4.0822+-0.0964 ? 4.1282+-0.1061 ? might be 1.0113x slower access-nsieve 4.5242+-0.2813 4.3885+-0.1269 might be 1.0309x faster bitops-3bit-bits-in-byte 1.9634+-0.1456 1.8323+-0.1213 might be 1.0716x faster bitops-bits-in-byte 5.5760+-0.0646 5.5617+-0.0638 bitops-bitwise-and 2.6872+-0.3286 2.5275+-0.4685 might be 1.0632x faster bitops-nsieve-bits 4.1599+-0.1240 ? 4.2923+-0.1247 ? might be 1.0318x slower controlflow-recursive 2.9416+-0.0529 2.8656+-0.1007 might be 1.0265x faster crypto-aes 6.0355+-0.3085 6.0340+-0.2578 crypto-md5 3.6725+-0.1909 ? 3.7355+-0.2876 ? might be 1.0171x slower crypto-sha1 3.3675+-0.1658 3.2496+-0.1339 might be 1.0363x faster date-format-tofte 12.3451+-0.4289 ? 12.3464+-0.7354 ? date-format-xparb 7.3520+-0.1714 ? 7.7325+-0.5321 ? might be 1.0518x slower math-cordic 4.2152+-0.0703 ? 4.2251+-0.0392 ? math-partial-sums 9.2520+-0.2259 9.0646+-0.1921 might be 1.0207x faster math-spectral-norm 2.9468+-0.1743 2.9208+-0.1529 regexp-dna 9.4365+-0.4021 9.4285+-0.6929 string-base64 6.1243+-0.3377 ? 6.1534+-0.2686 ? string-fasta 9.1610+-0.3489 ? 9.2357+-0.6859 ? string-tagcloud 12.5499+-0.1709 ? 13.0637+-0.5248 ? might be 1.0409x slower string-unpack-code 26.9385+-1.0011 ? 28.3401+-2.4999 ? might be 1.0520x slower string-validate-input 6.7728+-0.2807 6.7043+-0.2554 might be 1.0102x faster <arithmetic> 6.9856+-0.0279 ? 7.0493+-0.1514 ? might be 1.0091x slower Conf#1 Conf#2 LongSpider: 3d-cube 1268.0212+-7.4885 ? 1272.5211+-21.0230 ? 3d-morph 1873.6866+-2.3872 1872.7179+-0.3717 3d-raytrace 1044.4565+-6.7884 1040.5856+-4.4081 access-binary-trees 1380.8423+-9.5336 1377.9116+-2.5945 access-fannkuch 443.9774+-25.1541 ? 456.6666+-33.7031 ? might be 1.0286x slower access-nbody 1038.7339+-1.0117 1038.0443+-1.3889 access-nsieve 675.2741+-9.5097 673.0815+-8.2942 bitops-3bit-bits-in-byte 50.4523+-0.3199 ? 51.2123+-1.0412 ? might be 1.0151x slower bitops-bits-in-byte 342.6328+-4.6170 335.3754+-12.7133 might be 1.0216x faster bitops-nsieve-bits 627.5229+-3.7500 ? 629.0696+-5.6238 ? controlflow-recursive 704.6216+-1.7479 ? 711.0287+-5.2002 ? crypto-aes 934.9258+-4.7238 932.8550+-11.5641 crypto-md5 679.8302+-7.2845 678.2703+-7.9047 crypto-sha1 915.9385+-2.7019 ? 916.5547+-5.3382 ? date-format-tofte 986.4698+-25.6638 970.1834+-29.2711 might be 1.0168x faster date-format-xparb 1006.0831+-32.7056 1005.1788+-17.6326 math-cordic 672.9966+-1.3803 ? 673.1827+-2.7542 ? math-partial-sums 1063.6277+-2.4464 ? 1066.1705+-0.4335 ? math-spectral-norm 1073.1489+-1.2558 ? 1074.0620+-2.4636 ? string-base64 485.8058+-2.1626 ? 490.2803+-5.8771 ? string-fasta 597.7646+-2.3193 ! 610.3297+-7.1476 ! definitely 1.0210x slower string-tagcloud 276.0377+-2.6581 273.9587+-2.5604 <geometric> 690.5534+-2.9513 ? 691.5118+-4.7578 ? might be 1.0014x slower Conf#1 Conf#2 V8Spider: crypto 73.0366+-0.7141 72.9620+-1.1089 deltablue 89.8962+-1.8999 ? 91.3795+-3.9843 ? might be 1.0165x slower earley-boyer 62.6042+-0.6684 ? 62.8981+-0.7167 ? raytrace 41.1804+-0.6308 40.4802+-2.7896 might be 1.0173x faster regexp 110.2186+-0.4657 ? 112.0044+-1.5653 ? might be 1.0162x slower richards 101.2618+-7.0370 100.6540+-3.6778 splay 52.3573+-3.2217 50.0626+-5.0468 might be 1.0458x faster <geometric> 71.8442+-1.1007 71.5029+-0.6859 might be 1.0048x faster Conf#1 Conf#2 Octane: encrypt 0.30776+-0.00040 ? 0.31168+-0.01168 ? might be 1.0127x slower decrypt 5.68525+-0.08538 5.65907+-0.00341 deltablue x2 0.26863+-0.00917 0.26766+-0.00912 earley 0.64525+-0.00123 0.64506+-0.00309 boyer 10.44943+-0.03030 10.41606+-0.07009 navier-stokes x2 6.39014+-0.01320 6.38707+-0.00863 raytrace x2 1.73498+-0.07933 ? 1.74529+-0.12279 ? richards x2 0.16801+-0.00494 0.16639+-0.00440 splay x2 0.54389+-0.00704 ? 0.54517+-0.00430 ? regexp x2 42.34250+-0.33029 ? 42.64431+-0.40393 ? pdfjs x2 57.93497+-0.13332 57.93039+-0.20377 mandreel x2 69.54558+-0.63641 ? 69.64517+-0.64704 ? gbemu x2 59.73309+-0.83850 ? 59.76650+-1.21648 ? closure 0.75760+-0.00357 ? 0.75937+-0.00498 ? jquery 9.45755+-0.02425 9.43707+-0.05357 box2d x2 17.45292+-0.16513 17.38255+-0.07527 zlib x2 546.97654+-11.14701 534.28184+-43.11547 might be 1.0238x faster typescript x2 1079.12885+-30.22092 ? 1082.95648+-27.75814 ? <geometric> 9.14683+-0.03390 9.13502+-0.09445 might be 1.0013x faster Conf#1 Conf#2 Kraken: ai-astar 482.243+-12.438 ^ 346.427+-1.074 ^ definitely 1.3920x faster audio-beat-detection 147.332+-1.911 ? 147.907+-2.737 ? audio-dft 143.395+-4.087 ? 143.926+-3.885 ? audio-fft 116.386+-7.577 111.155+-0.859 might be 1.0471x faster audio-oscillator 97.463+-1.043 97.060+-0.500 imaging-darkroom 140.253+-2.540 139.450+-0.320 imaging-desaturate 94.622+-0.433 94.419+-0.361 imaging-gaussian-blur 147.111+-0.734 147.086+-0.712 json-parse-financial 65.643+-1.555 ? 66.186+-0.651 ? json-stringify-tinderbox 43.159+-0.039 ? 43.358+-0.275 ? stanford-crypto-aes 81.284+-0.741 ? 82.970+-1.679 ? might be 1.0207x slower stanford-crypto-ccm 70.367+-4.351 68.662+-2.061 might be 1.0248x faster stanford-crypto-pbkdf2 160.158+-4.868 158.283+-1.684 might be 1.0118x faster stanford-crypto-sha256-iterative 63.869+-0.744 63.549+-0.280 <arithmetic> 132.378+-0.679 ^ 122.174+-0.180 ^ definitely 1.0835x faster Conf#1 Conf#2 JSRegress: abs-boolean 3.7422+-0.1309 3.7372+-0.2595 adapt-to-double-divide 17.8514+-0.5351 ? 18.0812+-0.4517 ? might be 1.0129x slower aliased-arguments-getbyval 1.6255+-0.3316 ? 1.7136+-0.2224 ? might be 1.0542x slower allocate-big-object 3.9202+-0.3838 3.4868+-0.1403 might be 1.1243x faster arguments-named-and-reflective 13.7587+-0.3791 13.7529+-0.3428 arguments-out-of-bounds 17.9221+-0.2008 ? 18.1804+-0.2191 ? might be 1.0144x slower arguments-strict-mode 12.1758+-0.8507 ? 12.4395+-0.2778 ? might be 1.0217x slower arguments 10.6910+-0.4041 ? 10.8334+-0.3925 ? might be 1.0133x slower arity-mismatch-inlining 1.1241+-0.0747 ? 1.1693+-0.1470 ? might be 1.0402x slower array-access-polymorphic-structure 9.2833+-0.2092 9.2592+-0.1446 array-nonarray-polymorhpic-access 47.8260+-4.0733 44.8722+-1.5713 might be 1.0658x faster array-prototype-every 118.2007+-3.7282 118.0327+-6.1622 array-prototype-forEach 115.1426+-2.7295 114.4564+-3.7227 array-prototype-map 129.4517+-5.0508 ? 130.3257+-3.9208 ? array-prototype-some 117.3803+-3.3255 116.2163+-4.0940 might be 1.0100x faster array-splice-contiguous 56.9510+-1.1477 ? 58.2750+-2.1221 ? might be 1.0232x slower array-with-double-add 5.5500+-0.0843 5.5248+-0.2637 array-with-double-increment 4.1963+-0.1133 ? 4.1990+-0.0825 ? array-with-double-mul-add 7.7622+-0.1199 ? 8.1044+-0.3582 ? might be 1.0441x slower array-with-double-sum 4.3704+-0.2163 ? 4.4834+-0.2341 ? might be 1.0259x slower array-with-int32-add-sub 9.4347+-0.4075 ? 9.6816+-0.1991 ? might be 1.0262x slower array-with-int32-or-double-sum 4.4847+-0.0707 4.4403+-0.1444 might be 1.0100x faster ArrayBuffer-DataView-alloc-large-long-lived 46.4658+-0.8514 ? 47.0073+-2.4632 ? might be 1.0117x slower ArrayBuffer-DataView-alloc-long-lived 18.6667+-0.6113 18.5284+-0.2182 ArrayBuffer-Int32Array-byteOffset 5.2388+-0.1988 5.2250+-0.2455 ArrayBuffer-Int8Array-alloc-large-long-lived 48.7741+-1.2937 ? 50.0892+-1.7502 ? might be 1.0270x slower ArrayBuffer-Int8Array-alloc-long-lived-buffer 30.5464+-0.6689 ? 30.8710+-0.5036 ? might be 1.0106x slower ArrayBuffer-Int8Array-alloc-long-lived 17.7871+-0.2103 ? 18.6082+-2.9255 ? might be 1.0462x slower ArrayBuffer-Int8Array-alloc 14.8199+-0.2183 ? 14.8277+-0.6256 ? asmjs_bool_bug 8.5380+-0.1052 8.4977+-0.1466 assign-custom-setter-polymorphic 4.2233+-0.0328 ? 4.4238+-0.2830 ? might be 1.0475x slower assign-custom-setter 5.7774+-0.2053 5.6968+-0.1148 might be 1.0142x faster basic-set 11.7647+-0.7079 11.3712+-0.7750 might be 1.0346x faster big-int-mul 6.0403+-0.6120 5.8502+-0.0879 might be 1.0325x faster boolean-test 4.2919+-0.0918 4.1660+-0.1545 might be 1.0302x faster branch-fold 4.7460+-0.0799 ? 4.7581+-0.1146 ? branch-on-string-as-boolean 23.2715+-1.0278 22.9630+-0.5241 might be 1.0134x faster by-val-generic 10.5383+-0.1576 10.4403+-0.1065 call-spread-apply 38.2026+-1.6316 ? 38.3565+-1.9117 ? call-spread-call 31.6150+-0.6764 ? 32.2588+-2.8897 ? might be 1.0204x slower captured-assignments 0.6319+-0.1442 0.5405+-0.0113 might be 1.1692x faster cast-int-to-double 8.1635+-0.2214 8.1583+-0.4559 cell-argument 9.8698+-0.4333 9.6938+-0.4508 might be 1.0182x faster cfg-simplify 3.7433+-0.1199 3.7227+-0.1917 chain-getter-access 11.2462+-0.3212 ? 11.4217+-0.3413 ? might be 1.0156x slower cmpeq-obj-to-obj-other 12.1963+-0.2526 ? 12.2415+-0.6957 ? constant-test 7.7679+-0.4227 7.7180+-0.1767 create-lots-of-functions 16.5130+-0.2008 ? 16.8088+-0.6934 ? might be 1.0179x slower DataView-custom-properties 54.4031+-5.0640 53.6191+-2.0809 might be 1.0146x faster deconstructing-parameters-overridden-by-function 0.6790+-0.1700 ? 0.7104+-0.1404 ? might be 1.0463x slower delay-tear-off-arguments-strictmode 18.7840+-0.4651 18.6525+-0.5725 deltablue-varargs 267.0200+-5.7302 266.0157+-1.7043 destructuring-arguments 23.0815+-0.4349 22.8698+-0.3055 destructuring-swap 7.7483+-0.0567 ? 7.8548+-0.1780 ? might be 1.0137x slower direct-arguments-getbyval 1.6967+-0.2582 ? 1.7043+-0.2095 ? div-boolean-double 5.5460+-0.1491 5.4739+-0.3141 might be 1.0132x faster div-boolean 9.7258+-0.1758 ? 9.8068+-0.0968 ? double-get-by-val-out-of-bounds 5.9543+-0.2852 5.9047+-0.1158 double-pollution-getbyval 9.6517+-0.2926 9.6313+-0.2419 double-pollution-putbyoffset 5.7720+-0.2998 5.6910+-0.3937 might be 1.0142x faster double-to-int32-typed-array-no-inline 2.9440+-0.1380 2.8777+-0.0815 might be 1.0230x faster double-to-int32-typed-array 2.5878+-0.2392 2.5701+-0.2110 double-to-uint32-typed-array-no-inline 2.9845+-0.2631 ? 3.0284+-0.2026 ? might be 1.0147x slower double-to-uint32-typed-array 2.6552+-0.1209 ? 2.6928+-0.1681 ? might be 1.0142x slower elidable-new-object-dag 55.6988+-1.5605 55.5293+-1.1679 elidable-new-object-roflcopter 57.3250+-1.1781 ? 57.4745+-1.4374 ? elidable-new-object-then-call 52.1206+-0.8916 ? 52.9622+-3.3101 ? might be 1.0161x slower elidable-new-object-tree 63.1033+-1.2722 ? 63.8928+-1.7384 ? might be 1.0125x slower empty-string-plus-int 7.4193+-0.3821 ? 7.4338+-0.3608 ? emscripten-cube2hash 44.5948+-0.6836 ? 45.1779+-1.8574 ? might be 1.0131x slower exit-length-on-plain-object 18.4332+-0.2368 ? 19.5961+-1.0439 ? might be 1.0631x slower external-arguments-getbyval 1.6359+-0.1753 ? 1.7571+-0.1755 ? might be 1.0741x slower external-arguments-putbyval 3.2233+-0.1448 ? 3.3232+-0.1647 ? might be 1.0310x slower fixed-typed-array-storage-var-index 1.5100+-0.1541 ? 1.5546+-0.0161 ? might be 1.0295x slower fixed-typed-array-storage 1.2036+-0.1331 1.1685+-0.1303 might be 1.0300x faster Float32Array-matrix-mult 6.5128+-0.5359 5.9775+-0.1383 might be 1.0895x faster Float32Array-to-Float64Array-set 71.4758+-2.9792 ? 72.0480+-0.3647 ? Float64Array-alloc-long-lived 90.7786+-0.4999 ? 91.2631+-0.1590 ? Float64Array-to-Int16Array-set 97.9057+-2.8249 ^ 92.1890+-1.0313 ^ definitely 1.0620x faster fold-double-to-int 19.2197+-0.1867 ? 19.2540+-0.7911 ? fold-get-by-id-to-multi-get-by-offset-rare-int 11.0966+-0.4366 ? 11.1602+-0.9253 ? fold-get-by-id-to-multi-get-by-offset 9.0608+-0.3661 8.9490+-0.3568 might be 1.0125x faster fold-multi-get-by-offset-to-get-by-offset 7.8362+-0.9115 ? 8.0537+-1.0908 ? might be 1.0278x slower fold-multi-get-by-offset-to-poly-get-by-offset 8.4352+-0.8557 ? 8.5040+-0.1276 ? fold-multi-put-by-offset-to-poly-put-by-offset 7.7589+-0.7450 7.7160+-0.6720 fold-multi-put-by-offset-to-put-by-offset 6.6730+-0.2324 6.2821+-0.8816 might be 1.0622x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 13.2521+-1.1814 13.0448+-0.5962 might be 1.0159x faster fold-put-by-id-to-multi-put-by-offset 8.9363+-0.7300 ? 8.9927+-0.7870 ? fold-put-structure 6.3957+-0.6712 6.2534+-0.6633 might be 1.0228x faster for-of-iterate-array-entries 6.1273+-0.1584 6.1070+-0.3324 for-of-iterate-array-keys 4.8741+-0.1127 ? 5.0315+-0.2891 ? might be 1.0323x slower for-of-iterate-array-values 4.6542+-0.1177 ? 5.0082+-0.4648 ? might be 1.0760x slower fround 23.3628+-0.2423 22.5988+-0.6350 might be 1.0338x faster ftl-library-inlining-dataview 89.9639+-2.3532 89.7096+-1.4120 ftl-library-inlining 83.9793+-0.3680 ? 84.2917+-0.4779 ? function-dot-apply 2.7266+-0.2017 2.7253+-0.1046 function-test 4.3962+-0.0109 4.3405+-0.1609 might be 1.0128x faster function-with-eval 134.9413+-0.4916 ? 135.8190+-2.0134 ? gcse-poly-get-less-obvious 24.7675+-0.2478 ? 24.9218+-0.5324 ? gcse-poly-get 24.8823+-0.5430 24.5759+-0.1013 might be 1.0125x faster gcse 6.5655+-0.0387 6.5611+-0.1232 get-by-id-bimorphic-check-structure-elimination-simple 3.2735+-0.0807 3.1830+-0.0773 might be 1.0284x faster get-by-id-bimorphic-check-structure-elimination 8.3607+-0.1596 ? 8.6699+-0.9563 ? might be 1.0370x slower get-by-id-chain-from-try-block 11.3790+-0.1820 11.3723+-0.2485 get-by-id-check-structure-elimination 7.5605+-0.1263 7.5060+-0.2236 get-by-id-proto-or-self 22.2900+-0.2937 ? 25.0308+-4.0392 ? might be 1.1230x slower get-by-id-quadmorphic-check-structure-elimination-simple 4.1202+-0.4394 3.9293+-0.1963 might be 1.0486x faster get-by-id-self-or-proto 23.6880+-3.4584 ? 25.3682+-3.8392 ? might be 1.0709x slower get-by-val-out-of-bounds 5.9632+-0.3026 5.8264+-0.2601 might be 1.0235x faster get_callee_monomorphic 3.7885+-0.3248 ? 3.8502+-0.1745 ? might be 1.0163x slower get_callee_polymorphic 4.6920+-0.2669 ? 4.7850+-0.2264 ? might be 1.0198x slower getter-no-activation 5.8248+-0.1261 5.7660+-0.1701 might be 1.0102x faster getter-richards 133.0975+-7.6090 ? 133.5500+-6.1166 ? getter 7.2609+-0.1388 7.1865+-0.0947 might be 1.0104x faster global-var-const-infer-fire-from-opt 1.2928+-0.0951 1.2153+-0.1549 might be 1.0638x faster global-var-const-infer 1.1158+-0.2873 ? 1.2031+-0.1981 ? might be 1.0782x slower HashMap-put-get-iterate-keys 33.2063+-0.2256 ? 33.4995+-0.9418 ? HashMap-put-get-iterate 33.3687+-0.8784 32.7208+-0.5542 might be 1.0198x faster HashMap-string-put-get-iterate 35.6882+-0.6607 35.0953+-1.8071 might be 1.0169x faster hoist-make-rope 13.8912+-1.2967 13.7521+-1.0620 might be 1.0101x faster hoist-poly-check-structure-effectful-loop 7.0490+-0.1389 6.9832+-0.1889 hoist-poly-check-structure 4.7887+-0.1190 ? 4.8152+-0.1496 ? imul-double-only 10.2176+-0.4419 9.8351+-1.3229 might be 1.0389x faster imul-int-only 11.9084+-0.7895 ? 12.4055+-0.8495 ? might be 1.0417x slower imul-mixed 10.2748+-1.1720 9.5801+-0.2461 might be 1.0725x faster in-four-cases 25.5345+-0.2581 ! 26.2859+-0.4530 ! definitely 1.0294x slower in-one-case-false 12.9228+-0.1448 ! 13.5966+-0.1973 ! definitely 1.0521x slower in-one-case-true 12.8130+-0.2738 ! 13.6617+-0.2394 ! definitely 1.0662x slower in-two-cases 13.1282+-0.0212 ! 13.9134+-0.1818 ! definitely 1.0598x slower indexed-properties-in-objects 3.8068+-0.1035 ? 3.8540+-0.2093 ? might be 1.0124x slower infer-closure-const-then-mov-no-inline 4.7050+-0.0896 4.6821+-0.0700 infer-closure-const-then-mov 25.1077+-1.0551 24.7088+-0.5810 might be 1.0161x faster infer-closure-const-then-put-to-scope-no-inline 14.4610+-0.1821 ? 14.6712+-0.5008 ? might be 1.0145x slower infer-closure-const-then-put-to-scope 27.7517+-0.2632 ? 27.9768+-0.5190 ? infer-closure-const-then-reenter-no-inline 61.2000+-0.2745 60.9952+-0.5074 infer-closure-const-then-reenter 29.2050+-0.3979 ? 29.6309+-0.5954 ? might be 1.0146x slower infer-constant-global-property 4.6965+-0.1833 ? 4.7518+-0.1707 ? might be 1.0118x slower infer-constant-property 3.3015+-0.1579 3.2905+-0.0849 infer-one-time-closure-ten-vars 14.7155+-0.1768 14.5817+-0.2534 infer-one-time-closure-two-vars 14.0554+-0.6466 13.9701+-0.3921 infer-one-time-closure 14.1082+-0.4383 14.0326+-0.7710 infer-one-time-deep-closure 24.5408+-0.5201 24.5278+-0.1693 inline-arguments-access 6.0930+-0.3684 ? 6.1346+-0.1363 ? inline-arguments-aliased-access 6.1035+-0.1645 5.9907+-0.2252 might be 1.0188x faster inline-arguments-local-escape 6.0782+-0.1097 ? 6.1248+-0.0879 ? inline-get-scoped-var 5.6235+-0.0429 ? 5.6861+-0.1083 ? might be 1.0111x slower inlined-put-by-id-transition 15.5560+-1.2614 ? 15.6841+-0.9635 ? int-or-other-abs-then-get-by-val 6.6573+-0.1095 6.6501+-0.1250 int-or-other-abs-zero-then-get-by-val 26.8134+-0.2655 ! 28.2209+-0.1543 ! definitely 1.0525x slower int-or-other-add-then-get-by-val 5.5606+-0.0868 5.5461+-0.0774 int-or-other-add 7.9968+-0.2689 7.8940+-0.1235 might be 1.0130x faster int-or-other-div-then-get-by-val 5.1768+-0.0970 ? 5.1853+-0.1171 ? int-or-other-max-then-get-by-val 5.1223+-0.2081 5.0160+-0.2154 might be 1.0212x faster int-or-other-min-then-get-by-val 4.9898+-0.1493 ? 5.0132+-0.1788 ? int-or-other-mod-then-get-by-val 5.0004+-0.1130 ? 5.0016+-0.0498 ? int-or-other-mul-then-get-by-val 4.9682+-0.1808 4.8970+-0.1411 might be 1.0145x faster int-or-other-neg-then-get-by-val 6.1400+-0.0995 ? 6.1612+-0.1098 ? int-or-other-neg-zero-then-get-by-val 28.3271+-0.4434 28.2800+-0.1824 int-or-other-sub-then-get-by-val 6.0319+-0.2696 6.0120+-0.1034 int-or-other-sub 4.3267+-0.1167 4.2486+-0.2913 might be 1.0184x faster int-overflow-local 5.6375+-0.1341 ? 5.7073+-0.1554 ? might be 1.0124x slower Int16Array-alloc-long-lived 63.4147+-1.1081 62.7795+-0.5083 might be 1.0101x faster Int16Array-bubble-sort-with-byteLength 36.8495+-0.1125 ? 37.4127+-0.6394 ? might be 1.0153x slower Int16Array-bubble-sort 37.0640+-0.4500 36.3057+-1.3948 might be 1.0209x faster Int16Array-load-int-mul 2.0525+-0.0623 1.9800+-0.1198 might be 1.0366x faster Int16Array-to-Int32Array-set 74.3745+-3.5218 ^ 69.4207+-1.3354 ^ definitely 1.0714x faster Int32Array-alloc-large 32.5974+-0.6722 ? 32.7523+-0.8570 ? Int32Array-alloc-long-lived 70.4001+-1.0120 70.0493+-0.5996 Int32Array-alloc 4.6061+-0.3099 4.4865+-0.0931 might be 1.0267x faster Int32Array-Int8Array-view-alloc 9.5339+-0.3081 ? 10.0070+-0.9643 ? might be 1.0496x slower int52-spill 7.9623+-0.2949 ? 8.1422+-0.7959 ? might be 1.0226x slower Int8Array-alloc-long-lived 56.0406+-0.5807 ? 56.3823+-0.8220 ? Int8Array-load-with-byteLength 4.8468+-0.3971 4.7596+-0.2377 might be 1.0183x faster Int8Array-load 4.6346+-0.1968 ? 4.8000+-0.1150 ? might be 1.0357x slower integer-divide 13.2360+-0.1768 ? 13.3300+-0.3936 ? integer-modulo 2.8152+-0.2308 2.7271+-0.2039 might be 1.0323x faster is-boolean-fold-tricky 5.7575+-0.1227 ? 5.7686+-0.2149 ? is-boolean-fold 3.9764+-0.1518 ? 3.9866+-0.0952 ? is-function-fold-tricky-internal-function 15.6998+-2.0659 15.1478+-1.5582 might be 1.0364x faster is-function-fold-tricky 5.9380+-0.0320 ? 5.9655+-0.1397 ? is-function-fold 4.0978+-0.1713 3.9910+-0.0416 might be 1.0268x faster is-number-fold-tricky 5.7118+-0.1573 ? 5.7922+-0.1266 ? might be 1.0141x slower is-number-fold 4.0186+-0.0953 3.9717+-0.0778 might be 1.0118x faster is-object-or-null-fold-functions 4.0694+-0.0419 ? 4.0698+-0.0623 ? is-object-or-null-fold-less-tricky 5.8361+-0.1197 5.7689+-0.2331 might be 1.0117x faster is-object-or-null-fold-tricky 7.5372+-0.2035 ? 7.7497+-0.2131 ? might be 1.0282x slower is-object-or-null-fold 4.0483+-0.0507 ? 4.1313+-0.0834 ? might be 1.0205x slower is-object-or-null-trickier-function 5.9559+-0.1492 ? 5.9565+-0.1156 ? is-object-or-null-trickier-internal-function 14.7305+-0.1576 ? 15.4662+-1.2758 ? might be 1.0499x slower is-object-or-null-tricky-function 5.8967+-0.1606 ? 5.9236+-0.1672 ? is-object-or-null-tricky-internal-function 11.5053+-1.0166 ? 11.5720+-1.0575 ? is-string-fold-tricky 5.6730+-0.0965 ? 5.7296+-0.1585 ? is-string-fold 3.9423+-0.2592 ? 3.9427+-0.1257 ? is-undefined-fold-tricky 4.5008+-0.1506 ? 4.5837+-0.4064 ? might be 1.0184x slower is-undefined-fold 3.9810+-0.0829 3.9529+-0.0937 large-int-captured 6.7298+-0.1422 ? 6.8820+-0.2491 ? might be 1.0226x slower large-int-neg 20.5619+-0.2371 ? 20.6318+-0.5967 ? large-int 18.5438+-0.2682 ? 18.8806+-0.8673 ? might be 1.0182x slower logical-not 6.1951+-0.4395 ? 6.3339+-0.4968 ? might be 1.0224x slower lots-of-fields 19.4164+-0.2646 ? 19.4471+-0.2740 ? make-indexed-storage 4.3958+-0.5372 ? 4.4141+-0.3227 ? make-rope-cse 6.5758+-0.0158 ? 6.7048+-0.2198 ? might be 1.0196x slower marsaglia-larger-ints 55.0110+-0.6776 54.9468+-1.3151 marsaglia-osr-entry 28.0146+-0.7272 ? 28.1848+-0.8076 ? max-boolean 3.3473+-0.0576 3.3425+-0.1593 method-on-number 23.4218+-1.2537 ? 23.5944+-0.5422 ? min-boolean 3.1982+-0.1130 ? 3.4373+-0.3274 ? might be 1.0747x slower minus-boolean-double 4.1424+-0.1714 ? 4.1877+-0.0877 ? might be 1.0109x slower minus-boolean 3.3113+-0.0596 ? 3.3616+-0.1080 ? might be 1.0152x slower misc-strict-eq 58.1064+-1.6370 56.8527+-0.4478 might be 1.0221x faster mod-boolean-double 11.7592+-0.2157 11.6608+-0.3237 mod-boolean 8.6920+-0.1959 8.6310+-0.1772 mul-boolean-double 4.9365+-0.0513 4.8385+-0.1001 might be 1.0202x faster mul-boolean 3.5311+-0.0250 ? 3.5454+-0.0440 ? neg-boolean 4.3907+-0.1500 ? 4.4230+-0.0672 ? negative-zero-divide 0.5255+-0.0785 0.5086+-0.1230 might be 1.0331x faster negative-zero-modulo 0.5074+-0.1231 ? 0.5224+-0.0995 ? might be 1.0295x slower negative-zero-negate 0.4507+-0.0806 ? 0.4703+-0.0948 ? might be 1.0435x slower nested-function-parsing 58.5352+-0.5686 58.1280+-0.4787 new-array-buffer-dead 139.5070+-0.9305 ? 139.6418+-2.8406 ? new-array-buffer-push 9.6666+-0.5001 9.6044+-0.3732 new-array-dead 23.4177+-2.5904 ? 23.8912+-0.5810 ? might be 1.0202x slower new-array-push 5.5901+-0.2263 5.3682+-0.5245 might be 1.0413x faster no-inline-constructor 162.6556+-1.5355 ? 162.8774+-0.9498 ? number-test 4.2115+-0.1431 ? 4.2253+-0.0493 ? object-closure-call 7.3397+-0.1310 ? 7.4064+-0.3349 ? object-test 4.0927+-0.0871 ? 4.1530+-0.1922 ? might be 1.0147x slower obvious-sink-pathology-taken 174.8243+-1.2241 174.0619+-2.5873 obvious-sink-pathology 158.1450+-3.6838 157.6970+-1.3447 obviously-elidable-new-object 46.2120+-3.7554 ? 48.3525+-5.4072 ? might be 1.0463x slower plus-boolean-arith 3.2982+-0.0653 3.2845+-0.0638 plus-boolean-double 4.2627+-0.1664 4.2610+-0.1156 plus-boolean 3.2443+-0.0501 ? 3.2585+-0.1435 ? poly-chain-access-different-prototypes-simple 3.9297+-0.1276 3.8149+-0.1958 might be 1.0301x faster poly-chain-access-different-prototypes 3.1880+-0.2072 3.1694+-0.1231 poly-chain-access-simpler 3.9290+-0.1387 3.8187+-0.1223 might be 1.0289x faster poly-chain-access 3.0140+-0.1677 ? 3.1200+-0.0470 ? might be 1.0352x slower poly-stricteq 70.7733+-0.8841 69.7659+-0.1351 might be 1.0144x faster polymorphic-array-call 1.6818+-0.2823 ? 1.8308+-0.2167 ? might be 1.0886x slower polymorphic-get-by-id 4.1216+-0.1801 4.0978+-0.1457 polymorphic-put-by-id 41.1440+-4.5537 40.5253+-6.2879 might be 1.0153x faster polymorphic-structure 17.6848+-0.3520 ? 17.7747+-0.2784 ? polyvariant-monomorphic-get-by-id 11.4928+-0.4427 ? 11.5502+-0.2308 ? proto-getter-access 11.3408+-0.2451 11.3258+-0.5227 put-by-id-replace-and-transition 12.5128+-0.6623 ? 12.5195+-0.4694 ? put-by-id-slightly-polymorphic 3.4612+-0.0929 ? 3.5577+-0.1929 ? might be 1.0279x slower put-by-id 18.7379+-0.7532 ? 18.8900+-0.9568 ? put-by-val-direct 0.4618+-0.0290 ? 0.5286+-0.1181 ? might be 1.1446x slower put-by-val-large-index-blank-indexing-type 8.6318+-0.2994 8.4048+-0.2384 might be 1.0270x faster put-by-val-machine-int 3.7980+-0.1217 3.5347+-0.2219 might be 1.0745x faster rare-osr-exit-on-local 18.4399+-0.6374 18.3370+-0.1489 register-pressure-from-osr 25.8647+-0.5141 25.7877+-0.5171 setter 6.5560+-0.1834 6.5023+-0.0163 simple-activation-demo 30.4695+-0.1573 ! 31.6783+-0.0762 ! definitely 1.0397x slower simple-getter-access 15.3398+-1.1417 15.0986+-0.1525 might be 1.0160x faster simple-poly-call-nested 10.0863+-0.1334 10.0298+-0.0603 simple-poly-call 1.6743+-0.0671 1.6603+-0.1446 sin-boolean 24.2331+-3.9202 23.4335+-3.6171 might be 1.0341x faster singleton-scope 80.6254+-1.0473 79.7516+-0.2568 might be 1.0110x faster sink-function 14.5565+-1.9012 ? 16.0663+-0.1805 ? might be 1.1037x slower sinkable-new-object-dag 95.4863+-0.7490 94.7890+-1.2014 sinkable-new-object-taken 69.9092+-1.3012 ? 71.1263+-3.5533 ? might be 1.0174x slower sinkable-new-object 52.8945+-2.1031 ? 53.2414+-0.9370 ? slow-array-profile-convergence 4.3166+-0.1544 3.9872+-0.2096 might be 1.0826x faster slow-convergence 3.7594+-0.2832 ? 3.7916+-0.3091 ? sorting-benchmark 26.6241+-0.7246 26.5754+-1.3269 sparse-conditional 1.5567+-0.1452 1.5505+-0.1594 splice-to-remove 21.0100+-0.6248 20.9741+-0.5146 string-char-code-at 19.4006+-0.2942 19.3666+-0.2850 string-concat-object 3.2827+-0.1799 ? 3.3642+-0.4492 ? might be 1.0248x slower string-concat-pair-object 3.2302+-0.3743 ? 3.2308+-0.3185 ? string-concat-pair-simple 16.9865+-0.6083 ? 17.1617+-0.5504 ? might be 1.0103x slower string-concat-simple 17.3638+-0.1267 ? 17.4813+-0.7031 ? string-cons-repeat 11.2527+-0.0567 11.1714+-0.1243 string-cons-tower 10.4318+-0.2448 10.3754+-0.2403 string-equality 23.2003+-0.3611 23.0903+-0.3177 string-get-by-val-big-char 9.9117+-0.3041 ? 9.9705+-0.2427 ? string-get-by-val-out-of-bounds-insane 5.0617+-0.1368 ? 5.0878+-0.3194 ? string-get-by-val-out-of-bounds 6.8635+-0.1343 ? 6.8936+-0.2956 ? string-get-by-val 4.7663+-0.0737 4.7451+-0.1451 string-hash 2.7797+-0.1378 2.7551+-0.1706 string-long-ident-equality 18.7140+-0.1365 18.4695+-0.1693 might be 1.0132x faster string-out-of-bounds 17.4018+-0.3397 17.2255+-0.2664 might be 1.0102x faster string-repeat-arith 40.3503+-1.1610 39.9767+-1.0706 string-sub 78.2010+-1.5364 ? 78.5092+-2.1882 ? string-test 4.2333+-0.0837 ? 4.2359+-0.1632 ? string-var-equality 44.4532+-0.2662 ? 44.5902+-0.7879 ? structure-hoist-over-transitions 3.4788+-0.2393 ? 3.5037+-0.2511 ? substring-concat-weird 54.5711+-0.2233 ? 55.0406+-0.7104 ? substring-concat 58.2054+-0.4469 58.1079+-0.5902 substring 63.6298+-0.9288 63.5603+-0.8438 switch-char-constant 3.3008+-0.1359 ? 3.3098+-0.0680 ? switch-char 7.6281+-0.0744 ! 8.3591+-0.1456 ! definitely 1.0958x slower switch-constant 11.5192+-0.6054 ? 11.6098+-1.0892 ? switch-string-basic-big-var 27.4593+-0.3257 ? 27.6035+-0.5384 ? switch-string-basic-big 21.7273+-2.5610 21.1240+-1.8475 might be 1.0286x faster switch-string-basic-var 27.5532+-1.0303 ? 27.8824+-0.5815 ? might be 1.0120x slower switch-string-basic 17.4401+-2.6263 17.0593+-2.1942 might be 1.0223x faster switch-string-big-length-tower-var 25.6187+-0.7664 ? 26.0302+-0.2806 ? might be 1.0161x slower switch-string-length-tower-var 19.8433+-0.8386 ? 19.8738+-0.3357 ? switch-string-length-tower 16.7722+-1.0658 16.3123+-0.5275 might be 1.0282x faster switch-string-short 14.1661+-0.3177 13.9133+-0.0853 might be 1.0182x faster switch 16.8407+-2.7005 16.0522+-2.5560 might be 1.0491x faster tear-off-arguments-simple 4.4750+-0.3200 ? 4.5831+-0.1593 ? might be 1.0242x slower tear-off-arguments 6.1550+-0.5346 ? 6.4944+-0.8541 ? might be 1.0552x slower temporal-structure 14.9678+-0.1603 ? 15.2777+-0.3230 ? might be 1.0207x slower to-int32-boolean 20.3646+-0.3574 ? 20.5148+-0.3857 ? try-catch-get-by-val-cloned-arguments 19.9688+-1.4664 19.4621+-0.2802 might be 1.0260x faster try-catch-get-by-val-direct-arguments 8.6019+-0.3546 ? 8.6063+-0.0982 ? try-catch-get-by-val-scoped-arguments 10.2950+-0.4135 10.2313+-0.3078 typed-array-get-set-by-val-profiling 42.3372+-1.2574 ? 43.2767+-1.5860 ? might be 1.0222x slower undefined-property-access 426.5948+-5.0233 426.5269+-4.0609 undefined-test 4.5036+-0.0177 ? 4.5191+-0.1668 ? unprofiled-licm 27.1672+-0.8266 ? 27.2308+-0.8465 ? varargs-call 17.7362+-0.5779 ? 17.8770+-0.0618 ? varargs-construct-inline 28.7390+-0.1056 ! 30.2424+-0.3826 ! definitely 1.0523x slower varargs-construct 42.9865+-0.4376 ? 43.3063+-0.8870 ? varargs-inline 10.5728+-0.7141 10.4869+-0.4649 varargs-strict-mode 12.6675+-0.4226 ? 12.7802+-0.2999 ? varargs 12.6412+-0.2668 ? 12.8602+-0.5870 ? might be 1.0173x slower weird-inlining-const-prop 2.9622+-0.1815 2.9083+-0.1863 might be 1.0185x faster <geometric> 10.8691+-0.0247 ? 10.8939+-0.0274 ? might be 1.0023x slower Conf#1 Conf#2 AsmBench: bigfib.cpp 667.1432+-2.5466 ? 667.7529+-2.7788 ? cray.c 625.7172+-10.2970 624.9478+-4.3289 dry.c 654.0175+-0.7682 ? 654.3418+-2.3595 ? FloatMM.c 954.7396+-1.2701 ? 954.8128+-1.3096 ? gcc-loops.cpp 5863.3347+-11.1036 ? 5876.0807+-12.7564 ? n-body.c 1669.2862+-6.4034 1668.1880+-2.0227 Quicksort.c 573.0015+-3.8759 571.3672+-9.8300 stepanov_container.cpp 4871.5667+-24.6510 ? 4893.3723+-25.7824 ? Towers.c 383.1216+-4.4846 ^ 376.2726+-1.0400 ^ definitely 1.0182x faster <geometric> 1117.9722+-2.9526 1116.1537+-1.9342 might be 1.0016x faster Conf#1 Conf#2 CompressionBench: huffman 498.4947+-3.3280 ? 498.8477+-1.3773 ? arithmetic-simple 527.0795+-1.2821 ^ 463.0287+-1.6591 ^ definitely 1.1383x faster arithmetic-precise 402.0682+-2.0220 ^ 388.2253+-3.2083 ^ definitely 1.0357x faster arithmetic-complex-precise 400.0457+-3.2566 ? 407.3429+-18.8869 ? might be 1.0182x slower arithmetic-precise-order-0 569.3853+-19.5877 ^ 484.9987+-9.0494 ^ definitely 1.1740x faster arithmetic-precise-order-1 421.1037+-2.6749 420.8342+-1.1474 arithmetic-precise-order-2 470.9117+-4.1974 469.5288+-3.4937 arithmetic-simple-order-1 528.0690+-0.5676 527.9777+-1.7186 arithmetic-simple-order-2 583.0833+-3.3230 ? 583.5113+-2.4204 ? lz-string 415.9227+-2.5952 413.7944+-5.0246 <geometric> 477.0937+-2.6340 ^ 462.3194+-2.4014 ^ definitely 1.0320x faster Conf#1 Conf#2 Geomean of preferred means: <scaled-result> 83.8033+-0.2157 ^ 82.6932+-0.1879 ^ definitely 1.0134x faster
Benjamin Poulain
Comment 3 2015-05-15 23:14:38 PDT
From experiments I did today, it looks like we still have plenty of margin to be more aggressive on ai-astar. What do you think about triggering a FTLForOSREntry from the inner loop for the bytecode of the outer loop? Something else that would be nice is remove the useless compilations we do in FTL. We compile two FTL functions that we never use because they are inlined, and a full function that we don't use because it is only possible to OSREnter in this case.
Benjamin Poulain
Comment 4 2015-05-15 23:16:42 PDT
Filip Pizlo
Comment 5 2015-05-18 13:07:12 PDT
Comment on attachment 253269 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=253269&action=review > Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp:132 > + HashSet<const NaturalLoop*> findLoopsContainingLoopHintWithoutOSREnter(const NaturalLoops& naturalLoops, FTL::CapabilityLevel level) Can we do this without a HashSet?
Benjamin Poulain
Comment 6 2015-05-18 13:45:37 PDT
Comment on attachment 253269 [details] Patch Clearing flags on attachment: 253269 Committed r184511: <http://trac.webkit.org/changeset/184511>
Benjamin Poulain
Comment 7 2015-05-18 13:45:41 PDT
All reviewed patches have been landed. Closing bug.
Geoffrey Garen
Comment 8 2015-05-18 14:23:09 PDT
Comment on attachment 253269 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=253269&action=review > Source/JavaScriptCore/ChangeLog:11 > + When we have a hot loop without OSR Entry inside a slower loop that support OSR Entry, > + we get the inside loop driving the tierUpCounter and we have very little chance of > + doing a CheckTierUp on the outer loop. In turn, this give almost no opportunity to tier > + up in the outer loop and OSR Enter there. Under what conditions does the FTL not support OSR entry? FTLCapabilities.cpp does not seem to use the CanCompile enum value. What's the condition in ai-astart that prohibits OSR entry?
Benjamin Poulain
Comment 9 2015-05-18 22:07:17 PDT
(In reply to comment #8) > Under what conditions does the FTL not support OSR entry? > FTLCapabilities.cpp does not seem to use the CanCompile enum value. > > What's the condition in ai-astart that prohibits OSR entry? We do not OSR Entry in code that was inlined.
Note You need to log in before you can comment on or make changes to this bug.