Created attachment 251267 [details] First patch Currently, only object allocations are sunk by the DFG allocation sinking phase. This adds the ability to sink function allocations as well, test cases forthcoming.
Created attachment 251511 [details] Updated patch Hopefully correct; still needs more testing. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3). VMs tested: "Trunk" at /Volumes/Data/Baseline/OpenSource/WebKitBuild/Release/jsc "SinkNewFunction" at /Volumes/Data/WIP/OpenSource/WebKitBuild/SinkNewFunction/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. Trunk SinkNewFunction SunSpider: 3d-cube 6.0558+-0.1599 ? 6.0763+-0.3087 ? 3d-morph 7.6472+-0.8357 7.5072+-0.1487 might be 1.0187x faster 3d-raytrace 7.5972+-0.6318 7.2291+-0.1731 might be 1.0509x faster access-binary-trees 3.2697+-1.1773 3.0729+-0.3808 might be 1.0640x faster access-fannkuch 7.8368+-0.3975 7.8275+-0.3418 access-nbody 3.5932+-0.1365 ? 3.7218+-0.2385 ? might be 1.0358x slower access-nsieve 4.3672+-0.2186 ? 4.6677+-0.6555 ? might be 1.0688x slower bitops-3bit-bits-in-byte 2.0238+-0.0807 ? 2.1459+-0.3880 ? might be 1.0603x slower bitops-bits-in-byte 4.3754+-0.0859 4.3442+-0.0339 bitops-bitwise-and 2.9675+-0.0731 2.9280+-0.0436 might be 1.0135x faster bitops-nsieve-bits 4.3915+-0.2255 4.2960+-0.1076 might be 1.0222x faster controlflow-recursive 2.7958+-0.1339 ? 3.0602+-0.3400 ? might be 1.0946x slower crypto-aes 5.2596+-0.2587 ? 5.2834+-0.3849 ? crypto-md5 2.9955+-0.0488 2.9941+-0.0879 crypto-sha1 3.1196+-0.2278 3.0096+-0.1434 might be 1.0365x faster date-format-tofte 9.6734+-0.3199 9.5031+-0.5819 might be 1.0179x faster date-format-xparb 6.8875+-0.2144 ? 7.0329+-0.3250 ? might be 1.0211x slower math-cordic 3.9131+-0.0398 ? 3.9821+-0.2475 ? might be 1.0176x slower math-partial-sums 6.4521+-0.3259 6.3316+-0.1028 might be 1.0190x faster math-spectral-norm 2.4428+-0.0526 ? 2.4634+-0.1486 ? regexp-dna 9.2357+-0.1056 ? 9.3337+-0.2050 ? might be 1.0106x slower string-base64 6.0031+-0.1161 ? 6.2082+-0.3828 ? might be 1.0342x slower string-fasta 8.1678+-0.0489 ? 8.2305+-0.0853 ? string-tagcloud 11.9602+-0.4285 ? 12.3446+-0.4499 ? might be 1.0321x slower string-unpack-code 25.6421+-0.8688 ? 26.1412+-0.9284 ? might be 1.0195x slower string-validate-input 6.1688+-0.1287 6.0859+-0.1378 might be 1.0136x faster <arithmetic> 6.3401+-0.0624 ? 6.3777+-0.0562 ? might be 1.0059x slower Trunk SinkNewFunction LongSpider: 3d-cube 1146.0595+-4.5428 ! 1158.0201+-3.2305 ! definitely 1.0104x slower 3d-morph 2250.4303+-1.4919 ? 2250.4883+-1.2673 ? 3d-raytrace 979.3950+-8.5092 ? 986.6629+-5.5882 ? access-binary-trees 1209.9427+-5.8881 1203.7576+-6.0720 access-fannkuch 402.3108+-14.6796 ? 407.4455+-16.6382 ? might be 1.0128x slower access-nbody 815.6903+-1.5918 ^ 805.0315+-0.9057 ^ definitely 1.0132x faster access-nsieve 896.6053+-10.6931 894.2331+-3.5723 bitops-3bit-bits-in-byte 59.5577+-0.7368 ? 59.6522+-0.8439 ? bitops-bits-in-byte 123.8816+-1.9319 120.8887+-6.0038 might be 1.0248x faster bitops-nsieve-bits 917.8310+-7.4733 917.3359+-7.5826 controlflow-recursive 680.5225+-0.6470 ? 680.5909+-1.1868 ? crypto-aes 808.8571+-1.9803 807.1617+-4.2809 crypto-md5 777.9714+-6.6105 776.4615+-2.4666 crypto-sha1 856.0246+-16.1174 853.6294+-15.2408 date-format-tofte 754.1829+-11.4313 ? 756.5376+-11.0543 ? date-format-xparb 914.3832+-2.8010 ? 922.4829+-5.3666 ? math-cordic 745.0096+-1.1358 744.5284+-0.9926 math-partial-sums 622.1131+-0.2711 ! 625.6687+-0.3868 ! definitely 1.0057x slower math-spectral-norm 826.8765+-2.4319 825.6265+-0.7580 string-base64 472.9468+-3.7305 471.5063+-5.8218 string-fasta 600.6385+-109.2036 556.5824+-3.3802 might be 1.0792x faster string-tagcloud 276.2345+-2.4752 275.7115+-2.4843 <geometric> 634.9739+-4.6945 632.7599+-2.7923 might be 1.0035x faster Trunk SinkNewFunction V8Spider: crypto 75.9754+-3.4253 75.4352+-1.4680 deltablue 129.1040+-25.1924 124.4542+-35.4033 might be 1.0374x faster earley-boyer 58.2167+-1.7655 57.9812+-1.3112 raytrace 44.4368+-2.9330 ? 46.4924+-1.6947 ? might be 1.0463x slower regexp 104.1183+-0.5735 ? 105.5718+-1.6558 ? might be 1.0140x slower richards 102.8855+-5.0799 ? 106.6211+-4.3015 ? might be 1.0363x slower splay 50.6859+-2.7500 ? 51.6397+-2.0612 ? might be 1.0188x slower <geometric> 75.1464+-0.8241 ? 75.7623+-2.8337 ? might be 1.0082x slower Trunk SinkNewFunction Octane: encrypt 0.28961+-0.00048 ? 0.28997+-0.00054 ? decrypt 5.09789+-0.01467 ? 5.11667+-0.03976 ? deltablue x2 0.23359+-0.00062 ? 0.23395+-0.00328 ? earley 0.67858+-0.16546 0.61227+-0.00474 might be 1.1083x faster boyer 8.93664+-0.04057 8.93350+-0.03589 navier-stokes x2 7.55339+-0.00912 ? 7.55911+-0.01520 ? raytrace x2 1.55019+-0.09143 ? 1.58211+-0.06873 ? might be 1.0206x slower richards x2 0.13954+-0.00287 ? 0.14119+-0.00382 ? might be 1.0118x slower splay x2 0.50037+-0.00325 ? 0.50266+-0.00225 ? regexp x2 42.76514+-0.53758 42.74989+-0.92714 pdfjs x2 54.54151+-0.18289 ? 54.80862+-0.14846 ? mandreel x2 72.29088+-0.48097 ? 72.67518+-0.26812 ? gbemu x2 55.87310+-0.97806 ? 57.72494+-3.55873 ? might be 1.0331x slower closure 0.70640+-0.00510 ? 0.70667+-0.00432 ? jquery 8.83669+-0.05497 ? 8.89807+-0.04948 ? box2d x2 16.35254+-0.16447 ? 16.45553+-0.31206 ? zlib x2 527.69638+-22.92335 ? 538.00974+-3.08129 ? might be 1.0195x slower typescript x2 943.27153+-16.97161 937.50557+-16.02971 <geometric> 8.62258+-0.10244 ? 8.65927+-0.04469 ? might be 1.0043x slower Trunk SinkNewFunction Kraken: ai-astar 425.685+-5.810 ? 425.736+-3.375 ? audio-beat-detection 130.245+-1.715 129.153+-1.457 audio-dft 231.138+-2.045 ^ 226.840+-1.632 ^ definitely 1.0189x faster audio-fft 104.089+-3.676 ? 106.617+-1.580 ? might be 1.0243x slower audio-oscillator 263.942+-0.492 ? 267.574+-8.544 ? might be 1.0138x slower imaging-darkroom 129.381+-1.329 ! 138.050+-0.593 ! definitely 1.0670x slower imaging-desaturate 81.521+-2.725 ? 81.608+-2.701 ? imaging-gaussian-blur 128.762+-0.977 ? 129.798+-0.893 ? json-parse-financial 55.955+-1.248 ^ 53.441+-0.185 ^ definitely 1.0470x faster json-stringify-tinderbox 82.750+-22.699 74.050+-1.064 might be 1.1175x faster stanford-crypto-aes 81.760+-0.678 ? 82.093+-0.455 ? stanford-crypto-ccm 70.814+-6.670 ? 71.557+-7.930 ? might be 1.0105x slower stanford-crypto-pbkdf2 218.548+-0.622 ? 219.508+-0.692 ? stanford-crypto-sha256-iterative 71.678+-0.790 70.902+-0.585 might be 1.0109x faster <arithmetic> 148.305+-1.903 ? 148.352+-0.811 ? might be 1.0003x slower Trunk SinkNewFunction JSRegress: abs-boolean 3.3999+-0.1054 ? 3.4453+-0.2595 ? might be 1.0133x slower adapt-to-double-divide 23.2879+-0.5269 23.2767+-0.3232 aliased-arguments-getbyval 1.9814+-0.5452 1.5589+-0.1591 might be 1.2710x faster allocate-big-object 3.3758+-0.1789 ? 3.5243+-0.0980 ? might be 1.0440x slower arguments-named-and-reflective 16.2211+-0.6376 15.9995+-0.2070 might be 1.0139x faster arguments-out-of-bounds 14.7329+-0.3443 ? 14.8163+-0.2780 ? arguments-strict-mode 13.8081+-0.3342 13.7590+-0.4428 arguments 12.3942+-0.2110 12.1899+-0.3624 might be 1.0168x faster arity-mismatch-inlining 1.1050+-0.0289 ? 1.1228+-0.0749 ? might be 1.0161x slower array-access-polymorphic-structure 8.7386+-0.4108 8.6093+-0.2379 might be 1.0150x faster array-nonarray-polymorhpic-access 40.9390+-0.9297 ? 42.7252+-1.4145 ? might be 1.0436x slower array-prototype-every 115.2107+-1.2807 114.2585+-0.9108 array-prototype-forEach 113.6938+-2.3269 112.0770+-2.0029 might be 1.0144x faster array-prototype-map 123.7941+-1.2505 ! 128.7760+-0.4525 ! definitely 1.0402x slower array-prototype-some 115.5448+-0.6399 114.5569+-1.2026 array-splice-contiguous 60.5459+-0.8698 ^ 55.9970+-0.4623 ^ definitely 1.0812x faster array-with-double-add 4.9441+-0.3316 4.8377+-0.1470 might be 1.0220x faster array-with-double-increment 4.2633+-0.0918 ? 4.2902+-0.1966 ? array-with-double-mul-add 6.0363+-0.4150 5.9743+-0.2063 might be 1.0104x faster array-with-double-sum 4.4826+-0.0486 ? 4.5650+-0.1400 ? might be 1.0184x slower array-with-int32-add-sub 8.1949+-0.1337 ? 8.4642+-0.3358 ? might be 1.0329x slower array-with-int32-or-double-sum 4.5372+-0.0981 ? 4.5489+-0.2232 ? ArrayBuffer-DataView-alloc-large-long-lived 39.2582+-0.8700 ? 40.0669+-3.0310 ? might be 1.0206x slower ArrayBuffer-DataView-alloc-long-lived 17.7893+-0.3298 17.7627+-0.3293 ArrayBuffer-Int32Array-byteOffset 5.1892+-0.0684 ? 5.2990+-0.2996 ? might be 1.0211x slower ArrayBuffer-Int8Array-alloc-large-long-lived 40.1953+-2.0738 ? 40.4418+-1.7068 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 29.7955+-0.7550 29.6172+-0.3910 ArrayBuffer-Int8Array-alloc-long-lived 16.8899+-0.3711 ? 16.9799+-0.3568 ? ArrayBuffer-Int8Array-alloc 14.0555+-0.3182 ? 14.4305+-0.3694 ? might be 1.0267x slower asmjs_bool_bug 10.6202+-0.1463 ? 10.6994+-0.2374 ? assign-custom-setter-polymorphic 3.8340+-0.4245 3.7025+-0.1662 might be 1.0355x faster assign-custom-setter 4.8879+-0.0579 4.8844+-0.0417 basic-set 11.7330+-1.2766 11.3451+-0.8319 might be 1.0342x faster big-int-mul 4.8669+-0.1588 ? 4.9516+-0.2835 ? might be 1.0174x slower boolean-test 4.0267+-0.1106 ? 4.0734+-0.2921 ? might be 1.0116x slower branch-fold 5.0902+-0.2187 4.9797+-0.0914 might be 1.0222x faster by-val-generic 10.4959+-0.3450 10.2039+-0.0516 might be 1.0286x faster call-spread-apply 37.3091+-0.6324 ? 37.9414+-1.4357 ? might be 1.0169x slower call-spread-call 31.8012+-1.1532 31.3204+-1.1177 might be 1.0154x faster captured-assignments 0.5448+-0.0194 0.5320+-0.0136 might be 1.0240x faster cast-int-to-double 6.7421+-0.0614 ? 6.8518+-0.1399 ? might be 1.0163x slower cell-argument 8.8896+-0.1756 ? 9.0823+-0.3423 ? might be 1.0217x slower cfg-simplify 4.0385+-0.0935 4.0264+-0.0987 chain-getter-access 12.9458+-0.0863 ? 13.0929+-0.4136 ? might be 1.0114x slower cmpeq-obj-to-obj-other 16.4757+-1.1568 ? 16.5135+-0.4348 ? constant-test 6.4360+-0.0679 ? 6.4599+-0.1436 ? create-lots-of-functions 12.9023+-0.6246 ? 13.1475+-0.4476 ? might be 1.0190x slower DataView-custom-properties 47.0756+-1.8637 ? 49.5034+-2.4772 ? might be 1.0516x slower deconstructing-parameters-overridden-by-function 0.6020+-0.0329 ? 0.6228+-0.0683 ? might be 1.0346x slower delay-tear-off-arguments-strictmode 17.0798+-0.2453 ! 17.5766+-0.2280 ! definitely 1.0291x slower deltablue-varargs 209.9329+-1.9116 ^ 206.0461+-1.6999 ^ definitely 1.0189x faster destructuring-arguments 19.3271+-0.7224 ? 20.0355+-0.5516 ? might be 1.0366x slower destructuring-swap 6.6596+-0.1285 6.6259+-0.1229 direct-arguments-getbyval 1.5932+-0.1093 1.5779+-0.0704 div-boolean-double 7.6252+-0.2375 7.5154+-0.0452 might be 1.0146x faster div-boolean 11.7355+-0.0870 ? 11.7370+-0.0702 ? double-get-by-val-out-of-bounds 5.8394+-0.2639 5.7353+-0.3145 might be 1.0182x faster double-pollution-getbyval 12.4930+-0.2073 ^ 12.0243+-0.1415 ^ definitely 1.0390x faster double-pollution-putbyoffset 6.2518+-0.8303 5.4622+-0.1721 might be 1.1446x faster double-to-int32-typed-array-no-inline 2.8945+-0.0712 ? 2.9097+-0.1803 ? double-to-int32-typed-array 2.4481+-0.1793 2.4303+-0.1429 double-to-uint32-typed-array-no-inline 3.3903+-0.7217 3.0542+-0.1518 might be 1.1101x faster double-to-uint32-typed-array 2.4654+-0.0433 ? 2.4997+-0.1041 ? might be 1.0139x slower elidable-new-object-dag 50.7652+-2.5448 50.1287+-0.6402 might be 1.0127x faster elidable-new-object-roflcopter 54.9682+-1.4482 54.8502+-2.3408 elidable-new-object-then-call 46.2423+-1.1315 46.0019+-0.7929 elidable-new-object-tree 53.8323+-2.6113 53.3582+-2.2619 empty-string-plus-int 6.6888+-0.1316 ? 6.7816+-0.2957 ? might be 1.0139x slower emscripten-cube2hash 40.6670+-2.8861 39.6838+-0.8475 might be 1.0248x faster exit-length-on-plain-object 17.7862+-0.5378 17.6921+-0.2034 external-arguments-getbyval 1.6318+-0.1754 1.6270+-0.1447 external-arguments-putbyval 2.9572+-0.1950 2.8865+-0.1044 might be 1.0245x faster fixed-typed-array-storage-var-index 1.6136+-0.0274 ? 1.6145+-0.0649 ? fixed-typed-array-storage 1.1335+-0.0443 1.1270+-0.0279 Float32Array-matrix-mult 5.4991+-0.1525 5.4430+-0.0599 might be 1.0103x faster Float32Array-to-Float64Array-set 68.9124+-1.0857 68.5424+-0.5084 Float64Array-alloc-long-lived 86.0849+-5.1336 82.2695+-2.2282 might be 1.0464x faster Float64Array-to-Int16Array-set 85.1279+-1.1475 ? 85.2009+-1.3112 ? fold-double-to-int 17.9659+-0.3470 ? 17.9780+-0.3285 ? fold-get-by-id-to-multi-get-by-offset-rare-int 13.8480+-1.2285 ? 14.5080+-0.8669 ? might be 1.0477x slower fold-get-by-id-to-multi-get-by-offset 10.9937+-0.8287 10.7315+-0.5084 might be 1.0244x faster fold-multi-get-by-offset-to-get-by-offset 10.2020+-1.3146 ? 11.5621+-1.9774 ? might be 1.1333x slower fold-multi-get-by-offset-to-poly-get-by-offset 10.4425+-1.3248 ? 10.8192+-1.9745 ? might be 1.0361x slower fold-multi-put-by-offset-to-poly-put-by-offset 9.8945+-1.6400 ? 10.4341+-1.0846 ? might be 1.0545x slower fold-multi-put-by-offset-to-put-by-offset 5.6930+-0.9979 ? 6.5261+-1.2423 ? might be 1.1464x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 12.3356+-2.0190 12.1596+-1.4839 might be 1.0145x faster fold-put-by-id-to-multi-put-by-offset 11.6135+-0.5703 ? 11.9728+-0.9390 ? might be 1.0309x slower fold-put-structure 5.2809+-0.7587 5.0601+-0.2848 might be 1.0436x faster for-of-iterate-array-entries 5.7679+-0.2669 ? 6.0310+-0.3845 ? might be 1.0456x slower for-of-iterate-array-keys 4.8017+-0.3987 ? 4.8314+-0.3507 ? for-of-iterate-array-values 4.4502+-0.1356 ? 4.4736+-0.1647 ? fround 25.2957+-0.4140 ? 25.3485+-0.2247 ? ftl-library-inlining-dataview 83.9480+-0.5773 ? 84.9423+-0.7008 ? might be 1.0118x slower ftl-library-inlining 162.0490+-0.3040 ? 162.1562+-0.5429 ? function-dot-apply 2.7780+-0.0932 ? 2.7903+-0.1174 ? function-test 4.0978+-0.1102 ? 4.1375+-0.0554 ? function-with-eval 131.6442+-1.7195 130.8906+-1.7076 gcse-poly-get-less-obvious 20.6654+-0.1705 ? 20.8150+-0.3593 ? gcse-poly-get 23.1433+-0.1822 ? 23.4481+-0.7473 ? might be 1.0132x slower gcse 5.4810+-0.1916 ? 5.6754+-0.3167 ? might be 1.0355x slower get-by-id-bimorphic-check-structure-elimination-simple 3.6733+-0.1785 3.6383+-0.1370 get-by-id-bimorphic-check-structure-elimination 8.2531+-0.0596 8.1804+-0.0418 get-by-id-chain-from-try-block 9.2895+-0.1992 ? 9.4149+-0.4505 ? might be 1.0135x slower get-by-id-check-structure-elimination 6.2816+-0.1761 6.2751+-0.1353 get-by-id-proto-or-self 20.7586+-1.0152 ? 22.1797+-2.1518 ? might be 1.0685x slower get-by-id-quadmorphic-check-structure-elimination-simple 4.2340+-0.3105 4.0663+-0.0545 might be 1.0412x faster get-by-id-self-or-proto 21.3423+-1.2369 ? 21.7273+-1.8625 ? might be 1.0180x slower get-by-val-out-of-bounds 5.6410+-0.2287 5.3852+-0.1599 might be 1.0475x faster get_callee_monomorphic 3.3355+-0.1269 ? 3.3605+-0.2632 ? get_callee_polymorphic 4.8358+-0.1860 ? 4.9346+-0.1842 ? might be 1.0204x slower getter-no-activation 6.8124+-0.2224 ? 6.9586+-0.3366 ? might be 1.0215x slower getter-richards 164.8857+-21.8011 159.7603+-9.6267 might be 1.0321x faster getter 7.5975+-0.5268 ? 7.8785+-0.8698 ? might be 1.0370x slower global-var-const-infer-fire-from-opt 1.2217+-0.1482 ? 1.2412+-0.1056 ? might be 1.0160x slower global-var-const-infer 0.9795+-0.1230 ? 1.1546+-0.3398 ? might be 1.1788x slower HashMap-put-get-iterate-keys 34.1730+-1.4078 33.6089+-0.7869 might be 1.0168x faster HashMap-put-get-iterate 33.7718+-0.9651 33.5199+-1.2326 HashMap-string-put-get-iterate 33.6732+-1.2045 ? 34.1111+-1.5828 ? might be 1.0130x slower hoist-make-rope 11.0444+-0.6927 ? 11.0572+-0.6943 ? hoist-poly-check-structure-effectful-loop 5.9280+-0.1787 5.9049+-0.2000 hoist-poly-check-structure 4.5099+-0.0397 ? 4.7035+-0.2068 ? might be 1.0429x slower imul-double-only 9.7502+-0.2343 ? 9.9810+-0.7782 ? might be 1.0237x slower imul-int-only 12.0295+-0.9203 11.4329+-0.1441 might be 1.0522x faster imul-mixed 8.9814+-0.3525 ? 9.2716+-0.5015 ? might be 1.0323x slower in-four-cases 22.7079+-0.7465 ! 24.9793+-0.6688 ! definitely 1.1000x slower in-one-case-false 12.8998+-1.0191 ? 14.1915+-0.3418 ? might be 1.1001x slower in-one-case-true 12.3425+-0.9739 ? 16.4780+-6.0808 ? might be 1.3351x slower in-two-cases 12.4235+-0.4865 ! 14.9775+-0.9099 ! definitely 1.2056x slower indexed-properties-in-objects 3.9235+-0.0303 3.9226+-0.0391 infer-closure-const-then-mov-no-inline 4.2638+-0.0854 ? 4.2774+-0.1533 ? infer-closure-const-then-mov 25.2234+-2.0313 24.2030+-0.6968 might be 1.0422x faster infer-closure-const-then-put-to-scope-no-inline 17.5800+-0.1869 17.5057+-0.0878 infer-closure-const-then-put-to-scope 33.7038+-0.3759 ? 33.9355+-0.5716 ? infer-closure-const-then-reenter-no-inline 82.5398+-1.1291 82.2486+-0.4925 infer-closure-const-then-reenter 34.0998+-0.3059 33.9509+-0.2157 infer-constant-global-property 43.6280+-0.2978 ? 43.8018+-0.6004 ? infer-constant-property 3.6366+-0.0747 ? 3.6645+-0.0565 ? infer-one-time-closure-ten-vars 12.0878+-0.2827 11.9136+-0.2211 might be 1.0146x faster infer-one-time-closure-two-vars 11.4641+-0.2119 ? 11.5442+-0.4158 ? infer-one-time-closure 11.4811+-0.3591 11.3285+-0.2372 might be 1.0135x faster infer-one-time-deep-closure 18.5288+-0.6627 18.0950+-0.3185 might be 1.0240x faster inline-arguments-access 5.4014+-0.1474 ? 5.4306+-0.3685 ? inline-arguments-aliased-access 5.5306+-0.4374 5.3790+-0.2301 might be 1.0282x faster inline-arguments-local-escape 5.7385+-0.4929 ? 5.9489+-1.4345 ? might be 1.0367x slower inline-get-scoped-var 6.6644+-0.3773 6.5432+-0.1817 might be 1.0185x faster inlined-put-by-id-transition 14.2867+-0.4365 13.6209+-1.2416 might be 1.0489x faster int-or-other-abs-then-get-by-val 6.3645+-0.1585 ? 6.4600+-0.3463 ? might be 1.0150x slower int-or-other-abs-zero-then-get-by-val 23.4662+-0.7929 23.4082+-0.2240 int-or-other-add-then-get-by-val 5.8218+-0.2467 5.6551+-0.1836 might be 1.0295x faster int-or-other-add 6.9211+-0.2762 ? 7.0061+-0.2975 ? might be 1.0123x slower int-or-other-div-then-get-by-val 5.4639+-0.1312 ? 5.6455+-0.2717 ? might be 1.0332x slower int-or-other-max-then-get-by-val 5.6665+-0.1317 ? 5.6898+-0.1692 ? int-or-other-min-then-get-by-val 5.8276+-0.1989 5.7896+-0.1171 int-or-other-mod-then-get-by-val 5.0000+-0.0758 4.9682+-0.0662 int-or-other-mul-then-get-by-val 5.2790+-0.1399 5.2327+-0.1461 int-or-other-neg-then-get-by-val 6.0826+-0.1359 ? 6.5420+-0.6837 ? might be 1.0755x slower int-or-other-neg-zero-then-get-by-val 22.9501+-0.3233 ? 23.6600+-0.6484 ? might be 1.0309x slower int-or-other-sub-then-get-by-val 5.8338+-0.0427 ? 5.8398+-0.0330 ? int-or-other-sub 4.7829+-0.1050 4.7537+-0.0773 int-overflow-local 6.0306+-0.2159 ? 6.5289+-1.0016 ? might be 1.0826x slower Int16Array-alloc-long-lived 65.2782+-3.0349 ? 65.4358+-3.1503 ? Int16Array-bubble-sort-with-byteLength 24.9865+-0.3973 ? 25.2877+-0.9761 ? might be 1.0121x slower Int16Array-bubble-sort 24.4202+-0.3140 24.2767+-0.2445 Int16Array-load-int-mul 1.9372+-0.0442 ? 1.9844+-0.0770 ? might be 1.0244x slower Int16Array-to-Int32Array-set 65.2681+-0.3611 64.1526+-0.8236 might be 1.0174x faster Int32Array-alloc-large 17.3995+-0.8504 ? 17.8610+-1.9985 ? might be 1.0265x slower Int32Array-alloc-long-lived 70.3215+-2.7090 ? 71.9063+-2.6969 ? might be 1.0225x slower Int32Array-alloc 3.8875+-0.2323 ? 4.1591+-0.5985 ? might be 1.0699x slower Int32Array-Int8Array-view-alloc 8.8730+-0.1578 ? 9.0479+-0.4057 ? might be 1.0197x slower int52-spill 8.3245+-0.4263 ? 8.3797+-0.4003 ? Int8Array-alloc-long-lived 58.7860+-2.8916 58.5892+-1.9016 Int8Array-load-with-byteLength 4.7588+-0.0433 ? 4.8701+-0.3496 ? might be 1.0234x slower Int8Array-load 4.7578+-0.0654 4.7362+-0.0499 integer-divide 15.0181+-0.1512 ? 15.0365+-0.2532 ? integer-modulo 2.2538+-0.0578 ? 2.2858+-0.1379 ? might be 1.0142x slower large-int-captured 5.6747+-0.2848 ? 5.6750+-0.3869 ? large-int-neg 20.9629+-0.3815 20.9384+-0.3044 large-int 19.9993+-0.1551 ? 20.0737+-0.4116 ? logical-not 5.9327+-0.2914 5.7823+-0.1301 might be 1.0260x faster lots-of-fields 14.1362+-0.2800 ? 14.3491+-0.4816 ? might be 1.0151x slower make-indexed-storage 3.8891+-0.2631 ? 3.9018+-0.2663 ? make-rope-cse 5.3976+-0.1687 ? 5.4202+-0.6482 ? marsaglia-larger-ints 47.4499+-0.4900 ? 47.9634+-1.0151 ? might be 1.0108x slower marsaglia-osr-entry 30.2344+-0.4539 30.1836+-0.4126 max-boolean 3.7865+-0.0888 ? 3.7929+-0.0311 ? method-on-number 25.1819+-4.5212 24.7209+-0.3691 might be 1.0186x faster min-boolean 3.9197+-0.3345 3.8307+-0.1021 might be 1.0232x faster minus-boolean-double 4.3709+-0.0841 ? 4.4761+-0.2577 ? might be 1.0241x slower minus-boolean 3.2108+-0.0632 ? 3.2153+-0.0279 ? misc-strict-eq 42.5302+-0.3665 ? 42.9855+-0.6410 ? might be 1.0107x slower mod-boolean-double 16.1608+-0.2946 ? 16.2891+-0.6693 ? mod-boolean 12.0037+-0.1698 ? 12.0837+-0.2006 ? mul-boolean-double 5.1882+-0.2082 5.1455+-0.1142 mul-boolean 3.9460+-0.0905 3.9320+-0.1143 neg-boolean 4.3519+-0.0760 ? 4.3783+-0.0723 ? negative-zero-divide 0.4233+-0.0132 0.4191+-0.0106 negative-zero-modulo 0.4188+-0.0171 0.4187+-0.0166 negative-zero-negate 0.4059+-0.0305 ? 0.4120+-0.0297 ? might be 1.0150x slower nested-function-parsing 47.4243+-0.5401 47.1072+-0.7733 new-array-buffer-dead 118.9205+-2.0967 ? 121.5295+-3.1396 ? might be 1.0219x slower new-array-buffer-push 8.0500+-0.1741 ? 8.5988+-0.7101 ? might be 1.0682x slower new-array-dead 19.6549+-0.2309 18.6282+-1.0570 might be 1.0551x faster new-array-push 4.8752+-0.3796 4.8608+-0.1845 no-inline-constructor 135.1361+-1.8632 ? 135.2364+-2.4331 ? number-test 4.0086+-0.1502 3.9585+-0.1064 might be 1.0127x faster object-closure-call 6.9781+-0.2230 6.9049+-0.2114 might be 1.0106x faster object-test 4.0233+-0.1010 ? 4.0480+-0.0818 ? obvious-sink-pathology-taken 140.7052+-2.9268 138.5920+-0.9901 might be 1.0152x faster obvious-sink-pathology 136.2088+-6.8387 132.9820+-1.7763 might be 1.0243x faster obviously-elidable-new-object 41.5916+-2.2868 40.0575+-1.1313 might be 1.0383x faster plus-boolean-arith 3.3011+-0.0892 3.2981+-0.0767 plus-boolean-double 4.4174+-0.2169 4.3665+-0.0568 might be 1.0117x faster plus-boolean 3.6480+-0.2164 3.6182+-0.0989 poly-chain-access-different-prototypes-simple 3.8614+-0.2454 ? 3.8916+-0.4153 ? poly-chain-access-different-prototypes 3.5074+-0.0690 ? 3.5892+-0.1294 ? might be 1.0233x slower poly-chain-access-simpler 3.7676+-0.0443 3.7655+-0.0370 poly-chain-access 3.5995+-0.2587 3.4692+-0.0575 might be 1.0376x faster poly-stricteq 75.4893+-0.3383 ? 76.0457+-0.4813 ? polymorphic-array-call 1.5205+-0.0670 ? 1.6516+-0.2202 ? might be 1.0862x slower polymorphic-get-by-id 3.9685+-0.0247 ? 3.9806+-0.0408 ? polymorphic-put-by-id 35.1902+-0.4481 ? 35.5481+-0.9757 ? might be 1.0102x slower polymorphic-structure 18.9527+-0.1370 ? 19.1239+-0.3573 ? polyvariant-monomorphic-get-by-id 9.8743+-1.2148 ? 10.6134+-1.4454 ? might be 1.0749x slower proto-getter-access 12.9716+-0.2757 12.8059+-0.2741 might be 1.0129x faster put-by-id-replace-and-transition 10.4371+-0.4745 ? 11.1864+-0.8636 ? might be 1.0718x slower put-by-id-slightly-polymorphic 3.5330+-0.0880 ? 3.5917+-0.0515 ? might be 1.0166x slower put-by-id 13.7085+-0.5875 13.4425+-0.7098 might be 1.0198x faster put-by-val-direct 0.5562+-0.0309 0.5458+-0.0173 might be 1.0191x faster put-by-val-large-index-blank-indexing-type 7.4006+-0.4019 ? 7.4917+-0.3353 ? might be 1.0123x slower put-by-val-machine-int 3.5645+-0.1694 3.4688+-0.1157 might be 1.0276x faster rare-osr-exit-on-local 21.6645+-1.5251 21.0756+-0.4299 might be 1.0279x faster register-pressure-from-osr 24.8343+-0.4871 24.3025+-0.2041 might be 1.0219x faster setter 7.8890+-0.4947 ? 8.0522+-0.5356 ? might be 1.0207x slower simple-activation-demo 35.1101+-0.4004 ? 35.1249+-0.3191 ? simple-getter-access 17.0806+-0.3081 16.8875+-0.3432 might be 1.0114x faster simple-poly-call-nested 12.8877+-0.7417 12.8057+-0.5395 simple-poly-call 1.6882+-0.0662 1.6554+-0.0317 might be 1.0198x faster sin-boolean 24.9261+-0.8228 ? 26.0091+-0.9221 ? might be 1.0434x slower singleton-scope 94.1577+-0.7094 93.8234+-0.2531 sink-function 21.8820+-1.1524 ^ 14.0673+-1.0145 ^ definitely 1.5555x faster sinkable-new-object-dag 82.6204+-2.5215 82.4327+-3.0211 sinkable-new-object-taken 64.6302+-1.9491 64.0863+-1.1714 sinkable-new-object 44.5973+-2.6627 43.2218+-0.4689 might be 1.0318x faster slow-array-profile-convergence 3.5258+-0.1742 ? 3.7479+-0.3006 ? might be 1.0630x slower slow-convergence 3.3783+-0.0364 ? 3.5123+-0.3466 ? might be 1.0397x slower sorting-benchmark 30.2190+-0.3333 ? 30.6529+-0.6779 ? might be 1.0144x slower sparse-conditional 1.4833+-0.0301 ? 1.5570+-0.1026 ? might be 1.0497x slower splice-to-remove 19.4879+-0.2275 ! 20.0320+-0.2181 ! definitely 1.0279x slower string-char-code-at 19.6391+-0.2637 ? 19.7431+-0.3479 ? string-concat-object 2.9910+-0.0983 ? 3.3200+-0.3588 ? might be 1.1100x slower string-concat-pair-object 3.0854+-0.0990 2.9858+-0.1704 might be 1.0333x faster string-concat-pair-simple 13.4008+-0.7647 12.7008+-0.2112 might be 1.0551x faster string-concat-simple 13.8055+-1.6417 13.5256+-0.8905 might be 1.0207x faster string-cons-repeat 9.7275+-0.9873 9.3255+-0.7243 might be 1.0431x faster string-cons-tower 9.5732+-0.2590 ? 9.9065+-0.6705 ? might be 1.0348x slower string-equality 21.6092+-0.8069 21.3510+-0.2020 might be 1.0121x faster string-get-by-val-big-char 9.4860+-0.3417 9.2716+-0.2783 might be 1.0231x faster string-get-by-val-out-of-bounds-insane 4.4837+-0.1269 ? 4.5728+-0.2321 ? might be 1.0199x slower string-get-by-val-out-of-bounds 5.6753+-0.0641 ? 5.7453+-0.1000 ? might be 1.0123x slower string-get-by-val 4.0157+-0.2491 ? 4.0295+-0.2058 ? string-hash 2.5627+-0.1271 2.5491+-0.0881 string-long-ident-equality 17.8746+-0.5089 ? 17.9563+-0.7332 ? string-out-of-bounds 14.9657+-0.4943 14.7142+-0.2041 might be 1.0171x faster string-repeat-arith 38.3680+-0.1246 38.2082+-0.2546 string-sub 75.2728+-0.7563 ! 77.1105+-0.6414 ! definitely 1.0244x slower string-test 3.7490+-0.0599 ? 3.8890+-0.1406 ? might be 1.0373x slower string-var-equality 36.0415+-0.0966 ! 39.4209+-0.1472 ! definitely 1.0938x slower structure-hoist-over-transitions 3.2940+-0.2480 ? 3.3136+-0.1305 ? substring-concat-weird 51.7722+-0.4674 51.7008+-1.0010 substring-concat 54.7672+-2.0032 ? 54.7927+-1.3746 ? substring 61.8758+-0.9330 ? 62.5852+-0.8863 ? might be 1.0115x slower switch-char-constant 3.6641+-0.0936 3.6227+-0.0461 might be 1.0114x faster switch-char 8.5632+-0.7290 ? 9.8455+-1.3281 ? might be 1.1498x slower switch-constant 11.7530+-0.4672 11.0983+-0.9927 might be 1.0590x faster switch-string-basic-big-var 18.2638+-0.0907 18.1834+-0.0913 switch-string-basic-big 18.3196+-0.1923 ? 18.3871+-0.3124 ? switch-string-basic-var 17.7168+-0.2098 ? 17.9502+-0.6766 ? might be 1.0132x slower switch-string-basic 17.6410+-0.3404 ? 17.8693+-0.5072 ? might be 1.0129x slower switch-string-big-length-tower-var 26.6746+-0.3808 26.4782+-0.2735 switch-string-length-tower-var 18.5502+-0.1209 18.5240+-0.1498 switch-string-length-tower 16.8087+-0.1485 16.7603+-0.0951 switch-string-short 16.8464+-0.2768 ? 16.8986+-0.3607 ? switch 17.1270+-1.0656 ? 17.2012+-1.2018 ? tear-off-arguments-simple 4.2629+-0.2063 ? 4.2970+-0.1643 ? tear-off-arguments 5.9936+-0.4899 5.9231+-0.4797 might be 1.0119x faster temporal-structure 17.4377+-0.2923 ? 17.4447+-0.2354 ? to-int32-boolean 18.5954+-0.3948 18.4288+-0.1161 try-catch-get-by-val-cloned-arguments 18.5626+-0.3223 ? 18.7638+-0.6902 ? might be 1.0108x slower try-catch-get-by-val-direct-arguments 8.2036+-0.1786 ? 8.5107+-0.3148 ? might be 1.0374x slower try-catch-get-by-val-scoped-arguments 10.1815+-0.3660 10.0420+-0.3860 might be 1.0139x faster undefined-property-access 322.1055+-0.4974 ? 322.6034+-1.1442 ? undefined-test 4.0368+-0.1711 ? 4.1702+-0.2753 ? might be 1.0331x slower unprofiled-licm 20.1143+-0.1412 ? 20.2863+-0.5892 ? varargs-call 19.4628+-0.1933 19.1355+-0.3765 might be 1.0171x faster varargs-construct-inline 25.4820+-0.5293 ? 26.0420+-1.5046 ? might be 1.0220x slower varargs-construct 41.5338+-0.6977 41.4970+-0.9044 varargs-inline 12.3410+-0.2812 12.2428+-0.1333 varargs-strict-mode 13.5096+-0.1970 13.4462+-0.1057 varargs 13.3926+-0.0833 ? 13.5978+-0.4147 ? might be 1.0153x slower weird-inlining-const-prop 2.9438+-0.2240 2.8226+-0.2837 might be 1.0429x faster <geometric> 10.9240+-0.0367 ? 10.9664+-0.0386 ? might be 1.0039x slower Trunk SinkNewFunction AsmBench: bigfib.cpp 658.6932+-6.9943 657.2699+-1.9962 cray.c 580.5135+-3.0012 579.9958+-1.5288 dry.c 616.5087+-26.6806 ? 653.7879+-15.1693 ? might be 1.0605x slower FloatMM.c 1031.5182+-0.5962 1031.0532+-1.0475 gcc-loops.cpp 5234.4017+-40.0608 5213.4405+-9.3436 n-body.c 1229.7462+-0.9184 1229.2448+-0.9159 Quicksort.c 606.5915+-6.6561 ? 611.4886+-2.1544 ? stepanov_container.cpp 5449.0375+-75.9359 5447.8392+-49.8665 Towers.c 350.3289+-0.9622 350.1884+-0.3470 <geometric> 1068.2206+-6.2764 ? 1075.2191+-3.3968 ? might be 1.0066x slower Trunk SinkNewFunction CompressionBench: huffman 442.9074+-2.8072 ! 448.1654+-1.8558 ! definitely 1.0119x slower arithmetic-simple 510.3425+-3.5839 ? 510.5959+-6.6406 ? arithmetic-precise 402.8929+-14.6677 394.9258+-1.9138 might be 1.0202x faster arithmetic-complex-precise 393.4967+-1.2208 ? 394.4382+-3.8564 ? arithmetic-precise-order-0 526.7729+-4.8011 523.4777+-6.8427 arithmetic-precise-order-1 441.6063+-2.0145 ? 441.6759+-2.5982 ? arithmetic-precise-order-2 495.6534+-1.9804 ? 496.9294+-3.7131 ? arithmetic-simple-order-1 491.5868+-2.9979 ? 492.2852+-3.1231 ? arithmetic-simple-order-2 569.8405+-3.9782 ? 570.9934+-6.4206 ? lz-string 460.9897+-13.7496 ? 466.7519+-13.2443 ? might be 1.0125x slower <geometric> 470.6325+-2.2728 ? 470.9774+-1.1982 ? might be 1.0007x slower Trunk SinkNewFunction Geomean of preferred means: <scaled-result> 82.3947+-0.3655 ? 82.6624+-0.3859 ? might be 1.0032x slower
Created attachment 251524 [details] patch This should be correct, and I can't think of other relevant tests.
Attachment 251524 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:787: Place brace on its own line for function definitions. [whitespace/braces] [4] Total errors found: 1 in 23 files If any of these errors are false positives, please file a bug against check-webkit-style.
Comment on attachment 251524 [details] patch Nice!
(In reply to comment #3) > Attachment 251524 [details] did not pass style-queue: > > > ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:787: > Place brace on its own line for function definitions. [whitespace/braces] > [4] > Total errors found: 1 in 23 files > > > If any of these errors are false positives, please file a bug against > check-webkit-style. I followed the style of other lambdas on that one ; should I fix it?
Comment on attachment 251524 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=251524&action=review > Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:566 > + Node* executable = m_insertionSet.insertConstant( > + nodeIndex + 1, node->origin, node->cellOperand()); You could add the cellOperand as a strong constant. This means doing: m_insertionSet.insertConstant(nodeIndex + 1, node->origin, m_graph.freezeStrong(node->cellOperand()));
Comment on attachment 251524 [details] patch Clearing cq because there is one small refinement that could be made.
(In reply to comment #5) > (In reply to comment #3) > > Attachment 251524 [details] did not pass style-queue: > > > > > > ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:787: > > Place brace on its own line for function definitions. [whitespace/braces] > > [4] > > Total errors found: 1 in 23 files > > > > > > If any of these errors are false positives, please file a bug against > > check-webkit-style. > > I followed the style of other lambdas on that one ; should I fix it? It's a bug in stylebot. It doesn't parse lambdas correctly, yet. We ignore these errors for lambdas.
(In reply to comment #6) > Comment on attachment 251524 [details] > patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=251524&action=review > > > Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:566 > > + Node* executable = m_insertionSet.insertConstant( > > + nodeIndex + 1, node->origin, node->cellOperand()); > > You could add the cellOperand as a strong constant. This means doing: > > m_insertionSet.insertConstant(nodeIndex + 1, node->origin, > m_graph.freezeStrong(node->cellOperand())); Actually, cellOperand() is a FrozenValue* and it's already strong. So the current code is correct and what I'm suggesting is wrong.
Comment on attachment 251524 [details] patch It's good to land!
Comment on attachment 251524 [details] patch Clearing flags on attachment: 251524 Committed r183235: <http://trac.webkit.org/changeset/183235>
All reviewed patches have been landed. Closing bug.