Bug 145610

Summary: Object allocation sinking phase should sink NewArray and NewArrayBuffer
Product: WebKit Reporter: Basile Clement <basile_clement>
Component: JavaScriptCoreAssignee: Basile Clement <basile_clement>
Status: NEW    
Severity: Normal CC: commit-queue, fpizlo, ggaren, mark.lam, msaboff
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
Patch
none
Patch
none
Patch fpizlo: review+

Basile Clement
Reported 2015-06-03 12:20:49 PDT
Allow sinking of NewArray and NewArrayBuffer
Attachments
Patch (34.27 KB, patch)
2015-06-03 12:39 PDT, Basile Clement
no flags
Patch (34.73 KB, patch)
2015-06-15 10:11 PDT, Basile Clement
no flags
Patch (34.86 KB, patch)
2015-06-15 12:27 PDT, Basile Clement
fpizlo: review+
Basile Clement
Comment 1 2015-06-03 12:39:58 PDT
Basile Clement
Comment 2 2015-06-03 12:49:44 PDT
Benchmark looks good, except Kraken/audio-dft that seems to regress for some reason. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-Mac-Pro (MacPro6,1). VMs tested: "r185155" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc "SinkNewArray" at /Volumes/Data/secondary/OpenSource/WebKitBuild/SinkNewArray/Release/jsc 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. r185155 SinkNewArray SunSpider: 3d-cube 6.8622+-0.1667 6.8225+-0.0636 3d-morph 7.5643+-0.0574 ? 7.6480+-0.2879 ? might be 1.0111x slower 3d-raytrace 8.4341+-0.0780 ? 8.4501+-0.1151 ? access-binary-trees 3.0360+-0.1358 2.9825+-0.0988 might be 1.0179x faster access-fannkuch 7.9783+-0.0836 ? 8.0632+-0.1609 ? might be 1.0106x slower access-nbody 3.9947+-0.0177 ? 4.0244+-0.0382 ? access-nsieve 4.7198+-0.1487 ? 4.7310+-0.1320 ? bitops-3bit-bits-in-byte 2.1392+-0.0241 2.1108+-0.0406 might be 1.0134x faster bitops-bits-in-byte 4.7397+-0.0734 4.7328+-0.0355 bitops-bitwise-and 2.8522+-0.0314 ? 2.8536+-0.0310 ? bitops-nsieve-bits 4.1845+-0.0219 ? 4.2853+-0.3693 ? might be 1.0241x slower controlflow-recursive 3.2451+-0.1568 3.1704+-0.0179 might be 1.0236x faster crypto-aes 6.3136+-0.1252 6.1613+-0.0501 might be 1.0247x faster crypto-md5 3.7916+-0.0366 ^ 3.5629+-0.0652 ^ definitely 1.0642x faster crypto-sha1 3.4529+-0.0828 3.3988+-0.0392 might be 1.0159x faster date-format-tofte 12.3647+-0.4801 ? 12.3957+-0.1103 ? date-format-xparb 7.7714+-0.2859 7.7509+-0.1162 math-cordic 4.0865+-0.0601 4.0752+-0.0290 math-partial-sums 7.1614+-0.0752 7.0480+-0.0471 might be 1.0161x faster math-spectral-norm 2.6748+-0.0597 ? 2.6758+-0.0985 ? regexp-dna 9.8165+-0.0661 ? 9.9540+-0.2996 ? might be 1.0140x slower string-base64 6.5442+-0.0276 6.5169+-0.1634 string-fasta 8.6782+-0.0405 ? 8.7174+-0.1017 ? string-tagcloud 12.3016+-0.1617 ? 12.5777+-0.5154 ? might be 1.0224x slower string-unpack-code 27.2416+-0.3766 27.1159+-0.3190 string-validate-input 7.4090+-0.0774 ? 7.4229+-0.0780 ? <arithmetic> 6.8984+-0.0324 6.8942+-0.0244 might be 1.0006x faster r185155 SinkNewArray LongSpider: 3d-cube 1180.5798+-2.9622 ! 1191.5290+-7.1113 ! definitely 1.0093x slower 3d-morph 2081.3701+-0.4751 2081.0582+-0.4247 3d-raytrace 953.7150+-2.8373 ? 955.7830+-4.3622 ? access-binary-trees 1210.0076+-3.5877 ? 1210.3552+-2.8201 ? access-fannkuch 444.4542+-8.6395 ? 453.3019+-13.0334 ? might be 1.0199x slower access-nbody 848.1415+-0.5970 ^ 846.3759+-0.4534 ^ definitely 1.0021x faster access-nsieve 554.9745+-0.9593 ? 555.6383+-1.4896 ? bitops-3bit-bits-in-byte 61.8364+-0.4419 ? 62.1258+-0.2567 ? bitops-bits-in-byte 123.5986+-3.1571 122.5666+-0.6548 bitops-nsieve-bits 594.3241+-3.0174 591.9820+-1.6328 controlflow-recursive 659.1727+-12.6604 ? 666.5913+-9.5695 ? might be 1.0113x slower crypto-aes 898.6050+-3.3536 898.3972+-3.3681 crypto-md5 710.3269+-5.1937 ? 711.0428+-3.3843 ? crypto-sha1 828.6254+-4.2009 ? 834.5878+-2.4966 ? date-format-tofte 966.7680+-9.3101 ! 992.2595+-6.8754 ! definitely 1.0264x slower date-format-xparb 1070.6454+-42.3034 1028.8084+-13.3004 might be 1.0407x faster hash-map 236.5599+-3.3174 235.6975+-2.3918 math-cordic 803.0132+-0.6187 ? 803.6917+-1.3060 ? math-partial-sums 689.4597+-3.3576 689.0725+-3.1986 math-spectral-norm 766.1008+-0.7716 ? 766.4632+-0.2172 ? string-base64 513.6718+-0.3555 ^ 511.6399+-0.7087 ^ definitely 1.0040x faster string-fasta 559.5537+-0.4761 ! 565.3187+-2.3628 ! definitely 1.0103x slower string-tagcloud 263.3042+-2.0196 262.6153+-0.8484 <geometric> 598.2158+-0.9851 ? 598.9835+-1.0499 ? might be 1.0013x slower r185155 SinkNewArray V8Spider: crypto 69.0458+-0.9457 ^ 67.9836+-0.0514 ^ definitely 1.0156x faster deltablue 93.3756+-1.4924 ? 94.3508+-1.8003 ? might be 1.0104x slower earley-boyer 59.9181+-0.5829 59.2413+-0.7433 might be 1.0114x faster raytrace 41.7720+-0.8691 41.3510+-0.4954 might be 1.0102x faster regexp 108.2910+-1.7223 107.9690+-0.4038 richards 97.4963+-0.5869 97.0130+-1.4301 splay 49.1567+-2.0878 47.6984+-2.3589 might be 1.0306x faster <geometric> 70.1582+-0.5878 69.5111+-0.3887 might be 1.0093x faster r185155 SinkNewArray Octane: encrypt 0.30651+-0.00087 ? 0.30670+-0.00067 ? decrypt 5.32186+-0.01387 5.30769+-0.03034 deltablue x2 0.26152+-0.00861 0.26062+-0.00764 earley 0.48246+-0.00557 ? 0.48260+-0.00183 ? boyer 6.82992+-0.01124 6.82751+-0.00806 navier-stokes x2 7.05322+-0.00104 ? 7.05587+-0.00759 ? raytrace x2 1.58014+-0.06300 ? 1.62115+-0.04953 ? might be 1.0260x slower richards x2 0.16904+-0.00125 0.16836+-0.00102 splay x2 0.47948+-0.00434 ? 0.48175+-0.00289 ? regexp x2 40.30693+-0.10648 ^ 40.09709+-0.03883 ^ definitely 1.0052x faster pdfjs x2 56.33257+-0.18364 ^ 55.97771+-0.11080 ^ definitely 1.0063x faster mandreel x2 70.30266+-0.60227 70.17787+-0.17855 gbemu x2 60.07628+-0.40360 ? 60.29855+-0.94238 ? closure 0.82770+-0.00434 ^ 0.79560+-0.00205 ^ definitely 1.0403x faster jquery 10.54652+-0.04268 ^ 10.17237+-0.06325 ^ definitely 1.0368x faster box2d x2 17.72591+-0.03080 17.70808+-0.06723 zlib x2 524.01217+-1.06646 ? 524.36111+-1.61727 ? typescript x2 1088.86519+-17.17017 1082.00688+-23.56197 <geometric> 8.83795+-0.04277 8.81924+-0.01972 might be 1.0021x faster r185155 SinkNewArray Kraken: ai-astar 416.164+-5.776 ? 417.480+-7.920 ? audio-beat-detection 142.461+-1.229 ? 142.518+-0.846 ? audio-dft 149.814+-0.376 ! 152.483+-2.032 ! definitely 1.0178x slower audio-fft 109.522+-3.532 107.672+-0.468 might be 1.0172x faster audio-oscillator 97.975+-0.880 97.540+-0.083 imaging-darkroom 140.212+-0.089 ! 140.616+-0.254 ! definitely 1.0029x slower imaging-desaturate 87.364+-0.252 ? 87.566+-0.338 ? imaging-gaussian-blur 147.139+-0.681 ? 149.668+-6.378 ? might be 1.0172x slower json-parse-financial 63.250+-0.496 63.108+-0.356 json-stringify-tinderbox 38.362+-0.684 38.299+-0.056 stanford-crypto-aes 75.765+-0.655 75.699+-1.005 stanford-crypto-ccm 64.245+-2.952 63.826+-1.400 stanford-crypto-pbkdf2 145.343+-1.352 ? 145.983+-1.248 ? stanford-crypto-sha256-iterative 56.637+-0.300 ? 57.086+-0.912 ? <arithmetic> 123.875+-0.913 ? 124.253+-0.507 ? might be 1.0031x slower r185155 SinkNewArray JSRegress: abs-boolean 3.4892+-0.0463 3.4690+-0.0420 adapt-to-double-divide 21.8505+-0.2191 ? 21.8683+-0.7134 ? aliased-arguments-getbyval 1.7873+-0.2078 1.7520+-0.0799 might be 1.0201x faster allocate-big-object 3.3056+-0.0384 ? 3.3331+-0.1480 ? arguments-named-and-reflective 14.7899+-0.2642 ? 15.2091+-0.3104 ? might be 1.0283x slower arguments-out-of-bounds 19.1665+-0.2589 19.0792+-0.0327 arguments-strict-mode 12.9889+-0.5213 12.9550+-0.3873 arguments 11.4373+-0.1382 11.2899+-0.2179 might be 1.0131x faster arity-mismatch-inlining 1.2028+-0.0320 ? 1.2133+-0.0292 ? array-access-polymorphic-structure 8.3097+-0.0536 ? 8.4573+-0.2501 ? might be 1.0178x slower array-nonarray-polymorhpic-access 43.0949+-0.4283 42.8983+-0.5122 array-prototype-every 108.5796+-0.2128 108.4701+-0.4131 array-prototype-forEach 106.3185+-0.5778 ! 107.8065+-0.6784 ! definitely 1.0140x slower array-prototype-map 117.9091+-0.5048 ? 118.8726+-0.6299 ? array-prototype-reduce 102.9709+-0.5664 ? 103.5614+-1.3385 ? array-prototype-reduceRight 107.4561+-11.9641 102.9720+-0.5623 might be 1.0435x faster array-prototype-some 108.9790+-1.2660 108.9102+-0.6111 array-splice-contiguous 55.1587+-0.7529 ? 55.8205+-0.5866 ? might be 1.0120x slower array-with-double-add 5.3809+-0.0318 5.3694+-0.0556 array-with-double-increment 4.2922+-0.0601 4.2568+-0.0224 array-with-double-mul-add 6.6361+-0.0455 ? 6.7821+-0.2737 ? might be 1.0220x slower array-with-double-sum 4.3939+-0.2201 4.2657+-0.0255 might be 1.0301x faster array-with-int32-add-sub 8.6269+-0.0329 ? 8.7515+-0.1831 ? might be 1.0144x slower array-with-int32-or-double-sum 4.3400+-0.0375 ? 4.3488+-0.0280 ? ArrayBuffer-DataView-alloc-large-long-lived 43.8085+-0.3293 ? 45.0854+-0.9872 ? might be 1.0291x slower ArrayBuffer-DataView-alloc-long-lived 18.4312+-0.1766 ? 18.4651+-0.4173 ? ArrayBuffer-Int32Array-byteOffset 5.0875+-0.0480 ? 5.2563+-0.4738 ? might be 1.0332x slower ArrayBuffer-Int8Array-alloc-large-long-lived 48.6716+-1.5718 48.1833+-2.0897 might be 1.0101x faster ArrayBuffer-Int8Array-alloc-long-lived-buffer 29.0753+-0.2541 ? 30.4884+-2.3432 ? might be 1.0486x slower ArrayBuffer-Int8Array-alloc-long-lived 17.2108+-0.0657 ? 18.4673+-1.8881 ? might be 1.0730x slower ArrayBuffer-Int8Array-alloc 13.4367+-0.1224 13.4179+-0.2423 asmjs_bool_bug 9.9940+-0.0888 ? 10.0876+-0.1479 ? assign-custom-setter-polymorphic 4.5039+-0.2272 ^ 4.0906+-0.0473 ^ definitely 1.1010x faster assign-custom-setter 6.1237+-0.2397 ^ 5.6071+-0.0307 ^ definitely 1.0921x faster basic-set 12.2149+-0.2281 ? 12.2424+-0.1688 ? big-int-mul 5.1993+-0.0280 ? 5.2424+-0.0457 ? boolean-test 3.9935+-0.0313 ? 4.0054+-0.0345 ? branch-fold 5.0721+-0.2566 4.9532+-0.0388 might be 1.0240x faster branch-on-string-as-boolean 25.6517+-0.5425 25.3355+-0.3522 might be 1.0125x faster by-val-generic 10.2267+-0.1785 ? 10.2913+-0.2004 ? call-spread-apply 43.9075+-0.7217 ^ 38.4023+-0.7471 ^ definitely 1.1434x faster call-spread-call 34.9072+-1.3053 32.4992+-1.2681 might be 1.0741x faster captured-assignments 0.7099+-0.0300 ? 0.7294+-0.0355 ? might be 1.0274x slower cast-int-to-double 6.7537+-0.0459 6.7464+-0.0438 cell-argument 10.7102+-0.1471 ? 10.8335+-0.2823 ? might be 1.0115x slower cfg-simplify 3.7094+-0.0706 3.6839+-0.0418 chain-getter-access 12.0602+-0.1730 11.9431+-0.1592 cmpeq-obj-to-obj-other 12.5204+-0.0996 ? 12.5601+-0.2339 ? constant-test 6.3764+-0.0476 ? 6.3899+-0.1232 ? create-lots-of-functions 13.5106+-0.1626 ? 13.6611+-0.3292 ? might be 1.0111x slower cse-new-array-buffer 20.9000+-0.2820 ^ 9.0685+-0.0528 ^ definitely 2.3047x faster cse-new-array 21.7758+-0.6473 ^ 10.2520+-0.3322 ^ definitely 2.1241x faster DataView-custom-properties 51.4642+-0.3326 ? 53.4373+-1.9094 ? might be 1.0383x slower deconstructing-parameters-overridden-by-function 0.8230+-0.0777 0.8042+-0.0297 might be 1.0233x faster delay-tear-off-arguments-strictmode 18.7885+-0.1827 ^ 17.9836+-0.3977 ^ definitely 1.0448x faster deltablue-varargs 275.9174+-10.5111 273.5146+-7.9299 destructuring-arguments 21.4673+-0.6926 21.1427+-0.2381 might be 1.0154x faster destructuring-swap 6.5738+-0.1143 ? 6.6621+-0.2976 ? might be 1.0134x slower direct-arguments-getbyval 1.7348+-0.0566 ? 1.7430+-0.1097 ? div-boolean-double 6.6791+-0.0186 ? 6.6887+-0.0060 ? div-boolean 10.0332+-0.0217 10.0293+-0.0188 double-get-by-val-out-of-bounds 5.6527+-0.2083 5.6431+-0.1846 double-pollution-getbyval 11.5264+-0.2644 11.4715+-0.0308 double-pollution-putbyoffset 5.5224+-0.0596 5.5095+-0.0771 double-to-int32-typed-array-no-inline 2.9791+-0.0418 2.9618+-0.0544 double-to-int32-typed-array 2.6241+-0.0483 ? 2.6497+-0.0410 ? double-to-uint32-typed-array-no-inline 3.0038+-0.0477 ? 3.0246+-0.0878 ? double-to-uint32-typed-array 2.7305+-0.0633 2.6921+-0.0647 might be 1.0143x faster elidable-new-object-dag 51.4230+-1.4776 ? 51.8464+-0.6294 ? elidable-new-object-roflcopter 53.1587+-0.7393 ? 53.2649+-0.7540 ? elidable-new-object-then-call 46.4349+-2.2382 ? 48.1708+-0.9522 ? might be 1.0374x slower elidable-new-object-tree 54.3972+-1.1790 ? 54.4475+-1.3752 ? empty-string-plus-int 6.8987+-0.0683 6.8841+-0.0728 emscripten-cube2hash 48.9580+-0.2771 48.9501+-0.8944 exit-length-on-plain-object 17.8538+-0.5472 17.7239+-0.2269 external-arguments-getbyval 1.6809+-0.1055 ? 1.6943+-0.0954 ? external-arguments-putbyval 3.0477+-0.0714 ? 3.0983+-0.0592 ? might be 1.0166x slower fixed-typed-array-storage-var-index 1.6677+-0.0832 ? 1.6788+-0.0661 ? fixed-typed-array-storage 1.2812+-0.1155 1.2338+-0.0291 might be 1.0384x faster Float32Array-matrix-mult 5.9377+-0.0530 ? 5.9436+-0.0390 ? Float32Array-to-Float64Array-set 70.0961+-1.0564 69.4597+-0.9350 Float64Array-alloc-long-lived 103.2985+-1.0428 102.7408+-1.0077 Float64Array-to-Int16Array-set 92.7090+-0.8456 92.6434+-0.7364 fold-double-to-int 18.4393+-0.1496 18.2979+-0.0471 fold-get-by-id-to-multi-get-by-offset-rare-int 10.0674+-0.1765 9.9805+-0.0747 fold-get-by-id-to-multi-get-by-offset 9.0889+-0.4879 ? 9.1374+-0.5538 ? fold-multi-get-by-offset-to-get-by-offset 7.8554+-0.7968 ? 8.2314+-0.6733 ? might be 1.0479x slower fold-multi-get-by-offset-to-poly-get-by-offset 8.3231+-0.5377 ? 8.5517+-0.4332 ? might be 1.0275x slower fold-multi-put-by-offset-to-poly-put-by-offset 7.8621+-0.4952 7.8543+-0.4146 fold-multi-put-by-offset-to-put-by-offset 5.5053+-0.6241 5.2851+-0.6708 might be 1.0417x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 12.1678+-0.9064 ? 12.4644+-0.6222 ? might be 1.0244x slower fold-put-by-id-to-multi-put-by-offset 8.6897+-0.0841 8.4458+-0.3973 might be 1.0289x faster fold-put-structure 5.8218+-0.4522 5.7798+-0.7953 for-of-iterate-array-entries 5.6194+-0.0706 ? 5.6468+-0.0975 ? for-of-iterate-array-keys 4.9690+-0.4716 4.9459+-0.5453 for-of-iterate-array-values 4.7225+-0.2655 4.6182+-0.1183 might be 1.0226x faster fround 26.5612+-0.6416 26.3667+-0.2342 ftl-library-inlining-dataview 95.5096+-9.0938 88.5484+-1.1060 might be 1.0786x faster ftl-library-inlining 89.7212+-0.5472 ? 106.6564+-27.1422 ? might be 1.1888x slower function-dot-apply 2.9176+-0.0445 2.9074+-0.0383 function-test 3.7559+-0.0594 ? 3.7589+-0.0241 ? function-with-eval 129.8562+-0.5314 128.7255+-1.8995 gcse-poly-get-less-obvious 27.8376+-2.1575 ? 27.9579+-2.8888 ? gcse-poly-get 31.3446+-4.0518 ? 32.1906+-5.6046 ? might be 1.0270x slower gcse 5.6820+-0.0339 ? 5.7000+-0.1131 ? get-by-id-bimorphic-check-structure-elimination-simple 3.5837+-0.0648 3.5811+-0.0537 get-by-id-bimorphic-check-structure-elimination 7.8982+-0.1886 ? 7.9038+-0.0925 ? get-by-id-chain-from-try-block 8.9340+-0.0243 ! 9.0391+-0.0360 ! definitely 1.0118x slower get-by-id-check-structure-elimination 6.9232+-0.6561 6.6763+-0.0325 might be 1.0370x faster get-by-id-proto-or-self 25.0811+-2.5145 24.2387+-2.6489 might be 1.0348x faster get-by-id-quadmorphic-check-structure-elimination-simple 3.8313+-0.0329 ? 3.8585+-0.0655 ? get-by-id-self-or-proto 24.2371+-0.9223 23.5535+-0.9474 might be 1.0290x faster get-by-val-out-of-bounds 5.3849+-0.1281 ? 5.5270+-0.2944 ? might be 1.0264x slower get_callee_monomorphic 3.1998+-0.1049 ? 3.2351+-0.0683 ? might be 1.0111x slower get_callee_polymorphic 4.6675+-0.1021 4.6513+-0.1210 getter-no-activation 6.1731+-0.0256 6.1679+-0.0432 getter-richards 123.3070+-2.7623 122.9559+-3.7203 getter 6.8438+-0.0387 ? 6.8686+-0.0376 ? global-var-const-infer-fire-from-opt 1.3358+-0.1105 ? 1.4290+-0.1058 ? might be 1.0698x slower global-var-const-infer 1.2537+-0.1650 1.1836+-0.1181 might be 1.0593x faster HashMap-put-get-iterate-keys 33.0585+-0.4640 32.8571+-0.2407 HashMap-put-get-iterate 32.2993+-0.2182 ? 32.4017+-0.2613 ? HashMap-string-put-get-iterate 36.5535+-0.4461 ? 36.6653+-1.1267 ? hoist-make-rope 15.3127+-1.1930 ? 15.7286+-0.6152 ? might be 1.0272x slower hoist-poly-check-structure-effectful-loop 6.6027+-0.3288 6.4907+-0.0208 might be 1.0172x faster hoist-poly-check-structure 4.8132+-0.0492 4.7863+-0.0592 imul-double-only 9.4972+-0.1545 9.4456+-0.1321 imul-int-only 12.1392+-0.4200 12.1324+-0.4059 imul-mixed 10.0254+-0.1345 9.8722+-0.3970 might be 1.0155x faster in-four-cases 28.1958+-0.2244 ? 28.5259+-0.6553 ? might be 1.0117x slower in-one-case-false 14.1324+-0.0512 14.1298+-0.0413 in-one-case-true 14.1755+-0.0237 14.1388+-0.0179 in-two-cases 14.9531+-0.0932 ? 15.0164+-0.2598 ? indexed-properties-in-objects 3.8127+-0.0269 ^ 3.7692+-0.0156 ^ definitely 1.0115x faster infer-closure-const-then-mov-no-inline 5.0698+-0.0535 ! 5.1614+-0.0344 ! definitely 1.0181x slower infer-closure-const-then-mov 25.6770+-0.2132 ? 25.6821+-0.2190 ? infer-closure-const-then-put-to-scope-no-inline 16.5661+-0.2553 ? 16.5923+-0.2362 ? infer-closure-const-then-put-to-scope 28.4413+-0.5745 ! 30.0090+-0.9480 ! definitely 1.0551x slower infer-closure-const-then-reenter-no-inline 72.9990+-1.1998 72.6307+-0.9516 infer-closure-const-then-reenter 29.6882+-1.2418 ? 30.2356+-1.2074 ? might be 1.0184x slower infer-constant-global-property 4.6156+-0.0354 ? 4.6202+-0.0328 ? infer-constant-property 3.5407+-0.0432 ? 3.5725+-0.1075 ? infer-one-time-closure-ten-vars 15.9163+-0.3909 15.7830+-0.1931 infer-one-time-closure-two-vars 15.4420+-0.2775 15.1517+-0.1757 might be 1.0192x faster infer-one-time-closure 14.9883+-0.0827 ? 15.1425+-0.0931 ? might be 1.0103x slower infer-one-time-deep-closure 26.9846+-0.2190 ? 27.1479+-0.3966 ? inline-arguments-access 5.4659+-0.1973 5.3656+-0.0779 might be 1.0187x faster inline-arguments-aliased-access 5.3702+-0.1532 ? 5.4185+-0.2550 ? inline-arguments-local-escape 5.5412+-0.2324 5.3628+-0.0997 might be 1.0333x faster inline-get-scoped-var 6.1215+-0.0707 6.0720+-0.0334 inlined-put-by-id-transition 13.7260+-0.4080 ? 13.9829+-0.4944 ? might be 1.0187x slower int-or-other-abs-then-get-by-val 6.3630+-0.0343 ? 6.4238+-0.1685 ? int-or-other-abs-zero-then-get-by-val 23.6810+-0.0779 ^ 23.1745+-0.3138 ^ definitely 1.0219x faster int-or-other-add-then-get-by-val 5.5165+-0.0310 ? 5.7459+-0.5335 ? might be 1.0416x slower int-or-other-add 6.8497+-0.0583 ? 6.9033+-0.0459 ? int-or-other-div-then-get-by-val 5.4464+-0.0373 ? 5.4654+-0.0178 ? int-or-other-max-then-get-by-val 5.5685+-0.0254 5.5592+-0.0220 int-or-other-min-then-get-by-val 5.6005+-0.0639 ? 5.6689+-0.1365 ? might be 1.0122x slower int-or-other-mod-then-get-by-val 5.0822+-0.0170 5.0535+-0.0201 int-or-other-mul-then-get-by-val 5.0727+-0.0316 5.0508+-0.0504 int-or-other-neg-then-get-by-val 6.1343+-0.0305 ? 6.1569+-0.0711 ? int-or-other-neg-zero-then-get-by-val 23.7402+-0.7589 23.4658+-0.2961 might be 1.0117x faster int-or-other-sub-then-get-by-val 5.5549+-0.0560 ? 5.5727+-0.0634 ? int-or-other-sub 4.6130+-0.0327 ? 4.6516+-0.0476 ? int-overflow-local 5.8180+-0.0166 5.8058+-0.0118 Int16Array-alloc-long-lived 63.6807+-0.8409 63.1632+-0.6943 Int16Array-bubble-sort-with-byteLength 25.4237+-0.2026 ? 25.8194+-0.6979 ? might be 1.0156x slower Int16Array-bubble-sort 26.3307+-0.1727 ? 26.3917+-0.1895 ? Int16Array-load-int-mul 2.0225+-0.0153 ? 2.1001+-0.1673 ? might be 1.0384x slower Int16Array-to-Int32Array-set 68.6027+-0.6332 67.7814+-0.5480 might be 1.0121x faster Int32Array-alloc-large 24.3733+-1.2038 ? 24.4484+-1.1706 ? Int32Array-alloc-long-lived 75.0006+-0.8041 ? 75.2477+-1.3906 ? Int32Array-alloc 3.5046+-0.2319 3.3920+-0.0661 might be 1.0332x faster Int32Array-Int8Array-view-alloc 8.6304+-0.2928 ? 8.7489+-0.6823 ? might be 1.0137x slower int52-spill 7.5137+-0.3714 7.3816+-0.0575 might be 1.0179x faster Int8Array-alloc-long-lived 57.4707+-0.7637 56.8752+-0.5802 might be 1.0105x faster Int8Array-load-with-byteLength 4.3846+-0.0350 ? 4.4207+-0.0584 ? Int8Array-load 4.4207+-0.0195 4.4002+-0.0245 integer-divide 14.3361+-0.0494 ? 14.4061+-0.1018 ? integer-modulo 2.7517+-0.0558 2.7308+-0.0643 is-boolean-fold-tricky 5.8173+-0.1436 5.7792+-0.0425 is-boolean-fold 3.7369+-0.0545 3.6495+-0.0354 might be 1.0239x faster is-function-fold-tricky-internal-function 15.6886+-0.1043 ^ 15.4932+-0.0716 ^ definitely 1.0126x faster is-function-fold-tricky 5.9687+-0.1558 5.9330+-0.0691 is-function-fold 3.7815+-0.0358 3.7358+-0.0651 might be 1.0122x faster is-number-fold-tricky 5.7958+-0.0471 5.7579+-0.0240 is-number-fold 3.7417+-0.0463 3.7399+-0.0505 is-object-or-null-fold-functions 3.9548+-0.3222 3.8227+-0.0607 might be 1.0346x faster is-object-or-null-fold-less-tricky 5.8680+-0.0255 ? 5.9270+-0.1405 ? might be 1.0100x slower is-object-or-null-fold-tricky 8.5057+-0.0858 8.4736+-0.0385 is-object-or-null-fold 3.7734+-0.0454 3.7570+-0.0400 is-object-or-null-trickier-function 6.0144+-0.0264 ? 6.0350+-0.0538 ? is-object-or-null-trickier-internal-function 16.8421+-0.0339 ^ 16.4623+-0.0330 ^ definitely 1.0231x faster is-object-or-null-tricky-function 5.9810+-0.1085 ? 6.0732+-0.2023 ? might be 1.0154x slower is-object-or-null-tricky-internal-function 12.2328+-0.0202 ? 12.2522+-0.0828 ? is-string-fold-tricky 5.7647+-0.0262 ? 6.0591+-0.3228 ? might be 1.0511x slower is-string-fold 3.6895+-0.0367 ? 3.7238+-0.0497 ? is-undefined-fold-tricky 4.9314+-0.2643 4.9153+-0.1633 is-undefined-fold 3.7170+-0.0210 3.6946+-0.0396 large-int-captured 5.4628+-0.1481 ? 5.5299+-0.2017 ? might be 1.0123x slower large-int-neg 21.2181+-0.2636 ? 21.2758+-0.1941 ? large-int 19.6565+-0.3036 ? 19.7620+-0.3202 ? load-varargs-elimination 32.4157+-0.3085 32.2959+-0.2295 logical-not-weird-types 4.2494+-0.0408 ? 4.2578+-0.0310 ? logical-not 5.9244+-0.1556 5.8639+-0.1039 might be 1.0103x faster lots-of-fields 16.4158+-0.5129 16.0699+-0.2332 might be 1.0215x faster make-indexed-storage 4.0931+-0.0560 3.9515+-0.3795 might be 1.0358x faster make-rope-cse 14.7476+-0.2154 14.7109+-0.1417 marsaglia-larger-ints 52.3750+-0.4022 52.3538+-0.2899 marsaglia-osr-entry 29.4667+-0.2653 29.4302+-0.3340 math-with-out-of-bounds-array-values 33.7806+-0.5485 ^ 32.1107+-0.0738 ^ definitely 1.0520x faster max-boolean 3.2322+-0.0190 ? 3.2623+-0.0927 ? method-on-number 22.6702+-0.2787 ? 22.9014+-0.8668 ? might be 1.0102x slower min-boolean 3.2937+-0.1580 3.2465+-0.0402 might be 1.0145x faster minus-boolean-double 4.1201+-0.0243 ? 4.1408+-0.0196 ? minus-boolean 3.1632+-0.2351 3.0517+-0.0252 might be 1.0365x faster misc-strict-eq 52.1984+-3.4962 50.5047+-1.4675 might be 1.0335x faster mod-boolean-double 14.2016+-0.1360 14.1991+-0.0440 mod-boolean 10.0769+-0.0128 ? 10.0849+-0.0321 ? mul-boolean-double 4.8166+-0.0147 ? 4.8615+-0.0626 ? mul-boolean 3.7712+-0.0453 3.7511+-0.0275 neg-boolean 4.1464+-0.0537 4.1411+-0.0160 negative-zero-divide 0.5791+-0.0554 0.5621+-0.0188 might be 1.0304x faster negative-zero-modulo 0.5522+-0.0417 ? 0.5787+-0.0276 ? might be 1.0481x slower negative-zero-negate 0.5546+-0.0454 0.5086+-0.0273 might be 1.0903x faster nested-function-parsing 50.3312+-0.7221 49.9071+-0.5603 new-array-buffer-dead 123.8398+-0.4526 ^ 52.6320+-0.8296 ^ definitely 2.3529x faster new-array-buffer-push 8.2305+-0.0736 ? 8.3007+-0.2270 ? new-array-dead 23.2309+-0.5933 22.7325+-0.7434 might be 1.0219x faster new-array-push 7.8534+-0.1534 ? 7.9275+-0.1522 ? no-inline-constructor 48.6307+-0.3572 48.4940+-0.3584 number-test 3.9592+-0.0387 ? 3.9812+-0.0520 ? object-closure-call 7.2613+-0.0357 ? 7.2722+-0.0682 ? object-test 3.7173+-0.0345 ? 3.7294+-0.1268 ? obvious-sink-pathology-taken 152.2159+-1.5034 ? 152.6471+-1.5523 ? obvious-sink-pathology 141.9209+-0.7704 141.6438+-0.7475 obviously-elidable-new-object 41.8191+-0.7070 ? 42.0721+-0.5702 ? plus-boolean-arith 3.2892+-0.0210 3.2602+-0.0248 plus-boolean-double 4.2255+-0.1820 4.1629+-0.0325 might be 1.0151x faster plus-boolean 3.1326+-0.0120 ? 3.1525+-0.0267 ? poly-chain-access-different-prototypes-simple 4.2753+-0.0225 ? 4.3030+-0.0426 ? poly-chain-access-different-prototypes 3.3281+-0.0287 ? 3.3733+-0.0236 ? might be 1.0136x slower poly-chain-access-simpler 4.2824+-0.0281 ? 4.3068+-0.0387 ? poly-chain-access 3.3586+-0.0260 3.3468+-0.0381 poly-stricteq 79.5319+-0.5082 79.4462+-0.1757 polymorphic-array-call 1.8417+-0.1135 ? 1.8877+-0.0567 ? might be 1.0250x slower polymorphic-get-by-id 4.0570+-0.0418 4.0460+-0.0566 polymorphic-put-by-id 38.4915+-1.3388 ? 39.6918+-3.4424 ? might be 1.0312x slower polymorphic-structure 19.7120+-0.2738 19.6422+-0.1765 polyvariant-monomorphic-get-by-id 11.0590+-0.0777 11.0278+-0.0508 proto-getter-access 11.9693+-0.1766 11.8590+-0.0663 put-by-id-replace-and-transition 12.0683+-0.2976 11.9072+-0.4183 might be 1.0135x faster put-by-id-slightly-polymorphic 3.6973+-0.0347 ? 3.7028+-0.0309 ? put-by-id 14.8794+-0.2184 ? 15.0537+-0.2892 ? might be 1.0117x slower put-by-val-direct 0.5586+-0.0345 ? 0.5735+-0.0175 ? might be 1.0267x slower put-by-val-large-index-blank-indexing-type 15.4264+-0.6247 14.9988+-0.1954 might be 1.0285x faster put-by-val-machine-int 3.4751+-0.1156 3.3650+-0.0690 might be 1.0327x faster rare-osr-exit-on-local 19.4674+-0.0714 ? 19.6543+-0.1370 ? register-pressure-from-osr 28.2229+-0.0347 ? 28.4599+-0.4253 ? repeat-multi-get-by-offset 32.1820+-0.0292 ? 32.2459+-0.1762 ? setter 6.8373+-0.0280 ? 6.8807+-0.0243 ? simple-activation-demo 33.8609+-0.7118 33.1983+-0.0619 might be 1.0200x faster simple-getter-access 15.0988+-0.1996 ? 15.2596+-0.2866 ? might be 1.0107x slower simple-poly-call-nested 10.3978+-0.1761 10.2649+-0.0638 might be 1.0129x faster simple-poly-call 1.8348+-0.1619 1.7938+-0.0192 might be 1.0228x faster sin-boolean 25.1956+-1.8747 ? 26.5326+-2.9066 ? might be 1.0531x slower singleton-scope 83.5079+-0.5424 ? 83.6096+-0.6910 ? sink-function 14.1471+-0.7513 ? 14.7142+-0.3510 ? might be 1.0401x slower sink-huge-activation 23.2033+-0.2576 ? 23.4458+-0.9029 ? might be 1.0105x slower sinkable-new-object-dag 83.9292+-0.7602 ? 84.3373+-0.9510 ? sinkable-new-object-taken 65.7277+-2.4145 63.6785+-0.1606 might be 1.0322x faster sinkable-new-object 47.0057+-0.8916 ? 47.3016+-0.7682 ? slow-array-profile-convergence 3.8662+-0.0771 3.8595+-0.1292 slow-convergence 3.7863+-0.1124 3.6911+-0.0741 might be 1.0258x faster slow-ternaries 24.2292+-0.7126 23.9312+-0.2426 might be 1.0125x faster sorting-benchmark 24.7287+-0.5906 ? 24.7910+-0.5529 ? sparse-conditional 1.6150+-0.0365 1.6077+-0.0242 splice-to-remove 19.8088+-0.3637 19.6753+-0.2628 string-char-code-at 21.4649+-0.2736 ? 21.6215+-0.2133 ? string-concat-object 2.9577+-0.0588 ? 2.9803+-0.0674 ? string-concat-pair-object 2.8868+-0.0320 ? 2.9478+-0.0495 ? might be 1.0211x slower string-concat-pair-simple 14.1009+-0.2969 13.8660+-0.2033 might be 1.0169x faster string-concat-simple 14.3301+-0.0608 ? 14.6124+-0.7228 ? might be 1.0197x slower string-cons-repeat 9.4753+-0.2039 9.3563+-0.1122 might be 1.0127x faster string-cons-tower 9.6766+-0.2450 9.6061+-0.1290 string-equality 23.7360+-0.8764 23.2137+-0.2721 might be 1.0225x faster string-get-by-val-big-char 9.0890+-0.0918 ? 9.1401+-0.1221 ? string-get-by-val-out-of-bounds-insane 4.6890+-0.0484 4.6703+-0.0358 string-get-by-val-out-of-bounds 7.0322+-0.0467 ? 7.0803+-0.0877 ? string-get-by-val 4.4447+-0.0303 ^ 4.3915+-0.0213 ^ definitely 1.0121x faster string-hash 2.7856+-0.0655 2.7220+-0.0535 might be 1.0233x faster string-long-ident-equality 19.1872+-0.2810 ? 19.3696+-0.4102 ? string-out-of-bounds 18.9999+-0.0939 18.9629+-0.1576 string-repeat-arith 43.2847+-1.1521 42.3561+-0.8714 might be 1.0219x faster string-sub 85.2656+-0.6193 84.5941+-0.6028 string-test 3.8227+-0.0831 3.7878+-0.0374 string-var-equality 43.1200+-0.0316 ? 43.4176+-0.7812 ? structure-hoist-over-transitions 3.2696+-0.0978 ? 3.2854+-0.0402 ? substring-concat-weird 51.6262+-0.3175 51.5186+-0.2282 substring-concat 54.7959+-0.7353 ? 54.8708+-0.7733 ? substring 60.0956+-1.0156 59.7013+-0.9438 switch-char-constant 3.5588+-0.0597 3.5524+-0.0208 switch-char 10.6503+-4.5769 10.6294+-4.4904 switch-constant 10.2667+-0.2508 ? 10.5473+-0.3155 ? might be 1.0273x slower switch-string-basic-big-var 24.7682+-0.6327 24.6956+-0.0616 switch-string-basic-big 21.4917+-0.6127 ? 21.5562+-0.4797 ? switch-string-basic-var 19.8081+-0.3074 ? 19.8128+-0.1838 ? switch-string-basic 18.3879+-0.3132 18.3815+-0.3832 switch-string-big-length-tower-var 26.3715+-0.0522 26.3060+-0.0286 switch-string-length-tower-var 20.3326+-0.1583 20.3298+-0.1678 switch-string-length-tower 17.2017+-0.1207 ? 17.2220+-0.1092 ? switch-string-short 17.1757+-0.0247 17.1633+-0.0722 switch 15.9788+-0.1390 ? 16.0897+-0.4990 ? tear-off-arguments-simple 4.1698+-0.0562 4.1460+-0.0613 tear-off-arguments 5.7116+-0.1154 ? 5.7375+-0.1554 ? temporal-structure 16.1341+-0.6087 16.0892+-0.4972 to-int32-boolean 17.9351+-0.0330 17.9312+-0.0233 try-catch-get-by-val-cloned-arguments 18.6383+-0.2598 ? 18.8584+-0.3059 ? might be 1.0118x slower try-catch-get-by-val-direct-arguments 8.1129+-0.1428 ? 8.1752+-0.0949 ? try-catch-get-by-val-scoped-arguments 9.5928+-0.1508 9.5870+-0.4961 typed-array-get-set-by-val-profiling 43.8533+-0.9249 ? 44.4946+-0.3704 ? might be 1.0146x slower undefined-property-access 458.2738+-0.2280 ? 458.3631+-0.5375 ? undefined-test 3.9043+-0.0243 3.8963+-0.0474 unprofiled-licm 29.1641+-0.4772 29.1163+-0.3589 varargs-call 19.7913+-0.1610 ? 20.0462+-0.2904 ? might be 1.0129x slower varargs-construct-inline 34.3714+-0.3426 ? 34.5522+-0.9352 ? varargs-construct 29.1034+-0.0727 ? 29.1962+-0.1938 ? varargs-inline 12.0703+-0.0498 12.0565+-0.0399 varargs-strict-mode 13.0513+-0.0357 13.0444+-0.0767 varargs 13.0935+-0.2158 13.0186+-0.0554 weird-inlining-const-prop 2.9572+-0.1045 ? 2.9888+-0.0829 ? might be 1.0107x slower <geometric> 11.0844+-0.0325 ^ 10.9920+-0.0163 ^ definitely 1.0084x faster r185155 SinkNewArray AsmBench: bigfib.cpp 659.6657+-1.9385 659.5763+-1.3830 cray.c 571.5378+-1.8235 ? 573.1967+-5.6290 ? dry.c 663.5815+-15.3691 659.5581+-16.5267 FloatMM.c 972.9917+-0.2619 ? 972.9986+-0.4314 ? gcc-loops.cpp 5688.0036+-13.0359 5682.9780+-13.7580 n-body.c 1327.4185+-0.4025 ? 1328.0354+-0.9812 ? Quicksort.c 570.7265+-0.7112 566.4269+-6.6085 stepanov_container.cpp 5033.0731+-11.5270 ? 5047.4958+-17.5657 ? Towers.c 344.7647+-0.6132 344.6506+-0.4697 <geometric> 1068.7924+-2.8983 1067.7421+-4.3175 might be 1.0010x faster r185155 SinkNewArray CompressionBench: huffman 519.0905+-1.0966 ^ 472.8241+-3.5570 ^ definitely 1.0979x faster arithmetic-simple 488.3917+-0.9892 488.1672+-0.8040 arithmetic-precise 390.5841+-3.1105 ? 390.8800+-2.5548 ? arithmetic-complex-precise 404.2934+-3.0045 403.1429+-0.8474 arithmetic-precise-order-0 513.7917+-0.2401 510.1337+-4.5468 arithmetic-precise-order-1 444.6978+-9.7363 441.0293+-1.5421 arithmetic-precise-order-2 500.3618+-1.8855 500.2085+-2.0196 arithmetic-simple-order-1 568.8978+-3.0882 ? 569.0549+-3.3936 ? arithmetic-simple-order-2 633.8684+-2.4850 ? 633.9730+-2.6142 ? lz-string 378.8268+-4.2282 ? 379.9957+-5.4518 ? <geometric> 478.1807+-1.4588 ^ 473.0439+-1.4258 ^ definitely 1.0109x faster r185155 SinkNewArray Geomean of preferred means: <scaled-result> 80.6814+-0.1301 ^ 80.4017+-0.1041 ^ definitely 1.0035x faster
Basile Clement
Comment 3 2015-06-03 13:02:51 PDT
huffman 519.0905+-1.0966 ^ 472.8241+-3.5570 ^ definitely 1.0979x faster Doesn't make any sense, there is no array allocation to sink here. Investigating.
Basile Clement
Comment 4 2015-06-03 13:07:24 PDT
(In reply to comment #3) > huffman 519.0905+-1.0966 ^ > 472.8241+-3.5570 ^ definitely 1.0979x faster > > Doesn't make any sense, there is no array allocation to sink here. > Investigating. It is apparently only coming from the GetButterfly redirection, so it may make sense.
Basile Clement
Comment 5 2015-06-03 17:29:38 PDT
(In reply to comment #4) > (In reply to comment #3) > > huffman 519.0905+-1.0966 ^ > > 472.8241+-3.5570 ^ definitely 1.0979x faster > > > > Doesn't make any sense, there is no array allocation to sink here. > > Investigating. > > It is apparently only coming from the GetButterfly redirection, so it may > make sense. I stand by my first observation, I can't make sense of this, and 10% is a lot. Seemingly irrelevant small code changes move it from 10% to 2%.
WebKit Commit Bot
Comment 6 2015-06-03 17:39:48 PDT
Attachment 254197 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1059: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1072: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1091: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1105: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 5 in 24 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 7 2015-06-03 21:32:28 PDT
Comment on attachment 254197 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=254197&action=review > Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1056 > + || !node->child2()->constant()->value().isUInt32()) { You need something stricter than isUInt32, I think. "pow(2, 31) - 1" is a UInt32, but it isn't a valid array index. Also, you could have: array: NewArray(@x, @y, @z) // length = 3 index: JSConstant(Int32:4) GetByVal(@array, @index, ContiguousInBounds) This should always exit. We may even perform optimizations assuming that this always exits. And there is no good way to lower this to a direct load from a phantom array.
Basile Clement
Comment 8 2015-06-04 09:28:10 PDT
(In reply to comment #7) > Comment on attachment 254197 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=254197&action=review > > > Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1056 > > + || !node->child2()->constant()->value().isUInt32()) { > > You need something stricter than isUInt32, I think. "pow(2, 31) - 1" is a > UInt32, but it isn't a valid array index. Ah yes, I forgot about that detail, I will change this. > Also, you could have: > > array: NewArray(@x, @y, @z) // length = 3 > index: JSConstant(Int32:4) > GetByVal(@array, @index, ContiguousInBounds) > > This should always exit. We may even perform optimizations assuming that > this always exits. And there is no good way to lower this to a direct load > from a phantom array. Oh, because a load from a hole is InBounds. I will change the tests to check the length of the underlying array then.
Darin Adler
Comment 9 2015-06-06 15:54:44 PDT
Comment on attachment 254197 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=254197&action=review >>> Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1056 >>> + || !node->child2()->constant()->value().isUInt32()) { >> >> You need something stricter than isUInt32, I think. "pow(2, 31) - 1" is a UInt32, but it isn't a valid array index. Also, you could have: >> >> array: NewArray(@x, @y, @z) // length = 3 >> index: JSConstant(Int32:4) >> GetByVal(@array, @index, ContiguousInBounds) >> >> This should always exit. We may even perform optimizations assuming that this always exits. And there is no good way to lower this to a direct load from a phantom array. > > Ah yes, I forgot about that detail, I will change this. There’s another thing to remember about the function isUInt32 in cases like this. To quote a comment that appears in three places in the source code: "Despite its name, JSValue::isUInt32 will return true only for positive boxed int32_t". So it will return false for pow(2, 30) and higher. Maybe we should rename that function.
Basile Clement
Comment 10 2015-06-15 10:11:04 PDT
Basile Clement
Comment 11 2015-06-15 12:07:45 PDT
Looks reasonable. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3). VMs tested: "ToT" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc "SinkNewArray" at /Volumes/Data/secondary/OpenSource/WebKitBuild/SinkNewArray/Release/jsc 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. ToT SinkNewArray SunSpider: 3d-cube 6.4620+-0.4259 6.2751+-0.1099 might be 1.0298x faster 3d-morph 7.4650+-0.1833 7.4189+-0.1082 3d-raytrace 7.3448+-0.0778 ? 7.5102+-0.4120 ? might be 1.0225x slower access-binary-trees 2.8152+-0.1358 ? 2.9573+-0.1837 ? might be 1.0505x slower access-fannkuch 8.9322+-3.0920 7.7188+-0.2158 might be 1.1572x faster access-nbody 3.5219+-0.0376 3.5111+-0.0273 access-nsieve 4.4395+-0.3056 ? 4.5962+-0.3366 ? might be 1.0353x slower bitops-3bit-bits-in-byte 2.0612+-0.0741 2.0414+-0.0757 bitops-bits-in-byte 5.0533+-0.5122 4.8723+-0.1364 might be 1.0371x faster bitops-bitwise-and 2.8992+-0.0593 2.8934+-0.0234 bitops-nsieve-bits 4.1979+-0.1812 ? 4.2832+-0.2677 ? might be 1.0203x slower controlflow-recursive 3.2293+-0.1887 ? 3.5222+-0.1595 ? might be 1.0907x slower crypto-aes 5.7975+-0.4277 5.6050+-0.1104 might be 1.0343x faster crypto-md5 3.3483+-0.1346 ? 3.3813+-0.0863 ? crypto-sha1 4.3288+-0.4124 4.1602+-0.2572 might be 1.0405x faster date-format-tofte 9.6481+-0.3966 9.4831+-0.2433 might be 1.0174x faster date-format-xparb 6.9274+-0.2787 6.8870+-0.1149 math-cordic 3.8770+-0.0266 ? 4.0486+-0.2745 ? might be 1.0443x slower math-partial-sums 6.6391+-0.3215 6.3875+-0.1145 might be 1.0394x faster math-spectral-norm 2.6106+-0.2653 ? 2.7200+-0.2240 ? might be 1.0419x slower regexp-dna 9.4604+-0.2050 9.4022+-0.2025 string-base64 6.4295+-0.3154 ? 6.4694+-0.5328 ? string-fasta 8.7258+-0.1451 ? 8.8586+-0.4034 ? might be 1.0152x slower string-tagcloud 11.6349+-0.3379 ? 11.7156+-0.3683 ? string-unpack-code 27.7021+-0.3903 ? 27.8430+-0.8370 ? string-validate-input 7.5049+-0.1380 7.4187+-0.2129 might be 1.0116x faster <arithmetic> 6.6560+-0.1009 6.6146+-0.1033 might be 1.0063x faster ToT SinkNewArray LongSpider: 3d-cube 1165.5142+-3.6818 ! 1178.9495+-7.1101 ! definitely 1.0115x slower 3d-morph 2248.2281+-1.0691 2247.1182+-0.7891 3d-raytrace 915.5581+-23.6210 ? 947.8099+-10.4353 ? might be 1.0352x slower access-binary-trees 1156.1095+-9.3719 1148.8581+-4.7785 access-fannkuch 407.5990+-8.0765 407.3709+-8.2867 access-nbody 768.9311+-0.3131 ^ 767.0618+-0.1645 ^ definitely 1.0024x faster access-nsieve 501.9590+-3.8896 ? 502.9154+-4.9150 ? bitops-3bit-bits-in-byte 59.3515+-0.6375 ? 59.7249+-0.5190 ? bitops-bits-in-byte 109.0033+-2.0457 ? 110.2948+-2.5226 ? might be 1.0118x slower bitops-nsieve-bits 598.5341+-1.1862 ? 606.7844+-14.6026 ? might be 1.0138x slower controlflow-recursive 650.7711+-11.0926 ! 676.8234+-9.5011 ! definitely 1.0400x slower crypto-aes 832.4177+-5.0822 832.1430+-4.9238 crypto-md5 695.7232+-3.3560 693.8603+-5.8291 crypto-sha1 915.5306+-5.6425 ^ 900.4557+-5.1220 ^ definitely 1.0167x faster date-format-tofte 741.4649+-23.5605 ? 746.1817+-34.0723 ? date-format-xparb 933.6765+-2.2071 931.6545+-1.9320 hash-map 242.2531+-4.6986 240.6289+-5.3065 math-cordic 728.0025+-0.5755 ? 728.0797+-0.8731 ? math-partial-sums 619.1314+-0.9487 618.7151+-1.2653 math-spectral-norm 824.0890+-0.6368 ? 824.5369+-0.3908 ? string-base64 508.0516+-2.9142 ? 508.1735+-3.3230 ? string-fasta 545.8498+-0.9628 ? 551.0441+-7.7398 ? string-tagcloud 245.7683+-1.6413 ? 246.0581+-2.5663 ? <geometric> 570.4531+-0.9243 ! 572.8723+-1.2613 ! definitely 1.0042x slower ToT SinkNewArray V8Spider: crypto 74.7977+-3.9219 73.3599+-4.0877 might be 1.0196x faster deltablue 120.5553+-13.1611 ? 125.3534+-25.0934 ? might be 1.0398x slower earley-boyer 65.8162+-2.6604 ? 67.1539+-3.9819 ? might be 1.0203x slower raytrace 47.6269+-5.7831 45.6871+-2.1273 might be 1.0425x faster regexp 108.1121+-14.9822 102.6625+-0.7176 might be 1.0531x faster richards 109.7837+-6.0301 104.4385+-2.9418 might be 1.0512x faster splay 48.0495+-2.6855 ? 50.0175+-1.8376 ? might be 1.0410x slower <geometric> 76.8755+-3.1344 76.1880+-2.0580 might be 1.0090x faster ToT SinkNewArray Octane: encrypt 0.29143+-0.00105 ? 0.29435+-0.00450 ? might be 1.0100x slower decrypt 5.10050+-0.01478 ? 5.13530+-0.13216 ? deltablue x2 0.23234+-0.01005 0.22898+-0.00314 might be 1.0147x faster earley 0.44882+-0.00201 ? 0.45490+-0.00688 ? might be 1.0135x slower boyer 9.06497+-0.01674 ? 9.09923+-0.04359 ? navier-stokes x2 7.55601+-0.02040 7.54591+-0.00963 raytrace x2 1.70070+-0.01490 1.68796+-0.02104 richards x2 0.15579+-0.00219 0.15463+-0.00156 splay x2 0.49884+-0.00699 ? 0.50175+-0.01014 ? regexp x2 41.89718+-1.10871 40.92212+-0.70543 might be 1.0238x faster pdfjs x2 53.50400+-0.30185 53.04648+-0.26519 mandreel x2 71.71831+-0.94574 71.30785+-1.63264 gbemu x2 61.41832+-3.79318 58.09554+-0.96424 might be 1.0572x faster closure 0.70356+-0.00413 ? 0.70578+-0.00317 ? jquery 9.11467+-0.04708 9.11435+-0.07977 box2d x2 16.57658+-0.12666 ? 16.67063+-0.09454 ? zlib x2 523.11637+-19.53807 ? 527.11112+-26.34456 ? typescript x2 883.58297+-4.46029 875.41602+-9.67856 <geometric> 8.62643+-0.06889 8.57196+-0.05353 might be 1.0064x faster ToT SinkNewArray Kraken: ai-astar 364.080+-7.771 ? 364.598+-7.193 ? audio-beat-detection 99.396+-1.758 ? 99.719+-1.841 ? audio-dft 156.637+-1.973 156.473+-1.192 audio-fft 85.744+-1.197 79.308+-8.958 might be 1.0812x faster audio-oscillator 110.073+-0.536 110.065+-0.648 imaging-darkroom 130.731+-0.862 129.894+-1.259 imaging-desaturate 80.726+-3.099 ? 82.452+-3.954 ? might be 1.0214x slower imaging-gaussian-blur 126.134+-0.211 125.956+-1.289 json-parse-financial 58.635+-1.440 ^ 55.922+-0.275 ^ definitely 1.0485x faster json-stringify-tinderbox 35.871+-1.347 ? 36.565+-1.513 ? might be 1.0193x slower stanford-crypto-aes 76.337+-0.654 ? 77.298+-0.912 ? might be 1.0126x slower stanford-crypto-ccm 58.017+-2.997 57.696+-3.074 stanford-crypto-pbkdf2 148.070+-1.125 ? 148.424+-0.773 ? stanford-crypto-sha256-iterative 56.126+-0.742 55.699+-0.832 <arithmetic> 113.327+-0.684 112.862+-0.281 might be 1.0041x faster ToT SinkNewArray JSRegress: abs-boolean 3.4447+-0.0561 ? 3.4465+-0.1640 ? adapt-to-double-divide 23.4646+-0.4398 ? 23.5307+-0.9790 ? aliased-arguments-getbyval 1.6715+-0.0779 1.6084+-0.1035 might be 1.0392x faster allocate-big-object 3.6281+-0.3092 3.6242+-0.2343 arguments-named-and-reflective 15.4883+-0.4621 ? 16.0725+-0.7652 ? might be 1.0377x slower arguments-out-of-bounds 14.0551+-0.1568 14.0173+-0.3269 arguments-strict-mode 13.8357+-0.4962 13.7705+-0.3924 arguments 12.1738+-0.1900 12.0101+-0.1037 might be 1.0136x faster arity-mismatch-inlining 1.0971+-0.0386 ? 1.1104+-0.0760 ? might be 1.0121x slower array-access-polymorphic-structure 8.4875+-0.1375 8.4068+-0.4165 array-nonarray-polymorhpic-access 35.9062+-0.3900 ? 36.1455+-0.4836 ? array-prototype-every 112.9097+-0.6022 112.6798+-2.9467 array-prototype-forEach 110.4435+-0.9883 ? 110.5648+-0.6090 ? array-prototype-map 122.4644+-1.1409 ^ 120.0437+-0.9236 ^ definitely 1.0202x faster array-prototype-reduce 106.5285+-0.7825 ^ 104.7537+-0.7370 ^ definitely 1.0169x faster array-prototype-reduceRight 105.2504+-0.4939 ^ 104.1735+-0.5146 ^ definitely 1.0103x faster array-prototype-some 112.4754+-0.2232 111.9652+-1.3528 array-splice-contiguous 55.4940+-0.5350 ? 55.8498+-0.7496 ? array-with-double-add 4.7762+-0.0421 ? 4.7957+-0.1052 ? array-with-double-increment 4.2697+-0.1071 4.2618+-0.0500 array-with-double-mul-add 5.9066+-0.0618 ? 6.1191+-0.1953 ? might be 1.0360x slower array-with-double-sum 4.5637+-0.1466 4.5232+-0.0896 array-with-int32-add-sub 8.2614+-0.2231 ? 8.2685+-0.1012 ? array-with-int32-or-double-sum 4.5244+-0.0373 ? 4.6844+-0.2226 ? might be 1.0354x slower ArrayBuffer-DataView-alloc-large-long-lived 41.7718+-0.9379 41.4312+-0.4757 ArrayBuffer-DataView-alloc-long-lived 18.4676+-0.2112 18.1145+-0.1681 might be 1.0195x faster ArrayBuffer-Int32Array-byteOffset 5.1809+-0.0544 5.1494+-0.0152 ArrayBuffer-Int8Array-alloc-large-long-lived 44.6673+-0.7601 44.2901+-0.9116 ArrayBuffer-Int8Array-alloc-long-lived-buffer 29.5011+-0.2742 29.4005+-0.1735 ArrayBuffer-Int8Array-alloc-long-lived 17.8502+-0.2486 ? 18.0346+-0.8690 ? might be 1.0103x slower ArrayBuffer-Int8Array-alloc 14.1788+-0.2650 ^ 13.7301+-0.1231 ^ definitely 1.0327x faster asmjs_bool_bug 10.8134+-0.1891 10.6013+-0.1622 might be 1.0200x faster assign-custom-setter-polymorphic 3.6547+-0.0766 ? 3.7397+-0.2014 ? might be 1.0232x slower assign-custom-setter 5.0953+-0.2190 4.8865+-0.0332 might be 1.0427x faster basic-set 12.9807+-0.6027 12.4698+-0.4891 might be 1.0410x faster big-int-mul 5.7022+-0.7990 4.8732+-0.0310 might be 1.1701x faster boolean-test 4.0885+-0.1393 ? 4.0944+-0.0914 ? branch-fold 5.3607+-0.1492 ? 5.3687+-0.1726 ? branch-on-string-as-boolean 23.2675+-0.5564 23.0732+-0.4272 by-val-generic 10.3986+-0.1998 ? 10.5871+-0.2145 ? might be 1.0181x slower call-spread-apply 38.6675+-1.6197 ? 39.1600+-3.7987 ? might be 1.0127x slower call-spread-call 31.1883+-0.3477 31.0932+-0.9482 captured-assignments 0.6141+-0.0467 0.6035+-0.0191 might be 1.0175x faster cast-int-to-double 7.1657+-0.0700 7.1476+-0.0809 cell-argument 9.0394+-0.1659 8.9837+-0.2815 cfg-simplify 3.9381+-0.1186 ? 3.9506+-0.1278 ? chain-getter-access 11.6575+-0.3038 11.5463+-0.2255 cmpeq-obj-to-obj-other 16.0081+-1.5170 ? 17.0230+-0.9316 ? might be 1.0634x slower constant-test 6.8110+-0.2383 ? 6.8824+-0.2282 ? might be 1.0105x slower create-lots-of-functions 13.8182+-0.9398 13.2148+-0.6011 might be 1.0457x faster cse-new-array-buffer 3.1328+-0.1020 3.0882+-0.1520 might be 1.0145x faster cse-new-array 3.2046+-0.2638 ? 3.2130+-0.1460 ? DataView-custom-properties 49.8806+-1.0372 ? 50.9999+-1.9167 ? might be 1.0224x slower deconstructing-parameters-overridden-by-function 0.6803+-0.0546 ? 0.6846+-0.0268 ? delay-tear-off-arguments-strictmode 18.3356+-0.1450 ^ 17.6899+-0.1598 ^ definitely 1.0365x faster deltablue-varargs 288.0083+-15.5744 281.6616+-7.7423 might be 1.0225x faster destructuring-arguments 18.9681+-0.6389 18.7376+-0.3261 might be 1.0123x faster destructuring-swap 6.6764+-0.2007 6.6229+-0.0959 direct-arguments-getbyval 1.6217+-0.0575 ? 1.7392+-0.3673 ? might be 1.0725x slower div-boolean-double 7.6713+-0.2258 7.6216+-0.1528 div-boolean 11.7002+-0.0534 ? 11.7818+-0.1840 ? double-get-by-val-out-of-bounds 5.7213+-0.2250 5.5919+-0.0943 might be 1.0231x faster double-pollution-getbyval 12.7540+-0.6464 12.7449+-0.5363 double-pollution-putbyoffset 5.4714+-0.3293 5.4651+-0.2128 double-real-use 36.3107+-3.3037 36.0736+-2.2888 double-to-int32-typed-array-no-inline 3.0664+-0.2525 ? 3.1414+-0.1317 ? might be 1.0245x slower double-to-int32-typed-array 2.4917+-0.2689 2.4510+-0.0719 might be 1.0166x faster double-to-uint32-typed-array-no-inline 3.2311+-0.1749 ? 3.2563+-0.3521 ? double-to-uint32-typed-array 2.6436+-0.2113 2.6084+-0.0915 might be 1.0135x faster elidable-new-object-dag 48.3201+-1.2424 ? 48.7469+-0.7766 ? elidable-new-object-roflcopter 48.7465+-1.1767 48.6353+-0.7594 elidable-new-object-then-call 44.3131+-1.2605 ? 45.9399+-1.3450 ? might be 1.0367x slower elidable-new-object-tree 52.4810+-0.8938 ? 53.4568+-1.3010 ? might be 1.0186x slower empty-string-plus-int 6.8860+-0.0673 6.8699+-0.1290 emscripten-cube2hash 37.3814+-1.8172 ? 38.6296+-2.0936 ? might be 1.0334x slower exit-length-on-plain-object 17.6853+-0.3626 ? 17.7412+-0.3013 ? external-arguments-getbyval 1.6358+-0.0934 ? 1.6877+-0.2888 ? might be 1.0317x slower external-arguments-putbyval 3.0188+-0.1010 2.9239+-0.0438 might be 1.0325x faster fixed-typed-array-storage-var-index 1.6246+-0.0704 1.5994+-0.0651 might be 1.0157x faster fixed-typed-array-storage 1.2545+-0.2653 1.2060+-0.0808 might be 1.0402x faster Float32Array-matrix-mult 5.8355+-0.6031 5.5964+-0.3179 might be 1.0427x faster Float32Array-to-Float64Array-set 68.0295+-0.8095 ? 68.8479+-3.8508 ? might be 1.0120x slower Float64Array-alloc-long-lived 98.4087+-1.3541 97.6731+-1.8626 Float64Array-to-Int16Array-set 83.2711+-0.9673 82.6435+-0.3604 fold-double-to-int 18.0098+-0.1838 ? 18.0179+-0.0890 ? fold-get-by-id-to-multi-get-by-offset-rare-int 14.2102+-0.8433 14.1356+-0.8103 fold-get-by-id-to-multi-get-by-offset 12.1858+-0.4489 ? 12.4178+-1.4427 ? might be 1.0190x slower fold-multi-get-by-offset-to-get-by-offset 11.7449+-0.9834 ? 12.1905+-0.9650 ? might be 1.0379x slower fold-multi-get-by-offset-to-poly-get-by-offset 10.0861+-1.0719 ? 10.7445+-0.7989 ? might be 1.0653x slower fold-multi-put-by-offset-to-poly-put-by-offset 10.4521+-0.8362 ? 10.5580+-0.8458 ? might be 1.0101x slower fold-multi-put-by-offset-to-put-by-offset 7.3041+-1.5216 ? 7.7907+-0.4852 ? might be 1.0666x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 12.0791+-0.3607 ? 13.0122+-1.2325 ? might be 1.0772x slower fold-put-by-id-to-multi-put-by-offset 12.6789+-0.8705 ? 12.9833+-1.0814 ? might be 1.0240x slower fold-put-structure 7.9680+-0.6299 7.7090+-0.5419 might be 1.0336x faster for-of-iterate-array-entries 5.6356+-0.1212 ? 5.7445+-0.1655 ? might be 1.0193x slower for-of-iterate-array-keys 4.6982+-0.4334 4.6937+-0.0907 for-of-iterate-array-values 4.5430+-0.3574 ? 4.5998+-0.4022 ? might be 1.0125x slower fround 26.1171+-0.2840 ? 26.3711+-0.7068 ? ftl-library-inlining-dataview 83.7738+-1.7618 ? 83.8027+-0.7679 ? ftl-library-inlining 155.3261+-1.8169 155.2509+-0.9202 function-dot-apply 2.7359+-0.0574 ? 2.7719+-0.0717 ? might be 1.0132x slower function-test 3.7965+-0.0862 3.7953+-0.1803 function-with-eval 128.5990+-1.6044 ? 128.8015+-0.5283 ? gcse-poly-get-less-obvious 20.5014+-0.2406 ? 20.5860+-0.2626 ? gcse-poly-get 20.3615+-0.0727 ? 20.5620+-0.2915 ? gcse 5.5129+-0.2825 5.4812+-0.1261 get-by-id-bimorphic-check-structure-elimination-simple 3.6726+-0.0645 3.6502+-0.0815 get-by-id-bimorphic-check-structure-elimination 8.2616+-0.2236 ? 8.3042+-0.1133 ? get-by-id-chain-from-try-block 9.3547+-0.0863 9.3253+-0.0693 get-by-id-check-structure-elimination 6.3745+-0.3017 6.3477+-0.2413 get-by-id-proto-or-self 21.1370+-1.5480 20.9874+-1.3416 get-by-id-quadmorphic-check-structure-elimination-simple 4.0826+-0.0559 4.0469+-0.0611 get-by-id-self-or-proto 21.2708+-1.0930 20.6997+-0.4691 might be 1.0276x faster get-by-val-out-of-bounds 5.8234+-0.3409 5.4559+-0.1199 might be 1.0673x faster get_callee_monomorphic 3.3866+-0.0842 ? 3.4871+-0.2455 ? might be 1.0297x slower get_callee_polymorphic 4.8854+-0.4359 ? 4.9099+-0.3139 ? getter-no-activation 6.8056+-0.1987 6.7596+-0.2051 getter-prototype 13.9268+-0.2126 ? 14.0601+-0.3953 ? getter-richards 159.0631+-14.2885 ? 159.1223+-22.5895 ? getter 7.7859+-0.7588 7.5129+-0.5605 might be 1.0363x faster global-var-const-infer-fire-from-opt 1.2762+-0.0140 1.2693+-0.0938 global-var-const-infer 1.0175+-0.0988 ? 1.1005+-0.1725 ? might be 1.0815x slower HashMap-put-get-iterate-keys 40.8877+-3.7061 37.4152+-2.4625 might be 1.0928x faster HashMap-put-get-iterate 42.0907+-5.0904 41.0007+-3.0040 might be 1.0266x faster HashMap-string-put-get-iterate 40.8537+-1.0630 38.9493+-1.7511 might be 1.0489x faster hoist-make-rope 11.4074+-1.5317 11.2749+-1.1260 might be 1.0118x faster hoist-poly-check-structure-effectful-loop 5.9540+-0.0716 ? 6.0082+-0.0541 ? hoist-poly-check-structure 4.5196+-0.0358 ? 4.6317+-0.1695 ? might be 1.0248x slower imul-double-only 9.9347+-0.7442 9.4990+-0.1825 might be 1.0459x faster imul-int-only 11.3140+-0.1372 ? 11.4698+-0.8412 ? might be 1.0138x slower imul-mixed 8.9402+-0.2339 ? 9.2015+-0.5101 ? might be 1.0292x slower in-four-cases 22.6990+-0.3195 22.5095+-0.3285 in-one-case-false 13.7681+-0.3032 13.6181+-0.5118 might be 1.0110x faster in-one-case-true 14.2463+-0.7791 ^ 13.3357+-0.0860 ^ definitely 1.0683x faster in-two-cases 13.9230+-0.3460 ? 13.9371+-0.2956 ? indexed-properties-in-objects 4.2130+-0.4523 3.9297+-0.1479 might be 1.0721x faster infer-closure-const-then-mov-no-inline 4.4725+-0.0676 ? 4.7043+-0.5094 ? might be 1.0518x slower infer-closure-const-then-mov 24.1718+-0.5509 24.0657+-0.3903 infer-closure-const-then-put-to-scope-no-inline 16.7432+-0.0785 ? 16.8010+-0.1063 ? infer-closure-const-then-put-to-scope 31.2041+-0.7272 ? 31.2832+-0.8139 ? infer-closure-const-then-reenter-no-inline 70.5920+-0.8886 70.0687+-0.1537 infer-closure-const-then-reenter 31.1966+-0.3051 ? 31.4068+-0.4466 ? infer-constant-global-property 4.9490+-0.2200 4.8025+-0.0449 might be 1.0305x faster infer-constant-property 3.7436+-0.2130 3.6607+-0.0333 might be 1.0226x faster infer-one-time-closure-ten-vars 11.7959+-0.2049 ? 12.0095+-0.4966 ? might be 1.0181x slower infer-one-time-closure-two-vars 11.4674+-0.4060 ? 11.5072+-0.3311 ? infer-one-time-closure 11.3536+-0.1767 11.1552+-0.1949 might be 1.0178x faster infer-one-time-deep-closure 18.3765+-0.3796 18.1848+-0.0667 might be 1.0105x faster inline-arguments-access 5.4071+-0.1909 ? 5.4076+-0.2069 ? inline-arguments-aliased-access 5.4158+-0.2950 ? 5.5922+-0.4789 ? might be 1.0326x slower inline-arguments-local-escape 5.4653+-0.1240 ? 5.5341+-0.3447 ? might be 1.0126x slower inline-get-scoped-var 6.4684+-0.2096 6.4497+-0.1050 inlined-put-by-id-transition 13.9231+-0.1566 ? 14.6938+-0.6439 ? might be 1.0554x slower int-or-other-abs-then-get-by-val 6.6871+-0.0342 ? 6.7622+-0.0964 ? might be 1.0112x slower int-or-other-abs-zero-then-get-by-val 22.9838+-0.2819 22.8396+-0.1001 int-or-other-add-then-get-by-val 5.7160+-0.1558 ? 5.7987+-0.1436 ? might be 1.0145x slower int-or-other-add 6.9090+-0.0646 6.8681+-0.1030 int-or-other-div-then-get-by-val 5.2795+-0.1458 ? 5.2869+-0.2166 ? int-or-other-max-then-get-by-val 5.6655+-0.1285 ? 5.7716+-0.3100 ? might be 1.0187x slower int-or-other-min-then-get-by-val 5.7865+-0.5010 5.7058+-0.1234 might be 1.0141x faster int-or-other-mod-then-get-by-val 5.0318+-0.1739 ? 5.0529+-0.0699 ? int-or-other-mul-then-get-by-val 5.1222+-0.0529 ? 5.6112+-0.5409 ? might be 1.0955x slower int-or-other-neg-then-get-by-val 6.2839+-0.1366 ? 6.3058+-0.1925 ? int-or-other-neg-zero-then-get-by-val 23.3319+-0.4081 23.3239+-0.3146 int-or-other-sub-then-get-by-val 5.7621+-0.1182 ? 5.8663+-0.3993 ? might be 1.0181x slower int-or-other-sub 4.8128+-0.0455 ? 4.8444+-0.0756 ? int-overflow-local 6.0565+-0.0911 ? 6.1749+-0.2575 ? might be 1.0195x slower Int16Array-alloc-long-lived 64.3979+-1.4884 ? 64.5314+-1.0853 ? Int16Array-bubble-sort-with-byteLength 25.1576+-0.1106 ? 25.2114+-0.1637 ? Int16Array-bubble-sort 25.3008+-0.6065 25.0662+-0.1962 Int16Array-load-int-mul 2.0257+-0.1250 ? 2.0534+-0.1568 ? might be 1.0137x slower Int16Array-to-Int32Array-set 63.4798+-1.0764 ? 65.3597+-0.8100 ? might be 1.0296x slower Int32Array-alloc-large 16.9207+-1.0171 ? 17.6879+-0.8894 ? might be 1.0453x slower Int32Array-alloc-long-lived 76.0684+-2.1305 75.3499+-1.0502 Int32Array-alloc 4.0753+-0.3679 3.9774+-0.2548 might be 1.0246x faster Int32Array-Int8Array-view-alloc 8.5316+-0.1696 8.5138+-0.0759 int52-spill 8.2486+-3.1849 7.0771+-0.2316 might be 1.1655x faster Int8Array-alloc-long-lived 58.9163+-1.5018 ? 59.6632+-1.3609 ? might be 1.0127x slower Int8Array-load-with-byteLength 4.8614+-0.1165 4.8278+-0.0518 Int8Array-load 5.0979+-0.4893 4.8547+-0.0674 might be 1.0501x faster integer-divide 14.6098+-0.0616 ? 14.7489+-0.4399 ? integer-modulo 2.3440+-0.0619 2.3353+-0.0691 is-boolean-fold-tricky 5.3248+-0.0317 ? 5.3289+-0.0435 ? is-boolean-fold 3.8586+-0.3466 3.7102+-0.0537 might be 1.0400x faster is-function-fold-tricky-internal-function 14.1034+-0.1447 ! 14.4038+-0.0631 ! definitely 1.0213x slower is-function-fold-tricky 5.8336+-0.0746 5.7948+-0.0345 is-function-fold 3.7329+-0.0544 3.7312+-0.0378 is-number-fold-tricky 5.8750+-0.4579 5.7024+-0.0573 might be 1.0303x faster is-number-fold 3.6923+-0.0437 ? 3.7333+-0.0504 ? might be 1.0111x slower is-object-or-null-fold-functions 3.7655+-0.0783 3.7453+-0.0205 is-object-or-null-fold-less-tricky 5.8389+-0.0752 5.7685+-0.0285 might be 1.0122x faster is-object-or-null-fold-tricky 7.4935+-0.1296 7.4139+-0.1392 might be 1.0107x faster is-object-or-null-fold 3.7224+-0.0724 ? 3.8503+-0.3717 ? might be 1.0344x slower is-object-or-null-trickier-function 5.9387+-0.2930 5.8425+-0.1013 might be 1.0165x faster is-object-or-null-trickier-internal-function 14.8734+-0.0804 ? 15.8672+-0.9164 ? might be 1.0668x slower is-object-or-null-tricky-function 5.8249+-0.0365 5.8105+-0.0476 is-object-or-null-tricky-internal-function 10.9638+-0.0710 10.9600+-0.1171 is-string-fold-tricky 5.7754+-0.1469 5.7607+-0.1287 is-string-fold 3.7174+-0.0682 ? 3.7206+-0.0878 ? is-undefined-fold-tricky 4.7326+-0.0772 4.6707+-0.0382 might be 1.0133x faster is-undefined-fold 3.6982+-0.0546 3.6864+-0.0485 large-int-captured 5.7280+-0.3598 5.6570+-0.2016 might be 1.0126x faster large-int-neg 20.0339+-0.3203 20.0063+-0.5868 large-int 19.5975+-0.2763 19.5538+-0.4250 load-varargs-elimination 30.6144+-0.3474 30.5534+-0.2198 logical-not-weird-types 3.9318+-0.1015 ? 4.0169+-0.2836 ? might be 1.0217x slower logical-not 6.0317+-0.6067 5.7496+-0.0727 might be 1.0491x faster lots-of-fields 13.7654+-0.7032 13.0540+-0.4040 might be 1.0545x faster make-indexed-storage 3.9229+-0.1112 ? 4.0341+-0.0951 ? might be 1.0283x slower make-rope-cse 16.0533+-0.9344 ? 16.0907+-0.8341 ? marsaglia-larger-ints 47.5251+-0.5857 47.3651+-0.5867 marsaglia-osr-entry 29.9279+-0.3197 ? 30.4356+-0.7593 ? might be 1.0170x slower math-with-out-of-bounds-array-values 30.7618+-0.4159 ! 32.5852+-0.6098 ! definitely 1.0593x slower max-boolean 3.7745+-0.0576 ? 3.8838+-0.1324 ? might be 1.0290x slower method-on-number 23.2431+-0.3662 ? 23.7395+-1.1306 ? might be 1.0214x slower min-boolean 3.7998+-0.1879 3.7877+-0.0650 minus-boolean-double 4.4510+-0.2435 4.3057+-0.0247 might be 1.0337x faster minus-boolean 3.3120+-0.0886 3.2513+-0.0595 might be 1.0187x faster misc-strict-eq 44.4905+-0.8290 ? 46.0675+-3.0530 ? might be 1.0354x slower mod-boolean-double 16.0910+-0.0515 16.0852+-0.0711 mod-boolean 12.0833+-0.4111 ? 12.2203+-0.6122 ? might be 1.0113x slower mul-boolean-double 5.2192+-0.2281 5.2003+-0.2910 mul-boolean 3.9312+-0.0385 ? 4.0040+-0.2278 ? might be 1.0185x slower neg-boolean 4.4479+-0.1810 4.3393+-0.0341 might be 1.0250x faster negative-zero-divide 0.4673+-0.0117 ? 0.4862+-0.0474 ? might be 1.0405x slower negative-zero-modulo 0.4724+-0.0521 0.4425+-0.0129 might be 1.0677x faster negative-zero-negate 0.4352+-0.0347 ? 0.5251+-0.2243 ? might be 1.2065x slower nested-function-parsing 47.8448+-0.4125 ? 48.0353+-1.0171 ? new-array-buffer-dead 118.5815+-1.0909 ^ 49.3545+-1.1402 ^ definitely 2.4027x faster new-array-buffer-push 8.5349+-0.4158 8.4177+-0.4694 might be 1.0139x faster new-array-dead 18.5445+-0.7297 ? 19.6522+-0.6569 ? might be 1.0597x slower new-array-push 7.9772+-0.1574 ? 8.0108+-0.3163 ? no-inline-constructor 45.8046+-0.8493 45.5667+-1.0700 number-test 4.0118+-0.0433 4.0016+-0.0770 object-closure-call 6.9542+-0.1025 6.8672+-0.1217 might be 1.0127x faster object-test 3.6812+-0.0715 ? 3.6836+-0.0417 ? obvious-sink-pathology-taken 138.1554+-0.8490 137.7163+-1.6098 obvious-sink-pathology 130.8601+-0.6464 ? 131.1322+-1.0614 ? obviously-elidable-new-object 40.2645+-1.1233 ? 40.6797+-0.3004 ? might be 1.0103x slower plus-boolean-arith 3.3199+-0.0327 ? 3.3432+-0.1002 ? plus-boolean-double 4.3736+-0.0593 4.3490+-0.0402 plus-boolean 3.6628+-0.1073 ? 3.7390+-0.3543 ? might be 1.0208x slower poly-chain-access-different-prototypes-simple 3.8379+-0.0830 3.7841+-0.0509 might be 1.0142x faster poly-chain-access-different-prototypes 3.6077+-0.2217 3.5159+-0.0415 might be 1.0261x faster poly-chain-access-simpler 3.8427+-0.0638 ^ 3.7580+-0.0187 ^ definitely 1.0225x faster poly-chain-access 3.4819+-0.0563 ? 3.4951+-0.0212 ? poly-stricteq 72.7793+-0.1841 ? 73.5795+-0.7440 ? might be 1.0110x slower polymorphic-array-call 1.6809+-0.0925 1.6586+-0.0645 might be 1.0134x faster polymorphic-get-by-id 4.0480+-0.0625 ? 4.1561+-0.2835 ? might be 1.0267x slower polymorphic-put-by-id 36.5878+-1.6693 35.9707+-1.2047 might be 1.0172x faster polymorphic-structure 19.0585+-0.6926 18.8691+-0.1558 might be 1.0100x faster polyvariant-monomorphic-get-by-id 9.8488+-0.9159 9.2648+-0.9817 might be 1.0630x faster proto-getter-access 11.4511+-0.1575 11.4241+-0.1745 put-by-id-replace-and-transition 10.6160+-0.4122 ? 11.1586+-0.9840 ? might be 1.0511x slower put-by-id-slightly-polymorphic 3.6502+-0.0279 ? 3.7246+-0.0799 ? might be 1.0204x slower put-by-id 13.6373+-0.9256 13.5017+-0.5931 might be 1.0100x faster put-by-val-direct 0.4875+-0.0543 ? 0.5113+-0.0875 ? might be 1.0489x slower put-by-val-large-index-blank-indexing-type 16.0518+-0.9295 15.8452+-0.3139 might be 1.0130x faster put-by-val-machine-int 3.4543+-0.1147 3.4233+-0.0975 rare-osr-exit-on-local 20.8619+-0.1650 ? 21.0890+-0.1751 ? might be 1.0109x slower register-pressure-from-osr 5.9394+-0.2826 ? 6.1133+-0.7807 ? might be 1.0293x slower repeat-multi-get-by-offset 31.5610+-0.8101 ? 31.6165+-0.6159 ? setter-prototype 10.6701+-0.2761 10.5892+-0.3188 setter 7.3477+-0.4872 ? 8.3250+-1.7170 ? might be 1.1330x slower simple-activation-demo 35.1720+-0.3464 ? 35.3663+-0.7147 ? simple-getter-access 14.7541+-0.3616 ? 14.7627+-0.3466 ? simple-poly-call-nested 12.3137+-0.7938 12.1593+-0.8076 might be 1.0127x faster simple-poly-call 1.6800+-0.0434 ? 1.8280+-0.2925 ? might be 1.0881x slower sin-boolean 25.7398+-2.2997 25.2312+-0.3665 might be 1.0202x faster singleton-scope 81.8487+-0.0915 81.8279+-0.0945 sink-function 13.3206+-1.2674 ? 13.9239+-1.1223 ? might be 1.0453x slower sink-huge-activation 23.0592+-0.6424 22.2062+-0.6106 might be 1.0384x faster sinkable-new-object-dag 80.0572+-0.7412 ? 80.6264+-1.5414 ? sinkable-new-object-taken 61.2653+-0.9561 ? 62.2662+-2.0414 ? might be 1.0163x slower sinkable-new-object 43.1818+-0.8687 42.7889+-0.9062 slow-array-profile-convergence 3.7372+-0.3267 ? 3.8503+-0.2455 ? might be 1.0303x slower slow-convergence 4.9179+-0.3578 4.7169+-0.2165 might be 1.0426x faster slow-ternaries 23.9500+-0.3589 23.7406+-0.2095 sorting-benchmark 24.1223+-0.7836 23.9695+-0.5262 sparse-conditional 1.5525+-0.0430 ? 1.5703+-0.0649 ? might be 1.0115x slower splice-to-remove 18.0640+-0.4263 17.8163+-0.2964 might be 1.0139x faster string-char-code-at 20.9621+-0.1453 ? 21.5082+-0.9427 ? might be 1.0261x slower string-concat-object 3.0443+-0.1335 ? 3.2043+-0.1440 ? might be 1.0526x slower string-concat-pair-object 3.0833+-0.1642 3.0798+-0.1456 string-concat-pair-simple 12.7252+-0.5495 ? 12.8010+-0.2464 ? string-concat-simple 13.0702+-0.4167 12.8462+-0.2121 might be 1.0174x faster string-cons-repeat 9.2720+-0.3023 9.2301+-0.3010 string-cons-tower 9.5595+-0.2224 ? 9.9779+-0.4568 ? might be 1.0438x slower string-equality 22.0387+-0.6523 22.0360+-0.4991 string-get-by-val-big-char 9.5002+-0.1965 9.4671+-0.2981 string-get-by-val-out-of-bounds-insane 4.5863+-0.0573 ? 4.6139+-0.0987 ? string-get-by-val-out-of-bounds 5.9871+-0.1484 5.9525+-0.1265 string-get-by-val 3.9886+-0.0507 ? 4.0578+-0.1186 ? might be 1.0173x slower string-hash 2.6060+-0.1568 2.5478+-0.0208 might be 1.0229x faster string-long-ident-equality 18.3726+-0.1092 ? 18.4144+-0.0605 ? string-out-of-bounds 15.2758+-0.6553 14.8133+-0.1615 might be 1.0312x faster string-repeat-arith 39.8111+-0.9496 ^ 38.6082+-0.2004 ^ definitely 1.0312x faster string-sub 76.9996+-0.5420 ? 77.6253+-0.8932 ? string-test 3.9615+-0.1608 3.8263+-0.0392 might be 1.0353x faster string-var-equality 36.9857+-0.4432 36.5289+-0.1707 might be 1.0125x faster structure-hoist-over-transitions 3.3840+-0.1126 ? 3.4619+-0.0576 ? might be 1.0230x slower substring-concat-weird 53.1941+-1.1301 ? 53.7129+-0.8164 ? substring-concat 56.8217+-0.8451 ? 56.8410+-0.5339 ? substring 65.3829+-1.4530 ? 65.5586+-0.6381 ? switch-char-constant 3.8552+-0.1248 ? 3.9842+-0.2837 ? might be 1.0335x slower switch-char 8.5063+-1.6512 7.9098+-0.8490 might be 1.0754x faster switch-constant 11.2163+-0.8718 11.1184+-0.9024 switch-string-basic-big-var 23.5643+-0.2173 ? 23.6774+-0.3469 ? switch-string-basic-big 20.9624+-0.3239 20.7684+-0.2432 switch-string-basic-var 18.9980+-0.1669 ? 19.1134+-0.2584 ? switch-string-basic 18.1254+-0.4472 17.9694+-0.1969 switch-string-big-length-tower-var 25.6084+-0.2331 25.5317+-0.3021 switch-string-length-tower-var 18.6718+-0.0531 ? 18.7151+-0.1059 ? switch-string-length-tower 16.6176+-0.2060 16.5128+-0.1039 switch-string-short 16.6564+-0.0606 ? 16.8316+-0.2448 ? might be 1.0105x slower switch 16.3107+-0.4277 ? 16.4823+-0.8291 ? might be 1.0105x slower tear-off-arguments-simple 4.3913+-0.2278 ? 4.5393+-0.2600 ? might be 1.0337x slower tear-off-arguments 6.0424+-0.0783 6.0299+-0.1470 temporal-structure 17.3840+-0.1829 17.3577+-0.1574 to-int32-boolean 19.3539+-0.6558 19.1743+-0.3015 try-catch-get-by-val-cloned-arguments 19.1593+-0.4465 18.8738+-0.2744 might be 1.0151x faster try-catch-get-by-val-direct-arguments 8.6525+-0.8551 8.3850+-0.1716 might be 1.0319x faster try-catch-get-by-val-scoped-arguments 10.0625+-0.1900 9.9945+-0.2922 typed-array-get-set-by-val-profiling 46.8158+-1.2169 46.3362+-1.4625 might be 1.0104x faster undefined-property-access 319.9773+-0.8668 ? 320.5708+-4.1957 ? undefined-test 3.9632+-0.0764 ? 4.0177+-0.0643 ? might be 1.0137x slower unprofiled-licm 20.2107+-0.2221 ? 20.3387+-0.4070 ? varargs-call 21.9235+-5.3047 19.9691+-0.2650 might be 1.0979x faster varargs-construct-inline 31.7065+-0.6824 31.5653+-1.0934 varargs-construct 28.2440+-0.5799 ? 28.6754+-0.8143 ? might be 1.0153x slower varargs-inline 11.9604+-0.1035 11.9303+-0.1844 varargs-strict-mode 13.1782+-0.2213 13.0566+-0.0477 varargs 13.0565+-0.2212 13.0381+-0.0870 weird-inlining-const-prop 3.8135+-0.4373 ? 4.0838+-0.3660 ? might be 1.0709x slower <geometric> 10.8172+-0.0325 10.7937+-0.0109 might be 1.0022x faster ToT SinkNewArray AsmBench: bigfib.cpp 657.2799+-2.4528 653.6757+-2.6926 cray.c 587.7290+-1.5785 587.4943+-1.3100 dry.c 647.4288+-21.8845 646.5314+-21.6164 FloatMM.c 1028.2790+-0.8189 ? 1028.3118+-0.7698 ? gcc-loops.cpp 5161.3079+-64.7876 5148.0117+-31.1622 n-body.c 1239.3692+-0.7884 1239.1803+-1.5246 Quicksort.c 609.8112+-4.9962 606.2788+-6.5283 stepanov_container.cpp 5212.8597+-30.7388 5209.5727+-21.0209 Towers.c 336.7882+-3.5738 ? 338.3530+-3.7189 ? <geometric> 1064.8455+-3.8058 1063.4640+-6.0580 might be 1.0013x faster ToT SinkNewArray CompressionBench: huffman 491.5022+-7.2746 ^ 455.2397+-2.1972 ^ definitely 1.0797x faster arithmetic-simple 429.4030+-2.0403 ? 430.2218+-5.3695 ? arithmetic-precise 381.4248+-3.2050 ? 385.9755+-7.7131 ? might be 1.0119x slower arithmetic-complex-precise 361.7280+-1.2594 ? 404.9041+-75.8409 ? might be 1.1194x slower arithmetic-precise-order-0 440.7911+-1.8671 ? 441.7456+-1.8906 ? arithmetic-precise-order-1 431.7844+-3.3963 ? 433.5873+-2.9876 ? arithmetic-precise-order-2 497.8798+-4.6494 493.6587+-3.4099 arithmetic-simple-order-1 491.8870+-2.7251 ? 492.3499+-2.8869 ? arithmetic-simple-order-2 694.2440+-150.6608 605.1494+-8.6717 might be 1.1472x faster lz-string 422.5778+-4.2735 ? 426.8592+-7.9342 ? might be 1.0101x slower <geometric> 456.3962+-9.1992 453.0402+-8.6506 might be 1.0074x faster ToT SinkNewArray Geomean of preferred means: <scaled-result> 78.8809+-0.4273 78.5663+-0.2481 might be 1.0040x faster
WebKit Commit Bot
Comment 12 2015-06-15 12:10:41 PDT
Attachment 254880 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1031: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1043: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1057: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1285: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 4 in 24 files If any of these errors are false positives, please file a bug against check-webkit-style.
Basile Clement
Comment 13 2015-06-15 12:27:20 PDT
WebKit Commit Bot
Comment 14 2015-06-15 12:30:12 PDT
Attachment 254887 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1033: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1045: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1059: Place brace on its own line for function definitions. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:1287: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 4 in 24 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 15 2015-06-15 15:33:50 PDT
Comment on attachment 254887 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=254887&action=review > Source/JavaScriptCore/dfg/DFGPromoteHeapAccess.h:36 > +static inline bool indexIsInBounds(Node* base, Node* index, Array::Type type) No need to say "static". > Source/JavaScriptCore/dfg/DFGPromoteHeapAccess.h:39 > + if (!index->isMachineIntConstant()) > + return false; Just use int32. > Source/JavaScriptCore/dfg/DFGPromoteHeapAccess.h:71 > + if (index->asMachineInt() < 0 || index->asMachineInt() >= length) Ditto.
Note You need to log in before you can comment on or make changes to this bug.