WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
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
Details
Formatted Diff
Diff
patch
(17.70 KB, patch)
2015-10-20 17:09 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(19.38 KB, patch)
2015-10-21 13:10 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
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
Created
attachment 263722
[details]
patch
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.
Top of Page
Format For Printing
XML
Clone This Bug