Patch forthcoming.
Created attachment 252745 [details] the patch
Attachment 252745 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/ArrayPrototype.cpp:40: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 1 in 10 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 252745 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=252745&action=review r=me if bot issues are fixed / not caused by this patch. > Source/JavaScriptCore/ChangeLog:11 > + prototype chain is sain - i.e. has no indexed properties. Then we can just return s/sain/sane/. > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338 > + if (node->arrayMode().isSaneChain()) { You should put an assertion here like the 64-bit version: ASSERT(node->arrayMode().type() == Array::Contiguous);
Looks like it's generally a good thing. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r183974) "FastHole" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r183974) Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree FastHole SunSpider: 3d-cube 5.2812+-0.2683 5.2124+-0.1318 might be 1.0132x faster 3d-morph 5.7376+-0.0701 ? 5.9680+-0.2872 ? might be 1.0401x slower 3d-raytrace 6.6647+-0.5001 ? 6.9130+-0.4816 ? might be 1.0373x slower access-binary-trees 2.3189+-0.0939 ? 2.3836+-0.1692 ? might be 1.0279x slower access-fannkuch 6.0336+-0.0747 5.9828+-0.0828 access-nbody 3.1497+-0.4974 2.9816+-0.0929 might be 1.0563x faster access-nsieve 3.5473+-0.3499 3.2230+-0.0828 might be 1.1006x faster bitops-3bit-bits-in-byte 1.5710+-0.0281 ? 1.7602+-0.4588 ? might be 1.1204x slower bitops-bits-in-byte 3.3962+-0.0580 ? 3.5341+-0.2448 ? might be 1.0406x slower bitops-bitwise-and 2.1101+-0.0434 ? 2.1263+-0.0602 ? bitops-nsieve-bits 3.2057+-0.0697 ? 3.6160+-0.5179 ? might be 1.1280x slower controlflow-recursive 2.3253+-0.0869 ? 2.3722+-0.2167 ? might be 1.0202x slower crypto-aes 4.4043+-0.1044 ? 4.6892+-0.4824 ? might be 1.0647x slower crypto-md5 2.7143+-0.0514 ? 2.8308+-0.1794 ? might be 1.0429x slower crypto-sha1 2.7932+-0.1797 ? 2.8943+-0.2345 ? might be 1.0362x slower date-format-tofte 9.4850+-0.2104 ? 9.7496+-0.7246 ? might be 1.0279x slower date-format-xparb 5.8873+-0.3732 ? 6.0942+-0.1776 ? might be 1.0351x slower math-cordic 3.1794+-0.1166 3.1363+-0.0660 might be 1.0137x faster math-partial-sums 5.4259+-0.4007 5.3883+-0.1999 math-spectral-norm 1.9079+-0.0318 ? 2.1150+-0.2277 ? might be 1.1086x slower regexp-dna 7.7579+-1.2110 7.5813+-1.2213 might be 1.0233x faster string-base64 4.9657+-0.7743 ? 5.5069+-1.0534 ? might be 1.1090x slower string-fasta 6.8099+-0.3306 ? 7.0229+-0.8074 ? might be 1.0313x slower string-tagcloud 9.4453+-0.5153 9.3300+-0.6035 might be 1.0124x faster string-unpack-code 20.8247+-1.5063 19.4271+-0.6138 might be 1.0719x faster string-validate-input 4.9461+-0.2229 ? 5.0068+-0.2815 ? might be 1.0123x slower <arithmetic> 5.2265+-0.0695 ? 5.2633+-0.0976 ? might be 1.0070x slower TipOfTree FastHole LongSpider: 3d-cube 886.5517+-12.7342 885.5944+-10.1133 3d-morph 1538.5567+-13.9876 ? 1561.3091+-51.5231 ? might be 1.0148x slower 3d-raytrace 743.8158+-9.5285 731.4122+-9.2918 might be 1.0170x faster access-binary-trees 1032.4877+-9.7242 1019.8070+-7.4377 might be 1.0124x faster access-fannkuch 336.2548+-7.5050 327.6305+-12.6180 might be 1.0263x faster access-nbody 612.1234+-5.4300 ? 625.4064+-12.3077 ? might be 1.0217x slower access-nsieve 481.8783+-8.9474 481.3267+-2.8794 bitops-3bit-bits-in-byte 44.6098+-1.1029 43.8759+-0.3759 might be 1.0167x faster bitops-bits-in-byte 103.1358+-4.2807 102.2306+-2.4113 bitops-nsieve-bits 423.9563+-6.1506 421.6956+-2.7490 controlflow-recursive 486.5420+-12.5877 ? 490.9889+-11.9423 ? crypto-aes 712.9815+-8.1147 703.6635+-9.1228 might be 1.0132x faster crypto-md5 532.6786+-11.4427 521.8815+-7.4464 might be 1.0207x faster crypto-sha1 601.2180+-6.9767 596.8802+-7.9371 date-format-tofte 761.5969+-16.4127 750.3714+-12.1484 might be 1.0150x faster date-format-xparb 828.1840+-47.2601 827.9938+-8.1830 hash-map 169.4223+-3.2059 ? 172.6432+-2.6364 ? might be 1.0190x slower math-cordic 588.4110+-3.6149 ? 599.4486+-13.4657 ? might be 1.0188x slower math-partial-sums 510.0747+-7.6213 ? 513.5745+-7.7166 ? math-spectral-norm 567.4313+-7.0898 ? 569.8087+-7.0759 ? string-base64 385.9593+-4.1599 374.3436+-8.2060 might be 1.0310x faster string-fasta 433.2383+-5.8526 ? 439.1142+-7.3146 ? might be 1.0136x slower string-tagcloud 198.4856+-4.0301 197.2756+-3.4962 <geometric> 454.8903+-1.8667 453.4591+-2.0821 might be 1.0032x faster TipOfTree FastHole V8Spider: crypto 57.6836+-1.6892 56.1511+-1.5238 might be 1.0273x faster deltablue 98.5308+-3.6727 97.1455+-3.3735 might be 1.0143x faster earley-boyer 45.3531+-1.3586 44.4968+-0.5015 might be 1.0192x faster raytrace 41.4369+-2.3539 ? 42.7134+-2.8075 ? might be 1.0308x slower regexp 82.0898+-2.7959 ? 83.0511+-2.4510 ? might be 1.0117x slower richards 79.1196+-1.3051 ? 79.3960+-3.2864 ? splay 40.5620+-2.1263 39.2979+-2.4518 might be 1.0322x faster <geometric> 60.0151+-0.8614 59.6119+-0.9140 might be 1.0068x faster TipOfTree FastHole Octane: encrypt 0.20452+-0.00076 ? 0.20608+-0.00353 ? decrypt 3.61449+-0.05657 3.55439+-0.00771 might be 1.0169x faster deltablue x2 0.20817+-0.00276 0.20568+-0.00222 might be 1.0121x faster earley 0.49751+-0.00495 ? 0.50628+-0.00536 ? might be 1.0176x slower boyer 6.65453+-0.04412 ? 6.65765+-0.02827 ? navier-stokes x2 5.21234+-0.04700 ? 5.22844+-0.05116 ? raytrace x2 1.28244+-0.04659 ? 1.28562+-0.10758 ? richards x2 0.12612+-0.00555 0.12232+-0.00124 might be 1.0311x faster splay x2 0.39853+-0.00245 0.39639+-0.00265 regexp x2 32.20924+-0.24901 32.00960+-0.21172 pdfjs x2 45.33234+-0.46726 45.32037+-0.47136 mandreel x2 49.92237+-0.53478 ? 50.15351+-0.49817 ? gbemu x2 41.94737+-0.53965 ? 42.84097+-2.76851 ? might be 1.0213x slower closure 0.56237+-0.00775 ? 0.56711+-0.00894 ? jquery 7.09744+-0.03079 ? 7.17652+-0.09094 ? might be 1.0111x slower box2d x2 12.43604+-0.08078 ? 12.54741+-0.10863 ? zlib x2 384.12149+-17.29956 ? 396.58931+-2.92146 ? might be 1.0325x slower typescript x2 851.50269+-4.54014 ^ 825.68233+-16.92565 ^ definitely 1.0313x faster <geometric> 6.74360+-0.03223 6.74321+-0.06129 might be 1.0001x faster TipOfTree FastHole Kraken: ai-astar 277.733+-6.890 ? 281.228+-4.793 ? might be 1.0126x slower audio-beat-detection 107.300+-1.348 107.125+-1.570 audio-dft 121.617+-2.843 120.519+-3.760 audio-fft 87.233+-2.773 ^ 80.666+-1.712 ^ definitely 1.0814x faster audio-oscillator 77.518+-1.948 ? 80.368+-3.436 ? might be 1.0368x slower imaging-darkroom 106.062+-2.323 ? 106.232+-3.283 ? imaging-desaturate 64.350+-1.457 ? 64.658+-2.291 ? imaging-gaussian-blur 114.685+-1.581 ^ 110.504+-1.556 ^ definitely 1.0378x faster json-parse-financial 47.179+-0.886 45.144+-1.812 might be 1.0451x faster json-stringify-tinderbox 31.937+-0.454 ? 32.611+-1.571 ? might be 1.0211x slower stanford-crypto-aes 60.437+-2.909 60.340+-1.424 stanford-crypto-ccm 60.775+-2.839 ? 61.861+-3.809 ? might be 1.0179x slower stanford-crypto-pbkdf2 138.306+-3.919 136.682+-1.325 might be 1.0119x faster stanford-crypto-sha256-iterative 52.700+-1.299 52.519+-2.063 <arithmetic> 96.274+-0.657 95.747+-0.745 might be 1.0055x faster TipOfTree FastHole JSRegress: abs-boolean 2.6643+-0.0525 ? 2.9160+-0.4212 ? might be 1.0945x slower adapt-to-double-divide 16.8825+-0.2034 ? 16.9220+-0.4890 ? aliased-arguments-getbyval 1.2445+-0.0682 ? 1.3144+-0.0694 ? might be 1.0562x slower allocate-big-object 2.8730+-0.1780 ? 2.9056+-0.0865 ? might be 1.0113x slower arguments-named-and-reflective 12.2133+-0.4679 ? 12.6496+-1.1829 ? might be 1.0357x slower arguments-out-of-bounds 15.1180+-0.7521 15.0031+-0.3552 arguments-strict-mode 10.6135+-0.2027 ? 11.7751+-1.2812 ? might be 1.1094x slower arguments 9.6121+-0.6681 ? 10.2111+-1.2600 ? might be 1.0623x slower arity-mismatch-inlining 0.8381+-0.0125 ! 0.8769+-0.0254 ! definitely 1.0463x slower array-access-polymorphic-structure 6.7638+-0.1738 ? 7.6043+-0.9670 ? might be 1.1243x slower array-nonarray-polymorhpic-access 35.8663+-3.2219 34.0557+-1.5155 might be 1.0532x faster array-prototype-every 88.8044+-1.6736 86.5129+-1.3507 might be 1.0265x faster array-prototype-forEach 84.8769+-1.3855 ? 85.6665+-1.8398 ? array-prototype-map 96.1570+-2.0365 95.0114+-2.8756 might be 1.0121x faster array-prototype-some 90.1528+-2.0217 88.7385+-1.4294 might be 1.0159x faster array-splice-contiguous 43.8220+-1.8186 42.8987+-2.3541 might be 1.0215x faster array-with-double-add 4.2668+-0.3158 4.2528+-0.3433 array-with-double-increment 3.2118+-0.0358 ? 3.2736+-0.0863 ? might be 1.0193x slower array-with-double-mul-add 5.1140+-0.2777 5.0655+-0.1642 array-with-double-sum 3.2823+-0.0670 ? 3.3741+-0.1596 ? might be 1.0280x slower array-with-int32-add-sub 6.8674+-0.1768 6.7600+-0.0407 might be 1.0159x faster array-with-int32-or-double-sum 3.7378+-0.5220 3.5524+-0.3992 might be 1.0522x faster ArrayBuffer-DataView-alloc-large-long-lived 34.3365+-1.5471 34.0485+-2.6689 ArrayBuffer-DataView-alloc-long-lived 15.2573+-2.2570 13.9245+-0.7520 might be 1.0957x faster ArrayBuffer-Int32Array-byteOffset 3.9787+-0.5112 ? 4.0328+-0.4273 ? might be 1.0136x slower ArrayBuffer-Int8Array-alloc-large-long-lived 34.1185+-1.7896 33.0337+-1.4531 might be 1.0328x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 23.3879+-1.4807 ? 24.5070+-2.4121 ? might be 1.0479x slower ArrayBuffer-Int8Array-alloc-long-lived 14.1728+-1.7257 13.2374+-0.7098 might be 1.0707x faster ArrayBuffer-Int8Array-alloc 10.7344+-0.3994 ? 11.2261+-1.1378 ? might be 1.0458x slower asmjs_bool_bug 7.7459+-0.1118 ? 7.8767+-0.1997 ? might be 1.0169x slower assign-custom-setter-polymorphic 3.1691+-0.2136 3.1641+-0.1362 assign-custom-setter 4.3257+-0.3082 4.2178+-0.2711 might be 1.0256x faster basic-set 8.7350+-0.3208 ? 8.8820+-0.6111 ? might be 1.0168x slower big-int-mul 4.0164+-0.0588 ? 4.1921+-0.4192 ? might be 1.0438x slower boolean-test 2.9736+-0.0328 ? 3.1419+-0.1652 ? might be 1.0566x slower branch-fold 3.7495+-0.0740 ? 3.7622+-0.0383 ? branch-on-string-as-boolean 19.8833+-1.6493 19.7284+-1.7549 by-val-generic 8.6652+-0.9346 8.0686+-0.1802 might be 1.0739x faster call-spread-apply 31.7810+-1.1540 ? 33.5827+-1.9784 ? might be 1.0567x slower call-spread-call 28.9175+-2.0304 ? 30.0522+-1.8905 ? might be 1.0392x slower captured-assignments 0.4532+-0.0242 ? 0.4537+-0.0176 ? cast-int-to-double 5.2850+-0.1761 ? 5.3340+-0.2236 ? cell-argument 8.4861+-0.1868 ? 8.5749+-0.2888 ? might be 1.0105x slower cfg-simplify 2.7828+-0.0424 ? 2.8395+-0.0571 ? might be 1.0204x slower chain-getter-access 9.0497+-0.1241 ? 9.2186+-0.1639 ? might be 1.0187x slower cmpeq-obj-to-obj-other 11.9196+-1.4371 11.5873+-0.7991 might be 1.0287x faster constant-test 4.9178+-0.0382 ? 5.0148+-0.1286 ? might be 1.0197x slower create-lots-of-functions 11.8718+-0.1940 ? 11.9331+-0.2901 ? DataView-custom-properties 39.4846+-1.7661 38.9692+-2.5997 might be 1.0132x faster deconstructing-parameters-overridden-by-function 0.5091+-0.0339 ? 0.5580+-0.0587 ? might be 1.0962x slower delay-tear-off-arguments-strictmode 14.0257+-0.2256 ? 14.4808+-1.0242 ? might be 1.0324x slower deltablue-varargs 205.3045+-3.6575 ? 205.8305+-3.6611 ? destructuring-arguments 17.2991+-0.4101 17.2809+-0.9955 destructuring-swap 4.9684+-0.0835 ? 5.0115+-0.0687 ? direct-arguments-getbyval 1.2197+-0.0382 ? 1.2938+-0.0557 ? might be 1.0608x slower div-boolean-double 5.3460+-0.2893 5.2376+-0.0384 might be 1.0207x faster div-boolean 7.8222+-0.0862 7.8215+-0.0718 double-get-by-val-out-of-bounds 4.7344+-0.2960 4.6451+-0.2752 might be 1.0192x faster double-pollution-getbyval 8.9271+-0.1148 ? 8.9495+-0.1682 ? double-pollution-putbyoffset 4.2721+-0.0426 ? 4.3377+-0.0750 ? might be 1.0154x slower double-to-int32-typed-array-no-inline 2.4988+-0.6160 2.3348+-0.1022 might be 1.0702x faster double-to-int32-typed-array 1.9663+-0.1271 ? 1.9956+-0.0307 ? might be 1.0149x slower double-to-uint32-typed-array-no-inline 2.2759+-0.0451 ? 2.3219+-0.0393 ? might be 1.0202x slower double-to-uint32-typed-array 2.0630+-0.0582 2.0611+-0.0520 elidable-new-object-dag 43.4476+-1.6092 43.3690+-1.4232 elidable-new-object-roflcopter 49.1507+-1.7778 48.1110+-1.8796 might be 1.0216x faster elidable-new-object-then-call 40.3820+-2.4780 39.7793+-0.7652 might be 1.0152x faster elidable-new-object-tree 45.7240+-1.4841 ? 46.1018+-2.2627 ? empty-string-plus-int 5.5140+-0.1344 ? 5.6119+-0.2277 ? might be 1.0178x slower emscripten-cube2hash 38.7788+-1.2896 ? 38.8230+-0.5783 ? exit-length-on-plain-object 15.5190+-2.0869 13.9537+-0.2872 might be 1.1122x faster external-arguments-getbyval 1.2475+-0.0756 ? 1.3078+-0.0503 ? might be 1.0483x slower external-arguments-putbyval 2.3228+-0.0831 2.3091+-0.0745 fixed-typed-array-storage-var-index 1.2190+-0.0249 ? 1.2456+-0.0180 ? might be 1.0219x slower fixed-typed-array-storage 1.0036+-0.1546 0.8942+-0.0372 might be 1.1224x faster Float32Array-matrix-mult 4.5668+-0.1322 ^ 4.3605+-0.0662 ^ definitely 1.0473x faster Float32Array-to-Float64Array-set 59.7057+-6.8089 54.7078+-2.0463 might be 1.0914x faster Float64Array-alloc-long-lived 69.3991+-1.0988 69.2076+-1.9770 Float64Array-to-Int16Array-set 70.9117+-0.7483 ? 71.7356+-1.8274 ? might be 1.0116x slower fold-double-to-int 13.4793+-0.1475 ? 13.4929+-0.1670 ? fold-get-by-id-to-multi-get-by-offset-rare-int 10.9033+-1.2298 ? 11.0312+-0.9495 ? might be 1.0117x slower fold-get-by-id-to-multi-get-by-offset 10.4245+-0.9017 9.6807+-1.0550 might be 1.0768x faster fold-multi-get-by-offset-to-get-by-offset 8.4041+-0.6854 ? 9.0583+-0.8664 ? might be 1.0778x slower fold-multi-get-by-offset-to-poly-get-by-offset 8.7131+-0.8259 ? 9.7189+-0.5901 ? might be 1.1154x slower fold-multi-put-by-offset-to-poly-put-by-offset 9.5273+-1.1975 ? 10.1335+-1.7329 ? might be 1.0636x slower fold-multi-put-by-offset-to-put-by-offset 7.2468+-1.0754 ^ 4.9554+-0.5467 ^ definitely 1.4624x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 9.7531+-0.3842 ? 10.0218+-0.5917 ? might be 1.0275x slower fold-put-by-id-to-multi-put-by-offset 9.6455+-1.0131 ? 10.0453+-0.9719 ? might be 1.0414x slower fold-put-structure 7.1434+-0.2634 5.3588+-1.6687 might be 1.3330x faster for-of-iterate-array-entries 4.6768+-0.0844 ? 4.8007+-0.1710 ? might be 1.0265x slower for-of-iterate-array-keys 3.8124+-0.1212 ? 3.8233+-0.0800 ? for-of-iterate-array-values 3.7526+-0.1267 3.7173+-0.0675 fround 21.3158+-0.7002 ? 21.6998+-1.0226 ? might be 1.0180x slower ftl-library-inlining-dataview 68.3655+-1.9799 ? 69.9019+-2.7712 ? might be 1.0225x slower ftl-library-inlining 80.8171+-21.1343 73.3957+-16.9982 might be 1.1011x faster function-dot-apply 2.0991+-0.4566 2.0380+-0.0807 might be 1.0300x faster function-test 2.8458+-0.0344 ? 3.0446+-0.3379 ? might be 1.0698x slower function-with-eval 112.2368+-10.3991 106.0115+-2.9815 might be 1.0587x faster gcse-poly-get-less-obvious 20.2879+-1.5850 18.3787+-0.5086 might be 1.1039x faster gcse-poly-get 21.3638+-2.3085 20.9547+-1.2060 might be 1.0195x faster gcse 4.3761+-0.1640 4.3349+-0.0384 get-by-id-bimorphic-check-structure-elimination-simple 2.7041+-0.0410 ? 2.7731+-0.1131 ? might be 1.0255x slower get-by-id-bimorphic-check-structure-elimination 6.1178+-0.1982 ? 6.1341+-0.1607 ? get-by-id-chain-from-try-block 7.2231+-1.1900 ? 7.2941+-1.1972 ? get-by-id-check-structure-elimination 5.2725+-0.3272 5.1291+-0.0621 might be 1.0280x faster get-by-id-proto-or-self 17.8273+-0.6533 ? 19.8591+-1.4608 ? might be 1.1140x slower get-by-id-quadmorphic-check-structure-elimination-simple 3.1631+-0.0623 ? 3.2471+-0.0713 ? might be 1.0266x slower get-by-id-self-or-proto 17.1776+-0.2641 ! 20.3650+-1.6087 ! definitely 1.1856x slower get-by-val-out-of-bounds 4.3833+-0.1246 4.3491+-0.0433 get_callee_monomorphic 2.8569+-0.1142 ? 2.9219+-0.1199 ? might be 1.0227x slower get_callee_polymorphic 3.6639+-0.0830 ? 4.0583+-0.6224 ? might be 1.1077x slower getter-no-activation 5.0000+-0.2662 ? 5.1982+-0.3702 ? might be 1.0396x slower getter-richards 129.4320+-7.2038 122.4571+-5.9945 might be 1.0570x faster getter 6.0876+-0.6888 ? 6.3138+-0.7070 ? might be 1.0372x slower global-var-const-infer-fire-from-opt 0.8805+-0.0331 ? 0.9978+-0.1911 ? might be 1.1331x slower global-var-const-infer 0.8845+-0.0873 0.8528+-0.0883 might be 1.0372x faster HashMap-put-get-iterate-keys 31.2319+-2.4139 30.4349+-1.4695 might be 1.0262x faster HashMap-put-get-iterate 30.1729+-1.4593 ? 30.5107+-0.9377 ? might be 1.0112x slower HashMap-string-put-get-iterate 29.2257+-0.5539 28.2772+-1.4189 might be 1.0335x faster hoist-make-rope 12.2419+-0.5134 12.1171+-0.7255 might be 1.0103x faster hoist-poly-check-structure-effectful-loop 5.1245+-0.1333 ? 5.1796+-0.3146 ? might be 1.0108x slower hoist-poly-check-structure 3.7841+-0.2725 3.6197+-0.0305 might be 1.0454x faster imul-double-only 9.0773+-0.4279 8.8487+-0.2048 might be 1.0258x faster imul-int-only 10.0691+-0.7132 ? 10.1617+-0.9088 ? imul-mixed 8.3997+-0.3137 8.2845+-0.0819 might be 1.0139x faster in-four-cases 20.4937+-0.2373 ? 21.9956+-1.3247 ? might be 1.0733x slower in-one-case-false 10.0572+-0.2819 ? 10.5870+-0.6373 ? might be 1.0527x slower in-one-case-true 10.3451+-0.4538 10.3251+-0.2669 in-two-cases 10.8402+-0.1889 10.7937+-0.2768 indexed-properties-in-objects 2.9216+-0.0278 ! 3.1145+-0.0417 ! definitely 1.0660x slower infer-closure-const-then-mov-no-inline 4.1748+-0.3933 3.9932+-0.0683 might be 1.0455x faster infer-closure-const-then-mov 19.8339+-0.4226 ? 20.4564+-0.8156 ? might be 1.0314x slower infer-closure-const-then-put-to-scope-no-inline 11.0970+-0.2284 ? 11.1483+-0.1091 ? infer-closure-const-then-put-to-scope 22.5988+-0.8481 22.2388+-1.5324 might be 1.0162x faster infer-closure-const-then-reenter-no-inline 50.0051+-2.1959 49.4659+-1.3655 might be 1.0109x faster infer-closure-const-then-reenter 22.5854+-1.2979 ? 22.9608+-2.2032 ? might be 1.0166x slower infer-constant-global-property 31.5500+-1.7633 30.4053+-0.9345 might be 1.0376x faster infer-constant-property 2.7124+-0.0441 ? 2.7769+-0.1687 ? might be 1.0238x slower infer-one-time-closure-ten-vars 13.3175+-1.4873 12.6936+-0.2137 might be 1.0492x faster infer-one-time-closure-two-vars 12.6735+-0.8091 12.1523+-0.3145 might be 1.0429x faster infer-one-time-closure 12.5562+-1.2768 ? 12.6265+-1.5760 ? infer-one-time-deep-closure 21.8801+-1.4416 21.3639+-0.7944 might be 1.0242x faster inline-arguments-access 4.6288+-0.3815 4.4712+-0.0752 might be 1.0353x faster inline-arguments-aliased-access 4.5828+-0.1476 ? 4.6545+-0.2328 ? might be 1.0157x slower inline-arguments-local-escape 4.5464+-0.1902 ? 4.6847+-0.2920 ? might be 1.0304x slower inline-get-scoped-var 4.8466+-0.2389 ? 5.0188+-0.3726 ? might be 1.0355x slower inlined-put-by-id-transition 11.0127+-0.6115 ? 11.6477+-0.5461 ? might be 1.0577x slower int-or-other-abs-then-get-by-val 4.8507+-0.0967 4.8084+-0.0193 int-or-other-abs-zero-then-get-by-val 17.4871+-1.0148 16.7086+-0.7476 might be 1.0466x faster int-or-other-add-then-get-by-val 3.9434+-0.0455 ! 4.2261+-0.0662 ! definitely 1.0717x slower int-or-other-add 5.2202+-0.0285 ? 5.4118+-0.2826 ? might be 1.0367x slower int-or-other-div-then-get-by-val 4.1502+-0.0564 ? 4.3867+-0.3444 ? might be 1.0570x slower int-or-other-max-then-get-by-val 4.1313+-0.0868 ? 4.3503+-0.4690 ? might be 1.0530x slower int-or-other-min-then-get-by-val 4.3153+-0.4130 4.1956+-0.0835 might be 1.0285x faster int-or-other-mod-then-get-by-val 3.8097+-0.1061 ? 3.9143+-0.2898 ? might be 1.0275x slower int-or-other-mul-then-get-by-val 3.6285+-0.0572 ? 3.6978+-0.0578 ? might be 1.0191x slower int-or-other-neg-then-get-by-val 4.6301+-0.0376 ? 4.7583+-0.1560 ? might be 1.0277x slower int-or-other-neg-zero-then-get-by-val 17.3756+-1.3783 ? 17.6736+-1.4224 ? might be 1.0172x slower int-or-other-sub-then-get-by-val 4.2340+-0.1350 ! 4.4148+-0.0424 ! definitely 1.0427x slower int-or-other-sub 3.4330+-0.1288 ? 3.5271+-0.3317 ? might be 1.0274x slower int-overflow-local 4.3397+-0.0946 4.3333+-0.0164 Int16Array-alloc-long-lived 49.4464+-1.5996 ? 50.0636+-1.9995 ? might be 1.0125x slower Int16Array-bubble-sort-with-byteLength 20.1635+-0.5847 ? 20.2223+-0.7903 ? Int16Array-bubble-sort 19.9209+-0.3736 ? 20.2605+-1.1657 ? might be 1.0170x slower Int16Array-load-int-mul 1.5418+-0.1748 ? 1.5642+-0.0722 ? might be 1.0145x slower Int16Array-to-Int32Array-set 54.1397+-1.8013 ! 59.2730+-1.5194 ! definitely 1.0948x slower Int32Array-alloc-large 24.1744+-0.9980 23.8973+-1.1417 might be 1.0116x faster Int32Array-alloc-long-lived 54.5943+-1.5068 54.4823+-2.0656 Int32Array-alloc 3.6146+-0.6174 3.3935+-0.2070 might be 1.0652x faster Int32Array-Int8Array-view-alloc 7.2155+-0.8545 ? 7.3751+-0.9135 ? might be 1.0221x slower int52-spill 6.5370+-0.2507 6.3116+-0.5204 might be 1.0357x faster Int8Array-alloc-long-lived 44.4274+-1.8724 ? 44.5386+-1.7007 ? Int8Array-load-with-byteLength 3.6375+-0.5621 3.3796+-0.0916 might be 1.0763x faster Int8Array-load 3.3700+-0.0740 ? 3.3855+-0.0569 ? integer-divide 11.4467+-0.8384 11.2923+-0.8176 might be 1.0137x faster integer-modulo 2.0424+-0.0782 ? 2.1143+-0.2302 ? might be 1.0352x slower is-boolean-fold-tricky 4.5043+-0.0767 ? 4.6840+-0.3596 ? might be 1.0399x slower is-boolean-fold 2.8431+-0.0334 ? 3.0227+-0.3621 ? might be 1.0632x slower is-function-fold-tricky-internal-function 11.8937+-0.0681 ? 12.2258+-0.3493 ? might be 1.0279x slower is-function-fold-tricky 4.5195+-0.0676 ? 4.6683+-0.1115 ? might be 1.0329x slower is-function-fold 2.9369+-0.1018 ? 2.9974+-0.2403 ? might be 1.0206x slower is-number-fold-tricky 4.4460+-0.0623 ? 4.5118+-0.0659 ? might be 1.0148x slower is-number-fold 2.9497+-0.3083 2.8826+-0.0356 might be 1.0233x faster is-object-or-null-fold-functions 2.9167+-0.0702 ? 3.0922+-0.1851 ? might be 1.0602x slower is-object-or-null-fold-less-tricky 4.8330+-0.5553 4.5545+-0.0689 might be 1.0612x faster is-object-or-null-fold-tricky 6.6665+-0.1074 6.6049+-0.0434 is-object-or-null-fold 2.9925+-0.3228 ? 3.0737+-0.3556 ? might be 1.0271x slower is-object-or-null-trickier-function 4.6130+-0.0759 ? 4.8619+-0.5748 ? might be 1.0539x slower is-object-or-null-trickier-internal-function 12.9263+-0.3715 ? 12.9760+-1.1254 ? is-object-or-null-tricky-function 4.6447+-0.1265 ? 4.8884+-0.5461 ? might be 1.0525x slower is-object-or-null-tricky-internal-function 9.2701+-0.1388 9.2012+-0.0231 is-string-fold-tricky 4.5020+-0.1517 ? 4.7519+-0.4584 ? might be 1.0555x slower is-string-fold 2.9997+-0.3489 2.8867+-0.0604 might be 1.0392x faster is-undefined-fold-tricky 3.8317+-0.1343 3.8061+-0.1214 is-undefined-fold 2.8668+-0.0916 ? 3.0512+-0.3365 ? might be 1.0643x slower large-int-captured 4.6117+-0.0521 ? 4.6464+-0.1045 ? large-int-neg 17.0293+-1.5119 16.5405+-1.2348 might be 1.0295x faster large-int 15.3328+-0.8340 ? 16.0042+-2.0290 ? might be 1.0438x slower logical-not 4.3886+-0.0748 ? 4.5657+-0.1720 ? might be 1.0403x slower lots-of-fields 13.4283+-0.5703 ? 13.7754+-1.2094 ? might be 1.0259x slower make-indexed-storage 3.1678+-0.4067 ? 3.1831+-0.1711 ? make-rope-cse 5.1233+-0.4200 5.0294+-0.4519 might be 1.0187x faster marsaglia-larger-ints 36.9231+-0.8562 36.3250+-1.0104 might be 1.0165x faster marsaglia-osr-entry 23.3869+-1.1528 ? 23.6042+-0.4834 ? max-boolean 2.5312+-0.0470 ? 2.8295+-0.3949 ? might be 1.1178x slower method-on-number 16.6918+-0.3050 ? 16.8512+-0.2933 ? min-boolean 2.5570+-0.0650 2.5421+-0.0991 minus-boolean-double 3.2469+-0.1940 ? 3.3434+-0.3943 ? might be 1.0297x slower minus-boolean 2.4069+-0.1682 ? 2.4768+-0.1862 ? might be 1.0290x slower misc-strict-eq 38.4521+-3.5720 ? 39.2409+-1.4447 ? might be 1.0205x slower mod-boolean-double 10.9725+-0.2162 ? 11.0478+-0.1943 ? mod-boolean 7.8900+-0.1227 ? 8.0498+-0.2223 ? might be 1.0202x slower mul-boolean-double 3.7181+-0.0771 ? 3.7622+-0.0736 ? might be 1.0119x slower mul-boolean 3.0583+-0.3604 2.8832+-0.0606 might be 1.0607x faster neg-boolean 3.2148+-0.1214 ? 3.3069+-0.2021 ? might be 1.0287x slower negative-zero-divide 0.3905+-0.0444 0.3722+-0.0423 might be 1.0491x faster negative-zero-modulo 0.3585+-0.0085 ? 0.3690+-0.0327 ? might be 1.0293x slower negative-zero-negate 0.3228+-0.0232 ? 0.3446+-0.0107 ? might be 1.0674x slower nested-function-parsing 38.9175+-1.2030 37.8525+-0.2279 might be 1.0281x faster new-array-buffer-dead 112.6110+-2.6108 ? 114.6230+-3.2707 ? might be 1.0179x slower new-array-buffer-push 7.2622+-0.9372 7.1871+-0.7752 might be 1.0104x faster new-array-dead 19.7814+-0.3433 19.1449+-0.5621 might be 1.0332x faster new-array-push 4.0582+-0.3424 4.0343+-0.2654 no-inline-constructor 123.1716+-3.0629 ? 124.1343+-2.0905 ? number-test 2.9969+-0.0535 ? 3.1073+-0.0999 ? might be 1.0368x slower object-closure-call 5.3524+-0.0246 ! 5.4299+-0.0407 ! definitely 1.0145x slower object-test 2.7958+-0.0920 ? 2.8919+-0.0680 ? might be 1.0344x slower obvious-sink-pathology-taken 139.1442+-2.9006 ? 140.3360+-1.5888 ? obvious-sink-pathology 132.4001+-2.4203 132.0221+-1.4410 obviously-elidable-new-object 36.5304+-1.7061 35.4111+-1.1487 might be 1.0316x faster plus-boolean-arith 2.5754+-0.0936 2.5498+-0.1218 might be 1.0100x faster plus-boolean-double 3.2133+-0.0329 ? 3.2342+-0.0396 ? plus-boolean 2.3933+-0.0319 ? 2.4047+-0.0169 ? poly-chain-access-different-prototypes-simple 3.4232+-0.2290 3.3700+-0.1182 might be 1.0158x faster poly-chain-access-different-prototypes 2.6182+-0.1103 ? 2.7541+-0.3234 ? might be 1.0519x slower poly-chain-access-simpler 3.4490+-0.4197 ? 3.5303+-0.3594 ? might be 1.0236x slower poly-chain-access 2.6191+-0.1897 ? 2.7754+-0.2901 ? might be 1.0597x slower poly-stricteq 57.9301+-1.6208 ? 59.2512+-1.3090 ? might be 1.0228x slower polymorphic-array-call 1.1949+-0.0319 ? 1.2556+-0.0573 ? might be 1.0507x slower polymorphic-get-by-id 3.1978+-0.1420 3.1732+-0.1497 polymorphic-put-by-id 28.8736+-1.2724 ? 31.5913+-1.7282 ? might be 1.0941x slower polymorphic-structure 13.6522+-0.1999 ? 13.8112+-0.3163 ? might be 1.0116x slower polyvariant-monomorphic-get-by-id 8.6400+-0.1315 ? 8.6882+-0.1623 ? proto-getter-access 9.1093+-0.1078 9.0994+-0.1171 put-by-id-replace-and-transition 9.0897+-0.2435 ? 9.2620+-0.3528 ? might be 1.0190x slower put-by-id-slightly-polymorphic 2.8780+-0.0444 ? 3.1713+-0.4256 ? might be 1.1019x slower put-by-id 12.8646+-0.4884 12.7485+-0.3995 put-by-val-direct 0.4451+-0.0202 ^ 0.3686+-0.0207 ^ definitely 1.2074x faster put-by-val-large-index-blank-indexing-type 5.9325+-0.2611 ? 6.4537+-0.9533 ? might be 1.0879x slower put-by-val-machine-int 2.7202+-0.0813 ? 2.8742+-0.2854 ? might be 1.0566x slower rare-osr-exit-on-local 14.9627+-0.2346 ? 15.6335+-0.5509 ? might be 1.0448x slower register-pressure-from-osr 20.9727+-0.2070 ? 21.2549+-0.2554 ? might be 1.0135x slower setter 5.7563+-0.4731 ? 5.8645+-0.6333 ? might be 1.0188x slower simple-activation-demo 25.6309+-1.7861 25.5262+-1.3497 simple-getter-access 11.9907+-0.5140 ? 12.0068+-0.7389 ? simple-poly-call-nested 8.3297+-0.2528 8.3180+-0.3521 simple-poly-call 1.3147+-0.0316 ? 1.3920+-0.1552 ? might be 1.0588x slower sin-boolean 23.9290+-1.3692 23.5471+-1.3541 might be 1.0162x faster singleton-scope 62.5216+-0.9220 ? 63.1460+-1.6040 ? sink-function 12.1471+-0.2714 ? 12.2532+-0.2954 ? sink-huge-activation 19.3598+-0.4226 19.1738+-0.3498 sinkable-new-object-dag 70.7070+-1.5370 ? 71.7837+-1.3946 ? might be 1.0152x slower sinkable-new-object-taken 53.8065+-2.7875 50.2990+-1.2743 might be 1.0697x faster sinkable-new-object 38.8704+-1.4316 ? 40.1107+-1.7211 ? might be 1.0319x slower slow-array-profile-convergence 2.8821+-0.2647 2.8730+-0.0530 slow-convergence 2.8085+-0.2645 ? 2.8620+-0.3560 ? might be 1.0191x slower sorting-benchmark 20.7297+-0.2965 20.6305+-0.6390 sparse-conditional 1.1591+-0.0447 ? 1.1702+-0.0258 ? splice-to-remove 16.6273+-0.4846 16.6084+-0.6842 string-char-code-at 15.7858+-0.1611 ? 15.7980+-0.1841 ? string-concat-object 2.5913+-0.1059 ? 2.7169+-0.1920 ? might be 1.0484x slower string-concat-pair-object 2.6827+-0.2252 ? 2.7102+-0.3907 ? might be 1.0102x slower string-concat-pair-simple 11.8516+-1.2005 ? 12.0288+-1.2126 ? might be 1.0150x slower string-concat-simple 12.6475+-1.1489 12.2383+-0.7409 might be 1.0334x faster string-cons-repeat 8.2617+-0.6154 8.2300+-0.6221 string-cons-tower 7.9940+-0.1006 ? 8.5675+-0.5013 ? might be 1.0717x slower string-equality 17.9521+-0.4165 ? 18.6851+-0.5563 ? might be 1.0408x slower string-get-by-val-big-char 7.0868+-0.0175 ? 7.2550+-0.2692 ? might be 1.0237x slower string-get-by-val-out-of-bounds-insane 3.7495+-0.0476 ? 4.1423+-0.9247 ? might be 1.1047x slower string-get-by-val-out-of-bounds 5.2863+-0.2548 5.2601+-0.0967 string-get-by-val 3.2518+-0.0604 ? 3.2938+-0.0493 ? might be 1.0129x slower string-hash 2.0409+-0.0744 ? 2.0972+-0.0375 ? might be 1.0276x slower string-long-ident-equality 14.5076+-0.1048 ! 14.9179+-0.2240 ! definitely 1.0283x slower string-out-of-bounds 14.9213+-0.3269 14.8320+-0.1019 string-repeat-arith 35.0280+-0.7108 33.4368+-2.8318 might be 1.0476x faster string-sub 67.6036+-2.2286 ? 67.9053+-2.3417 ? string-test 2.8988+-0.0726 ? 2.9850+-0.0540 ? might be 1.0297x slower string-var-equality 37.0370+-1.1733 ^ 33.8134+-1.8087 ^ definitely 1.0953x faster structure-hoist-over-transitions 2.8053+-0.3100 2.6891+-0.0660 might be 1.0432x faster substring-concat-weird 40.0362+-1.2059 ? 40.3679+-1.1704 ? substring-concat 42.6734+-1.4876 42.4832+-0.9377 substring 47.8118+-1.6578 45.8768+-1.2051 might be 1.0422x faster switch-char-constant 2.8140+-0.1259 2.7412+-0.0254 might be 1.0266x faster switch-char 6.8333+-0.8476 6.5095+-0.7768 might be 1.0497x faster switch-constant 8.5779+-0.3581 ? 8.6043+-0.3205 ? switch-string-basic-big-var 17.6891+-0.9629 ? 17.9513+-0.3616 ? might be 1.0148x slower switch-string-basic-big 14.4222+-0.5705 ? 14.5800+-0.5635 ? might be 1.0109x slower switch-string-basic-var 14.8192+-0.2915 14.8118+-0.3435 switch-string-basic 12.7933+-0.2359 ? 13.5111+-1.2653 ? might be 1.0561x slower switch-string-big-length-tower-var 20.5070+-1.4151 19.9265+-0.2404 might be 1.0291x faster switch-string-length-tower-var 15.0330+-0.1636 14.8689+-0.2758 might be 1.0110x faster switch-string-length-tower 12.8316+-0.7673 12.7933+-0.1685 switch-string-short 12.4927+-0.3864 ? 12.7951+-0.1148 ? might be 1.0242x slower switch 12.6122+-0.1750 ? 12.8336+-0.3471 ? might be 1.0176x slower tear-off-arguments-simple 3.6487+-0.3601 3.4521+-0.1315 might be 1.0570x faster tear-off-arguments 4.8490+-0.3162 4.8050+-0.1291 temporal-structure 12.4925+-1.4003 12.1515+-0.2405 might be 1.0281x faster to-int32-boolean 13.4350+-0.2909 ? 14.2862+-1.1450 ? might be 1.0634x slower try-catch-get-by-val-cloned-arguments 14.9559+-0.8828 14.2516+-0.2386 might be 1.0494x faster try-catch-get-by-val-direct-arguments 6.6075+-0.2728 ? 7.1108+-0.9386 ? might be 1.0762x slower try-catch-get-by-val-scoped-arguments 8.4666+-1.1474 ? 8.5055+-0.8465 ? typed-array-get-set-by-val-profiling 32.4337+-1.1354 32.0209+-0.4813 might be 1.0129x faster undefined-property-access 339.3552+-3.4704 ? 341.7985+-1.9568 ? undefined-test 2.9887+-0.0214 ! 3.1671+-0.1461 ! definitely 1.0597x slower unprofiled-licm 23.1627+-1.2351 ? 23.4135+-0.9531 ? might be 1.0108x slower varargs-call 14.2692+-0.2860 14.1517+-0.2186 varargs-construct-inline 22.3266+-1.2963 21.4478+-0.8784 might be 1.0410x faster varargs-construct 32.0950+-1.4114 31.2430+-1.0348 might be 1.0273x faster varargs-inline 9.0065+-0.4931 ? 9.3963+-0.5492 ? might be 1.0433x slower varargs-strict-mode 9.9760+-0.4410 9.9575+-0.6220 varargs 9.8452+-0.3164 9.6734+-0.0638 might be 1.0178x faster weird-inlining-const-prop 2.3099+-0.2279 ? 2.3709+-0.0850 ? might be 1.0264x slower <geometric> 8.5498+-0.0209 ! 8.5978+-0.0231 ! definitely 1.0056x slower TipOfTree FastHole AsmBench: bigfib.cpp 498.5939+-9.3310 496.8912+-3.4112 cray.c 427.2609+-3.6841 ? 429.5273+-8.5537 ? dry.c 489.7395+-8.5028 478.1179+-8.7709 might be 1.0243x faster FloatMM.c 727.8713+-3.8672 723.8812+-0.8241 gcc-loops.cpp 4291.0448+-24.3440 4279.8032+-14.7762 n-body.c 984.3193+-9.8684 ? 984.8260+-8.3239 ? Quicksort.c 423.9570+-4.5924 422.4707+-5.3432 stepanov_container.cpp 3621.5398+-19.7736 ? 3650.6649+-79.7279 ? Towers.c 262.1503+-3.3071 260.6519+-1.1079 <geometric> 796.5142+-2.2353 793.7666+-2.5754 might be 1.0035x faster TipOfTree FastHole CompressionBench: huffman 367.0045+-8.2848 ? 373.4247+-5.5695 ? might be 1.0175x slower arithmetic-simple 396.8634+-4.7419 395.9400+-4.3286 arithmetic-precise 299.0268+-4.2492 ? 303.3993+-5.8602 ? might be 1.0146x slower arithmetic-complex-precise 296.5667+-2.4658 ? 301.6456+-4.9070 ? might be 1.0171x slower arithmetic-precise-order-0 435.6970+-8.3435 426.4685+-7.0043 might be 1.0216x faster arithmetic-precise-order-1 328.8191+-7.3537 ? 331.2242+-4.4188 ? arithmetic-precise-order-2 358.2191+-6.1744 ? 364.4676+-5.0685 ? might be 1.0174x slower arithmetic-simple-order-1 430.2028+-5.9866 423.6678+-4.1505 might be 1.0154x faster arithmetic-simple-order-2 467.9954+-3.1357 ? 473.4315+-17.6978 ? might be 1.0116x slower lz-string 315.1518+-2.8386 ! 325.3348+-5.6778 ! definitely 1.0323x slower <geometric> 365.0494+-1.8005 ? 367.8891+-2.8275 ? might be 1.0078x slower TipOfTree FastHole Geomean of preferred means: <scaled-result> 62.4130+-0.1410 ? 62.4238+-0.2408 ? might be 1.0002x slower
(In reply to comment #3) > Comment on attachment 252745 [details] > the patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=252745&action=review > > r=me if bot issues are fixed / not caused by this patch. Looks like trunk was broken. I'll upload another patch and see if EWS is happy. > > > Source/JavaScriptCore/ChangeLog:11 > > + prototype chain is sain - i.e. has no indexed properties. Then we can just return > > s/sain/sane/. > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338 > > + if (node->arrayMode().isSaneChain()) { > > You should put an assertion here like the 64-bit version: > ASSERT(node->arrayMode().type() == Array::Contiguous); I intentionally excluded it. If you look above, the Int32 case is handled entirely separately in the 32-bit code. In the 64-bit code, the int32 and contiguous cases are handled together, so we have to assert that int32 didn't happen to have SaneChain.
Created attachment 252750 [details] patch for landing Seeing what happens in EWS.
Attachment 252750 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/runtime/ArrayPrototype.cpp:40: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 1 in 10 files If any of these errors are false positives, please file a bug against check-webkit-style.
I will wait for the GTK bot before landing.
Landed in http://trac.webkit.org/changeset/184032
(In reply to comment #5) > > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338 > > > + if (node->arrayMode().isSaneChain()) { > > > > You should put an assertion here like the 64-bit version: > > ASSERT(node->arrayMode().type() == Array::Contiguous); > > I intentionally excluded it. If you look above, the Int32 case is handled > entirely separately in the 32-bit code. In the 64-bit code, the int32 and > contiguous cases are handled together, so we have to assert that int32 > didn't happen to have SaneChain. Oooo, you're right. I looked for it but I missed that part.