RESOLVED FIXED 125711
C calls in PolymorphicAccess shouldn't assume that the top of the stack looks like a JSC JIT frame and enable *ByIdFlush in FTL
https://bugs.webkit.org/show_bug.cgi?id=125711
Summary C calls in PolymorphicAccess shouldn't assume that the top of the stack looks...
Filip Pizlo
Reported 2013-12-13 14:28:00 PST
Patch forthcoming.
Attachments
WIP (14.96 KB, patch)
2015-10-20 16:35 PDT, Saam Barati
no flags
patch (17.70 KB, patch)
2015-10-20 17:09 PDT, Saam Barati
no flags
patch (19.38 KB, patch)
2015-10-21 13:10 PDT, Saam Barati
no flags
Filip Pizlo
Comment 1 2014-01-30 13:26:10 PST
Some clarification: this is the reason why we don't support GetByIdFlush right now.
Saam Barati
Comment 2 2015-10-20 16:35:46 PDT
Created attachment 263631 [details] WIP This is probably the patch, I just want to run perf numbers before landing.
Saam Barati
Comment 3 2015-10-20 17:09:00 PDT
Created attachment 263637 [details] patch Now with a changelog. I think this patch is ready for review. I'll run and post performance numbers before landing the patch (if performance is good/neutral).
Saam Barati
Comment 4 2015-10-20 17:09:47 PDT
Comment on attachment 263637 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=263637&action=review > Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp:1012 > + if (!numberOfBytesUsedToPreserveReusedRegisters) { > + unsigned stackOffset = WTF::roundUpToMultipleOf(stackAlignmentBytes(), maxFrameExtentForSlowPathCall); > + if (stackOffset) { > + jit.subPtr( > + CCallHelpers::TrustedImm32(stackOffset), > + CCallHelpers::stackPointerRegister); > + } > + } This code and the respective incrementing of the stack may deserve its own helper function.
Saam Barati
Comment 5 2015-10-21 13:10:31 PDT
Saam Barati
Comment 6 2015-10-21 13:57:02 PDT
perf: Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Saams-Mac-Pro (MacPro6,1). VMs tested: "og" at /Volumes/Data/WK/os-a/OpenSource/WebKitBuild/Release/jsc (r191365) "FTLGetPutByIdFlush" at /Volumes/Data/WK/os-b/OpenSource/WebKitBuild/Release/jsc (r191365) Collected 8 samples per benchmark/VM, with 8 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. og FTLGetPutByIdFlush SunSpider: 3d-cube 10.3725+-0.3872 10.1750+-0.1102 might be 1.0194x faster 3d-morph 10.1964+-0.0382 ? 10.2101+-0.0432 ? 3d-raytrace 12.0210+-0.2383 ? 12.0833+-0.3436 ? access-binary-trees 4.1777+-0.0669 4.1610+-0.0454 access-fannkuch 11.5863+-0.1631 11.5795+-0.0522 access-nbody 5.5217+-0.0118 ? 5.5600+-0.0859 ? access-nsieve 6.4817+-0.3064 6.3042+-0.0826 might be 1.0282x faster bitops-3bit-bits-in-byte 2.3778+-0.0360 2.3449+-0.0120 might be 1.0140x faster bitops-bits-in-byte 6.1410+-0.0370 ? 6.1576+-0.0927 ? bitops-bitwise-and 3.9586+-0.0152 ? 3.9844+-0.0319 ? bitops-nsieve-bits 5.6875+-0.0163 ? 5.6876+-0.0082 ? controlflow-recursive 4.5168+-0.0248 ? 4.5639+-0.0643 ? might be 1.0104x slower crypto-aes 8.6504+-0.0555 ? 8.7662+-0.1921 ? might be 1.0134x slower crypto-md5 4.9954+-0.0529 ? 5.0013+-0.0470 ? crypto-sha1 4.7178+-0.0198 4.7044+-0.0250 date-format-tofte 17.0622+-0.2271 17.0246+-0.2811 date-format-xparb 10.2315+-0.3820 10.2137+-0.3240 math-cordic 5.4633+-0.0636 5.4453+-0.0331 math-partial-sums 10.3344+-0.0994 ^ 10.2085+-0.0197 ^ definitely 1.0123x faster math-spectral-norm 3.8560+-0.0261 3.8335+-0.0212 regexp-dna 12.7555+-0.0904 ? 12.8246+-0.2510 ? string-base64 8.5485+-0.0293 ? 8.5811+-0.1173 ? string-fasta 11.5161+-0.0822 ? 11.5414+-0.1613 ? string-tagcloud 16.3588+-0.2577 ? 16.3630+-0.1434 ? string-unpack-code 36.3672+-0.8336 ? 36.5715+-0.5530 ? string-validate-input 8.5562+-0.2215 ? 8.5941+-0.1075 ? <arithmetic> 9.3251+-0.0508 ? 9.3263+-0.0169 ? might be 1.0001x slower og FTLGetPutByIdFlush LongSpider: 3d-cube 1580.3456+-5.4836 ? 1592.9001+-19.7890 ? 3d-morph 2812.4348+-2.1632 2811.4871+-1.9699 3d-raytrace 1233.8668+-8.1091 ? 1235.6562+-2.5791 ? access-binary-trees 1585.7750+-3.1075 1584.9970+-5.5826 access-fannkuch 646.0040+-12.4756 ? 650.2081+-10.7889 ? access-nbody 1081.8744+-0.1493 ? 1082.3600+-0.6360 ? access-nsieve 741.9214+-3.0885 741.5605+-5.1884 bitops-3bit-bits-in-byte 68.8749+-0.7070 68.4581+-0.1216 bitops-bits-in-byte 180.8797+-2.0931 180.6799+-2.0713 bitops-nsieve-bits 798.5990+-0.7866 793.8543+-4.0834 controlflow-recursive 884.9874+-0.3817 ? 885.2293+-0.5771 ? crypto-aes 1124.6741+-6.0099 ? 1129.3689+-5.6893 ? crypto-md5 950.5893+-12.7415 943.3004+-4.4041 crypto-sha1 1319.2210+-7.6587 ? 1324.0231+-7.0068 ? date-format-tofte 1342.6245+-23.3287 1338.4073+-9.5761 date-format-xparb 1461.1801+-62.0036 1419.8145+-31.1734 might be 1.0291x faster hash-map 295.1915+-1.9812 294.6568+-3.0448 math-cordic 989.5805+-2.6571 989.0898+-2.1950 math-partial-sums 992.7599+-2.1071 990.7796+-1.1834 math-spectral-norm 1043.9452+-3.7308 1042.2636+-2.9816 string-base64 717.4352+-35.4524 ? 733.4597+-46.5557 ? might be 1.0223x slower string-fasta 739.3921+-4.2592 736.6447+-4.2057 string-tagcloud 352.8330+-4.1245 ? 357.6675+-3.3820 ? might be 1.0137x slower <geometric> 801.7241+-1.1487 801.6068+-2.6903 might be 1.0001x faster og FTLGetPutByIdFlush V8Spider: crypto 95.5741+-0.5418 95.4929+-0.5539 deltablue 119.3330+-3.5327 ? 120.9410+-2.9700 ? might be 1.0135x slower earley-boyer 80.9198+-0.2944 ? 80.9979+-0.6760 ? raytrace 55.3568+-0.4538 55.3074+-0.5770 regexp 132.3470+-0.5573 ? 132.9472+-0.9850 ? richards 99.4015+-0.4961 ? 99.4573+-0.5606 ? splay 65.0081+-0.7690 64.9568+-0.4893 <geometric> 88.8374+-0.5814 ? 89.0521+-0.3295 ? might be 1.0024x slower og FTLGetPutByIdFlush Octane: encrypt 0.33779+-0.00769 0.33276+-0.00319 might be 1.0151x faster decrypt 6.00193+-0.01454 ? 6.01396+-0.01304 ? deltablue x2 0.27442+-0.00145 0.27378+-0.00141 earley 0.60919+-0.00092 0.60882+-0.00447 boyer 9.51924+-0.03316 ? 9.53118+-0.01656 ? navier-stokes x2 9.34622+-0.00890 ? 9.34854+-0.01075 ? raytrace x2 1.76075+-0.00666 1.76054+-0.00811 richards x2 0.19269+-0.00115 0.19268+-0.00069 splay x2 0.60854+-0.00403 ? 0.60894+-0.00387 ? regexp x2 49.35221+-0.09352 ? 49.39258+-0.17504 ? pdfjs x2 77.47175+-0.23458 77.39958+-0.25844 mandreel x2 95.27426+-0.27790 94.96508+-0.21365 gbemu x2 94.04599+-11.03933 92.48634+-13.50797 might be 1.0169x faster closure 1.32149+-0.00460 1.31958+-0.00790 jquery 17.22774+-0.06414 ? 17.25588+-0.08644 ? box2d x2 24.56562+-0.16015 ? 24.57202+-0.08285 ? zlib x2 702.92336+-17.34491 ? 716.81132+-1.61492 ? might be 1.0198x slower typescript x2 1504.32111+-14.25991 ? 1513.29575+-7.16984 ? <geometric> 11.45254+-0.09137 11.44931+-0.10109 might be 1.0003x faster og FTLGetPutByIdFlush Kraken: ai-astar 304.017+-2.562 301.133+-2.185 audio-beat-detection 98.745+-0.469 ? 99.117+-0.575 ? audio-dft 192.111+-0.410 ? 192.139+-0.394 ? audio-fft 72.354+-0.411 72.315+-0.128 audio-oscillator 120.454+-0.351 119.977+-0.299 imaging-darkroom 126.911+-0.123 ? 127.274+-0.644 ? imaging-desaturate 114.330+-0.552 114.154+-0.412 imaging-gaussian-blur 202.789+-0.352 202.109+-2.623 json-parse-financial 84.345+-0.465 ? 84.486+-0.274 ? json-stringify-tinderbox 53.169+-0.875 ^ 50.303+-0.093 ^ definitely 1.0570x faster stanford-crypto-aes 87.697+-1.578 86.953+-1.140 stanford-crypto-ccm 78.394+-2.258 78.161+-1.148 stanford-crypto-pbkdf2 193.426+-3.415 190.834+-1.341 might be 1.0136x faster stanford-crypto-sha256-iterative 76.236+-0.329 ? 77.423+-1.179 ? might be 1.0156x slower <arithmetic> 128.927+-0.284 ^ 128.313+-0.254 ^ definitely 1.0048x faster og FTLGetPutByIdFlush JSRegress: abc-forward-loop-equal 85.3681+-0.1912 85.3050+-0.0252 abc-postfix-backward-loop 84.7060+-0.2472 ? 85.2921+-0.7559 ? abc-simple-backward-loop 83.9852+-0.2102 ? 84.2442+-0.1628 ? abc-simple-forward-loop 84.1826+-0.2419 83.9957+-0.1831 abc-skippy-loop 58.0497+-0.1264 ? 58.1908+-0.3573 ? abs-boolean 4.8067+-0.0407 4.7954+-0.0240 adapt-to-double-divide 29.5724+-0.2766 ? 29.6646+-0.3609 ? aliased-arguments-getbyval 2.1718+-0.0290 2.1378+-0.0208 might be 1.0159x faster allocate-big-object 4.1899+-0.1594 4.1239+-0.0898 might be 1.0160x faster arguments-named-and-reflective 20.1117+-0.2172 20.0623+-0.2070 arguments-out-of-bounds 22.3438+-0.2037 22.3190+-0.1035 arguments-strict-mode 18.6299+-0.2481 ? 18.8603+-0.2797 ? might be 1.0124x slower arguments 17.0532+-0.8383 16.3791+-0.2296 might be 1.0412x faster arity-mismatch-inlining 1.7612+-0.0193 ? 1.7631+-0.0268 ? array-access-polymorphic-structure 13.6253+-0.1567 13.4991+-0.1569 array-nonarray-polymorhpic-access 54.2928+-0.9037 ? 54.4730+-0.5085 ? array-prototype-every 154.2578+-2.9043 ? 154.5336+-1.4130 ? array-prototype-forEach 152.9067+-2.1977 ? 153.8875+-1.8130 ? array-prototype-map 170.5205+-2.5950 ? 170.6505+-2.5810 ? array-prototype-reduce 150.7889+-3.2933 ? 151.1198+-1.3272 ? array-prototype-reduceRight 149.3363+-1.2176 ? 151.7408+-1.3009 ? might be 1.0161x slower array-prototype-some 156.1134+-3.2575 155.6481+-2.1535 array-splice-contiguous 50.9550+-0.4414 50.9155+-0.3427 array-with-double-add 7.7288+-0.0266 ! 7.7689+-0.0119 ! definitely 1.0052x slower array-with-double-increment 5.8878+-0.0265 ? 5.9155+-0.0223 ? array-with-double-mul-add 9.1422+-0.0376 ? 9.1765+-0.0238 ? array-with-double-sum 5.8358+-0.0294 ? 5.8380+-0.0241 ? array-with-int32-add-sub 12.7670+-0.6119 12.5389+-0.0170 might be 1.0182x faster array-with-int32-or-double-sum 6.0265+-0.0179 ? 6.0699+-0.1306 ? ArrayBuffer-DataView-alloc-large-long-lived 54.1938+-0.4999 ? 54.5628+-0.7535 ? ArrayBuffer-DataView-alloc-long-lived 24.8240+-0.3040 24.6711+-0.2116 ArrayBuffer-Int32Array-byteOffset 6.8265+-0.0338 ? 6.8773+-0.0733 ? ArrayBuffer-Int8Array-alloc-large-long-lived 55.5953+-0.7491 ? 56.1251+-1.2189 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 39.5934+-0.5979 ? 40.0241+-1.0407 ? might be 1.0109x slower ArrayBuffer-Int8Array-alloc-long-lived 23.0624+-0.8783 22.8457+-0.4993 ArrayBuffer-Int8Array-alloc 19.2609+-0.0758 ? 19.8217+-0.6022 ? might be 1.0291x slower arrowfunction-call 20.7137+-0.1676 20.6395+-0.1115 asmjs_bool_bug 14.9890+-0.3748 14.9033+-0.4045 assign-custom-setter-polymorphic 5.5747+-0.0437 5.5331+-0.0411 assign-custom-setter 7.8242+-0.1303 ! 8.0742+-0.0995 ! definitely 1.0319x slower basic-set 14.5491+-0.3083 ? 14.7232+-0.1395 ? might be 1.0120x slower big-int-mul 6.9890+-0.0669 ? 7.0496+-0.0254 ? boolean-test 5.6767+-0.0316 ? 5.6824+-0.0327 ? branch-fold 6.7221+-0.1411 6.7093+-0.0246 branch-on-string-as-boolean 35.7447+-0.2712 35.4713+-0.2052 by-val-generic 4.4391+-0.0363 ? 4.4644+-0.1050 ? call-spread-apply 53.2908+-0.7220 ? 53.4774+-1.0109 ? call-spread-call 43.8798+-0.3060 43.4973+-0.4477 captured-assignments 1.0222+-0.0326 ? 1.0380+-0.0313 ? might be 1.0154x slower cast-int-to-double 9.4923+-0.1341 9.4598+-0.1004 cell-argument 12.3694+-0.1964 ? 12.7226+-0.4203 ? might be 1.0286x slower cfg-simplify 5.0876+-0.0484 ? 5.1180+-0.0343 ? chain-getter-access 16.2177+-0.2292 ? 16.2840+-0.2104 ? cmpeq-obj-to-obj-other 17.8462+-0.0786 ^ 17.1815+-0.0414 ^ definitely 1.0387x faster constant-test 8.7517+-0.0312 8.7136+-0.0153 create-lots-of-functions 17.3912+-0.3288 ? 17.7879+-0.5122 ? might be 1.0228x slower cse-new-array-buffer 4.1218+-0.0343 4.1158+-0.0308 cse-new-array 4.3859+-0.1069 4.3740+-0.2115 custom-setter-getter-as-put-get-by-id 1.1494+-0.0336 ? 1.1540+-0.0318 ? DataView-custom-properties 64.0469+-0.6224 63.6169+-0.4280 delay-tear-off-arguments-strictmode 24.9060+-0.1224 ? 24.9414+-0.1201 ? deltablue-varargs 383.3933+-4.5894 380.7089+-2.1257 destructuring-arguments 316.7125+-1.6033 ! 319.3188+-0.9073 ! definitely 1.0082x slower destructuring-parameters-overridden-by-function 1.0587+-0.0317 ? 1.0732+-0.0119 ? might be 1.0137x slower destructuring-swap 9.1214+-0.0269 9.0988+-0.0204 direct-arguments-getbyval 2.2987+-0.3370 2.1663+-0.0400 might be 1.0611x faster div-boolean-double 9.1550+-0.0723 9.1339+-0.0478 div-boolean 13.7427+-0.0272 ? 13.9179+-0.4962 ? might be 1.0127x slower double-get-by-val-out-of-bounds 8.2418+-0.0544 8.2118+-0.1723 double-pollution-getbyval 15.1571+-0.0313 ? 15.1735+-0.0222 ? double-pollution-putbyoffset 7.2459+-0.0911 7.2248+-0.1012 double-real-use 53.5548+-0.1248 ? 53.5651+-0.2315 ? double-to-int32-typed-array-no-inline 4.2538+-0.0319 ? 4.2965+-0.0620 ? might be 1.0100x slower double-to-int32-typed-array 3.9852+-0.0304 3.9729+-0.0365 double-to-uint32-typed-array-no-inline 4.4416+-0.0737 4.4327+-0.0278 double-to-uint32-typed-array 4.0005+-0.0973 3.9991+-0.0423 elidable-new-object-dag 66.9291+-0.7013 66.6540+-0.5695 elidable-new-object-roflcopter 63.0044+-2.5507 62.2899+-1.9158 might be 1.0115x faster elidable-new-object-then-call 61.8832+-0.8398 61.4530+-0.6270 elidable-new-object-tree 72.9371+-1.1744 72.8867+-0.7084 empty-string-plus-int 9.7834+-0.0718 9.7708+-0.1160 emscripten-cube2hash 68.1933+-0.7279 ? 68.5768+-0.3642 ? exit-length-on-plain-object 29.0919+-0.2030 ! 29.5722+-0.2435 ! definitely 1.0165x slower external-arguments-getbyval 2.3919+-0.1402 ? 2.5451+-0.1096 ? might be 1.0641x slower external-arguments-putbyval 4.2267+-0.0414 4.2253+-0.0378 fixed-typed-array-storage-var-index 2.5870+-0.3718 2.5723+-0.2766 fixed-typed-array-storage 1.8824+-0.0207 ? 1.8961+-0.0290 ? Float32Array-matrix-mult 8.9458+-0.0332 ? 8.9626+-0.0390 ? Float32Array-to-Float64Array-set 99.5847+-0.3664 ^ 95.9433+-0.3108 ^ definitely 1.0380x faster Float64Array-alloc-long-lived 111.5900+-0.2546 ? 111.9474+-0.2020 ? Float64Array-to-Int16Array-set 120.5672+-0.4181 ^ 118.5944+-0.2612 ^ definitely 1.0166x faster fold-double-to-int 25.2267+-0.0784 ? 25.2819+-0.2115 ? fold-get-by-id-to-multi-get-by-offset-rare-int 16.6762+-0.2251 ? 16.6899+-0.2231 ? fold-get-by-id-to-multi-get-by-offset 14.2857+-0.2109 ? 14.5710+-0.3157 ? might be 1.0200x slower fold-multi-get-by-offset-to-get-by-offset 12.9852+-0.1400 12.9297+-0.0636 fold-multi-get-by-offset-to-poly-get-by-offset 13.3393+-0.0488 ? 13.3445+-0.0394 ? fold-multi-put-by-offset-to-poly-put-by-offset 16.3044+-0.0406 ? 16.3721+-0.1273 ? fold-multi-put-by-offset-to-put-by-offset 15.3481+-0.0407 15.3390+-0.0659 fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 22.0314+-0.5361 21.8436+-0.7725 fold-put-by-id-to-multi-put-by-offset 18.5699+-0.4882 18.5117+-0.3316 fold-put-by-val-with-string-to-multi-put-by-offset 18.0268+-0.4847 ? 18.1188+-0.3427 ? fold-put-by-val-with-symbol-to-multi-put-by-offset 17.8917+-0.5266 ? 18.1972+-0.3260 ? might be 1.0171x slower fold-put-structure 11.8939+-0.0849 11.8451+-0.0607 for-of-iterate-array-entries 21.2741+-0.2934 ? 21.4276+-0.9025 ? for-of-iterate-array-keys 7.1412+-0.1131 7.0732+-0.0864 for-of-iterate-array-values 6.5757+-0.0837 6.5541+-0.0587 fround 32.9999+-0.2220 32.7177+-0.5092 ftl-library-inlining-dataview 117.2252+-1.7921 ! 132.3384+-10.4344 ! definitely 1.1289x slower ftl-library-inlining 156.5293+-13.1582 ? 157.2976+-8.9383 ? function-call 20.7066+-0.1606 20.5782+-0.0652 function-dot-apply 4.1354+-0.1751 4.0782+-0.0338 might be 1.0140x faster function-test 5.1781+-0.0404 ? 5.1987+-0.0291 ? function-with-eval 172.0475+-0.9153 171.0815+-0.1677 gcse-poly-get-less-obvious 50.9582+-0.5482 ? 51.0291+-0.1717 ? gcse-poly-get 52.3052+-0.2477 ? 52.3203+-0.1658 ? gcse 7.2343+-0.0312 7.2030+-0.0165 get-by-id-bimorphic-check-structure-elimination-simple 4.7506+-0.0183 ? 4.7837+-0.0238 ? get-by-id-bimorphic-check-structure-elimination 9.4083+-0.0309 ? 9.4117+-0.0238 ? get-by-id-chain-from-try-block 4.5550+-0.0221 ? 4.5809+-0.0942 ? get-by-id-check-structure-elimination 8.1466+-0.0204 ! 8.1884+-0.0181 ! definitely 1.0051x slower get-by-id-proto-or-self 37.3012+-2.9477 36.4058+-2.8287 might be 1.0246x faster get-by-id-quadmorphic-check-structure-elimination-simple 5.3814+-0.1172 5.3297+-0.0210 get-by-id-self-or-proto 35.6140+-2.5088 ? 36.3205+-2.9752 ? might be 1.0198x slower get-by-val-out-of-bounds 7.9756+-0.1618 ? 8.1555+-0.4071 ? might be 1.0225x slower get-by-val-with-string-bimorphic-check-structure-elimination-simple 4.8148+-0.0387 ? 4.8545+-0.1275 ? get-by-val-with-string-bimorphic-check-structure-elimination 12.3766+-0.4746 12.2062+-0.0608 might be 1.0140x faster get-by-val-with-string-chain-from-try-block 4.6384+-0.0207 ? 4.6569+-0.0315 ? get-by-val-with-string-check-structure-elimination 11.1704+-0.1457 11.1145+-0.0528 get-by-val-with-string-proto-or-self 36.6116+-2.7112 35.7188+-1.7972 might be 1.0250x faster get-by-val-with-string-quadmorphic-check-structure-elimination-simple 6.2597+-0.1620 6.1577+-0.0404 might be 1.0166x faster get-by-val-with-string-self-or-proto 35.7119+-1.7402 ? 37.9825+-2.8034 ? might be 1.0636x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 5.8000+-0.2142 ? 5.8661+-0.1840 ? might be 1.0114x slower get-by-val-with-symbol-bimorphic-check-structure-elimination 23.6539+-0.0465 23.6182+-0.0327 get-by-val-with-symbol-chain-from-try-block 4.6530+-0.0320 4.6292+-0.0228 get-by-val-with-symbol-check-structure-elimination 22.5139+-0.0326 22.5033+-0.0162 get-by-val-with-symbol-proto-or-self 35.0397+-0.4510 ? 36.8731+-2.5530 ? might be 1.0523x slower get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 7.6357+-0.0195 ? 7.6443+-0.0297 ? get-by-val-with-symbol-self-or-proto 36.0168+-2.4026 35.3152+-1.8512 might be 1.0199x faster get_callee_monomorphic 4.0888+-0.0590 4.0529+-0.0679 get_callee_polymorphic 6.0930+-0.0700 ? 6.0963+-0.0229 ? getter-no-activation 8.4763+-0.0465 ? 8.4766+-0.0433 ? getter-prototype 18.9814+-0.3798 18.9234+-0.4320 getter-richards-try-catch 2427.7096+-77.8439 ? 2461.7211+-77.1199 ? might be 1.0140x slower getter-richards 168.2614+-3.3601 ? 169.4704+-3.7890 ? getter 9.4460+-0.0326 9.4453+-0.0276 global-object-access-with-mutating-structure 10.6314+-0.0789 ! 10.7658+-0.0503 ! definitely 1.0126x slower global-var-const-infer-fire-from-opt 1.5548+-0.0214 1.5467+-0.0243 global-var-const-infer 1.3994+-0.0204 1.3986+-0.0132 hard-overflow-check-equal 69.6494+-0.6425 69.2942+-0.5508 hard-overflow-check 68.9325+-0.5454 ? 69.1041+-0.6004 ? HashMap-put-get-iterate-keys 43.8946+-0.1627 ? 44.0078+-0.3533 ? HashMap-put-get-iterate 43.5743+-0.2427 ? 43.6506+-0.3978 ? HashMap-string-put-get-iterate 46.0424+-0.5779 45.8444+-0.9980 hoist-make-rope 17.6725+-1.0729 16.7864+-0.5642 might be 1.0528x faster hoist-poly-check-structure-effectful-loop 7.6285+-0.0273 7.6271+-0.0261 hoist-poly-check-structure 5.7518+-0.0221 ? 5.7746+-0.0483 ? imul-double-only 14.0974+-0.7521 13.9581+-0.7220 imul-int-only 17.1264+-0.6628 ? 17.1895+-0.9760 ? imul-mixed 13.5335+-0.5036 ? 14.1002+-0.1497 ? might be 1.0419x slower in-four-cases 41.0514+-0.3826 40.6782+-0.2097 in-one-case-false 20.1124+-0.0478 ? 20.1367+-0.1401 ? in-one-case-true 20.1188+-0.1410 20.0545+-0.0335 in-two-cases 21.6656+-0.0578 ? 21.6812+-0.0914 ? indexed-properties-in-objects 5.1957+-0.0300 ? 5.2269+-0.0588 ? infer-closure-const-then-mov-no-inline 7.1994+-0.0259 ? 7.3462+-0.4518 ? might be 1.0204x slower infer-closure-const-then-mov 33.0612+-0.2680 33.0260+-0.1880 infer-closure-const-then-put-to-scope-no-inline 23.8410+-0.0374 23.7730+-0.0576 infer-closure-const-then-put-to-scope 41.4582+-0.7928 ? 41.4979+-0.4188 ? infer-closure-const-then-reenter-no-inline 103.8416+-1.3598 103.2195+-0.4080 infer-closure-const-then-reenter 42.6625+-0.1761 42.6263+-0.2665 infer-constant-global-property 6.3931+-0.0925 6.3829+-0.0974 infer-constant-property 4.8495+-0.0391 ? 4.8653+-0.0583 ? infer-one-time-closure-ten-vars 18.0676+-0.4956 ? 18.0711+-0.2092 ? infer-one-time-closure-two-vars 17.2664+-0.1151 17.1810+-0.1688 infer-one-time-closure 17.0318+-0.1379 16.9289+-0.3123 infer-one-time-deep-closure 28.4378+-0.5821 28.0218+-0.2329 might be 1.0148x faster inline-arguments-access 6.8061+-0.0508 ? 6.8215+-0.0692 ? inline-arguments-aliased-access 6.9226+-0.0956 ? 6.9879+-0.1398 ? inline-arguments-local-escape 6.8568+-0.1697 ? 6.9195+-0.1001 ? inline-get-scoped-var 8.3065+-0.0552 ? 8.3205+-0.0569 ? inlined-put-by-id-transition 17.0029+-0.1978 16.7458+-0.2066 might be 1.0154x faster inlined-put-by-val-with-string-transition 84.1675+-0.2702 ? 84.8033+-1.4904 ? inlined-put-by-val-with-symbol-transition 86.1176+-3.2509 84.3917+-0.5763 might be 1.0205x faster int-or-other-abs-then-get-by-val 8.3141+-0.1378 8.2890+-0.0237 int-or-other-abs-zero-then-get-by-val 30.7524+-0.2816 ? 31.0280+-0.4371 ? int-or-other-add-then-get-by-val 8.1826+-0.0991 ? 8.2074+-0.1088 ? int-or-other-add 9.5279+-0.0272 9.5114+-0.0343 int-or-other-div-then-get-by-val 7.1582+-0.0299 ? 7.1664+-0.0491 ? int-or-other-max-then-get-by-val 7.3717+-0.0517 ? 7.4885+-0.2187 ? might be 1.0158x slower int-or-other-min-then-get-by-val 7.3527+-0.0745 ? 7.4600+-0.1591 ? might be 1.0146x slower int-or-other-mod-then-get-by-val 6.7956+-0.0217 6.7914+-0.0114 int-or-other-mul-then-get-by-val 6.9301+-0.0202 ? 6.9355+-0.0263 ? int-or-other-neg-then-get-by-val 7.9812+-0.1323 7.9255+-0.0221 int-or-other-neg-zero-then-get-by-val 31.6789+-0.4432 31.3936+-0.4916 int-or-other-sub-then-get-by-val 8.0915+-0.0466 8.0756+-0.0227 int-or-other-sub 6.3471+-0.0259 6.3435+-0.0213 int-overflow-local 7.8055+-0.0270 ? 7.8286+-0.0266 ? Int16Array-alloc-long-lived 81.3041+-0.9086 ? 81.3646+-0.6915 ? Int16Array-bubble-sort-with-byteLength 45.8737+-0.3326 ? 46.0270+-0.6342 ? Int16Array-bubble-sort 43.9430+-0.1229 43.9364+-0.1309 Int16Array-load-int-mul 2.8747+-0.0137 ? 2.8873+-0.0193 ? Int16Array-to-Int32Array-set 88.4954+-0.1909 ? 88.7872+-0.1719 ? Int32Array-alloc-large 29.3000+-0.4887 28.9466+-0.8059 might be 1.0122x faster Int32Array-alloc-long-lived 91.2803+-0.9897 91.0746+-0.8556 Int32Array-alloc 4.6165+-0.1146 4.5952+-0.0936 Int32Array-Int8Array-view-alloc 12.1248+-0.0938 ? 12.3641+-0.5611 ? might be 1.0197x slower int52-spill 9.5803+-0.0655 9.5615+-0.0989 Int8Array-alloc-long-lived 72.8364+-0.7395 ? 73.5012+-1.1232 ? Int8Array-load-with-byteLength 6.1570+-0.4745 5.9619+-0.0240 might be 1.0327x faster Int8Array-load 5.9540+-0.0159 ? 5.9622+-0.0358 ? integer-divide 20.7567+-0.4882 20.6127+-0.1054 integer-modulo 3.5682+-0.0231 ? 3.5829+-0.0511 ? is-boolean-fold-tricky 7.4779+-0.0444 ? 7.4855+-0.0553 ? is-boolean-fold 4.9799+-0.0416 ? 5.0550+-0.0379 ? might be 1.0151x slower is-function-fold-tricky-internal-function 21.2739+-0.1031 ^ 20.6641+-0.0300 ^ definitely 1.0295x faster is-function-fold-tricky 7.6218+-0.0819 ? 7.6380+-0.0369 ? is-function-fold 5.1073+-0.0583 5.0987+-0.0492 is-number-fold-tricky 7.4276+-0.0416 ? 7.4536+-0.0273 ? is-number-fold 5.0200+-0.0499 ? 5.0750+-0.0417 ? might be 1.0110x slower is-object-or-null-fold-functions 5.1609+-0.0285 ? 5.2020+-0.0476 ? is-object-or-null-fold-less-tricky 7.5947+-0.0486 ? 7.6184+-0.0658 ? is-object-or-null-fold-tricky 10.3240+-0.1412 10.2633+-0.0283 is-object-or-null-fold 5.0792+-0.0202 ! 5.1456+-0.0195 ! definitely 1.0131x slower is-object-or-null-trickier-function 7.7266+-0.0160 ? 7.7642+-0.0385 ? is-object-or-null-trickier-internal-function 21.4075+-0.0863 ^ 21.0687+-0.0264 ^ definitely 1.0161x faster is-object-or-null-tricky-function 7.6654+-0.0596 7.6627+-0.0230 is-object-or-null-tricky-internal-function 16.0543+-0.1374 ^ 15.7357+-0.1247 ^ definitely 1.0202x faster is-string-fold-tricky 7.4278+-0.0155 ? 7.4727+-0.0413 ? is-string-fold 5.0075+-0.0287 ? 5.0380+-0.0387 ? is-undefined-fold-tricky 6.1494+-0.0331 ? 6.1736+-0.0289 ? is-undefined-fold 4.9886+-0.0775 ! 5.0932+-0.0230 ! definitely 1.0210x slower JSONP-negative-0 0.6369+-0.0148 0.6306+-0.0185 large-int-captured 7.7477+-0.1166 ? 7.7849+-0.1031 ? large-int-neg 28.0575+-0.1523 28.0425+-0.1469 large-int 25.6746+-0.2808 25.5233+-0.1804 load-varargs-elimination 40.9541+-0.6825 40.8985+-0.4800 logical-not-weird-types 6.1692+-0.0271 6.1602+-0.0631 logical-not 8.7360+-0.3905 8.4159+-0.0309 might be 1.0380x faster lots-of-fields 20.6995+-0.2132 ? 20.8606+-0.2723 ? make-indexed-storage 5.4416+-0.1476 ? 5.4817+-0.1825 ? make-rope-cse 6.4436+-0.2653 6.3450+-0.1469 might be 1.0155x faster marsaglia-larger-ints 66.5766+-0.7989 66.2080+-0.2125 marsaglia-osr-entry 40.5694+-0.2763 40.4178+-0.1569 math-with-out-of-bounds-array-values 44.3014+-0.5410 ? 44.4602+-0.2765 ? max-boolean 4.4255+-0.0203 ? 4.4524+-0.0195 ? method-on-number 31.1813+-0.0529 ? 31.4272+-0.7938 ? min-boolean 4.5300+-0.0941 ? 4.5302+-0.0374 ? minus-boolean-double 5.6627+-0.0246 ? 5.6868+-0.0284 ? minus-boolean 4.2082+-0.0356 ? 4.2339+-0.0400 ? misc-strict-eq 61.9693+-1.5829 61.6622+-1.7379 mod-boolean-double 19.1882+-0.0432 ? 19.3311+-0.1779 ? mod-boolean 13.7003+-0.0408 ? 13.7772+-0.1164 ? mul-boolean-double 6.5946+-0.0182 ? 6.5998+-0.0156 ? mul-boolean 5.1310+-0.0194 ? 5.1385+-0.0192 ? neg-boolean 5.6645+-0.0217 ! 5.7143+-0.0224 ! definitely 1.0088x slower negative-zero-divide 0.8010+-0.0259 ? 0.8060+-0.0202 ? negative-zero-modulo 0.8327+-0.0288 0.8152+-0.0110 might be 1.0214x faster negative-zero-negate 0.7693+-0.0212 ? 0.7850+-0.0310 ? might be 1.0203x slower nested-function-parsing 87.5898+-0.5250 87.5330+-0.6346 new-array-buffer-dead 165.6927+-0.5502 ? 165.9374+-0.5705 ? new-array-buffer-push 11.1824+-0.1074 ? 11.4153+-0.7916 ? might be 1.0208x slower new-array-dead 32.7068+-1.2177 32.5530+-0.7230 new-array-push 6.7115+-0.1125 6.6083+-0.1988 might be 1.0156x faster no-inline-constructor 62.9956+-0.3948 ? 63.0029+-0.3544 ? number-test 5.5967+-0.0411 5.5959+-0.0457 object-closure-call 9.3658+-0.0302 ? 9.4031+-0.0448 ? object-get-own-property-symbols-on-large-array 6.8799+-0.1598 6.8211+-0.1017 object-test 5.2259+-0.0555 5.1663+-0.0170 might be 1.0115x faster obvious-sink-pathology-taken 190.1294+-0.7152 189.9955+-0.4334 obvious-sink-pathology 62.8655+-1.0029 ? 62.9855+-0.7232 ? obviously-elidable-new-object 55.6400+-0.9208 ? 55.7052+-0.6361 ? plus-boolean-arith 4.5569+-0.0296 4.5476+-0.0065 plus-boolean-double 5.7100+-0.0765 ? 5.7177+-0.0162 ? plus-boolean 4.3235+-0.0676 ? 4.4230+-0.2684 ? might be 1.0230x slower poly-chain-access-different-prototypes-simple 4.7121+-0.0514 ? 4.7287+-0.1011 ? poly-chain-access-different-prototypes 4.7253+-0.0173 4.7179+-0.0255 poly-chain-access-simpler 4.7114+-0.0380 ? 4.7851+-0.0690 ? might be 1.0157x slower poly-chain-access 4.7025+-0.0134 ? 4.7250+-0.0322 ? poly-stricteq 114.5341+-0.5295 114.4345+-0.3127 polymorphic-array-call 2.6424+-0.0790 2.6259+-0.0767 polymorphic-get-by-id 5.9923+-0.0258 ? 6.0103+-0.0328 ? polymorphic-put-by-id 65.5204+-0.7493 64.4784+-1.2822 might be 1.0162x faster polymorphic-put-by-val-with-string 65.2015+-0.5418 64.8493+-0.2479 polymorphic-put-by-val-with-symbol 65.0817+-0.5825 ? 65.3294+-0.7287 ? polymorphic-structure 24.2816+-0.2774 24.1552+-0.0710 polyvariant-monomorphic-get-by-id 14.9125+-0.1108 ? 15.1008+-0.4929 ? might be 1.0126x slower proto-getter-access 16.2392+-0.2435 16.1484+-0.2220 prototype-access-with-mutating-prototype 10.5198+-0.4503 10.2854+-0.1763 might be 1.0228x faster put-by-id-replace-and-transition 14.9366+-0.1050 14.8921+-0.0897 put-by-id-slightly-polymorphic 5.0859+-0.0279 ? 5.0967+-0.0314 ? put-by-id 18.5285+-0.1471 ? 18.6914+-0.1830 ? put-by-val-direct 0.7922+-0.0245 ? 0.8159+-0.0176 ? might be 1.0299x slower put-by-val-large-index-blank-indexing-type 9.7188+-0.0855 ? 9.7729+-0.1213 ? put-by-val-machine-int 4.6840+-0.0351 4.6756+-0.0304 put-by-val-with-string-replace-and-transition 20.7287+-0.2146 ? 21.0356+-0.6102 ? might be 1.0148x slower put-by-val-with-string-slightly-polymorphic 6.7187+-0.0271 6.7086+-0.0207 put-by-val-with-string 19.4872+-0.1792 ? 19.6342+-0.1823 ? put-by-val-with-symbol-replace-and-transition 22.9066+-0.1612 22.8580+-0.1220 put-by-val-with-symbol-slightly-polymorphic 7.2638+-0.0277 ? 7.2836+-0.0411 ? put-by-val-with-symbol 19.7312+-0.1860 ? 19.8092+-0.2834 ? rare-osr-exit-on-local 26.8220+-0.1192 ! 27.0959+-0.1244 ! definitely 1.0102x slower raytrace-with-empty-try-catch 11.9933+-0.0971 ? 12.0152+-0.0782 ? raytrace-with-try-catch 21.5003+-0.2895 21.3769+-0.1892 register-pressure-from-osr 35.5052+-0.2556 35.3999+-0.0380 repeat-multi-get-by-offset 42.0648+-0.0903 ? 42.1795+-0.1610 ? richards-empty-try-catch 147.5727+-0.7587 147.1434+-0.5660 richards-try-catch 494.5929+-2.0832 494.0771+-2.4288 setter-prototype 15.1339+-0.1194 15.0918+-0.1474 setter 10.1637+-0.0896 10.1127+-0.0304 simple-activation-demo 45.6635+-0.0585 ? 45.8870+-0.2697 ? simple-getter-access 20.4843+-0.1611 20.4467+-0.1790 simple-poly-call-nested 14.6581+-0.0475 ! 14.7422+-0.0167 ! definitely 1.0057x slower simple-poly-call 2.5637+-0.2220 2.4697+-0.0340 might be 1.0381x faster sin-boolean 35.2775+-2.5990 ? 35.3348+-2.8626 ? singleton-scope 121.3972+-2.1294 ? 122.6721+-1.4413 ? might be 1.0105x slower sink-function 18.4170+-0.1586 18.3340+-0.3410 sink-huge-activation 30.9446+-1.3913 30.3179+-1.2999 might be 1.0207x faster sinkable-new-object-dag 105.2189+-1.1255 ? 105.2568+-0.6089 ? sinkable-new-object-taken 85.5034+-0.7254 84.7031+-0.4198 sinkable-new-object 62.8872+-0.8398 ? 63.2575+-0.8551 ? slow-array-profile-convergence 5.3979+-0.1369 ? 5.4180+-0.1325 ? slow-convergence 5.1206+-0.0739 5.0815+-0.0240 slow-ternaries 32.0678+-0.0426 ? 32.4976+-0.9741 ? might be 1.0134x slower sorting-benchmark 35.5613+-0.1854 ? 35.7093+-0.5414 ? sparse-conditional 2.3734+-0.0219 2.3543+-0.0189 splice-to-remove 28.5011+-2.8002 26.9030+-0.1393 might be 1.0594x faster string-char-code-at 29.6239+-0.4911 29.5609+-0.2039 string-concat-object 3.7933+-0.0489 ? 3.8067+-0.0574 ? string-concat-pair-object 3.6752+-0.0331 ? 3.6846+-0.0512 ? string-concat-pair-simple 17.7834+-0.1235 ? 17.8110+-0.1292 ? string-concat-simple 18.6043+-0.1268 ? 18.9865+-0.7973 ? might be 1.0205x slower string-cons-repeat 12.4345+-0.1155 12.3463+-0.1572 string-cons-tower 12.4148+-0.0684 ? 12.5934+-0.1392 ? might be 1.0144x slower string-equality 35.3358+-0.1243 35.2902+-0.0633 string-get-by-val-big-char 12.6705+-0.0647 ? 12.7479+-0.0646 ? string-get-by-val-out-of-bounds-insane 6.7618+-0.0470 ! 6.9408+-0.0738 ! definitely 1.0265x slower string-get-by-val-out-of-bounds 9.1085+-0.0562 ? 9.1204+-0.0467 ? string-get-by-val 6.0040+-0.0212 ! 6.1096+-0.0250 ! definitely 1.0176x slower string-hash 3.7377+-0.0168 ? 3.7392+-0.0240 ? string-long-ident-equality 29.1707+-0.5335 28.9171+-0.1429 string-out-of-bounds 23.7462+-0.4206 ? 23.7868+-0.1288 ? string-repeat-arith 55.9512+-0.1744 ! 58.3939+-0.5683 ! definitely 1.0437x slower string-sub 74.7477+-0.3702 ! 80.2653+-0.7657 ! definitely 1.0738x slower string-test 5.3956+-0.0474 5.3894+-0.0453 string-var-equality 65.0544+-0.7001 64.8870+-0.2226 structure-hoist-over-transitions 4.2179+-0.0369 ? 4.2381+-0.0460 ? substring-concat-weird 70.1210+-0.9000 69.5534+-0.2312 substring-concat 76.8485+-0.1353 ? 77.2716+-0.8613 ? substring 85.5503+-0.2092 ? 85.6616+-0.2008 ? switch-char-constant 4.8457+-0.0311 ? 4.8786+-0.0487 ? switch-char 10.7303+-0.0267 ? 10.7539+-0.1221 ? switch-constant 13.0528+-0.1224 13.0367+-0.1313 switch-string-basic-big-var 35.2575+-0.2870 ? 35.4896+-0.7119 ? switch-string-basic-big 31.6585+-0.2047 ? 32.0469+-0.3005 ? might be 1.0123x slower switch-string-basic-var 28.5310+-0.3082 ? 28.6630+-0.4614 ? switch-string-basic 26.5439+-0.0918 ? 26.5644+-0.0658 ? switch-string-big-length-tower-var 36.1573+-0.0289 ? 36.1657+-0.0355 ? switch-string-length-tower-var 28.0216+-0.0161 28.0180+-0.0206 switch-string-length-tower 23.8513+-0.0409 ? 23.9830+-0.1049 ? switch-string-short 23.9101+-0.1312 23.9025+-0.1161 switch 19.0180+-0.1233 ? 19.1775+-0.1802 ? tear-off-arguments-simple 5.4194+-0.0482 5.4070+-0.0418 tear-off-arguments 7.2835+-0.0920 ? 7.3031+-0.1157 ? temporal-structure 22.9243+-0.1078 ? 22.9559+-0.1197 ? to-int32-boolean 24.1005+-0.1284 24.0617+-0.0313 try-catch-get-by-val-cloned-arguments 18.3089+-0.0761 18.1134+-0.2439 might be 1.0108x faster try-catch-get-by-val-direct-arguments 3.7414+-0.0367 ? 3.7484+-0.0477 ? try-catch-get-by-val-scoped-arguments 8.0926+-0.3691 7.8751+-0.0944 might be 1.0276x faster typed-array-get-set-by-val-profiling 52.5433+-0.3906 ? 52.9340+-0.3226 ? undefined-property-access 644.9998+-4.3870 ? 645.2288+-5.8836 ? undefined-test 5.6329+-0.0347 5.5793+-0.0460 unprofiled-licm 23.4185+-0.2414 23.3867+-0.2893 v8-raytrace-with-empty-try-catch 65.8335+-1.2266 65.0331+-0.5574 might be 1.0123x faster v8-raytrace-with-try-catch 142.7607+-1.1592 141.3521+-0.3575 varargs-call 25.3646+-0.0665 ? 25.4898+-0.1384 ? varargs-construct-inline 43.9510+-0.5608 43.6809+-0.3368 varargs-construct 38.2410+-0.1350 38.1796+-0.0909 varargs-inline 17.5823+-0.0630 ? 17.5879+-0.0483 ? varargs-strict-mode 19.5580+-0.1100 19.4368+-0.1687 varargs 19.3284+-0.1201 ? 19.5258+-0.5000 ? might be 1.0102x slower weird-inlining-const-prop 4.0395+-0.0413 ? 4.0837+-0.0901 ? might be 1.0110x slower <geometric> 15.7624+-0.0187 ? 15.7789+-0.0153 ? might be 1.0010x slower og FTLGetPutByIdFlush Geomean of preferred means: <scaled-result> 49.9096+-0.0829 49.8963+-0.0515 might be 1.0003x faster
WebKit Commit Bot
Comment 7 2015-10-21 14:49:50 PDT
Comment on attachment 263722 [details] patch Clearing flags on attachment: 263722 Committed r191404: <http://trac.webkit.org/changeset/191404>
WebKit Commit Bot
Comment 8 2015-10-21 14:49:55 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.