Bug 147760

Summary: Introduce put_by_id like IC into put_by_val when the given name is String or Symbol
Product: WebKit Reporter: Yusuke Suzuki <ysuzuki>
Component: JavaScriptCoreAssignee: Yusuke Suzuki <ysuzuki>
Status: RESOLVED FIXED    
Severity: Normal CC: fpizlo, ggaren, mark.lam, msaboff, saam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on: 149158    
Bug Blocks:    
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch fpizlo: review+

Yusuke Suzuki
Reported 2015-08-06 17:49:28 PDT
Apply https://bugs.webkit.org/show_bug.cgi?id=147480 optimization to put_by_val case. It improves the performance of the code using ES6 Symbol.
Attachments
Patch (30.40 KB, patch)
2015-08-07 14:17 PDT, Yusuke Suzuki
no flags
Patch (69.36 KB, patch)
2015-08-07 16:53 PDT, Yusuke Suzuki
no flags
Patch (69.22 KB, patch)
2015-08-07 17:00 PDT, Yusuke Suzuki
no flags
Patch (82.98 KB, patch)
2015-08-07 18:44 PDT, Yusuke Suzuki
no flags
Patch (82.95 KB, patch)
2015-08-09 19:10 PDT, Yusuke Suzuki
no flags
Patch (82.60 KB, patch)
2015-08-11 18:48 PDT, Yusuke Suzuki
fpizlo: review+
Yusuke Suzuki
Comment 1 2015-08-07 14:17:27 PDT
Created attachment 258527 [details] Patch WIP: the logic is almost completed. I'll do a refactoring & add tests (splitting out the ident guard in baseline code to the function etc.)
Yusuke Suzuki
Comment 2 2015-08-07 15:26:24 PDT
This will improve the following var obj = { [key]: value }; initializations at the same time :)
Yusuke Suzuki
Comment 3 2015-08-07 16:53:02 PDT
Yusuke Suzuki
Comment 4 2015-08-07 16:59:14 PDT
Benchmark results. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Yusukes-MacBook-Pro (MacBookPro11,3). VMs tested: "master" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/master-for-put-by-val/Release/jsc "ic" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/put-by-val/Release/jsc Collected 4 samples per benchmark/VM, with 4 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. master ic SunSpider: 3d-cube 4.6475+-0.5510 4.5507+-0.2860 might be 1.0213x faster 3d-morph 5.3203+-0.0821 ? 5.4310+-0.5118 ? might be 1.0208x slower 3d-raytrace 5.6584+-0.7394 5.4026+-0.4226 might be 1.0473x faster access-binary-trees 1.9963+-0.1685 1.9078+-0.1089 might be 1.0464x faster access-fannkuch 5.4057+-0.2264 ? 5.5830+-0.3601 ? might be 1.0328x slower access-nbody 2.5447+-0.0383 ? 2.6700+-0.2888 ? might be 1.0492x slower access-nsieve 2.9828+-0.0873 ? 3.1432+-0.3277 ? might be 1.0538x slower bitops-3bit-bits-in-byte 1.4982+-0.0742 1.4454+-0.0591 might be 1.0366x faster bitops-bits-in-byte 3.2570+-0.0762 ? 3.3142+-0.1078 ? might be 1.0176x slower bitops-bitwise-and 2.1485+-0.3037 1.9880+-0.0391 might be 1.0807x faster bitops-nsieve-bits 2.9438+-0.0831 2.9420+-0.0261 controlflow-recursive 2.0002+-0.1176 ? 2.0281+-0.1715 ? might be 1.0139x slower crypto-aes 3.8498+-0.2089 ? 4.0342+-0.4514 ? might be 1.0479x slower crypto-md5 2.4705+-0.1021 ? 2.5795+-0.1916 ? might be 1.0441x slower crypto-sha1 2.4130+-0.1983 ? 2.5687+-0.5378 ? might be 1.0645x slower date-format-tofte 6.7535+-0.2203 ? 6.7904+-0.2469 ? date-format-xparb 4.7384+-0.6966 4.5208+-0.2107 might be 1.0481x faster math-cordic 2.8754+-0.3016 2.7780+-0.0323 might be 1.0351x faster math-partial-sums 5.3906+-0.1271 5.3134+-0.1641 might be 1.0145x faster math-spectral-norm 1.8530+-0.0518 1.8110+-0.0554 might be 1.0232x faster regexp-dna 6.6661+-0.1668 6.5053+-0.2547 might be 1.0247x faster string-base64 4.3551+-0.2986 ? 4.3760+-0.1540 ? string-fasta 5.7739+-0.1392 ? 5.7973+-0.0913 ? string-tagcloud 8.2440+-0.3629 ? 8.2941+-0.4753 ? string-unpack-code 20.2731+-0.5952 ? 20.5186+-0.8743 ? might be 1.0121x slower string-validate-input 4.6454+-0.2557 4.6300+-0.3546 <arithmetic> 4.6425+-0.0577 ? 4.6509+-0.0370 ? might be 1.0018x slower master ic LongSpider: 3d-cube 790.6931+-13.5212 787.5883+-10.1992 3d-morph 1557.5891+-37.6890 1540.4322+-5.6723 might be 1.0111x faster 3d-raytrace 640.2073+-11.8724 ? 642.3800+-6.6345 ? access-binary-trees 834.2610+-7.5012 826.9417+-16.3687 access-fannkuch 283.0827+-10.2899 ? 283.9883+-5.2871 ? access-nbody 524.9025+-11.3726 524.0589+-6.5879 access-nsieve 364.8574+-20.5739 362.6217+-22.9277 bitops-3bit-bits-in-byte 41.2823+-2.6050 41.0333+-0.7918 bitops-bits-in-byte 81.5703+-2.0667 ? 81.7900+-1.6201 ? bitops-nsieve-bits 414.2668+-11.9621 ? 421.4171+-9.9181 ? might be 1.0173x slower controlflow-recursive 432.9592+-8.9942 ? 435.4891+-7.3905 ? crypto-aes 591.4529+-14.4930 ? 600.5972+-11.5379 ? might be 1.0155x slower crypto-md5 483.5461+-8.4535 481.2392+-3.3776 crypto-sha1 657.1677+-28.2210 650.8355+-6.2456 date-format-tofte 517.4740+-5.5356 ? 519.7972+-4.6140 ? date-format-xparb 640.6627+-5.5499 ? 645.3862+-4.8937 ? hash-map 154.9420+-2.8106 ? 155.7394+-2.9022 ? math-cordic 504.1088+-6.9831 498.2603+-6.9737 might be 1.0117x faster math-partial-sums 505.8552+-5.5137 503.8810+-6.6426 math-spectral-norm 567.8605+-8.4526 ? 570.8371+-7.9574 ? string-base64 355.7360+-8.6966 ? 358.8772+-13.1868 ? string-fasta 371.1290+-4.3836 369.3702+-6.7752 string-tagcloud 184.1840+-2.9461 183.5414+-3.3726 <geometric> 400.6519+-3.0585 ? 400.7128+-2.3267 ? might be 1.0002x slower master ic V8Spider: crypto 49.8808+-3.4730 ? 51.0818+-2.9611 ? might be 1.0241x slower deltablue 82.6540+-4.0320 ? 87.5795+-11.8431 ? might be 1.0596x slower earley-boyer 39.6241+-1.1683 ? 39.9680+-0.9492 ? raytrace 29.6940+-3.4426 ? 29.8050+-0.9096 ? regexp 71.5437+-20.3625 63.4915+-1.5867 might be 1.1268x faster richards 71.1310+-2.1558 ? 71.3584+-1.4709 ? splay 32.9628+-1.7137 ? 35.0010+-1.3698 ? might be 1.0618x slower <geometric> 50.1934+-1.5189 ? 50.5430+-1.5713 ? might be 1.0070x slower master ic Octane: encrypt 0.20858+-0.00695 0.20772+-0.00529 decrypt 3.55052+-0.10304 3.49026+-0.09273 might be 1.0173x faster deltablue x2 0.15801+-0.00199 ? 0.15917+-0.00111 ? earley 0.28187+-0.00428 ? 0.28201+-0.00501 ? boyer 4.29192+-0.17404 ? 4.32426+-0.27663 ? navier-stokes x2 5.12083+-0.08797 ? 5.17124+-0.10096 ? raytrace x2 1.11400+-0.03343 1.04216+-0.10683 might be 1.0689x faster richards x2 0.10178+-0.00182 ? 0.10476+-0.00515 ? might be 1.0293x slower splay x2 0.35192+-0.01115 0.34540+-0.00302 might be 1.0188x faster regexp x2 25.63553+-0.39604 ! 26.44431+-0.34988 ! definitely 1.0315x slower pdfjs x2 38.47738+-0.74088 ? 38.53297+-0.74144 ? mandreel x2 45.99513+-1.43799 ? 46.45711+-1.72120 ? might be 1.0100x slower gbemu x2 36.10856+-3.06677 34.82200+-0.56778 might be 1.0369x faster closure 0.57473+-0.00418 ? 0.57615+-0.00307 ? jquery 7.46465+-0.18401 7.36353+-0.16144 might be 1.0137x faster box2d x2 10.26098+-0.28105 ? 10.31194+-0.17225 ? zlib x2 392.32231+-7.39001 389.48822+-6.64758 typescript x2 664.83917+-26.82186 ? 677.30731+-20.06463 ? might be 1.0188x slower <geometric> 5.79189+-0.04609 5.78043+-0.03344 might be 1.0020x faster master ic Kraken: ai-astar 241.365+-5.118 238.731+-14.272 might be 1.0110x faster audio-beat-detection 59.148+-0.479 58.943+-0.492 audio-dft 97.255+-2.436 ? 99.207+-3.193 ? might be 1.0201x slower audio-fft 35.490+-0.199 35.489+-0.064 audio-oscillator 62.692+-0.703 62.353+-0.472 imaging-darkroom 60.752+-0.993 60.462+-0.494 imaging-desaturate 56.198+-0.811 54.646+-5.503 might be 1.0284x faster imaging-gaussian-blur 85.531+-2.129 85.211+-1.705 json-parse-financial 39.943+-0.670 39.793+-0.742 json-stringify-tinderbox 23.121+-0.621 ? 24.341+-1.220 ? might be 1.0527x slower stanford-crypto-aes 41.827+-0.675 ? 42.299+-1.026 ? might be 1.0113x slower stanford-crypto-ccm 36.805+-4.181 35.615+-0.989 might be 1.0334x faster stanford-crypto-pbkdf2 96.699+-1.800 ? 96.792+-1.776 ? stanford-crypto-sha256-iterative 37.039+-0.777 ? 37.141+-0.543 ? <arithmetic> 69.562+-0.584 69.359+-1.025 might be 1.0029x faster master ic JSRegress: abc-forward-loop-equal 29.5349+-0.4325 ? 30.1417+-0.7411 ? might be 1.0205x slower abc-postfix-backward-loop 30.3881+-1.8454 29.7782+-0.6846 might be 1.0205x faster abc-simple-backward-loop 29.2748+-0.9834 ? 29.7107+-1.0847 ? might be 1.0149x slower abc-simple-forward-loop 29.4175+-0.6109 ? 29.5807+-1.3308 ? abc-skippy-loop 21.0942+-0.9842 ? 21.4785+-0.8209 ? might be 1.0182x slower abs-boolean 2.4377+-0.0390 ? 2.4465+-0.1482 ? adapt-to-double-divide 17.0712+-1.5894 16.5235+-0.4986 might be 1.0331x faster aliased-arguments-getbyval 1.1270+-0.0960 ? 1.1277+-0.0559 ? allocate-big-object 2.3806+-0.5520 2.3558+-0.2988 might be 1.0105x faster arguments-named-and-reflective 10.9250+-0.2171 ? 10.9985+-0.1123 ? arguments-out-of-bounds 10.2409+-0.4871 10.0610+-0.8294 might be 1.0179x faster arguments-strict-mode 9.5701+-0.0788 ? 9.9498+-0.6374 ? might be 1.0397x slower arguments 8.4837+-0.1373 8.4786+-0.3615 arity-mismatch-inlining 0.8566+-0.0383 ? 0.8638+-0.0807 ? array-access-polymorphic-structure 5.9321+-0.0565 5.8259+-0.4725 might be 1.0182x faster array-nonarray-polymorhpic-access 25.6738+-2.9647 24.9973+-0.4445 might be 1.0271x faster array-prototype-every 74.7607+-0.7317 ! 77.0168+-1.3753 ! definitely 1.0302x slower array-prototype-forEach 76.3755+-3.8228 ? 76.5848+-1.6686 ? array-prototype-map 84.6031+-3.8424 ? 84.9257+-1.1804 ? array-prototype-reduce 71.3008+-0.8740 ! 72.7335+-0.4567 ! definitely 1.0201x slower array-prototype-reduceRight 70.7880+-0.3378 ! 72.3152+-0.7542 ! definitely 1.0216x slower array-prototype-some 75.0168+-1.2033 ? 77.4734+-2.3301 ? might be 1.0327x slower array-splice-contiguous 21.6472+-1.4235 ? 21.6954+-3.2630 ? array-with-double-add 3.4468+-0.2582 3.4083+-0.0832 might be 1.0113x faster array-with-double-increment 3.1373+-0.4050 3.1258+-0.1265 array-with-double-mul-add 4.2200+-0.1570 ? 4.2841+-0.1567 ? might be 1.0152x slower array-with-double-sum 3.1790+-0.0181 ? 3.2094+-0.0800 ? array-with-int32-add-sub 6.0376+-0.3826 5.9330+-0.2281 might be 1.0176x faster array-with-int32-or-double-sum 3.1977+-0.0380 ? 3.2883+-0.1684 ? might be 1.0283x slower ArrayBuffer-DataView-alloc-large-long-lived 27.5721+-0.4786 27.1799+-0.2859 might be 1.0144x faster ArrayBuffer-DataView-alloc-long-lived 12.7885+-0.9658 12.4843+-0.3017 might be 1.0244x faster ArrayBuffer-Int32Array-byteOffset 3.6060+-0.0626 ? 3.6370+-0.1378 ? ArrayBuffer-Int8Array-alloc-large-long-lived 27.5753+-0.3262 ? 27.6735+-0.3342 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 22.3538+-3.6202 20.5285+-0.8385 might be 1.0889x faster ArrayBuffer-Int8Array-alloc-long-lived 11.7630+-0.4432 ? 11.8922+-0.4388 ? might be 1.0110x slower ArrayBuffer-Int8Array-alloc 10.2290+-0.6987 10.2125+-0.0908 asmjs_bool_bug 7.3741+-0.2386 ? 7.3948+-0.5272 ? assign-custom-setter-polymorphic 2.5842+-0.2781 ? 2.5860+-0.0752 ? assign-custom-setter 3.5677+-0.1675 ? 3.6045+-0.1705 ? might be 1.0103x slower basic-set 8.1844+-0.2188 ? 8.4503+-0.7564 ? might be 1.0325x slower big-int-mul 3.5646+-0.0882 ? 3.5755+-0.2538 ? boolean-test 2.8558+-0.0346 ? 2.8853+-0.0761 ? might be 1.0103x slower branch-fold 3.6555+-0.0953 3.6146+-0.0345 might be 1.0113x faster branch-on-string-as-boolean 16.6915+-0.7732 ? 16.7361+-1.7111 ? by-val-generic 6.2684+-0.7254 ^ 2.4961+-0.2687 ^ definitely 2.5113x faster call-spread-apply 27.1887+-0.4604 27.0333+-0.7023 call-spread-call 21.2281+-0.2446 ? 21.7821+-0.5512 ? might be 1.0261x slower captured-assignments 0.4021+-0.0034 ? 0.4115+-0.0232 ? might be 1.0234x slower cast-int-to-double 5.1140+-0.0789 ? 5.2098+-0.2577 ? might be 1.0187x slower cell-argument 6.7245+-0.7767 6.3568+-0.4255 might be 1.0579x faster cfg-simplify 2.8438+-0.2415 2.7834+-0.0855 might be 1.0217x faster chain-getter-access 8.2030+-0.2021 ? 8.2617+-0.3916 ? cmpeq-obj-to-obj-other 11.7332+-0.8180 ? 12.2717+-0.7339 ? might be 1.0459x slower constant-test 4.8991+-0.1095 4.8477+-0.0431 might be 1.0106x faster create-lots-of-functions 9.4425+-0.7893 9.3236+-0.5627 might be 1.0128x faster cse-new-array-buffer 2.2452+-0.2537 2.1927+-0.1405 might be 1.0239x faster cse-new-array 2.3092+-0.2842 2.2518+-0.1467 might be 1.0255x faster DataView-custom-properties 31.9301+-0.9217 ? 32.0884+-0.6309 ? delay-tear-off-arguments-strictmode 12.9837+-0.3987 ? 13.0328+-0.9882 ? deltablue-varargs 148.5550+-3.7878 ? 148.5592+-1.1082 ? destructuring-arguments 167.8102+-3.7216 165.8862+-1.8769 might be 1.0116x faster destructuring-parameters-overridden-by-function 0.4476+-0.0664 0.4343+-0.0290 might be 1.0305x faster destructuring-swap 4.7032+-0.1038 ? 4.7423+-0.0462 ? direct-arguments-getbyval 1.1734+-0.1909 1.1034+-0.0831 might be 1.0634x faster div-boolean-double 5.4445+-0.1707 5.3592+-0.0598 might be 1.0159x faster div-boolean 8.5214+-0.5778 8.4855+-0.2853 double-get-by-val-out-of-bounds 4.0983+-0.2070 ? 4.2200+-0.0727 ? might be 1.0297x slower double-pollution-getbyval 8.8740+-0.3789 ? 8.9913+-0.3688 ? might be 1.0132x slower double-pollution-putbyoffset 3.6915+-0.1230 ? 3.7455+-0.0925 ? might be 1.0146x slower double-real-use 27.3335+-3.1459 24.5205+-0.9451 might be 1.1147x faster double-to-int32-typed-array-no-inline 2.0599+-0.1598 ? 2.0674+-0.1083 ? double-to-int32-typed-array 1.7359+-0.0900 ? 1.8422+-0.1020 ? might be 1.0612x slower double-to-uint32-typed-array-no-inline 2.1698+-0.0972 ? 2.1833+-0.1366 ? double-to-uint32-typed-array 1.8335+-0.0348 1.8116+-0.0837 might be 1.0121x faster elidable-new-object-dag 33.7630+-0.4547 ? 33.8813+-0.7400 ? elidable-new-object-roflcopter 32.9035+-0.4113 ? 33.5746+-1.4670 ? might be 1.0204x slower elidable-new-object-then-call 31.2815+-0.7437 ? 32.1315+-1.6459 ? might be 1.0272x slower elidable-new-object-tree 36.0837+-0.5270 ? 36.5898+-0.5270 ? might be 1.0140x slower empty-string-plus-int 5.0132+-0.4494 4.9120+-0.1849 might be 1.0206x faster emscripten-cube2hash 26.1191+-2.2572 ? 32.4125+-17.6311 ? might be 1.2410x slower exit-length-on-plain-object 12.8331+-0.2757 ? 13.5498+-2.3257 ? might be 1.0559x slower external-arguments-getbyval 1.1732+-0.0919 1.1390+-0.0269 might be 1.0300x faster external-arguments-putbyval 2.2215+-0.1638 2.0906+-0.0551 might be 1.0626x faster fixed-typed-array-storage-var-index 1.1741+-0.0366 1.1584+-0.0949 might be 1.0135x faster fixed-typed-array-storage 0.8331+-0.0151 ? 0.8456+-0.0588 ? might be 1.0149x slower Float32Array-matrix-mult 3.9724+-0.2496 ? 4.2046+-0.6259 ? might be 1.0584x slower Float32Array-to-Float64Array-set 46.4340+-1.8513 45.9855+-0.5095 Float64Array-alloc-long-lived 57.8806+-0.5310 ? 59.2067+-2.7125 ? might be 1.0229x slower Float64Array-to-Int16Array-set 57.3400+-1.1764 ? 57.5569+-2.9608 ? fold-double-to-int 12.8478+-0.2789 ? 12.9927+-0.3998 ? might be 1.0113x slower fold-get-by-id-to-multi-get-by-offset-rare-int 10.8593+-0.9260 10.4496+-0.9543 might be 1.0392x faster fold-get-by-id-to-multi-get-by-offset 9.1953+-0.6101 8.9050+-0.4934 might be 1.0326x faster fold-multi-get-by-offset-to-get-by-offset 7.9889+-1.5941 ? 8.1481+-1.0196 ? might be 1.0199x slower fold-multi-get-by-offset-to-poly-get-by-offset 7.6398+-1.4592 ? 8.2047+-1.4644 ? might be 1.0739x slower fold-multi-put-by-offset-to-poly-put-by-offset 7.5921+-0.6624 ? 7.8015+-0.7334 ? might be 1.0276x slower fold-multi-put-by-offset-to-put-by-offset 6.1060+-0.8363 5.7025+-2.1560 might be 1.0707x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 8.3265+-0.7296 ? 8.8616+-0.8983 ? might be 1.0643x slower fold-put-by-id-to-multi-put-by-offset 8.8688+-0.6047 ? 9.0264+-0.5612 ? might be 1.0178x slower fold-put-by-val-with-string-to-multi-put-by-offset 69.8406+-8.3187 ^ 9.6357+-1.0856 ^ definitely 7.2481x faster fold-put-by-val-with-symbol-to-multi-put-by-offset 67.9573+-1.2614 ^ 9.2725+-0.9941 ^ definitely 7.3289x faster fold-put-structure 5.5053+-0.2245 5.3703+-1.0037 might be 1.0251x faster for-of-iterate-array-entries 11.8885+-0.6022 11.6631+-0.2542 might be 1.0193x faster for-of-iterate-array-keys 3.4797+-0.4778 3.3845+-0.1672 might be 1.0281x faster for-of-iterate-array-values 3.4235+-0.2666 3.2964+-0.0745 might be 1.0385x faster fround 18.8268+-1.3292 ? 18.9299+-1.5049 ? ftl-library-inlining-dataview 57.0625+-0.7389 ? 58.6517+-3.7356 ? might be 1.0279x slower ftl-library-inlining 110.3751+-3.6948 107.0713+-0.8819 might be 1.0309x faster function-dot-apply 2.0096+-0.0544 1.9819+-0.1589 might be 1.0140x faster function-test 2.6882+-0.0911 ? 2.7485+-0.0601 ? might be 1.0225x slower function-with-eval 105.1115+-1.9907 ? 108.6945+-7.2032 ? might be 1.0341x slower gcse-poly-get-less-obvious 14.5170+-0.2764 ? 14.6887+-0.6267 ? might be 1.0118x slower gcse-poly-get 14.4799+-0.1592 ? 14.5538+-0.5983 ? gcse 3.8489+-0.0369 3.8278+-0.1016 get-by-id-bimorphic-check-structure-elimination-simple 2.6028+-0.0603 ? 2.6510+-0.1233 ? might be 1.0185x slower get-by-id-bimorphic-check-structure-elimination 5.9005+-0.3137 5.8845+-0.2495 get-by-id-chain-from-try-block 5.5987+-0.2719 5.5679+-0.2395 get-by-id-check-structure-elimination 4.5008+-0.2586 ? 4.5802+-0.2081 ? might be 1.0176x slower get-by-id-proto-or-self 15.1098+-1.9108 15.1002+-2.4520 get-by-id-quadmorphic-check-structure-elimination-simple 2.8992+-0.0423 2.8879+-0.0307 get-by-id-self-or-proto 14.8160+-0.2843 14.6068+-0.5636 might be 1.0143x faster get-by-val-out-of-bounds 3.9662+-0.0958 3.9138+-0.2395 might be 1.0134x faster get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.9312+-0.2184 2.8314+-0.0657 might be 1.0352x faster get-by-val-with-string-bimorphic-check-structure-elimination 6.2715+-0.0856 6.1059+-0.1838 might be 1.0271x faster get-by-val-with-string-chain-from-try-block 5.7194+-0.4913 ? 5.7660+-0.2722 ? get-by-val-with-string-check-structure-elimination 5.2401+-0.2867 ? 5.2834+-0.2692 ? get-by-val-with-string-proto-or-self 14.4730+-0.9660 ? 15.9333+-2.0632 ? might be 1.1009x slower get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.2435+-0.1516 ? 3.2851+-0.1247 ? might be 1.0128x slower get-by-val-with-string-self-or-proto 15.3465+-0.7423 15.2483+-1.2232 get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.1494+-0.0215 ^ 3.0704+-0.0202 ^ definitely 1.0257x faster get-by-val-with-symbol-bimorphic-check-structure-elimination 12.4795+-0.1190 ? 12.6082+-0.5383 ? might be 1.0103x slower get-by-val-with-symbol-chain-from-try-block 6.0428+-0.4681 5.7552+-0.1620 might be 1.0500x faster get-by-val-with-symbol-check-structure-elimination 11.1862+-0.1103 ? 11.2457+-0.1554 ? get-by-val-with-symbol-proto-or-self 14.3878+-0.3968 ? 15.7057+-1.5625 ? might be 1.0916x slower get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 4.0758+-0.1681 3.9822+-0.1200 might be 1.0235x faster get-by-val-with-symbol-self-or-proto 15.0103+-0.4396 ? 15.4728+-2.1162 ? might be 1.0308x slower get_callee_monomorphic 2.2325+-0.2578 ? 2.5499+-0.4474 ? might be 1.1422x slower get_callee_polymorphic 3.4028+-0.2955 3.1222+-0.3155 might be 1.0899x faster getter-no-activation 4.8585+-0.1482 ? 5.0676+-0.1189 ? might be 1.0430x slower getter-prototype 9.9545+-0.3941 9.7632+-0.1259 might be 1.0196x faster getter-richards 111.5101+-7.7128 109.7234+-11.8151 might be 1.0163x faster getter 5.4523+-0.5704 ? 5.6300+-0.3193 ? might be 1.0326x slower global-object-access-with-mutating-structure 5.5941+-0.1928 5.4665+-0.0791 might be 1.0233x faster global-var-const-infer-fire-from-opt 0.9236+-0.1014 0.8497+-0.1439 might be 1.0870x faster global-var-const-infer 0.8198+-0.2162 0.7594+-0.1267 might be 1.0796x faster HashMap-put-get-iterate-keys 25.7578+-1.4465 ? 25.8965+-2.9974 ? HashMap-put-get-iterate 26.8336+-2.6816 25.9932+-1.4584 might be 1.0323x faster HashMap-string-put-get-iterate 24.7007+-0.5839 24.5601+-1.3033 hoist-make-rope 8.3106+-1.4499 ? 8.8516+-0.8678 ? might be 1.0651x slower hoist-poly-check-structure-effectful-loop 4.3356+-0.3144 4.1443+-0.1073 might be 1.0462x faster hoist-poly-check-structure 3.2967+-0.0220 3.2790+-0.0419 imul-double-only 6.7305+-0.5226 6.4955+-0.1644 might be 1.0362x faster imul-int-only 8.0777+-0.1375 7.9585+-0.4733 might be 1.0150x faster imul-mixed 7.0861+-0.5583 6.5967+-0.8987 might be 1.0742x faster in-four-cases 17.7265+-0.3689 ? 18.0688+-1.0787 ? might be 1.0193x slower in-one-case-false 9.3591+-0.2055 9.3472+-0.3952 in-one-case-true 9.3726+-0.1403 ? 9.6580+-0.6407 ? might be 1.0305x slower in-two-cases 9.7679+-0.5754 ? 10.0560+-0.8268 ? might be 1.0295x slower indexed-properties-in-objects 2.8676+-0.0556 2.8490+-0.1347 infer-closure-const-then-mov-no-inline 3.1601+-0.3501 3.0872+-0.1413 might be 1.0236x faster infer-closure-const-then-mov 17.1642+-0.6288 ? 17.2238+-0.7206 ? infer-closure-const-then-put-to-scope-no-inline 11.9243+-0.7506 11.7864+-0.6306 might be 1.0117x faster infer-closure-const-then-put-to-scope 22.0120+-1.0148 21.9213+-0.9968 infer-closure-const-then-reenter-no-inline 50.9547+-0.4195 ? 51.0400+-0.9705 ? infer-closure-const-then-reenter 23.4171+-2.4238 22.7385+-1.8945 might be 1.0298x faster infer-constant-global-property 3.4180+-0.0220 ? 3.5208+-0.1751 ? might be 1.0301x slower infer-constant-property 2.6411+-0.0819 ? 2.6980+-0.2028 ? might be 1.0216x slower infer-one-time-closure-ten-vars 8.8879+-0.7656 8.2870+-0.3480 might be 1.0725x faster infer-one-time-closure-two-vars 8.2109+-0.8290 ? 8.2318+-0.2320 ? infer-one-time-closure 7.9412+-0.1566 7.8170+-0.2550 might be 1.0159x faster infer-one-time-deep-closure 12.9716+-1.1414 ? 13.3140+-1.3430 ? might be 1.0264x slower inline-arguments-access 3.6853+-0.3814 ? 3.7426+-0.2307 ? might be 1.0155x slower inline-arguments-aliased-access 3.8002+-0.3319 3.7708+-0.5180 inline-arguments-local-escape 3.9166+-1.2548 3.6365+-0.0565 might be 1.0770x faster inline-get-scoped-var 4.7989+-0.3730 4.6271+-0.1841 might be 1.0371x faster inlined-put-by-id-transition 10.2325+-0.5806 10.0850+-1.0722 might be 1.0146x faster inlined-put-by-val-with-string-transition 116.7754+-2.4339 ^ 73.8770+-1.3856 ^ definitely 1.5807x faster inlined-put-by-val-with-symbol-transition 117.3695+-5.2318 ^ 73.1078+-3.7026 ^ definitely 1.6054x faster int-or-other-abs-then-get-by-val 4.8240+-0.1962 ? 4.8371+-0.0296 ? int-or-other-abs-zero-then-get-by-val 16.4916+-1.5400 16.1529+-0.4335 might be 1.0210x faster int-or-other-add-then-get-by-val 4.1135+-0.0731 ? 4.3105+-0.5752 ? might be 1.0479x slower int-or-other-add 5.0170+-0.4011 ? 5.0503+-0.1563 ? int-or-other-div-then-get-by-val 3.9658+-0.4530 3.7502+-0.0436 might be 1.0575x faster int-or-other-max-then-get-by-val 4.0077+-0.1418 ? 4.0280+-0.0392 ? int-or-other-min-then-get-by-val 3.9775+-0.0696 ? 4.0277+-0.0495 ? might be 1.0126x slower int-or-other-mod-then-get-by-val 3.5260+-0.0796 ? 3.5715+-0.1012 ? might be 1.0129x slower int-or-other-mul-then-get-by-val 3.7001+-0.1977 3.5883+-0.0786 might be 1.0311x faster int-or-other-neg-then-get-by-val 4.5601+-0.0357 ? 4.5957+-0.1938 ? int-or-other-neg-zero-then-get-by-val 16.2615+-0.4468 ? 16.3633+-0.3358 ? int-or-other-sub-then-get-by-val 4.2277+-0.1296 4.1367+-0.1389 might be 1.0220x faster int-or-other-sub 3.5087+-0.1709 3.4546+-0.0296 might be 1.0157x faster int-overflow-local 4.3159+-0.0184 ? 4.3990+-0.2582 ? might be 1.0192x slower Int16Array-alloc-long-lived 42.6980+-0.6805 ? 43.4661+-2.7291 ? might be 1.0180x slower Int16Array-bubble-sort-with-byteLength 17.9260+-0.4888 17.8195+-0.2841 Int16Array-bubble-sort 17.7511+-0.3038 17.7039+-0.6157 Int16Array-load-int-mul 1.4377+-0.0674 ? 1.4573+-0.1137 ? might be 1.0136x slower Int16Array-to-Int32Array-set 44.2071+-2.3429 44.1066+-1.0505 Int32Array-alloc-large 12.5785+-1.5008 12.2800+-0.5478 might be 1.0243x faster Int32Array-alloc-long-lived 47.2896+-0.1587 ? 47.6088+-0.8994 ? Int32Array-alloc 2.7808+-0.2902 ? 3.1058+-0.5186 ? might be 1.1169x slower Int32Array-Int8Array-view-alloc 6.5502+-0.6617 6.4050+-0.3096 might be 1.0227x faster int52-spill 4.7968+-0.3822 ? 4.8315+-0.5359 ? Int8Array-alloc-long-lived 37.8353+-1.1782 ? 38.5478+-2.0139 ? might be 1.0188x slower Int8Array-load-with-byteLength 3.4713+-0.1658 ? 3.5471+-0.1702 ? might be 1.0218x slower Int8Array-load 3.4377+-0.0952 3.4271+-0.0497 integer-divide 10.5970+-0.1915 10.4896+-0.0201 might be 1.0102x faster integer-modulo 1.6333+-0.0932 ? 1.6638+-0.0940 ? might be 1.0187x slower is-boolean-fold-tricky 3.7549+-0.1465 ? 3.8073+-0.1057 ? might be 1.0139x slower is-boolean-fold 2.6329+-0.1655 2.6001+-0.0226 might be 1.0126x faster is-function-fold-tricky-internal-function 9.8508+-0.0780 ? 9.9405+-0.2325 ? is-function-fold-tricky 4.2671+-0.1643 4.2640+-0.1124 is-function-fold 2.6531+-0.0809 ? 2.6567+-0.0253 ? is-number-fold-tricky 4.0046+-0.0080 ? 4.1213+-0.2342 ? might be 1.0291x slower is-number-fold 2.6912+-0.1877 2.6353+-0.0317 might be 1.0212x faster is-object-or-null-fold-functions 2.6500+-0.0114 2.6355+-0.0144 is-object-or-null-fold-less-tricky 4.1417+-0.1409 4.0935+-0.0407 might be 1.0118x faster is-object-or-null-fold-tricky 5.3962+-0.2265 5.3470+-0.1937 is-object-or-null-fold 2.6531+-0.0709 ? 2.6613+-0.0586 ? is-object-or-null-trickier-function 4.1988+-0.1661 ? 4.2360+-0.1100 ? is-object-or-null-trickier-internal-function 10.6475+-0.4213 ? 10.9593+-0.4468 ? might be 1.0293x slower is-object-or-null-tricky-function 4.1293+-0.0657 ? 4.4148+-0.7151 ? might be 1.0691x slower is-object-or-null-tricky-internal-function 7.7068+-0.2938 ? 7.8894+-0.1648 ? might be 1.0237x slower is-string-fold-tricky 4.1323+-0.2152 4.0641+-0.0571 might be 1.0168x faster is-string-fold 2.6721+-0.0869 2.6204+-0.0404 might be 1.0197x faster is-undefined-fold-tricky 3.5257+-0.3867 3.4009+-0.1710 might be 1.0367x faster is-undefined-fold 2.6155+-0.0517 ? 2.6495+-0.1051 ? might be 1.0130x slower JSONP-negative-0 0.2363+-0.0142 0.2353+-0.0044 large-int-captured 3.9695+-0.4701 ? 4.1597+-0.1657 ? might be 1.0479x slower large-int-neg 14.5143+-0.6395 ? 14.6890+-1.2079 ? might be 1.0120x slower large-int 14.0668+-0.4977 13.8688+-0.2750 might be 1.0143x faster load-varargs-elimination 22.1437+-2.7113 21.5668+-0.2185 might be 1.0268x faster logical-not-weird-types 2.9127+-0.1013 ? 2.9623+-0.3469 ? might be 1.0170x slower logical-not 4.3538+-0.3106 4.3154+-0.1838 lots-of-fields 9.2769+-0.1711 9.2155+-0.4540 make-indexed-storage 2.9728+-0.5521 2.7891+-0.2653 might be 1.0659x faster make-rope-cse 3.6066+-0.1953 3.5837+-0.1173 marsaglia-larger-ints 35.0770+-4.1575 33.1194+-1.0845 might be 1.0591x faster marsaglia-osr-entry 21.3315+-0.5130 21.2500+-1.0071 math-with-out-of-bounds-array-values 22.5037+-0.6514 22.1960+-0.8350 might be 1.0139x faster max-boolean 2.7035+-0.1005 2.6807+-0.0655 method-on-number 16.6373+-1.6709 ? 17.3488+-0.6858 ? might be 1.0428x slower min-boolean 2.6571+-0.0977 2.6252+-0.1030 might be 1.0121x faster minus-boolean-double 3.1398+-0.1416 ? 3.2175+-0.2144 ? might be 1.0247x slower minus-boolean 2.3416+-0.1565 ? 2.3867+-0.0604 ? might be 1.0193x slower misc-strict-eq 31.3822+-0.8639 ? 32.4614+-5.1709 ? might be 1.0344x slower mod-boolean-double 11.5531+-0.9867 11.3576+-0.2836 might be 1.0172x faster mod-boolean 8.7325+-0.5172 8.4885+-0.3454 might be 1.0287x faster mul-boolean-double 3.8400+-0.4311 3.6964+-0.2600 might be 1.0389x faster mul-boolean 2.8243+-0.1040 ? 2.8593+-0.1003 ? might be 1.0124x slower neg-boolean 3.1446+-0.0633 ? 3.1582+-0.1319 ? negative-zero-divide 0.3218+-0.0410 0.3141+-0.0124 might be 1.0245x faster negative-zero-modulo 0.3303+-0.0194 ? 0.3368+-0.0406 ? might be 1.0198x slower negative-zero-negate 0.2988+-0.0209 ? 0.3047+-0.0207 ? might be 1.0198x slower nested-function-parsing 44.9730+-2.9306 43.8319+-1.1484 might be 1.0260x faster new-array-buffer-dead 88.8590+-1.7404 ? 89.0490+-1.0686 ? new-array-buffer-push 5.8459+-0.1367 ? 6.1324+-0.5649 ? might be 1.0490x slower new-array-dead 13.4521+-1.2281 ? 14.3281+-1.7657 ? might be 1.0651x slower new-array-push 3.4800+-0.4174 3.3615+-0.1541 might be 1.0353x faster no-inline-constructor 30.9245+-0.7907 ? 31.7120+-0.5224 ? might be 1.0255x slower number-test 2.8687+-0.1844 ? 3.0593+-0.6453 ? might be 1.0664x slower object-closure-call 4.8638+-0.1018 ? 4.9463+-0.3351 ? might be 1.0170x slower object-get-own-property-symbols-on-large-array 4.2043+-0.5557 3.7700+-0.2982 might be 1.1152x faster object-test 2.6872+-0.1957 ? 2.7119+-0.1968 ? obvious-sink-pathology-taken 101.2792+-1.9549 ? 101.7896+-2.4232 ? obvious-sink-pathology 95.6417+-1.2993 ? 96.0343+-1.2033 ? obviously-elidable-new-object 28.9707+-1.2022 28.5012+-0.5308 might be 1.0165x faster plus-boolean-arith 2.4132+-0.1272 ? 2.4982+-0.3660 ? might be 1.0352x slower plus-boolean-double 3.1204+-0.0889 ? 3.1349+-0.0757 ? plus-boolean 2.5878+-0.0498 2.5855+-0.0937 poly-chain-access-different-prototypes-simple 3.4817+-0.4857 3.3397+-0.1470 might be 1.0425x faster poly-chain-access-different-prototypes 2.9945+-0.2889 2.8622+-0.0429 might be 1.0462x faster poly-chain-access-simpler 3.2988+-0.1656 ? 3.3156+-0.0844 ? poly-chain-access 3.3250+-0.1037 3.3011+-0.1687 poly-stricteq 50.8918+-0.8355 ? 51.1739+-2.6064 ? polymorphic-array-call 1.5161+-0.7965 1.3165+-0.4333 might be 1.1517x faster polymorphic-get-by-id 2.8755+-0.0859 2.8725+-0.1487 polymorphic-put-by-id 26.0439+-3.1919 25.4847+-0.9879 might be 1.0219x faster polymorphic-put-by-val-with-string 352.8145+-9.3221 ^ 26.5709+-1.2105 ^ definitely 13.2782x faster polymorphic-put-by-val-with-symbol 383.7432+-13.0210 ^ 26.8412+-0.7089 ^ definitely 14.2968x faster polymorphic-structure 13.5208+-0.5404 13.2847+-0.1485 might be 1.0178x faster polyvariant-monomorphic-get-by-id 7.1394+-0.3818 6.4504+-0.5165 might be 1.1068x faster proto-getter-access 8.2629+-0.0766 8.1108+-0.2481 might be 1.0188x faster prototype-access-with-mutating-prototype 5.6054+-0.6033 5.5956+-0.6121 put-by-id-replace-and-transition 7.5640+-0.1934 ? 8.2190+-1.9564 ? might be 1.0866x slower put-by-id-slightly-polymorphic 2.6350+-0.0469 ? 2.6422+-0.0238 ? put-by-id 9.7262+-0.4133 9.6785+-0.1797 put-by-val-direct 0.3211+-0.0186 0.3175+-0.0119 might be 1.0113x faster put-by-val-large-index-blank-indexing-type 5.4305+-0.3740 ? 5.4499+-0.2635 ? put-by-val-machine-int 2.4521+-0.1370 ? 2.5720+-0.3364 ? might be 1.0489x slower put-by-val-with-string-replace-and-transition 82.3823+-3.1861 ^ 10.0022+-0.1648 ^ definitely 8.2364x faster put-by-val-with-string-slightly-polymorphic 34.4847+-3.4010 ^ 2.8877+-0.0404 ^ definitely 11.9420x faster put-by-val-with-string 81.0162+-2.7781 ^ 10.1260+-0.4184 ^ definitely 8.0008x faster put-by-val-with-symbol-replace-and-transition 83.6551+-1.9612 ^ 11.5535+-0.3602 ^ definitely 7.2407x faster put-by-val-with-symbol-slightly-polymorphic 32.7045+-0.5333 ^ 3.0827+-0.1037 ^ definitely 10.6090x faster put-by-val-with-symbol 85.2364+-4.8715 ^ 10.0714+-0.0405 ^ definitely 8.4632x faster rare-osr-exit-on-local 14.8043+-0.1225 14.6819+-0.3379 register-pressure-from-osr 17.4568+-1.8593 16.7767+-0.4667 might be 1.0405x faster repeat-multi-get-by-offset 22.1917+-1.1454 ? 22.9281+-3.1813 ? might be 1.0332x slower setter-prototype 7.4170+-0.2628 ? 7.4594+-0.2758 ? setter 5.7578+-1.0798 5.4188+-0.9561 might be 1.0626x faster simple-activation-demo 25.0657+-0.6325 24.8707+-0.6061 simple-getter-access 10.5906+-0.5183 ? 10.7297+-0.1945 ? might be 1.0131x slower simple-poly-call-nested 8.7751+-0.4777 8.6422+-0.3684 might be 1.0154x faster simple-poly-call 1.2280+-0.0619 ? 1.3392+-0.1803 ? might be 1.0906x slower sin-boolean 17.9934+-1.3795 ? 18.0703+-0.7855 ? singleton-scope 61.6225+-1.0441 61.3861+-0.5588 sink-function 9.2559+-0.6395 ? 9.7679+-0.3116 ? might be 1.0553x slower sink-huge-activation 16.0507+-0.2070 ? 16.1722+-0.7151 ? sinkable-new-object-dag 54.8903+-0.5898 ? 56.0470+-1.8273 ? might be 1.0211x slower sinkable-new-object-taken 42.8010+-0.9374 42.6833+-0.8835 sinkable-new-object 29.9671+-1.0126 29.5977+-1.3147 might be 1.0125x faster slow-array-profile-convergence 2.5003+-0.3042 2.3951+-0.2621 might be 1.0439x faster slow-convergence 2.3795+-0.1281 ? 2.3818+-0.1473 ? slow-ternaries 17.8581+-0.7963 ? 17.9630+-0.4831 ? sorting-benchmark 17.4950+-0.5517 ? 18.9676+-2.9041 ? might be 1.0842x slower sparse-conditional 1.1497+-0.1221 1.1280+-0.0349 might be 1.0193x faster splice-to-remove 12.4685+-0.5337 12.4149+-0.3987 string-char-code-at 14.6117+-0.4076 ? 14.8188+-0.3967 ? might be 1.0142x slower string-concat-object 2.1628+-0.0573 ? 2.1902+-0.2725 ? might be 1.0127x slower string-concat-pair-object 2.0870+-0.1590 ? 2.1306+-0.0502 ? might be 1.0209x slower string-concat-pair-simple 9.2293+-0.4726 9.2056+-0.5249 string-concat-simple 9.1588+-0.1390 ? 9.5969+-1.0112 ? might be 1.0478x slower string-cons-repeat 6.8117+-0.8631 6.7598+-0.3876 string-cons-tower 6.6593+-0.3479 ? 6.9427+-0.5752 ? might be 1.0426x slower string-equality 15.3721+-0.2111 ? 16.0795+-1.3242 ? might be 1.0460x slower string-get-by-val-big-char 6.6597+-0.0834 ? 6.8694+-0.3734 ? might be 1.0315x slower string-get-by-val-out-of-bounds-insane 3.3699+-0.1818 3.3461+-0.1859 string-get-by-val-out-of-bounds 4.1163+-0.1203 4.0862+-0.1727 string-get-by-val 2.8268+-0.0967 2.8076+-0.0271 string-hash 2.0060+-0.5613 1.8235+-0.0405 might be 1.1001x faster string-long-ident-equality 12.7754+-0.2796 12.6277+-0.0607 might be 1.0117x faster string-out-of-bounds 10.5608+-0.3894 10.5372+-0.5208 string-repeat-arith 28.3465+-0.4683 ? 28.3585+-3.0672 ? string-sub 54.1116+-0.5113 ? 54.2802+-0.6925 ? string-test 2.7214+-0.0241 ? 2.7413+-0.0791 ? string-var-equality 26.3129+-1.0060 ? 26.6157+-0.7633 ? might be 1.0115x slower structure-hoist-over-transitions 2.3541+-0.0813 ? 2.4064+-0.1342 ? might be 1.0222x slower substring-concat-weird 36.5792+-1.5353 36.4404+-0.3594 substring-concat 40.1810+-0.8617 39.2656+-0.8914 might be 1.0233x faster substring 46.3281+-2.9666 45.6537+-0.8225 might be 1.0148x faster switch-char-constant 2.7122+-0.0387 2.6750+-0.1355 might be 1.0139x faster switch-char 6.0180+-1.1527 ? 6.7151+-0.8783 ? might be 1.1158x slower switch-constant 7.7316+-0.4554 ? 7.7471+-0.9145 ? switch-string-basic-big-var 15.9236+-0.3200 ? 16.4187+-2.2855 ? might be 1.0311x slower switch-string-basic-big 15.3672+-0.1546 15.3292+-0.4505 switch-string-basic-var 13.4644+-0.1687 ? 13.5225+-0.7999 ? switch-string-basic 13.7495+-1.5260 13.0030+-0.1442 might be 1.0574x faster switch-string-big-length-tower-var 18.5561+-1.1132 18.4691+-0.4692 switch-string-length-tower-var 13.5162+-0.5104 ? 13.5606+-0.5612 ? switch-string-length-tower 11.9597+-0.1803 ? 11.9985+-0.3331 ? switch-string-short 11.9335+-0.2098 ? 12.0862+-0.2588 ? might be 1.0128x slower switch 12.3829+-0.4430 11.9535+-0.3162 might be 1.0359x faster tear-off-arguments-simple 3.2495+-0.4838 3.1082+-0.0374 might be 1.0455x faster tear-off-arguments 3.9863+-0.2201 ? 4.3047+-0.6400 ? might be 1.0799x slower temporal-structure 12.6881+-1.6001 12.4362+-0.2905 might be 1.0203x faster to-int32-boolean 13.5078+-0.3953 13.3716+-0.5710 might be 1.0102x faster try-catch-get-by-val-cloned-arguments 15.4977+-2.2536 14.6653+-0.1008 might be 1.0568x faster try-catch-get-by-val-direct-arguments 6.4634+-0.5740 ? 6.6069+-0.3359 ? might be 1.0222x slower try-catch-get-by-val-scoped-arguments 8.0182+-0.2541 7.7623+-0.5478 might be 1.0330x faster typed-array-get-set-by-val-profiling 28.5938+-1.7224 27.8309+-0.6035 might be 1.0274x faster undefined-property-access 229.1655+-3.5638 228.0268+-0.2822 undefined-test 3.0630+-0.7535 2.8225+-0.0537 might be 1.0852x faster unprofiled-licm 14.4825+-0.8009 14.4584+-0.4307 varargs-call 13.7110+-0.2849 ? 14.2435+-1.1361 ? might be 1.0388x slower varargs-construct-inline 22.4163+-0.3904 22.1120+-0.4696 might be 1.0138x faster varargs-construct 20.1051+-0.1352 ? 20.5405+-0.5869 ? might be 1.0217x slower varargs-inline 8.6788+-0.3512 ? 9.0713+-0.6238 ? might be 1.0452x slower varargs-strict-mode 9.3748+-0.2786 9.2004+-0.1886 might be 1.0190x faster varargs 9.0817+-0.2209 9.0712+-0.0866 weird-inlining-const-prop 2.0727+-0.2098 ? 2.0750+-0.1201 ? <geometric> 8.3689+-0.0325 ^ 7.8379+-0.0320 ^ definitely 1.0678x faster master ic Geomean of preferred means: <scaled-result> 26.0810+-0.0780 ^ 25.8149+-0.1876 ^ definitely 1.0103x faster
Yusuke Suzuki
Comment 5 2015-08-07 17:00:59 PDT
Created attachment 258546 [details] Patch rebased the patch
Yusuke Suzuki
Comment 6 2015-08-07 18:44:26 PDT
Yusuke Suzuki
Comment 7 2015-08-07 18:54:15 PDT
Leverage byValInfo->slowPathCount in these cached Id path. It throws away put-by-val performance regressions. There's no performance regression. And for synthetic ones, we can see significant performance improvements. This optimization will encourage ES6 Symbols and computed properties, like var object = { [key]: value } Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Yusukes-MacBook-Pro (MacBookPro11,3). VMs tested: "master" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/master-for-put-by-val/Release/jsc "ic" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/put-by-val/Release/jsc Collected 4 samples per benchmark/VM, with 4 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. master ic SunSpider: 3d-cube 4.6110+-0.2586 4.5530+-0.1024 might be 1.0127x faster 3d-morph 5.2496+-0.2538 ? 5.3008+-0.3525 ? 3d-raytrace 5.3762+-0.4505 5.3630+-0.3617 access-binary-trees 2.0767+-0.0825 2.0555+-0.1932 might be 1.0103x faster access-fannkuch 5.5440+-0.1497 ? 5.7629+-0.5321 ? might be 1.0395x slower access-nbody 2.5516+-0.1703 ? 2.6977+-0.4622 ? might be 1.0573x slower access-nsieve 3.1447+-0.1490 3.0239+-0.0680 might be 1.0399x faster bitops-3bit-bits-in-byte 1.5470+-0.1111 1.4727+-0.0542 might be 1.0504x faster bitops-bits-in-byte 3.3249+-0.0970 3.2793+-0.1802 might be 1.0139x faster bitops-bitwise-and 2.0297+-0.0428 ? 2.0673+-0.2376 ? might be 1.0185x slower bitops-nsieve-bits 2.9330+-0.0557 ? 2.9714+-0.1249 ? might be 1.0131x slower controlflow-recursive 2.1381+-0.0708 2.0273+-0.0706 might be 1.0546x faster crypto-aes 3.9095+-0.1959 ? 4.0664+-0.6038 ? might be 1.0401x slower crypto-md5 2.7053+-0.2011 2.4968+-0.0936 might be 1.0835x faster crypto-sha1 2.4725+-0.3360 ? 2.5139+-0.0745 ? might be 1.0168x slower date-format-tofte 6.8247+-0.3900 ? 6.8788+-0.3018 ? date-format-xparb 4.6035+-0.2513 4.5864+-0.1254 math-cordic 2.8327+-0.0769 2.8243+-0.0724 math-partial-sums 5.3962+-0.3497 5.2763+-0.0872 might be 1.0227x faster math-spectral-norm 1.8260+-0.0786 1.8098+-0.0498 regexp-dna 6.4604+-0.0921 6.3359+-0.1521 might be 1.0197x faster string-base64 4.4004+-0.1654 4.2919+-0.0508 might be 1.0253x faster string-fasta 5.8106+-0.1160 5.7965+-0.2166 string-tagcloud 8.1837+-0.1425 ? 8.3093+-0.2099 ? might be 1.0153x slower string-unpack-code 21.2210+-0.4956 20.7268+-0.9441 might be 1.0238x faster string-validate-input 4.6554+-0.1421 4.5181+-0.0689 might be 1.0304x faster <arithmetic> 4.6857+-0.0444 4.6541+-0.0462 might be 1.0068x faster master ic LongSpider: 3d-cube 793.4137+-28.5571 779.8162+-1.8580 might be 1.0174x faster 3d-morph 1536.8100+-9.9839 1530.7363+-7.9783 3d-raytrace 626.3002+-1.9250 ? 631.2438+-9.5650 ? access-binary-trees 815.5217+-7.2649 807.2051+-11.7540 might be 1.0103x faster access-fannkuch 282.4557+-1.4984 ? 286.8719+-13.9092 ? might be 1.0156x slower access-nbody 517.7501+-1.4263 ? 523.4939+-16.7127 ? might be 1.0111x slower access-nsieve 371.0728+-25.7076 363.0216+-8.9741 might be 1.0222x faster bitops-3bit-bits-in-byte 40.8128+-0.7342 ? 40.9683+-0.7450 ? bitops-bits-in-byte 75.4478+-1.2256 ? 76.8477+-2.6333 ? might be 1.0186x slower bitops-nsieve-bits 414.4860+-11.2225 414.2703+-17.0280 controlflow-recursive 426.2650+-3.4753 ? 428.6634+-0.6052 ? crypto-aes 587.1618+-5.2531 ? 589.8830+-8.6121 ? crypto-md5 507.6640+-11.3110 503.1090+-16.8425 crypto-sha1 646.7902+-1.7814 ? 650.1407+-9.2547 ? date-format-tofte 519.4733+-9.7951 ? 527.3456+-11.2524 ? might be 1.0152x slower date-format-xparb 639.9252+-5.7083 638.1006+-12.0633 hash-map 156.7858+-8.1974 154.6903+-2.5655 might be 1.0135x faster math-cordic 500.7775+-6.2904 ? 502.6120+-9.2441 ? math-partial-sums 487.6621+-40.7226 476.2833+-4.3613 might be 1.0239x faster math-spectral-norm 566.4171+-8.2178 562.7213+-1.9696 string-base64 354.3502+-4.8115 ? 355.1102+-9.9737 ? string-fasta 368.4639+-2.4151 362.8258+-4.3029 might be 1.0155x faster string-tagcloud 181.3590+-3.6526 ? 183.0856+-4.8647 ? <geometric> 397.3372+-1.6767 396.9677+-2.9797 might be 1.0009x faster master ic V8Spider: crypto 49.9987+-1.7307 ? 50.1380+-2.7564 ? deltablue 85.2797+-7.3987 ? 90.8008+-2.7051 ? might be 1.0647x slower earley-boyer 40.8061+-1.8009 40.2130+-0.6843 might be 1.0147x faster raytrace 30.4333+-1.6771 29.1196+-1.7421 might be 1.0451x faster regexp 63.2512+-1.2643 63.1186+-1.5820 richards 71.5418+-6.2622 69.8928+-2.0689 might be 1.0236x faster splay 34.2780+-1.3294 ? 35.3563+-2.2980 ? might be 1.0315x slower <geometric> 50.3366+-0.9743 ? 50.4352+-0.8964 ? might be 1.0020x slower master ic Octane: encrypt 0.20844+-0.00190 ? 0.20947+-0.00227 ? decrypt 3.43818+-0.01470 ? 3.44745+-0.04044 ? deltablue x2 0.15833+-0.00227 0.15744+-0.00123 earley 0.28198+-0.00508 ? 0.28215+-0.00522 ? boyer 4.22686+-0.04528 ? 4.32261+-0.20904 ? might be 1.0227x slower navier-stokes x2 5.08685+-0.07102 ? 5.13387+-0.20480 ? raytrace x2 1.05286+-0.06577 ? 1.06027+-0.09406 ? richards x2 0.10141+-0.00151 ? 0.10367+-0.00283 ? might be 1.0223x slower splay x2 0.35151+-0.00502 0.34610+-0.00394 might be 1.0156x faster regexp x2 25.62353+-0.67615 25.27060+-0.57687 might be 1.0140x faster pdfjs x2 38.38040+-0.21680 ? 38.45736+-0.60860 ? mandreel x2 45.47939+-0.68815 ? 45.74709+-0.86948 ? gbemu x2 34.86560+-0.29811 ? 35.70812+-1.23824 ? might be 1.0242x slower closure 0.57971+-0.00455 0.57731+-0.00686 jquery 7.35889+-0.03863 ? 7.36952+-0.00905 ? box2d x2 10.31713+-0.12775 10.25901+-0.11313 zlib x2 382.64616+-32.05315 ? 388.95809+-14.22319 ? might be 1.0165x slower typescript x2 674.90784+-31.23544 674.14502+-20.76814 <geometric> 5.73566+-0.01918 ? 5.75804+-0.04203 ? might be 1.0039x slower master ic Kraken: ai-astar 240.491+-5.543 236.988+-11.448 might be 1.0148x faster audio-beat-detection 59.313+-1.303 ? 59.672+-0.827 ? audio-dft 101.749+-9.906 ? 101.875+-4.321 ? audio-fft 35.552+-0.114 ? 36.307+-2.298 ? might be 1.0212x slower audio-oscillator 63.029+-2.677 62.376+-0.223 might be 1.0105x faster imaging-darkroom 60.529+-0.447 ? 60.642+-1.115 ? imaging-desaturate 56.381+-0.415 54.547+-4.319 might be 1.0336x faster imaging-gaussian-blur 85.198+-1.559 ? 88.684+-9.203 ? might be 1.0409x slower json-parse-financial 39.431+-0.831 39.300+-0.590 json-stringify-tinderbox 23.853+-1.334 23.774+-0.782 stanford-crypto-aes 42.543+-1.363 42.081+-1.296 might be 1.0110x faster stanford-crypto-ccm 40.615+-19.059 34.907+-2.458 might be 1.1635x faster stanford-crypto-pbkdf2 96.527+-1.298 ? 101.129+-6.774 ? might be 1.0477x slower stanford-crypto-sha256-iterative 37.316+-0.307 ? 38.612+-4.004 ? might be 1.0347x slower <arithmetic> 70.180+-2.410 70.064+-2.083 might be 1.0017x faster master ic JSRegress: abc-forward-loop-equal 29.6027+-0.8427 29.4940+-0.9439 abc-postfix-backward-loop 30.1005+-0.9838 29.9091+-0.7314 abc-simple-backward-loop 29.0019+-0.3365 ? 29.4962+-1.0677 ? might be 1.0170x slower abc-simple-forward-loop 29.4216+-0.7351 ? 29.5641+-0.9528 ? abc-skippy-loop 23.0599+-3.1730 21.5892+-0.7283 might be 1.0681x faster abs-boolean 2.4587+-0.0635 2.4528+-0.0091 adapt-to-double-divide 16.5740+-1.2061 16.4300+-0.6275 aliased-arguments-getbyval 1.1813+-0.1498 1.1111+-0.0380 might be 1.0632x faster allocate-big-object 2.3939+-0.3973 ? 2.5241+-0.1344 ? might be 1.0544x slower arguments-named-and-reflective 10.8132+-0.3844 ? 10.8554+-0.2082 ? arguments-out-of-bounds 9.8085+-0.1019 ? 10.1405+-0.8127 ? might be 1.0338x slower arguments-strict-mode 9.5280+-0.3350 ? 9.7950+-0.1545 ? might be 1.0280x slower arguments 8.3906+-0.4119 ? 8.5326+-0.3739 ? might be 1.0169x slower arity-mismatch-inlining 1.0264+-0.6236 0.8348+-0.0796 might be 1.2295x faster array-access-polymorphic-structure 6.0865+-0.5064 5.9287+-0.1238 might be 1.0266x faster array-nonarray-polymorhpic-access 25.0085+-0.9059 24.8210+-0.9713 array-prototype-every 76.7864+-0.2965 ^ 76.3371+-0.1405 ^ definitely 1.0059x faster array-prototype-forEach 75.5010+-0.3142 74.8917+-0.4673 array-prototype-map 84.8572+-0.8004 83.8193+-2.1007 might be 1.0124x faster array-prototype-reduce 72.4004+-0.6158 71.5593+-0.3378 might be 1.0118x faster array-prototype-reduceRight 73.5502+-2.9887 71.4883+-0.9306 might be 1.0288x faster array-prototype-some 78.3344+-4.8900 77.5605+-3.3940 array-splice-contiguous 21.5842+-0.8441 20.5626+-0.8408 might be 1.0497x faster array-with-double-add 3.4706+-0.1187 3.4651+-0.2213 array-with-double-increment 3.1335+-0.1814 3.0751+-0.0160 might be 1.0190x faster array-with-double-mul-add 4.2440+-0.2302 ? 4.2681+-0.1251 ? array-with-double-sum 3.2264+-0.1355 3.1889+-0.0466 might be 1.0118x faster array-with-int32-add-sub 5.7910+-0.2453 ? 5.9775+-0.1013 ? might be 1.0322x slower array-with-int32-or-double-sum 3.2529+-0.1157 3.2495+-0.0297 ArrayBuffer-DataView-alloc-large-long-lived 27.0646+-0.4098 27.0440+-0.7682 ArrayBuffer-DataView-alloc-long-lived 13.2420+-1.5049 12.8705+-0.6466 might be 1.0289x faster ArrayBuffer-Int32Array-byteOffset 3.6187+-0.0668 ? 3.6617+-0.2640 ? might be 1.0119x slower ArrayBuffer-Int8Array-alloc-large-long-lived 27.4819+-0.5442 ? 27.5218+-0.0221 ? ArrayBuffer-Int8Array-alloc-long-lived-buffer 20.7316+-0.8518 20.5146+-0.2727 might be 1.0106x faster ArrayBuffer-Int8Array-alloc-long-lived 13.5737+-1.9011 12.6281+-1.0971 might be 1.0749x faster ArrayBuffer-Int8Array-alloc 10.2805+-0.5955 ? 10.9620+-1.2143 ? might be 1.0663x slower asmjs_bool_bug 7.2403+-0.1313 ? 7.4224+-0.5056 ? might be 1.0252x slower assign-custom-setter-polymorphic 2.5180+-0.3374 ? 2.5905+-0.1916 ? might be 1.0288x slower assign-custom-setter 3.5245+-0.2524 3.3347+-0.0322 might be 1.0569x faster basic-set 7.8433+-0.1915 7.8104+-0.2319 big-int-mul 3.4476+-0.0769 ? 3.4782+-0.1259 ? boolean-test 2.8865+-0.0945 2.8768+-0.0355 branch-fold 3.6255+-0.0383 ? 3.7035+-0.1792 ? might be 1.0215x slower branch-on-string-as-boolean 16.9207+-0.2689 16.9190+-0.2813 by-val-generic 6.3497+-0.2360 ^ 2.3013+-0.1321 ^ definitely 2.7592x faster call-spread-apply 26.5962+-0.5654 26.5776+-0.6805 call-spread-call 21.5210+-1.2144 ? 21.7841+-0.1006 ? might be 1.0122x slower captured-assignments 0.4255+-0.0339 0.3942+-0.0164 might be 1.0793x faster cast-int-to-double 5.5365+-1.1834 5.3498+-0.3958 might be 1.0349x faster cell-argument 6.5525+-0.6078 6.5468+-0.6521 cfg-simplify 2.7952+-0.1278 ? 2.8091+-0.1133 ? chain-getter-access 8.1425+-0.0754 ? 8.2031+-0.1956 ? cmpeq-obj-to-obj-other 12.5519+-0.6915 11.7645+-2.7257 might be 1.0669x faster constant-test 4.8746+-0.1235 ? 4.9147+-0.1921 ? create-lots-of-functions 9.5984+-1.3850 9.3627+-0.6145 might be 1.0252x faster cse-new-array-buffer 2.1868+-0.1190 2.1472+-0.3188 might be 1.0184x faster cse-new-array 2.3494+-0.1701 2.2454+-0.2027 might be 1.0463x faster DataView-custom-properties 32.3731+-0.8592 31.8456+-0.5045 might be 1.0166x faster delay-tear-off-arguments-strictmode 12.3215+-0.1808 ? 12.7900+-1.0473 ? might be 1.0380x slower deltablue-varargs 149.1277+-1.1687 ? 151.8160+-4.7431 ? might be 1.0180x slower destructuring-arguments 167.5294+-5.5606 164.7269+-0.9166 might be 1.0170x faster destructuring-parameters-overridden-by-function 0.4771+-0.1141 0.4402+-0.0431 might be 1.0837x faster destructuring-swap 4.7137+-0.0357 ? 4.8137+-0.1040 ? might be 1.0212x slower direct-arguments-getbyval 1.1108+-0.0345 ? 1.1958+-0.2109 ? might be 1.0765x slower div-boolean-double 5.4399+-0.1457 5.3850+-0.0544 might be 1.0102x faster div-boolean 8.3686+-0.2194 ? 8.4500+-0.2383 ? double-get-by-val-out-of-bounds 4.2805+-0.4870 4.0977+-0.1230 might be 1.0446x faster double-pollution-getbyval 8.7812+-0.0572 ? 8.8528+-0.2183 ? double-pollution-putbyoffset 3.8027+-0.2276 3.6227+-0.1344 might be 1.0497x faster double-real-use 25.4166+-2.9800 ? 25.5195+-3.5607 ? double-to-int32-typed-array-no-inline 2.0755+-0.0479 2.0726+-0.0965 double-to-int32-typed-array 1.7766+-0.0293 ? 1.7879+-0.1440 ? double-to-uint32-typed-array-no-inline 2.1171+-0.0260 ? 2.1200+-0.1020 ? double-to-uint32-typed-array 1.8613+-0.0741 ? 1.9135+-0.1302 ? might be 1.0280x slower elidable-new-object-dag 33.7334+-0.4795 ? 33.8478+-0.4943 ? elidable-new-object-roflcopter 33.3395+-0.4312 33.2436+-0.5341 elidable-new-object-then-call 31.7417+-0.5705 31.1071+-2.1042 might be 1.0204x faster elidable-new-object-tree 37.8663+-1.1710 37.1163+-0.4281 might be 1.0202x faster empty-string-plus-int 4.9412+-0.5871 4.8378+-0.1534 might be 1.0214x faster emscripten-cube2hash 26.2280+-2.2907 ? 30.0833+-12.1144 ? might be 1.1470x slower exit-length-on-plain-object 12.8395+-0.2411 12.5593+-0.4780 might be 1.0223x faster external-arguments-getbyval 1.1553+-0.0231 ? 1.1630+-0.0769 ? external-arguments-putbyval 2.2350+-0.2979 2.1983+-0.0576 might be 1.0167x faster fixed-typed-array-storage-var-index 1.1647+-0.0714 1.1492+-0.0802 might be 1.0134x faster fixed-typed-array-storage 0.8732+-0.0339 0.8625+-0.0443 might be 1.0125x faster Float32Array-matrix-mult 3.9515+-0.0880 ? 4.2126+-0.3339 ? might be 1.0661x slower Float32Array-to-Float64Array-set 47.2201+-0.3312 ^ 45.7769+-0.5825 ^ definitely 1.0315x faster Float64Array-alloc-long-lived 58.0226+-0.6399 ? 58.2520+-0.2601 ? Float64Array-to-Int16Array-set 56.4713+-0.4054 ? 57.5864+-1.2502 ? might be 1.0197x slower fold-double-to-int 12.9063+-0.3385 ? 13.1258+-0.5133 ? might be 1.0170x slower fold-get-by-id-to-multi-get-by-offset-rare-int 10.9520+-0.5436 10.3846+-0.9998 might be 1.0546x faster fold-get-by-id-to-multi-get-by-offset 9.3873+-0.6626 8.3970+-2.0448 might be 1.1179x faster fold-multi-get-by-offset-to-get-by-offset 8.7089+-0.9243 ? 9.0277+-0.5512 ? might be 1.0366x slower fold-multi-get-by-offset-to-poly-get-by-offset 7.5157+-0.4872 ? 8.0903+-1.5728 ? might be 1.0765x slower fold-multi-put-by-offset-to-poly-put-by-offset 7.8795+-0.7333 7.5596+-0.9728 might be 1.0423x faster fold-multi-put-by-offset-to-put-by-offset 5.1548+-1.8105 4.6422+-2.1106 might be 1.1104x faster fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 8.8376+-1.5614 8.3023+-0.5199 might be 1.0645x faster fold-put-by-id-to-multi-put-by-offset 8.6062+-0.7649 ? 8.9911+-0.9906 ? might be 1.0447x slower fold-put-by-val-with-string-to-multi-put-by-offset 67.3643+-3.0387 ^ 9.4009+-0.7271 ^ definitely 7.1657x faster fold-put-by-val-with-symbol-to-multi-put-by-offset 66.8249+-1.6586 ^ 9.3521+-0.6415 ^ definitely 7.1455x faster fold-put-structure 5.5856+-1.7418 ? 5.9985+-0.2625 ? might be 1.0739x slower for-of-iterate-array-entries 11.7137+-0.2403 11.3141+-0.2820 might be 1.0353x faster for-of-iterate-array-keys 3.7169+-0.8672 3.5993+-0.3172 might be 1.0327x faster for-of-iterate-array-values 3.3723+-0.1677 ? 3.7827+-0.6664 ? might be 1.1217x slower fround 18.9152+-0.5867 ? 19.8879+-1.2328 ? might be 1.0514x slower ftl-library-inlining-dataview 57.9307+-1.0538 57.1646+-0.2409 might be 1.0134x faster ftl-library-inlining 109.2048+-0.3419 ? 110.4962+-1.0693 ? might be 1.0118x slower function-dot-apply 2.0403+-0.0505 1.9878+-0.0505 might be 1.0264x faster function-test 2.7062+-0.0547 ? 2.7675+-0.1178 ? might be 1.0226x slower function-with-eval 103.8721+-1.2978 ? 105.4785+-0.3958 ? might be 1.0155x slower gcse-poly-get-less-obvious 14.5305+-0.6317 14.5255+-0.4147 gcse-poly-get 16.4726+-0.3777 16.4145+-0.7760 gcse 3.8152+-0.0469 ? 3.9211+-0.3729 ? might be 1.0278x slower get-by-id-bimorphic-check-structure-elimination-simple 2.6031+-0.0393 ? 2.6050+-0.0592 ? get-by-id-bimorphic-check-structure-elimination 6.0638+-0.6275 ? 6.2859+-1.0627 ? might be 1.0366x slower get-by-id-chain-from-try-block 5.4541+-0.1324 ? 5.5377+-0.2504 ? might be 1.0153x slower get-by-id-check-structure-elimination 4.6000+-0.2907 4.5267+-0.1308 might be 1.0162x faster get-by-id-proto-or-self 14.8049+-1.8851 ? 15.8771+-2.8208 ? might be 1.0724x slower get-by-id-quadmorphic-check-structure-elimination-simple 2.8961+-0.1085 2.8665+-0.0331 might be 1.0103x faster get-by-id-self-or-proto 14.4600+-0.5328 ? 15.7133+-1.8987 ? might be 1.0867x slower get-by-val-out-of-bounds 4.2115+-0.5745 4.1115+-0.2703 might be 1.0243x faster get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.8085+-0.0521 2.7894+-0.0411 get-by-val-with-string-bimorphic-check-structure-elimination 6.5964+-1.4926 6.2104+-0.2093 might be 1.0622x faster get-by-val-with-string-chain-from-try-block 6.3497+-1.1129 5.9166+-0.3515 might be 1.0732x faster get-by-val-with-string-check-structure-elimination 5.1848+-0.1764 5.1080+-0.0954 might be 1.0150x faster get-by-val-with-string-proto-or-self 14.7969+-0.4005 ? 15.5211+-2.1642 ? might be 1.0489x slower get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.1897+-0.0178 ? 3.2040+-0.0896 ? get-by-val-with-string-self-or-proto 14.6060+-0.2735 ? 15.3127+-2.9933 ? might be 1.0484x slower get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.0743+-0.2133 3.0740+-0.0579 get-by-val-with-symbol-bimorphic-check-structure-elimination 12.5497+-0.4306 ? 12.5562+-0.2078 ? get-by-val-with-symbol-chain-from-try-block 5.7888+-0.3170 ? 5.7945+-0.3163 ? get-by-val-with-symbol-check-structure-elimination 11.2458+-0.1100 ? 11.2637+-0.2185 ? get-by-val-with-symbol-proto-or-self 14.9417+-0.9737 14.8297+-0.3053 get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 4.0136+-0.3179 3.9988+-0.2111 get-by-val-with-symbol-self-or-proto 15.3256+-2.2573 ? 15.5142+-2.3386 ? might be 1.0123x slower get_callee_monomorphic 2.3480+-0.2747 2.2870+-0.2013 might be 1.0267x faster get_callee_polymorphic 3.2233+-0.0577 ? 3.5060+-0.5314 ? might be 1.0877x slower getter-no-activation 4.9577+-0.3610 ? 4.9637+-0.3111 ? getter-prototype 9.8403+-0.1802 ? 9.9677+-0.4027 ? might be 1.0129x slower getter-richards 114.8677+-10.1534 113.5707+-11.8297 might be 1.0114x faster getter 5.7976+-0.3218 5.6006+-0.9122 might be 1.0352x faster global-object-access-with-mutating-structure 5.5773+-0.1113 5.5562+-0.1018 global-var-const-infer-fire-from-opt 0.9005+-0.1881 0.8447+-0.0540 might be 1.0660x faster global-var-const-infer 0.6877+-0.0586 ? 0.7439+-0.0520 ? might be 1.0817x slower HashMap-put-get-iterate-keys 25.9265+-3.1180 ? 27.1320+-3.7075 ? might be 1.0465x slower HashMap-put-get-iterate 26.1425+-1.9203 25.9260+-2.5323 HashMap-string-put-get-iterate 24.1339+-0.5905 ? 25.0225+-1.3449 ? might be 1.0368x slower hoist-make-rope 8.7113+-1.1605 ? 9.0999+-0.9124 ? might be 1.0446x slower hoist-poly-check-structure-effectful-loop 4.1611+-0.2979 4.1285+-0.1275 hoist-poly-check-structure 3.4672+-0.5058 3.3218+-0.1095 might be 1.0438x faster imul-double-only 6.5516+-0.1444 ? 6.9959+-0.5197 ? might be 1.0678x slower imul-int-only 8.0688+-0.3728 8.0450+-0.6080 imul-mixed 6.8715+-0.6499 6.7954+-0.1998 might be 1.0112x faster in-four-cases 17.6362+-0.2252 ? 17.9702+-0.6334 ? might be 1.0189x slower in-one-case-false 9.4830+-0.1609 ? 9.5490+-0.2518 ? in-one-case-true 9.7847+-0.8095 9.7187+-0.4157 in-two-cases 10.5125+-1.3344 9.9337+-0.4063 might be 1.0583x faster indexed-properties-in-objects 2.8282+-0.0528 ? 2.8836+-0.1007 ? might be 1.0196x slower infer-closure-const-then-mov-no-inline 3.0240+-0.0379 ? 3.0517+-0.0299 ? infer-closure-const-then-mov 17.7538+-0.7280 17.3597+-1.4026 might be 1.0227x faster infer-closure-const-then-put-to-scope-no-inline 11.2629+-0.5173 11.2134+-0.5000 infer-closure-const-then-put-to-scope 22.4878+-0.8617 21.4604+-0.8726 might be 1.0479x faster infer-closure-const-then-reenter-no-inline 50.5512+-0.2501 ? 51.3043+-3.1133 ? might be 1.0149x slower infer-closure-const-then-reenter 23.1052+-3.3069 ? 23.3792+-3.3867 ? might be 1.0119x slower infer-constant-global-property 3.4670+-0.1472 3.4232+-0.0467 might be 1.0128x faster infer-constant-property 2.6425+-0.0747 ? 2.6732+-0.1336 ? might be 1.0116x slower infer-one-time-closure-ten-vars 8.6277+-0.5838 8.4818+-0.6779 might be 1.0172x faster infer-one-time-closure-two-vars 8.2723+-0.4036 8.0453+-0.2802 might be 1.0282x faster infer-one-time-closure 8.0640+-0.1567 ? 8.0855+-0.2236 ? infer-one-time-deep-closure 13.1748+-0.7058 13.0330+-1.0551 might be 1.0109x faster inline-arguments-access 3.7421+-0.4543 3.6223+-0.1667 might be 1.0331x faster inline-arguments-aliased-access 3.6545+-0.2181 3.6235+-0.2389 inline-arguments-local-escape 4.0335+-0.7115 3.8375+-0.5888 might be 1.0511x faster inline-get-scoped-var 4.9543+-0.5506 4.6768+-0.0864 might be 1.0593x faster inlined-put-by-id-transition 11.1263+-1.0189 10.5570+-1.4713 might be 1.0539x faster inlined-put-by-val-with-string-transition 113.3862+-1.4036 ^ 73.3654+-1.6418 ^ definitely 1.5455x faster inlined-put-by-val-with-symbol-transition 116.1099+-1.8085 ^ 72.7617+-1.1073 ^ definitely 1.5958x faster int-or-other-abs-then-get-by-val 4.8110+-0.0764 ? 4.9390+-0.3984 ? might be 1.0266x slower int-or-other-abs-zero-then-get-by-val 18.0853+-5.8032 16.3715+-1.1820 might be 1.1047x faster int-or-other-add-then-get-by-val 4.2315+-0.2771 4.1371+-0.2450 might be 1.0228x faster int-or-other-add 4.9647+-0.1534 ? 4.9847+-0.2172 ? int-or-other-div-then-get-by-val 3.7111+-0.0730 ? 3.8430+-0.3513 ? might be 1.0356x slower int-or-other-max-then-get-by-val 4.0529+-0.2012 4.0245+-0.1486 int-or-other-min-then-get-by-val 4.1238+-0.2244 ? 4.1412+-0.2652 ? int-or-other-mod-then-get-by-val 3.6034+-0.5050 ? 3.6573+-0.2111 ? might be 1.0150x slower int-or-other-mul-then-get-by-val 3.7545+-0.1828 3.6014+-0.1657 might be 1.0425x faster int-or-other-neg-then-get-by-val 4.4993+-0.0452 ? 4.6274+-0.1583 ? might be 1.0285x slower int-or-other-neg-zero-then-get-by-val 16.1445+-0.1329 ? 16.2324+-0.1310 ? int-or-other-sub-then-get-by-val 4.1742+-0.1669 4.0835+-0.1195 might be 1.0222x faster int-or-other-sub 3.4584+-0.1815 3.4049+-0.0282 might be 1.0157x faster int-overflow-local 4.3369+-0.2684 ? 4.3532+-0.1598 ? Int16Array-alloc-long-lived 42.0009+-0.8206 ? 42.4072+-1.1132 ? Int16Array-bubble-sort-with-byteLength 17.9250+-0.5501 ? 18.1835+-1.0359 ? might be 1.0144x slower Int16Array-bubble-sort 18.0875+-0.6791 18.0641+-0.5452 Int16Array-load-int-mul 1.4167+-0.0171 ? 1.4268+-0.0143 ? Int16Array-to-Int32Array-set 43.5646+-0.7894 ? 43.7563+-0.1871 ? Int32Array-alloc-large 12.2767+-0.2897 12.1706+-0.4123 Int32Array-alloc-long-lived 47.6408+-1.3253 ? 47.8192+-0.9320 ? Int32Array-alloc 2.7613+-0.2504 ? 2.8663+-0.3608 ? might be 1.0380x slower Int32Array-Int8Array-view-alloc 6.5758+-0.8034 6.2656+-0.1734 might be 1.0495x faster int52-spill 4.5895+-0.0761 ? 4.7632+-0.5120 ? might be 1.0378x slower Int8Array-alloc-long-lived 37.9097+-1.6570 ? 38.1652+-1.7913 ? Int8Array-load-with-byteLength 3.5231+-0.1843 3.4588+-0.1262 might be 1.0186x faster Int8Array-load 3.4854+-0.2354 3.4274+-0.1154 might be 1.0169x faster integer-divide 10.7545+-0.4604 10.5811+-0.1928 might be 1.0164x faster integer-modulo 1.6625+-0.1352 1.6620+-0.0820 is-boolean-fold-tricky 3.8705+-0.2600 3.7728+-0.0605 might be 1.0259x faster is-boolean-fold 2.6549+-0.1121 2.6466+-0.0526 is-function-fold-tricky-internal-function 10.4236+-0.4810 10.2070+-0.4766 might be 1.0212x faster is-function-fold-tricky 4.2142+-0.2513 ? 4.2355+-0.1608 ? is-function-fold 2.6730+-0.0298 2.6389+-0.0449 might be 1.0129x faster is-number-fold-tricky 4.0383+-0.0972 ? 4.2274+-0.3982 ? might be 1.0468x slower is-number-fold 2.6166+-0.0221 ? 2.6320+-0.0283 ? is-object-or-null-fold-functions 2.6602+-0.0361 ? 2.7557+-0.1277 ? might be 1.0359x slower is-object-or-null-fold-less-tricky 4.1884+-0.2149 4.1195+-0.0787 might be 1.0167x faster is-object-or-null-fold-tricky 5.3125+-0.3828 ? 5.3710+-0.2273 ? might be 1.0110x slower is-object-or-null-fold 2.7052+-0.1323 2.6432+-0.0217 might be 1.0234x faster is-object-or-null-trickier-function 4.2444+-0.1916 4.1558+-0.1136 might be 1.0213x faster is-object-or-null-trickier-internal-function 10.7703+-0.1671 10.4895+-0.2393 might be 1.0268x faster is-object-or-null-tricky-function 4.1735+-0.1947 ? 4.1779+-0.2423 ? is-object-or-null-tricky-internal-function 8.1657+-0.6859 7.8463+-0.1177 might be 1.0407x faster is-string-fold-tricky 4.1450+-0.2770 4.1444+-0.1397 is-string-fold 2.7498+-0.3033 2.6587+-0.0721 might be 1.0343x faster is-undefined-fold-tricky 3.5466+-0.6788 3.3407+-0.1377 might be 1.0616x faster is-undefined-fold 2.7822+-0.4768 2.7507+-0.2112 might be 1.0114x faster JSONP-negative-0 0.2421+-0.0208 0.2359+-0.0080 might be 1.0261x faster large-int-captured 3.9287+-0.0896 3.8875+-0.2568 might be 1.0106x faster large-int-neg 15.0695+-0.8174 14.3917+-0.5343 might be 1.0471x faster large-int 13.8679+-1.0574 13.8184+-0.6922 load-varargs-elimination 21.3115+-0.7325 ? 21.6716+-1.2830 ? might be 1.0169x slower logical-not-weird-types 2.8860+-0.0482 ? 2.9739+-0.1057 ? might be 1.0304x slower logical-not 4.4067+-0.4597 4.3975+-0.2587 lots-of-fields 9.7744+-0.7337 9.3702+-0.2458 might be 1.0431x faster make-indexed-storage 2.7749+-0.2513 ? 2.8377+-0.1723 ? might be 1.0226x slower make-rope-cse 3.6221+-0.3308 ? 3.6872+-0.4260 ? might be 1.0180x slower marsaglia-larger-ints 32.8582+-1.4857 32.8297+-0.8434 marsaglia-osr-entry 21.0968+-0.5994 21.0175+-0.5314 math-with-out-of-bounds-array-values 22.3522+-0.3272 22.1957+-1.2707 max-boolean 2.6750+-0.0870 ? 2.7963+-0.1585 ? might be 1.0453x slower method-on-number 16.9793+-0.8133 ? 17.6854+-2.4706 ? might be 1.0416x slower min-boolean 2.7689+-0.5062 2.7238+-0.1011 might be 1.0165x faster minus-boolean-double 3.0845+-0.0150 ? 3.2867+-0.4091 ? might be 1.0656x slower minus-boolean 2.3653+-0.0720 ? 2.3893+-0.1667 ? might be 1.0101x slower misc-strict-eq 31.0974+-0.9296 ? 32.0834+-2.0100 ? might be 1.0317x slower mod-boolean-double 11.2999+-0.1217 ? 11.3871+-0.3012 ? mod-boolean 8.4781+-0.1938 ? 8.6068+-0.6478 ? might be 1.0152x slower mul-boolean-double 3.6824+-0.0288 3.6316+-0.1026 might be 1.0140x faster mul-boolean 2.8253+-0.0382 2.8154+-0.0597 neg-boolean 3.1895+-0.1613 3.1228+-0.0564 might be 1.0213x faster negative-zero-divide 0.3293+-0.0330 0.3228+-0.0396 might be 1.0200x faster negative-zero-modulo 0.3110+-0.0048 ? 0.3219+-0.0159 ? might be 1.0351x slower negative-zero-negate 0.2980+-0.0151 0.2936+-0.0057 might be 1.0148x faster nested-function-parsing 44.6381+-2.4254 ? 45.2202+-1.6092 ? might be 1.0130x slower new-array-buffer-dead 89.3569+-1.5199 88.4921+-1.0186 new-array-buffer-push 6.1260+-0.6262 6.0811+-0.5831 new-array-dead 14.0870+-1.3740 ? 14.1985+-1.2770 ? new-array-push 3.6223+-0.4650 3.5285+-0.3420 might be 1.0266x faster no-inline-constructor 31.1506+-1.0236 ? 31.3271+-0.9717 ? number-test 2.9226+-0.1579 2.9020+-0.0461 object-closure-call 4.9434+-0.0558 ? 5.0468+-0.2696 ? might be 1.0209x slower object-get-own-property-symbols-on-large-array 4.0510+-0.3939 4.0193+-0.6355 object-test 2.6308+-0.0982 ? 2.7098+-0.0940 ? might be 1.0300x slower obvious-sink-pathology-taken 100.2952+-1.0604 ? 100.3145+-1.7063 ? obvious-sink-pathology 95.2581+-2.2774 ? 95.7946+-1.9824 ? obviously-elidable-new-object 28.7877+-0.8610 ? 29.0135+-0.4509 ? plus-boolean-arith 2.3928+-0.0369 ? 2.4257+-0.1482 ? might be 1.0138x slower plus-boolean-double 3.1740+-0.1786 3.1130+-0.0531 might be 1.0196x faster plus-boolean 2.5600+-0.1148 ? 2.5635+-0.0566 ? poly-chain-access-different-prototypes-simple 3.3170+-0.2063 ? 3.3499+-0.3353 ? poly-chain-access-different-prototypes 2.8423+-0.0118 ? 2.8576+-0.0717 ? poly-chain-access-simpler 3.2687+-0.1203 ? 3.3287+-0.1828 ? might be 1.0184x slower poly-chain-access 3.3256+-0.0767 ? 3.3311+-0.2120 ? poly-stricteq 50.2608+-0.3420 ? 51.0299+-0.9434 ? might be 1.0153x slower polymorphic-array-call 1.2607+-0.0807 ? 1.3193+-0.1890 ? might be 1.0465x slower polymorphic-get-by-id 2.8309+-0.0692 ? 2.8414+-0.0320 ? polymorphic-put-by-id 26.3010+-1.7205 26.1827+-0.8560 polymorphic-put-by-val-with-string 347.0945+-2.7703 ^ 26.1200+-0.8491 ^ definitely 13.2885x faster polymorphic-put-by-val-with-symbol 372.2051+-3.0216 ^ 26.6349+-1.3042 ^ definitely 13.9743x faster polymorphic-structure 13.7191+-0.5529 13.2135+-0.3319 might be 1.0383x faster polyvariant-monomorphic-get-by-id 6.3325+-0.5065 ? 6.7582+-1.4725 ? might be 1.0672x slower proto-getter-access 8.1990+-0.0577 ? 8.2671+-0.3011 ? prototype-access-with-mutating-prototype 5.4700+-0.2801 ? 5.6260+-0.3016 ? might be 1.0285x slower put-by-id-replace-and-transition 7.6046+-0.6959 7.5691+-0.5006 put-by-id-slightly-polymorphic 2.6623+-0.0640 ? 2.7487+-0.1513 ? might be 1.0325x slower put-by-id 9.7677+-0.5993 9.5922+-0.3781 might be 1.0183x faster put-by-val-direct 0.3233+-0.0106 0.3223+-0.0059 put-by-val-large-index-blank-indexing-type 5.3585+-0.4454 ? 5.3826+-0.2138 ? put-by-val-machine-int 2.4592+-0.3946 2.4158+-0.2271 might be 1.0180x faster put-by-val-with-string-replace-and-transition 82.1268+-0.6568 ^ 9.8768+-0.1012 ^ definitely 8.3151x faster put-by-val-with-string-slightly-polymorphic 33.9094+-1.3237 ^ 2.9073+-0.0732 ^ definitely 11.6633x faster put-by-val-with-string 81.8883+-2.7360 ^ 10.4738+-1.1512 ^ definitely 7.8184x faster put-by-val-with-symbol-replace-and-transition 84.0939+-2.0663 ^ 11.4930+-0.2402 ^ definitely 7.3169x faster put-by-val-with-symbol-slightly-polymorphic 33.0390+-0.9403 ^ 3.0850+-0.0368 ^ definitely 10.7095x faster put-by-val-with-symbol 82.5089+-1.9175 ^ 10.3378+-0.7775 ^ definitely 7.9813x faster rare-osr-exit-on-local 14.6685+-0.1695 14.4926+-0.3668 might be 1.0121x faster register-pressure-from-osr 16.8158+-0.7339 16.5345+-0.0654 might be 1.0170x faster repeat-multi-get-by-offset 22.0790+-0.4222 ? 22.3140+-0.9117 ? might be 1.0106x slower setter-prototype 7.4984+-0.0985 7.4271+-0.2781 setter 5.6747+-0.4469 5.6543+-0.9037 simple-activation-demo 25.0185+-0.9079 24.5759+-0.4718 might be 1.0180x faster simple-getter-access 10.5988+-0.3795 10.5464+-0.7052 simple-poly-call-nested 8.8995+-0.9170 ? 9.0424+-0.6458 ? might be 1.0161x slower simple-poly-call 1.2449+-0.0295 ? 1.2553+-0.0235 ? sin-boolean 17.7567+-1.1361 ? 18.2839+-1.3364 ? might be 1.0297x slower singleton-scope 62.0372+-3.3555 61.0024+-0.0955 might be 1.0170x faster sink-function 9.3923+-1.3323 9.1417+-1.1722 might be 1.0274x faster sink-huge-activation 16.2344+-1.4302 ? 16.8748+-0.8064 ? might be 1.0394x slower sinkable-new-object-dag 56.4569+-2.3289 ? 56.7988+-2.6039 ? sinkable-new-object-taken 42.8121+-0.7554 ? 43.1985+-1.0962 ? sinkable-new-object 29.5342+-0.6030 ? 29.5790+-1.2025 ? slow-array-profile-convergence 2.6356+-0.1668 ? 2.6638+-0.2151 ? might be 1.0107x slower slow-convergence 2.3696+-0.0481 ? 2.3895+-0.0395 ? slow-ternaries 18.4711+-0.7682 17.7951+-0.4864 might be 1.0380x faster sorting-benchmark 18.3444+-1.2466 17.4111+-0.8316 might be 1.0536x faster sparse-conditional 1.1342+-0.0849 ? 1.1506+-0.0581 ? might be 1.0145x slower splice-to-remove 12.7028+-0.1211 ? 13.0920+-1.6156 ? might be 1.0306x slower string-char-code-at 14.4113+-0.3250 ? 14.8785+-1.1738 ? might be 1.0324x slower string-concat-object 2.1118+-0.2502 ? 2.1458+-0.1096 ? might be 1.0161x slower string-concat-pair-object 2.1250+-0.1471 2.1235+-0.0920 string-concat-pair-simple 9.1883+-0.2785 ? 9.5192+-1.2150 ? might be 1.0360x slower string-concat-simple 9.2237+-0.3577 ? 9.5431+-0.7862 ? might be 1.0346x slower string-cons-repeat 6.6276+-0.2320 ? 6.8430+-0.9132 ? might be 1.0325x slower string-cons-tower 7.0973+-1.2354 6.6324+-0.3105 might be 1.0701x faster string-equality 15.7510+-1.1156 15.2397+-0.3823 might be 1.0335x faster string-get-by-val-big-char 6.7985+-0.1488 6.7749+-0.0735 string-get-by-val-out-of-bounds-insane 3.3576+-0.1454 ? 3.6055+-0.4356 ? might be 1.0738x slower string-get-by-val-out-of-bounds 4.1022+-0.2514 4.0830+-0.1206 string-get-by-val 2.8293+-0.0453 ? 2.8391+-0.0366 ? string-hash 1.8494+-0.0948 ? 1.8549+-0.0853 ? string-long-ident-equality 13.0720+-0.4405 12.8554+-0.2820 might be 1.0168x faster string-out-of-bounds 10.5159+-0.0687 ? 10.6107+-0.3589 ? string-repeat-arith 27.8732+-0.6778 ? 28.1156+-2.9581 ? string-sub 53.8840+-0.8533 ? 55.1418+-1.1956 ? might be 1.0233x slower string-test 2.7975+-0.1458 2.7520+-0.0193 might be 1.0165x faster string-var-equality 27.3619+-3.1291 26.5005+-0.3071 might be 1.0325x faster structure-hoist-over-transitions 2.5017+-0.0222 ^ 2.3370+-0.1386 ^ definitely 1.0705x faster substring-concat-weird 35.9796+-0.3193 ? 36.4424+-1.2511 ? might be 1.0129x slower substring-concat 39.8892+-1.1752 ? 40.0070+-1.1516 ? substring 44.8927+-0.9225 ? 45.0358+-2.5027 ? switch-char-constant 2.6666+-0.0729 ? 2.7071+-0.0871 ? might be 1.0152x slower switch-char 5.8698+-0.7257 ? 5.9965+-1.2431 ? might be 1.0216x slower switch-constant 7.2552+-0.4254 7.2294+-0.9170 switch-string-basic-big-var 16.9783+-1.0945 16.3705+-0.7798 might be 1.0371x faster switch-string-basic-big 15.2438+-0.4688 15.1955+-0.3987 switch-string-basic-var 13.8026+-0.9479 ? 13.8973+-1.4688 ? switch-string-basic 13.0893+-0.3455 12.8968+-0.1470 might be 1.0149x faster switch-string-big-length-tower-var 18.1971+-0.5536 ? 18.4243+-1.3055 ? might be 1.0125x slower switch-string-length-tower-var 13.4628+-0.5775 ? 13.5397+-0.7655 ? switch-string-length-tower 11.8712+-0.2715 11.6989+-0.2518 might be 1.0147x faster switch-string-short 11.9656+-0.4675 ? 12.0554+-0.4843 ? switch 11.5325+-1.5852 11.0663+-1.1102 might be 1.0421x faster tear-off-arguments-simple 3.1132+-0.2823 3.0938+-0.1393 tear-off-arguments 4.0973+-0.1610 4.0001+-0.2346 might be 1.0243x faster temporal-structure 12.1111+-0.3492 ? 12.4185+-0.6006 ? might be 1.0254x slower to-int32-boolean 13.6293+-0.5905 13.3713+-0.2321 might be 1.0193x faster try-catch-get-by-val-cloned-arguments 14.9572+-1.0514 14.5673+-0.8545 might be 1.0268x faster try-catch-get-by-val-direct-arguments 6.9178+-0.5014 6.7596+-0.5410 might be 1.0234x faster try-catch-get-by-val-scoped-arguments 7.5878+-0.1259 ? 7.7501+-0.0756 ? might be 1.0214x slower typed-array-get-set-by-val-profiling 27.6730+-0.8255 ? 27.7745+-0.7715 ? undefined-property-access 227.8707+-3.2734 ? 228.7683+-3.6007 ? undefined-test 2.8542+-0.0424 ? 2.8637+-0.0592 ? unprofiled-licm 14.5680+-0.0987 14.3264+-0.5493 might be 1.0169x faster varargs-call 14.1927+-0.4219 14.0600+-0.1391 varargs-construct-inline 22.4153+-0.4712 ? 23.2830+-2.7364 ? might be 1.0387x slower varargs-construct 21.2656+-1.5936 20.7715+-1.0167 might be 1.0238x faster varargs-inline 8.6055+-0.3692 8.3737+-0.0559 might be 1.0277x faster varargs-strict-mode 9.3329+-0.4125 ? 9.3442+-0.4394 ? varargs 9.3035+-0.2133 9.1206+-0.0768 might be 1.0201x faster weird-inlining-const-prop 2.0820+-0.0880 ? 2.1813+-0.1202 ? might be 1.0477x slower <geometric> 8.3777+-0.0165 ^ 7.8343+-0.0303 ^ definitely 1.0694x faster master ic Geomean of preferred means: <scaled-result> 26.0979+-0.0672 ^ 25.7930+-0.1007 ^ definitely 1.0118x faster
Yusuke Suzuki
Comment 8 2015-08-07 19:06:31 PDT
Comment on attachment 258551 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258551&action=review Added comments. > Source/JavaScriptCore/jit/JIT.h:376 > + // Property is in regT1, base is in regT0. regT2 contains indecing type. Fixed the existing comment. > Source/JavaScriptCore/jit/JITPropertyAccess.cpp:492 > emitGetVirtualRegister(value, regT2); I think this code is a little bit fragile. It does not reload regT0. So this slow path implicitly requires regT0 (base) is not broken. Current implementation and this patch carefully follow this. But in the future, I think it may be a problem. What do you think of?
Yusuke Suzuki
Comment 9 2015-08-09 16:46:58 PDT
Comment on attachment 258551 [details] Patch Let's wait the ARMv7 regression fix in get_by_val side.
Yusuke Suzuki
Comment 10 2015-08-09 19:07:25 PDT
Maybe, I found the issue in get_by_val. The get_by_val patch is already updated. I'll also update the patch for put_by_val (this).
Yusuke Suzuki
Comment 11 2015-08-09 19:10:14 PDT
Yusuke Suzuki
Comment 12 2015-08-10 21:58:06 PDT
After get_by_val patch is landed, I'll update this patch.
Yusuke Suzuki
Comment 13 2015-08-11 18:48:16 PDT
Yusuke Suzuki
Comment 14 2015-08-11 18:50:06 PDT
Updated the patch based on the re-landed get_by_id. And took the benchmark results. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on Yusukes-MacBook-Pro (MacBookPro11,3). VMs tested: "master" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/master-for-put-by-val2/Release/jsc "ic" at /Users/yusukesuzuki/development/WebKit/WebKitBuild/put-by-val2/Release/jsc Collected 4 samples per benchmark/VM, with 4 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. master ic SunSpider: 3d-cube 4.7835+-0.5591 4.4779+-0.1199 might be 1.0682x faster 3d-morph 5.3038+-0.3490 ? 5.3253+-0.1222 ? 3d-raytrace 5.2064+-0.0976 5.1981+-0.1543 access-binary-trees 2.0060+-0.1707 ? 2.0084+-0.0905 ? access-fannkuch 5.3506+-0.0372 ? 5.4952+-0.3686 ? might be 1.0270x slower access-nbody 2.5628+-0.1533 ? 2.7791+-0.4369 ? might be 1.0844x slower access-nsieve 3.0410+-0.0521 ? 3.0533+-0.0223 ? bitops-3bit-bits-in-byte 1.5109+-0.0321 ? 1.5114+-0.0093 ? bitops-bits-in-byte 3.2692+-0.1319 ? 3.4105+-0.3805 ? might be 1.0432x slower bitops-bitwise-and 2.1240+-0.2787 2.0894+-0.0828 might be 1.0166x faster bitops-nsieve-bits 3.0065+-0.0397 2.9736+-0.0719 might be 1.0111x faster controlflow-recursive 2.1304+-0.2298 2.0568+-0.0440 might be 1.0358x faster crypto-aes 3.9330+-0.2145 3.8384+-0.1323 might be 1.0247x faster crypto-md5 2.5499+-0.1870 2.5096+-0.0863 might be 1.0161x faster crypto-sha1 2.4342+-0.1486 2.3925+-0.3334 might be 1.0174x faster date-format-tofte 6.7337+-0.3100 ? 6.8147+-0.6416 ? might be 1.0120x slower date-format-xparb 4.8481+-0.6275 ? 4.8704+-0.4374 ? math-cordic 2.9142+-0.2000 2.8021+-0.0669 might be 1.0400x faster math-partial-sums 5.4690+-0.3496 ? 5.6627+-0.3550 ? might be 1.0354x slower math-spectral-norm 1.8002+-0.0520 ? 1.8686+-0.0894 ? might be 1.0380x slower regexp-dna 6.4941+-0.3978 ? 6.6597+-0.4474 ? might be 1.0255x slower string-base64 4.2899+-0.1804 ? 4.4785+-0.1496 ? might be 1.0440x slower string-fasta 5.8869+-0.5296 5.8682+-0.2599 string-tagcloud 8.2486+-0.1421 ? 8.4874+-0.4279 ? might be 1.0290x slower string-unpack-code 20.2062+-0.8355 20.1170+-1.0379 string-validate-input 4.4922+-0.1832 ? 4.5705+-0.2283 ? might be 1.0174x slower <arithmetic> 4.6383+-0.0602 ? 4.6661+-0.0201 ? might be 1.0060x slower master ic LongSpider: 3d-cube 836.7552+-21.1275 825.9297+-12.5855 might be 1.0131x faster 3d-morph 1591.0110+-25.0360 1568.2533+-43.6683 might be 1.0145x faster 3d-raytrace 638.2565+-10.1632 635.1079+-2.2422 access-binary-trees 829.3503+-12.8978 813.8387+-12.6002 might be 1.0191x faster access-fannkuch 288.4608+-17.1326 283.2131+-4.0566 might be 1.0185x faster access-nbody 531.5117+-16.5735 527.1596+-2.0257 access-nsieve 366.1274+-15.6535 353.0670+-5.2621 might be 1.0370x faster bitops-3bit-bits-in-byte 41.5374+-0.9329 41.0822+-1.0646 might be 1.0111x faster bitops-bits-in-byte 76.2415+-1.6024 ? 77.8485+-7.6517 ? might be 1.0211x slower bitops-nsieve-bits 419.6123+-8.1158 417.9985+-13.4044 controlflow-recursive 437.7810+-9.6306 ? 446.6322+-19.3754 ? might be 1.0202x slower crypto-aes 586.2492+-20.7943 ? 588.6061+-8.8953 ? crypto-md5 514.0322+-12.2882 ? 514.8079+-4.4898 ? crypto-sha1 659.1471+-13.0666 654.7419+-7.4059 date-format-tofte 525.7767+-11.7798 ? 530.5687+-6.6339 ? date-format-xparb 649.4663+-25.1015 ? 668.0705+-19.4707 ? might be 1.0286x slower hash-map 154.3851+-1.9257 ? 157.0092+-3.0970 ? might be 1.0170x slower math-cordic 511.1750+-20.4265 ? 515.4603+-26.1989 ? math-partial-sums 483.0878+-16.1252 ? 490.2812+-28.8804 ? might be 1.0149x slower math-spectral-norm 581.1895+-16.5583 577.5945+-12.6434 string-base64 361.8380+-23.2236 ? 365.1520+-9.2779 ? string-fasta 376.2711+-16.0314 376.2357+-9.9593 string-tagcloud 182.0363+-2.8089 ? 182.9106+-3.6161 ? <geometric> 403.3920+-4.1372 403.3043+-0.9130 might be 1.0002x faster master ic V8Spider: crypto 55.1956+-14.4310 50.3163+-5.3156 might be 1.0970x faster deltablue 85.9770+-5.5507 85.3022+-4.1440 earley-boyer 41.2180+-0.8925 ? 41.8600+-1.6824 ? might be 1.0156x slower raytrace 22.4794+-1.7199 ? 22.8006+-1.3126 ? might be 1.0143x slower regexp 63.9345+-1.2980 ? 65.6663+-5.8255 ? might be 1.0271x slower richards 72.1068+-3.7155 67.8063+-3.3647 might be 1.0634x faster splay 34.1846+-2.4154 ? 34.4920+-2.8545 ? <geometric> 49.0741+-1.6272 48.4447+-1.1064 might be 1.0130x faster master ic Octane: encrypt 0.21421+-0.00603 0.20935+-0.00618 might be 1.0232x faster decrypt 3.57799+-0.11175 3.48727+-0.04912 might be 1.0260x faster deltablue x2 0.16268+-0.00398 0.16230+-0.00112 earley 0.28575+-0.00680 ? 0.28999+-0.00585 ? might be 1.0148x slower boyer 4.35322+-0.13898 4.32301+-0.05973 navier-stokes x2 5.21784+-0.09176 5.21643+-0.11716 raytrace x2 1.97286+-0.01838 ? 1.99568+-0.12019 ? might be 1.0116x slower richards x2 0.10452+-0.00092 0.10368+-0.00121 splay x2 0.35860+-0.00601 0.35659+-0.00527 regexp x2 25.65626+-0.70289 ? 26.31369+-1.37888 ? might be 1.0256x slower pdfjs x2 38.12845+-0.54274 37.98097+-1.10631 mandreel x2 46.74470+-1.80375 46.45316+-0.60075 gbemu x2 34.97553+-0.40030 ? 35.26762+-0.83678 ? closure 0.58308+-0.01259 ? 0.58309+-0.01992 ? jquery 7.49882+-0.09725 ? 7.50566+-0.12799 ? box2d x2 10.70757+-0.23400 10.59347+-0.52388 might be 1.0108x faster zlib x2 390.90666+-4.75406 388.78428+-18.95888 typescript x2 672.88867+-17.18580 666.72113+-19.73900 <geometric> 6.08223+-0.02855 6.07091+-0.04520 might be 1.0019x faster master ic Kraken: ai-astar 241.117+-7.959 231.522+-14.969 might be 1.0414x faster audio-beat-detection 59.446+-2.556 58.669+-0.465 might be 1.0132x faster audio-dft 100.214+-3.446 99.731+-2.004 audio-fft 35.846+-1.470 35.840+-1.046 audio-oscillator 62.492+-0.705 62.162+-0.646 imaging-darkroom 62.781+-2.483 62.728+-2.706 imaging-desaturate 54.959+-5.119 52.586+-5.405 might be 1.0451x faster imaging-gaussian-blur 86.772+-2.336 ? 87.670+-8.535 ? might be 1.0103x slower json-parse-financial 39.164+-0.883 ? 40.080+-2.983 ? might be 1.0234x slower json-stringify-tinderbox 23.330+-2.530 22.873+-1.343 might be 1.0200x faster stanford-crypto-aes 43.454+-4.654 42.908+-2.826 might be 1.0127x faster stanford-crypto-ccm 36.002+-2.521 33.758+-1.286 might be 1.0665x faster stanford-crypto-pbkdf2 96.904+-1.164 ? 96.915+-0.692 ? stanford-crypto-sha256-iterative 36.997+-0.138 ? 38.177+-3.517 ? might be 1.0319x slower <arithmetic> 69.963+-0.829 68.973+-1.304 might be 1.0144x faster master ic JSRegress: abc-forward-loop-equal 30.4207+-3.5186 ? 30.5726+-3.4041 ? abc-postfix-backward-loop 29.9561+-1.2690 29.5468+-0.6558 might be 1.0139x faster abc-simple-backward-loop 29.3508+-0.6684 ? 29.3897+-0.5446 ? abc-simple-forward-loop 31.0605+-3.9489 29.3627+-0.5205 might be 1.0578x faster abc-skippy-loop 21.3950+-0.2645 21.2120+-0.5378 abs-boolean 2.4594+-0.0739 2.4310+-0.0890 might be 1.0117x faster adapt-to-double-divide 16.2418+-0.3320 ? 16.3345+-0.2607 ? aliased-arguments-getbyval 1.0784+-0.0582 ? 1.1391+-0.1609 ? might be 1.0563x slower allocate-big-object 2.3633+-0.2604 2.2996+-0.2606 might be 1.0277x faster arguments-named-and-reflective 10.8646+-0.4054 ? 11.4717+-0.7606 ? might be 1.0559x slower arguments-out-of-bounds 9.9646+-0.1798 9.8777+-0.2948 arguments-strict-mode 9.8131+-0.2641 9.7419+-0.4836 arguments 8.5242+-0.2313 ? 8.5884+-0.4305 ? arity-mismatch-inlining 0.7850+-0.0177 ? 0.8494+-0.0880 ? might be 1.0820x slower array-access-polymorphic-structure 5.9320+-0.1598 ? 6.0162+-0.2467 ? might be 1.0142x slower array-nonarray-polymorhpic-access 25.7030+-0.9099 25.0843+-0.8578 might be 1.0247x faster array-prototype-every 78.1331+-4.1022 76.7127+-2.0246 might be 1.0185x faster array-prototype-forEach 78.1376+-7.4765 76.4438+-3.7932 might be 1.0222x faster array-prototype-map 84.9015+-2.7479 83.5514+-0.6070 might be 1.0162x faster array-prototype-reduce 75.4710+-2.4078 73.9355+-4.0163 might be 1.0208x faster array-prototype-reduceRight 71.9142+-0.8738 ? 72.5513+-2.1015 ? array-prototype-some 79.9095+-6.5887 78.9946+-6.4999 might be 1.0116x faster array-splice-contiguous 21.4260+-2.2243 ? 21.5881+-1.6655 ? array-with-double-add 3.4188+-0.0797 3.3737+-0.1089 might be 1.0134x faster array-with-double-increment 3.0841+-0.1138 3.0259+-0.0826 might be 1.0192x faster array-with-double-mul-add 4.2560+-0.1190 4.2313+-0.2312 array-with-double-sum 3.1935+-0.1519 3.1841+-0.0544 array-with-int32-add-sub 5.9498+-0.1457 ? 6.2513+-0.6280 ? might be 1.0507x slower array-with-int32-or-double-sum 3.2075+-0.0797 ? 3.2999+-0.1784 ? might be 1.0288x slower ArrayBuffer-DataView-alloc-large-long-lived 28.1344+-1.6305 27.7024+-1.3283 might be 1.0156x faster ArrayBuffer-DataView-alloc-long-lived 12.7703+-0.5118 ? 13.8033+-1.6346 ? might be 1.0809x slower ArrayBuffer-Int32Array-byteOffset 3.9716+-0.6315 3.6786+-0.1577 might be 1.0796x faster ArrayBuffer-Int8Array-alloc-large-long-lived 28.1896+-0.4280 27.9351+-1.0130 ArrayBuffer-Int8Array-alloc-long-lived-buffer 21.2855+-2.0320 ? 21.3679+-2.8557 ? ArrayBuffer-Int8Array-alloc-long-lived 11.9618+-0.4369 ? 12.8780+-2.6246 ? might be 1.0766x slower ArrayBuffer-Int8Array-alloc 10.2737+-0.2155 10.2128+-0.0523 asmjs_bool_bug 7.4133+-0.3734 7.2629+-0.2664 might be 1.0207x faster assign-custom-setter-polymorphic 2.5928+-0.0529 2.5612+-0.1955 might be 1.0123x faster assign-custom-setter 3.5731+-0.1231 ? 3.6130+-0.0895 ? might be 1.0112x slower basic-set 8.1888+-0.7573 8.0779+-0.1569 might be 1.0137x faster big-int-mul 3.4426+-0.0473 ? 3.5802+-0.2839 ? might be 1.0400x slower boolean-test 2.9168+-0.1325 2.9041+-0.0878 branch-fold 3.6099+-0.0085 ? 3.6455+-0.0920 ? branch-on-string-as-boolean 16.5435+-1.3815 ? 16.6172+-0.3361 ? by-val-generic 6.1494+-0.2529 ^ 2.3788+-0.0672 ^ definitely 2.5850x faster call-spread-apply 27.1583+-0.8721 ? 27.5195+-1.1494 ? might be 1.0133x slower call-spread-call 21.6077+-1.0263 21.4613+-0.1214 captured-assignments 0.4230+-0.0482 ? 0.4371+-0.0507 ? might be 1.0332x slower cast-int-to-double 5.1988+-0.2215 5.1699+-0.0803 cell-argument 6.5638+-0.6700 6.4894+-0.3780 might be 1.0115x faster cfg-simplify 2.7955+-0.2164 ? 2.9313+-0.2660 ? might be 1.0486x slower chain-getter-access 8.1899+-0.0975 ? 8.2327+-0.2559 ? cmpeq-obj-to-obj-other 11.6490+-1.1922 ? 12.1970+-0.4902 ? might be 1.0470x slower constant-test 4.9000+-0.1166 ? 4.9820+-0.2738 ? might be 1.0167x slower create-lots-of-functions 9.2545+-0.6019 9.1605+-0.4207 might be 1.0103x faster cse-new-array-buffer 2.2281+-0.1439 ? 2.2944+-0.1643 ? might be 1.0298x slower cse-new-array 2.4084+-0.1203 2.2503+-0.1633 might be 1.0702x faster DataView-custom-properties 32.9791+-1.4437 32.7305+-1.4116 delay-tear-off-arguments-strictmode 12.5924+-0.6279 12.4738+-0.5537 deltablue-varargs 154.4465+-7.5656 150.8955+-1.9331 might be 1.0235x faster destructuring-arguments 167.0574+-3.8066 166.1065+-3.8138 destructuring-parameters-overridden-by-function 0.4642+-0.0107 0.4486+-0.0394 might be 1.0347x faster destructuring-swap 4.8234+-0.2418 4.7875+-0.1475 direct-arguments-getbyval 1.1297+-0.0798 1.0782+-0.0484 might be 1.0477x faster div-boolean-double 5.4870+-0.1795 5.4182+-0.0497 might be 1.0127x faster div-boolean 8.2973+-0.0702 8.2812+-0.0899 double-get-by-val-out-of-bounds 4.1185+-0.2260 ? 4.2694+-0.1431 ? might be 1.0366x slower double-pollution-getbyval 8.9418+-0.2861 ? 8.9512+-0.1227 ? double-pollution-putbyoffset 3.9677+-0.5194 3.8873+-0.3436 might be 1.0207x faster double-real-use 26.6407+-5.0986 26.0117+-2.6696 might be 1.0242x faster double-to-int32-typed-array-no-inline 2.2863+-0.2830 2.0938+-0.0492 might be 1.0920x faster double-to-int32-typed-array 1.8185+-0.0406 1.8158+-0.1062 double-to-uint32-typed-array-no-inline 2.1180+-0.1020 ? 2.2241+-0.0402 ? might be 1.0501x slower double-to-uint32-typed-array 2.0063+-0.2366 1.9377+-0.2243 might be 1.0354x faster elidable-new-object-dag 35.1503+-2.3967 34.1964+-1.1448 might be 1.0279x faster elidable-new-object-roflcopter 32.9814+-0.4673 ? 33.8122+-1.6499 ? might be 1.0252x slower elidable-new-object-then-call 31.8503+-1.1228 31.1902+-0.3429 might be 1.0212x faster elidable-new-object-tree 37.4989+-0.9130 ? 37.8619+-1.5898 ? empty-string-plus-int 4.8240+-0.0916 4.7968+-0.1696 emscripten-cube2hash 26.4540+-3.8103 ? 27.4030+-3.1305 ? might be 1.0359x slower exit-length-on-plain-object 12.6080+-0.4229 ? 12.8876+-0.4479 ? might be 1.0222x slower external-arguments-getbyval 1.1917+-0.1491 1.1469+-0.0154 might be 1.0390x faster external-arguments-putbyval 2.2283+-0.1147 2.2181+-0.1335 fixed-typed-array-storage-var-index 1.1945+-0.0704 1.1547+-0.0479 might be 1.0345x faster fixed-typed-array-storage 0.8625+-0.0246 0.8294+-0.0467 might be 1.0399x faster Float32Array-matrix-mult 4.2921+-0.4402 4.0438+-0.3149 might be 1.0614x faster Float32Array-to-Float64Array-set 45.8997+-1.2373 ? 47.0768+-2.0671 ? might be 1.0256x slower Float64Array-alloc-long-lived 58.4412+-1.4192 ? 58.5718+-1.3157 ? Float64Array-to-Int16Array-set 59.3593+-4.0435 59.3320+-1.7569 fold-double-to-int 12.7600+-0.3215 ? 12.7770+-0.4392 ? fold-get-by-id-to-multi-get-by-offset-rare-int 10.9481+-1.2141 9.6530+-1.1566 might be 1.1342x faster fold-get-by-id-to-multi-get-by-offset 9.3643+-0.5576 9.0266+-0.3310 might be 1.0374x faster fold-multi-get-by-offset-to-get-by-offset 8.5377+-1.5213 7.7426+-1.8286 might be 1.1027x faster fold-multi-get-by-offset-to-poly-get-by-offset 7.9885+-1.5092 7.9015+-2.2351 might be 1.0110x faster fold-multi-put-by-offset-to-poly-put-by-offset 7.9266+-1.3812 ? 8.2106+-0.4392 ? might be 1.0358x slower fold-multi-put-by-offset-to-put-by-offset 5.9677+-1.2023 ? 6.0640+-0.5600 ? might be 1.0161x slower fold-multi-put-by-offset-to-replace-or-transition-put-by-offset 8.6280+-1.2961 8.2563+-0.6696 might be 1.0450x faster fold-put-by-id-to-multi-put-by-offset 9.0149+-0.8574 ? 9.1357+-0.3271 ? might be 1.0134x slower fold-put-by-val-with-string-to-multi-put-by-offset 66.4464+-2.0151 ^ 9.0206+-1.1966 ^ definitely 7.3661x faster fold-put-by-val-with-symbol-to-multi-put-by-offset 69.3903+-4.1105 ^ 9.1848+-1.0785 ^ definitely 7.5549x faster fold-put-structure 6.0617+-0.7470 5.7636+-0.5138 might be 1.0517x faster for-of-iterate-array-entries 11.6996+-0.2994 11.6213+-0.3773 for-of-iterate-array-keys 3.3269+-0.0299 3.3098+-0.1325 for-of-iterate-array-values 3.4129+-0.1981 3.3538+-0.1552 might be 1.0176x faster fround 19.8466+-0.4911 19.4609+-0.8974 might be 1.0198x faster ftl-library-inlining-dataview 58.8506+-3.5593 57.8617+-1.8893 might be 1.0171x faster ftl-library-inlining 112.7565+-2.7984 110.2152+-3.8195 might be 1.0231x faster function-dot-apply 2.0640+-0.1262 2.0005+-0.0410 might be 1.0317x faster function-test 2.6644+-0.1344 ? 2.7072+-0.2407 ? might be 1.0161x slower function-with-eval 108.7946+-5.3004 106.7708+-1.3764 might be 1.0190x faster gcse-poly-get-less-obvious 14.5932+-0.1884 14.5314+-0.1702 gcse-poly-get 16.5972+-0.8657 16.5384+-0.6985 gcse 3.8281+-0.0435 ? 3.8981+-0.2483 ? might be 1.0183x slower get-by-id-bimorphic-check-structure-elimination-simple 2.6221+-0.0970 2.5762+-0.0360 might be 1.0178x faster get-by-id-bimorphic-check-structure-elimination 6.1367+-0.3695 5.9647+-0.0529 might be 1.0288x faster get-by-id-chain-from-try-block 5.5568+-0.3376 ? 5.7222+-0.2092 ? might be 1.0298x slower get-by-id-check-structure-elimination 4.4759+-0.3030 ? 4.7421+-1.0019 ? might be 1.0595x slower get-by-id-proto-or-self 14.5833+-0.5900 ? 15.0490+-0.8913 ? might be 1.0319x slower get-by-id-quadmorphic-check-structure-elimination-simple 2.8776+-0.0396 ? 2.9685+-0.1420 ? might be 1.0316x slower get-by-id-self-or-proto 14.6407+-0.4343 ? 15.5737+-1.6295 ? might be 1.0637x slower get-by-val-out-of-bounds 4.0728+-0.2882 4.0267+-0.3145 might be 1.0114x faster get-by-val-with-string-bimorphic-check-structure-elimination-simple 2.8942+-0.0968 2.8776+-0.1237 get-by-val-with-string-bimorphic-check-structure-elimination 6.2343+-0.1063 6.2162+-0.0831 get-by-val-with-string-chain-from-try-block 5.7051+-0.4995 5.5408+-0.0784 might be 1.0296x faster get-by-val-with-string-check-structure-elimination 5.2142+-0.1461 5.1998+-0.1782 get-by-val-with-string-proto-or-self 14.7446+-0.4795 14.6557+-0.6380 get-by-val-with-string-quadmorphic-check-structure-elimination-simple 3.1765+-0.1339 ? 3.2645+-0.1719 ? might be 1.0277x slower get-by-val-with-string-self-or-proto 16.0129+-2.4384 15.9579+-2.4149 get-by-val-with-symbol-bimorphic-check-structure-elimination-simple 3.0168+-0.0548 ? 3.0315+-0.0376 ? get-by-val-with-symbol-bimorphic-check-structure-elimination 12.5020+-0.1487 ? 12.5836+-0.1556 ? get-by-val-with-symbol-chain-from-try-block 5.6441+-0.1045 5.6306+-0.1031 get-by-val-with-symbol-check-structure-elimination 11.5818+-0.5928 11.3604+-0.4770 might be 1.0195x faster get-by-val-with-symbol-proto-or-self 14.8860+-0.2004 ? 15.1407+-1.6836 ? might be 1.0171x slower get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple 4.0162+-0.1118 ? 4.0366+-0.2368 ? get-by-val-with-symbol-self-or-proto 14.8101+-0.8663 ? 15.6434+-1.5701 ? might be 1.0563x slower get_callee_monomorphic 2.5562+-0.6468 2.4752+-0.2525 might be 1.0327x faster get_callee_polymorphic 3.2980+-0.1991 3.1816+-0.2178 might be 1.0366x faster getter-no-activation 4.8550+-0.2324 ? 5.1459+-0.4497 ? might be 1.0599x slower getter-prototype 10.0082+-0.3072 ? 10.1360+-1.0966 ? might be 1.0128x slower getter-richards 121.3746+-9.8202 ? 124.8890+-4.0976 ? might be 1.0290x slower getter 5.4423+-0.4604 5.2927+-0.0975 might be 1.0283x faster global-object-access-with-mutating-structure 5.6146+-0.5311 ? 5.7203+-0.1983 ? might be 1.0188x slower global-var-const-infer-fire-from-opt 0.8462+-0.1737 ? 0.9050+-0.1021 ? might be 1.0695x slower global-var-const-infer 0.7635+-0.1149 0.7018+-0.0469 might be 1.0880x faster HashMap-put-get-iterate-keys 27.4141+-2.7462 25.5320+-3.3546 might be 1.0737x faster HashMap-put-get-iterate 26.6028+-0.7866 ? 26.7569+-2.0420 ? HashMap-string-put-get-iterate 24.8033+-0.2596 ? 25.4359+-1.7637 ? might be 1.0255x slower hoist-make-rope 8.0048+-1.3946 ? 8.2037+-1.5820 ? might be 1.0248x slower hoist-poly-check-structure-effectful-loop 4.1225+-0.0434 ? 4.4717+-0.5218 ? might be 1.0847x slower hoist-poly-check-structure 3.3285+-0.2082 ? 3.3333+-0.0976 ? imul-double-only 6.7031+-0.2838 ? 6.8803+-0.2693 ? might be 1.0264x slower imul-int-only 7.9868+-0.4347 7.9595+-0.5232 imul-mixed 6.6873+-0.6495 6.5135+-0.3703 might be 1.0267x faster in-four-cases 17.7727+-0.5785 ? 17.8608+-1.2742 ? in-one-case-false 9.3367+-0.2883 9.3104+-0.3333 in-one-case-true 9.3683+-0.3129 9.3635+-0.3227 in-two-cases 9.7913+-0.2443 9.7766+-0.1341 indexed-properties-in-objects 2.8030+-0.0333 2.7928+-0.0404 infer-closure-const-then-mov-no-inline 3.2415+-0.3664 ? 3.7240+-0.6667 ? might be 1.1489x slower infer-closure-const-then-mov 17.5105+-1.1719 ? 17.6900+-0.2938 ? might be 1.0103x slower infer-closure-const-then-put-to-scope-no-inline 11.6285+-1.1157 11.2753+-0.4030 might be 1.0313x faster infer-closure-const-then-put-to-scope 21.9205+-0.5546 ? 21.9351+-0.7701 ? infer-closure-const-then-reenter-no-inline 51.6376+-1.2520 ? 53.3860+-6.6140 ? might be 1.0339x slower infer-closure-const-then-reenter 23.3280+-3.3668 22.2540+-1.0271 might be 1.0483x faster infer-constant-global-property 3.4418+-0.1357 ? 3.6636+-0.5436 ? might be 1.0644x slower infer-constant-property 2.6674+-0.1393 2.6190+-0.0691 might be 1.0185x faster infer-one-time-closure-ten-vars 8.7757+-1.1701 8.4888+-0.3970 might be 1.0338x faster infer-one-time-closure-two-vars 7.9174+-0.2729 ? 8.3086+-0.4876 ? might be 1.0494x slower infer-one-time-closure 8.1741+-0.8396 8.1252+-0.7522 infer-one-time-deep-closure 12.8452+-0.3913 ? 12.8685+-0.6968 ? inline-arguments-access 3.7232+-0.3493 3.6741+-0.2809 might be 1.0134x faster inline-arguments-aliased-access 3.6613+-0.1769 ? 3.7440+-0.2030 ? might be 1.0226x slower inline-arguments-local-escape 3.6514+-0.1854 ? 3.6514+-0.1585 ? inline-get-scoped-var 4.9023+-0.3562 4.8287+-0.0636 might be 1.0152x faster inlined-put-by-id-transition 10.2627+-0.3884 9.8281+-1.0958 might be 1.0442x faster inlined-put-by-val-with-string-transition 113.4969+-2.9352 ^ 75.2108+-1.6511 ^ definitely 1.5091x faster inlined-put-by-val-with-symbol-transition 115.8724+-1.5557 ^ 72.8320+-1.1636 ^ definitely 1.5910x faster int-or-other-abs-then-get-by-val 4.8403+-0.0837 ? 4.9946+-0.2007 ? might be 1.0319x slower int-or-other-abs-zero-then-get-by-val 16.3602+-0.2597 16.2937+-0.3449 int-or-other-add-then-get-by-val 4.1599+-0.0867 ? 4.1654+-0.0890 ? int-or-other-add 5.0682+-0.3340 4.9832+-0.3326 might be 1.0171x faster int-or-other-div-then-get-by-val 3.8398+-0.2257 3.8215+-0.1520 int-or-other-max-then-get-by-val 4.1185+-0.1425 ? 4.1250+-0.2253 ? int-or-other-min-then-get-by-val 4.0475+-0.0271 ? 4.1122+-0.1682 ? might be 1.0160x slower int-or-other-mod-then-get-by-val 3.7261+-0.1946 3.5557+-0.1226 might be 1.0479x faster int-or-other-mul-then-get-by-val 3.7337+-0.1787 ? 3.7847+-0.2092 ? might be 1.0137x slower int-or-other-neg-then-get-by-val 4.5055+-0.1435 ? 4.5714+-0.2538 ? might be 1.0146x slower int-or-other-neg-zero-then-get-by-val 16.6490+-0.7155 16.3929+-1.3004 might be 1.0156x faster int-or-other-sub-then-get-by-val 4.2081+-0.1585 4.1754+-0.1862 int-or-other-sub 3.5267+-0.1883 3.4370+-0.0400 might be 1.0261x faster int-overflow-local 4.4567+-0.4171 4.3351+-0.0814 might be 1.0280x faster Int16Array-alloc-long-lived 43.0228+-1.5034 43.0153+-1.6439 Int16Array-bubble-sort-with-byteLength 20.0147+-0.5400 ^ 18.0602+-0.5974 ^ definitely 1.1082x faster Int16Array-bubble-sort 20.2470+-2.2290 18.0142+-0.7518 might be 1.1239x faster Int16Array-load-int-mul 1.4462+-0.0774 ? 1.4872+-0.1126 ? might be 1.0283x slower Int16Array-to-Int32Array-set 45.2297+-3.6748 43.4820+-0.5739 might be 1.0402x faster Int32Array-alloc-large 12.3084+-0.9543 ? 12.3715+-0.7181 ? Int32Array-alloc-long-lived 48.1345+-2.3172 47.7355+-1.1425 Int32Array-alloc 2.6729+-0.2375 ? 2.8467+-0.3669 ? might be 1.0651x slower Int32Array-Int8Array-view-alloc 6.2802+-0.1626 ? 6.4185+-0.5336 ? might be 1.0220x slower int52-spill 4.7600+-0.1683 4.6898+-0.1810 might be 1.0150x faster Int8Array-alloc-long-lived 37.8097+-1.4122 ? 38.2945+-1.4213 ? might be 1.0128x slower Int8Array-load-with-byteLength 3.5747+-0.2141 ? 3.5778+-0.1805 ? Int8Array-load 3.4385+-0.1602 3.4382+-0.0611 integer-divide 10.6865+-0.1968 10.5795+-0.0496 might be 1.0101x faster integer-modulo 1.6740+-0.1441 ? 1.6763+-0.0371 ? is-boolean-fold-tricky 3.9280+-0.5351 3.7242+-0.0715 might be 1.0547x faster is-boolean-fold 2.6158+-0.0345 ? 2.6631+-0.0867 ? might be 1.0181x slower is-function-fold-tricky-internal-function 9.9630+-0.2591 ? 10.0500+-0.1926 ? is-function-fold-tricky 4.2075+-0.2905 4.0880+-0.0589 might be 1.0292x faster is-function-fold 2.6428+-0.0509 2.6298+-0.1222 is-number-fold-tricky 4.0707+-0.2041 ? 4.0734+-0.1177 ? is-number-fold 2.7197+-0.1813 2.6761+-0.1556 might be 1.0163x faster is-object-or-null-fold-functions 2.8170+-0.4480 2.6567+-0.0172 might be 1.0603x faster is-object-or-null-fold-less-tricky 4.1339+-0.1980 ? 4.2045+-0.1731 ? might be 1.0171x slower is-object-or-null-fold-tricky 5.5187+-0.2800 5.2793+-0.1054 might be 1.0454x faster is-object-or-null-fold 2.7286+-0.1072 2.6480+-0.0284 might be 1.0304x faster is-object-or-null-trickier-function 4.2444+-0.0516 4.2431+-0.2746 is-object-or-null-trickier-internal-function 10.6367+-0.3694 10.4359+-0.1287 might be 1.0192x faster is-object-or-null-tricky-function 4.3088+-0.5403 4.2480+-0.2286 might be 1.0143x faster is-object-or-null-tricky-internal-function 7.7950+-0.1434 ? 7.8079+-0.2492 ? is-string-fold-tricky 4.1037+-0.2519 4.0950+-0.1644 is-string-fold 2.6072+-0.0672 ? 2.7101+-0.1028 ? might be 1.0395x slower is-undefined-fold-tricky 3.2855+-0.0337 ? 3.2945+-0.1271 ? is-undefined-fold 2.6392+-0.1220 ? 2.6809+-0.1197 ? might be 1.0158x slower JSONP-negative-0 0.2442+-0.0083 ? 0.2455+-0.0131 ? large-int-captured 3.8880+-0.4350 3.8615+-0.1630 large-int-neg 14.3981+-0.1985 ? 15.3138+-1.1064 ? might be 1.0636x slower large-int 14.4443+-1.5970 13.8995+-0.3446 might be 1.0392x faster load-varargs-elimination 22.1561+-1.5405 20.8760+-0.5470 might be 1.0613x faster logical-not-weird-types 2.9675+-0.1324 2.9150+-0.0775 might be 1.0180x faster logical-not 4.3093+-0.0574 ? 4.3489+-0.1351 ? lots-of-fields 9.4321+-0.2805 ? 9.5175+-0.6506 ? make-indexed-storage 2.7640+-0.2955 ? 2.8398+-0.1465 ? might be 1.0274x slower make-rope-cse 3.9323+-0.2983 3.6565+-0.2885 might be 1.0754x faster marsaglia-larger-ints 32.9594+-2.6742 32.6393+-0.5669 marsaglia-osr-entry 21.2010+-0.8463 ? 22.2730+-2.1657 ? might be 1.0506x slower math-with-out-of-bounds-array-values 22.8708+-3.1505 22.2825+-0.3013 might be 1.0264x faster max-boolean 2.7102+-0.0614 ? 2.7190+-0.1102 ? method-on-number 16.6821+-0.1489 ? 18.1460+-2.2751 ? might be 1.0878x slower min-boolean 2.7454+-0.0787 ? 2.7633+-0.1292 ? minus-boolean-double 3.1472+-0.1426 3.1260+-0.0744 minus-boolean 2.2997+-0.0613 ? 2.5505+-0.4292 ? might be 1.1090x slower misc-strict-eq 31.2397+-0.5981 31.2242+-1.0330 mod-boolean-double 11.5528+-0.4133 11.3300+-0.3689 might be 1.0197x faster mod-boolean 8.4568+-0.2518 ? 8.6425+-0.4129 ? might be 1.0220x slower mul-boolean-double 3.6710+-0.0654 ? 3.7640+-0.2778 ? might be 1.0253x slower mul-boolean 2.7670+-0.0547 ? 2.8477+-0.0861 ? might be 1.0292x slower neg-boolean 3.1082+-0.0785 3.0692+-0.0709 might be 1.0127x faster negative-zero-divide 0.3542+-0.0732 0.3186+-0.0040 might be 1.1119x faster negative-zero-modulo 0.3535+-0.0320 0.3228+-0.0050 might be 1.0949x faster negative-zero-negate 0.3101+-0.0263 0.3085+-0.0263 nested-function-parsing 42.9380+-0.8578 ? 43.1874+-3.3770 ? new-array-buffer-dead 89.7038+-1.6329 88.6490+-0.5644 might be 1.0119x faster new-array-buffer-push 5.9844+-0.3940 5.9097+-0.4161 might be 1.0126x faster new-array-dead 13.9341+-0.7371 13.8020+-0.8735 new-array-push 3.5596+-0.2698 3.4985+-0.2288 might be 1.0175x faster no-inline-constructor 32.2123+-1.9255 31.5076+-0.6167 might be 1.0224x faster number-test 2.8126+-0.0326 ? 2.8601+-0.0716 ? might be 1.0169x slower object-closure-call 5.0543+-0.4320 5.0018+-0.4305 might be 1.0105x faster object-get-own-property-symbols-on-large-array 3.8403+-0.2344 3.5911+-0.1806 might be 1.0694x faster object-test 2.5922+-0.0936 ? 2.6271+-0.0536 ? might be 1.0135x slower obvious-sink-pathology-taken 101.8335+-2.2668 101.0276+-0.5741 obvious-sink-pathology 96.9016+-0.6491 96.8526+-1.6090 obviously-elidable-new-object 29.2731+-2.0336 27.8242+-2.1716 might be 1.0521x faster plus-boolean-arith 2.4063+-0.1132 2.3744+-0.0493 might be 1.0134x faster plus-boolean-double 3.1262+-0.2352 3.0864+-0.0911 might be 1.0129x faster plus-boolean 2.5908+-0.0624 ? 2.5991+-0.1603 ? poly-chain-access-different-prototypes-simple 3.2959+-0.1144 3.2343+-0.1098 might be 1.0190x faster poly-chain-access-different-prototypes 2.8756+-0.0483 ? 2.9127+-0.0600 ? might be 1.0129x slower poly-chain-access-simpler 3.3681+-0.3544 3.2745+-0.1212 might be 1.0286x faster poly-chain-access 3.3468+-0.1107 3.3390+-0.0364 poly-stricteq 51.2652+-0.9369 ? 51.3693+-1.3195 ? polymorphic-array-call 1.2632+-0.0658 ? 1.3308+-0.0772 ? might be 1.0535x slower polymorphic-get-by-id 2.7952+-0.0789 ? 2.7968+-0.0690 ? polymorphic-put-by-id 25.8075+-1.1297 25.3528+-1.7042 might be 1.0179x faster polymorphic-put-by-val-with-string 363.6154+-9.6330 ^ 27.8351+-2.9592 ^ definitely 13.0632x faster polymorphic-put-by-val-with-symbol 389.7329+-16.8297 ^ 26.5987+-0.9531 ^ definitely 14.6523x faster polymorphic-structure 13.5520+-0.0862 13.3789+-0.1740 might be 1.0129x faster polyvariant-monomorphic-get-by-id 6.6448+-0.6484 6.4723+-0.5253 might be 1.0267x faster proto-getter-access 8.1575+-0.2432 ? 8.1928+-0.1704 ? prototype-access-with-mutating-prototype 5.4362+-0.4054 ? 5.7037+-0.7029 ? might be 1.0492x slower put-by-id-replace-and-transition 7.7102+-0.5653 7.0806+-0.4895 might be 1.0889x faster put-by-id-slightly-polymorphic 2.7327+-0.1866 2.7192+-0.1200 put-by-id 9.6223+-0.2077 ? 9.7433+-0.4443 ? might be 1.0126x slower put-by-val-direct 0.3199+-0.0167 ? 0.3469+-0.0534 ? might be 1.0845x slower put-by-val-large-index-blank-indexing-type 5.2581+-0.4053 ? 5.5893+-0.3809 ? might be 1.0630x slower put-by-val-machine-int 2.3729+-0.1866 ? 2.3870+-0.1882 ? put-by-val-with-string-replace-and-transition 87.7953+-5.9126 ^ 10.1464+-0.3603 ^ definitely 8.6529x faster put-by-val-with-string-slightly-polymorphic 33.6233+-1.0861 ^ 2.8926+-0.2251 ^ definitely 11.6240x faster put-by-val-with-string 86.0762+-6.6056 ^ 10.3429+-1.1055 ^ definitely 8.3223x faster put-by-val-with-symbol-replace-and-transition 87.9910+-9.1864 ^ 11.4424+-0.3748 ^ definitely 7.6899x faster put-by-val-with-symbol-slightly-polymorphic 32.9027+-1.1053 ^ 3.0971+-0.1209 ^ definitely 10.6237x faster put-by-val-with-symbol 82.1315+-1.1424 ^ 10.2524+-0.5991 ^ definitely 8.0110x faster rare-osr-exit-on-local 14.9467+-0.3756 14.9382+-0.3717 register-pressure-from-osr 16.7762+-0.9383 ? 16.9037+-0.3588 ? repeat-multi-get-by-offset 22.8320+-2.2132 22.4648+-0.7937 might be 1.0163x faster setter-prototype 7.4230+-0.1434 ? 7.5397+-0.3293 ? might be 1.0157x slower setter 5.4998+-0.5423 ? 5.8981+-0.5576 ? might be 1.0724x slower simple-activation-demo 25.1650+-1.1333 ? 25.3315+-1.7973 ? simple-getter-access 10.7664+-0.8219 10.5552+-0.3087 might be 1.0200x faster simple-poly-call-nested 8.4214+-0.3904 ? 8.4803+-1.4038 ? simple-poly-call 1.2958+-0.0921 1.2657+-0.1790 might be 1.0237x faster sin-boolean 17.9883+-0.5439 ? 18.1531+-0.7382 ? singleton-scope 63.6418+-4.0311 61.8835+-1.3434 might be 1.0284x faster sink-function 9.8258+-0.4924 9.7692+-0.6748 sink-huge-activation 15.9443+-0.6513 ? 16.0815+-1.0086 ? sinkable-new-object-dag 56.6597+-1.3592 55.4562+-0.6962 might be 1.0217x faster sinkable-new-object-taken 42.9341+-0.6443 ? 43.5657+-2.2804 ? might be 1.0147x slower sinkable-new-object 30.3599+-2.0341 29.6320+-0.7412 might be 1.0246x faster slow-array-profile-convergence 2.7775+-0.4832 2.7106+-0.2497 might be 1.0247x faster slow-convergence 2.5590+-0.3282 2.4441+-0.1049 might be 1.0470x faster slow-ternaries 17.8310+-0.7020 ? 18.0041+-0.2527 ? sorting-benchmark 17.7008+-1.1402 ? 18.6253+-3.3963 ? might be 1.0522x slower sparse-conditional 1.1530+-0.0669 ? 1.1700+-0.0366 ? might be 1.0148x slower splice-to-remove 12.6245+-0.8439 12.1635+-0.5963 might be 1.0379x faster string-char-code-at 14.5536+-0.2931 ? 14.7928+-0.4039 ? might be 1.0164x slower string-concat-object 2.2286+-0.2026 2.1703+-0.2057 might be 1.0269x faster string-concat-pair-object 2.3052+-0.2176 2.0967+-0.2825 might be 1.0995x faster string-concat-pair-simple 9.1679+-0.3148 ? 9.3113+-0.3154 ? might be 1.0156x slower string-concat-simple 9.4254+-0.4866 9.2645+-0.2957 might be 1.0174x faster string-cons-repeat 6.7887+-1.3811 6.5272+-0.1456 might be 1.0401x faster string-cons-tower 7.5748+-2.3902 6.7133+-0.5477 might be 1.1283x faster string-equality 16.1498+-2.3893 15.5743+-0.4963 might be 1.0370x faster string-get-by-val-big-char 6.9600+-0.4176 6.7378+-0.0894 might be 1.0330x faster string-get-by-val-out-of-bounds-insane 3.4255+-0.3439 3.3853+-0.2539 might be 1.0119x faster string-get-by-val-out-of-bounds 4.0610+-0.2671 ? 4.0889+-0.1711 ? string-get-by-val 2.7915+-0.0743 ? 2.9331+-0.2236 ? might be 1.0507x slower string-hash 1.8417+-0.0296 ? 1.9033+-0.1347 ? might be 1.0334x slower string-long-ident-equality 12.7574+-0.3292 ? 13.3976+-1.4838 ? might be 1.0502x slower string-out-of-bounds 10.4902+-0.4300 10.2953+-0.1293 might be 1.0189x faster string-repeat-arith 28.9441+-3.5250 28.2797+-1.0284 might be 1.0235x faster string-sub 56.2777+-1.2771 54.6345+-1.4681 might be 1.0301x faster string-test 2.7452+-0.0371 2.7245+-0.0936 string-var-equality 27.4783+-3.0983 27.3992+-3.2982 structure-hoist-over-transitions 2.3610+-0.1594 ? 2.4357+-0.1107 ? might be 1.0316x slower substring-concat-weird 36.4015+-0.7329 ? 37.2979+-2.6875 ? might be 1.0246x slower substring-concat 41.5767+-4.0379 39.4585+-0.8074 might be 1.0537x faster substring 46.5780+-1.9989 46.3568+-4.0786 switch-char-constant 2.7561+-0.1282 ? 2.7746+-0.0504 ? switch-char 6.2315+-0.6797 5.9367+-1.0066 might be 1.0497x faster switch-constant 7.2404+-0.1664 ? 7.2517+-0.6493 ? switch-string-basic-big-var 16.4704+-0.8372 ? 16.7288+-1.3050 ? might be 1.0157x slower switch-string-basic-big 15.6505+-1.0940 15.3030+-0.2589 might be 1.0227x faster switch-string-basic-var 13.3815+-0.2674 ? 13.6429+-0.6771 ? might be 1.0195x slower switch-string-basic 13.2849+-0.7692 ? 13.2880+-0.4919 ? switch-string-big-length-tower-var 18.1430+-0.1587 ? 18.1996+-0.4947 ? switch-string-length-tower-var 13.7699+-1.2697 ? 13.8521+-1.8614 ? switch-string-length-tower 12.1495+-0.1803 12.0515+-0.3668 switch-string-short 12.0372+-0.3859 ? 12.1193+-0.2723 ? switch 11.4389+-0.4885 ? 11.7690+-1.1770 ? might be 1.0289x slower tear-off-arguments-simple 2.9457+-0.1369 2.9124+-0.2543 might be 1.0115x faster tear-off-arguments 4.0392+-0.2020 ? 4.2564+-0.1024 ? might be 1.0538x slower temporal-structure 12.3824+-0.3336 12.1137+-0.1337 might be 1.0222x faster to-int32-boolean 13.7756+-1.1365 13.4539+-0.1519 might be 1.0239x faster try-catch-get-by-val-cloned-arguments 14.6117+-0.7250 14.4850+-0.9222 try-catch-get-by-val-direct-arguments 6.8022+-0.4926 6.2780+-0.1237 might be 1.0835x faster try-catch-get-by-val-scoped-arguments 7.8057+-0.7513 7.5796+-0.1226 might be 1.0298x faster typed-array-get-set-by-val-profiling 27.6259+-0.8796 ? 27.6599+-1.4222 ? undefined-property-access 233.3607+-9.6968 232.7073+-2.8755 undefined-test 2.8510+-0.0436 ? 2.8795+-0.1710 ? unprofiled-licm 14.5299+-0.4930 14.2424+-0.8414 might be 1.0202x faster varargs-call 14.1352+-0.3861 14.1260+-0.2976 varargs-construct-inline 23.1499+-2.6409 22.6848+-1.0342 might be 1.0205x faster varargs-construct 20.1577+-0.9943 ? 20.5761+-0.3606 ? might be 1.0208x slower varargs-inline 8.6895+-0.6069 8.5875+-0.2457 might be 1.0119x faster varargs-strict-mode 9.4213+-0.2786 9.1904+-0.3502 might be 1.0251x faster varargs 9.4245+-0.7268 9.2122+-0.2051 might be 1.0230x faster weird-inlining-const-prop 2.1864+-0.2612 ? 2.4000+-0.4780 ? might be 1.0977x slower <geometric> 8.4161+-0.0189 ^ 7.8552+-0.0353 ^ definitely 1.0714x faster master ic Geomean of preferred means: <scaled-result> 26.2713+-0.1074 ^ 25.8708+-0.0888 ^ definitely 1.0155x faster
Yusuke Suzuki
Comment 15 2015-08-11 18:56:10 PDT
Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review > Source/JavaScriptCore/jit/JITPropertyAccess.cpp:493 > + emitGetVirtualRegister(base, regT0); In this slow path, only |base| register was not reloaded. Essentially, this line is not needed. Since the current fast path carefully reserve the content of the |base|. So this line is not needed. But I think missing this line may cause some problems in the future. Since this is the slow path and the slow path is already slow, taking the conservative implementation (inserting this line) is not bad I think.
Yusuke Suzuki
Comment 16 2015-08-12 12:10:25 PDT
Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review > Source/JavaScriptCore/jit/JITPropertyAccess.cpp:452 > + doneCases.append(jump()); Here, in get_by_val, doneCases are split into fastDoneCase and nextHotPathCase. But since put_by_val has no difference between done and nextHotPath, we just link the all successful cases to done label. Is it preferable keeping them split?
Filip Pizlo
Comment 17 2015-08-20 12:40:26 PDT
Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review >> Source/JavaScriptCore/jit/JITPropertyAccess.cpp:452 >> + doneCases.append(jump()); > > Here, in get_by_val, doneCases are split into fastDoneCase and nextHotPathCase. > But since put_by_val has no difference between done and nextHotPath, we just link the all successful cases to done label. > Is it preferable keeping them split? I think this is fine.
Yusuke Suzuki
Comment 18 2015-08-20 13:02:07 PDT
Comment on attachment 258791 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=258791&action=review Thank you for your review. >>> Source/JavaScriptCore/jit/JITPropertyAccess.cpp:452 >>> + doneCases.append(jump()); >> >> Here, in get_by_val, doneCases are split into fastDoneCase and nextHotPathCase. >> But since put_by_val has no difference between done and nextHotPath, we just link the all successful cases to done label. >> Is it preferable keeping them split? > > I think this is fine. I see :)
Yusuke Suzuki
Comment 19 2015-08-20 13:18:53 PDT
Michael Saboff
Comment 20 2015-08-20 17:51:46 PDT
It appears that this change caused the tests below to fail on 32bit iOS. jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-int16array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-int32array-overflow-values.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-int32array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-int8array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-uint16array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-uint32array-overflow-values.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-uint32array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-uint8array.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/dfg-uint8clampedarray.js.layout-no-llint jsc-layout-tests.yaml/js/script-tests/regress-141098.js.layout-no-llint In all cases, the tests crash because they run out of executable memory. Here is the traceback of one of the test: [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: Ran out of executable memory while allocating 1484 bytes. [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 1 0x433c4f JSC::LinkBuffer::allocate(unsigned long, void*, JSC::JITCompilationEffort) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 2 0x433cdd void JSC::LinkBuffer::copyCompactAndLinkCode<unsigned short>(JSC::MacroAssembler&, void*, JSC::JITCompilationEffort) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 3 0x35df49 JSC::JIT::privateCompile(JSC::JITCompilationEffort) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 4 0x2fc531 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 5 0x3560cd JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, JSC::JSValue, JSC::JSScope*) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 6 0x355f63 JSC::eval(JSC::ExecState*) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 7 0x37cfaf operationCallEval [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 8 0x7c45495 [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 9 0x7c3fb99 [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 10 0x4490d1 vmEntryToJavaScript [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 11 0x36af0b JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 12 0x358c31 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 13 0x1fda8f JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 14 0x795f1 jscmain(int, char**) [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 15 0x7910b main [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 16 0x34191873 <redacted> [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: ./test_script_855: line 2: 13988 Segmentation fault: 11 "$@" /System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false --enableFunctionDotArguments\=true --useLLInt\=false resources/standalone-pre.js dfg-float32array.js resources/standalone-post.js [2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: ERROR: Unexpected exit code: 139 Given that all of these failures are when testing with the LLInt turned off, they are benign. With the LLInt on, these out of memory errors would cause the JavaScript code being compiled to execute in the LLInt. Also, it is quite possible that we wouldn't be using that much executable memory in the first place. I filed <https://bugs.webkit.org/show_bug.cgi?id=148273> to change these tests to not run the "no-llint" variants on iOS 32 bit.
Yusuke Suzuki
Comment 21 2015-08-20 18:05:40 PDT
(In reply to comment #20) > It appears that this change caused the tests below to fail on 32bit iOS. > > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-int16array.js.layout-no-llint > > jsc-layout-tests.yaml/js/script-tests/dfg-int32array-overflow-values.js. > layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-int32array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-int8array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-uint16array.js.layout-no-llint > > jsc-layout-tests.yaml/js/script-tests/dfg-uint32array-overflow-values.js. > layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-uint32array.js.layout-no-llint > jsc-layout-tests.yaml/js/script-tests/dfg-uint8array.js.layout-no-llint > > jsc-layout-tests.yaml/js/script-tests/dfg-uint8clampedarray.js.layout-no- > llint > jsc-layout-tests.yaml/js/script-tests/regress-141098.js.layout-no-llint > > In all cases, the tests crash because they run out of executable memory. > Here is the traceback of one of the test: > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > Ran out of executable memory while allocating 1484 bytes. > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 1 > 0x433c4f JSC::LinkBuffer::allocate(unsigned long, void*, > JSC::JITCompilationEffort) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 2 > 0x433cdd void JSC::LinkBuffer::copyCompactAndLinkCode<unsigned > short>(JSC::MacroAssembler&, void*, JSC::JITCompilationEffort) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 3 > 0x35df49 JSC::JIT::privateCompile(JSC::JITCompilationEffort) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 4 > 0x2fc531 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, > JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 5 > 0x3560cd JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, > JSC::JSValue, JSC::JSScope*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 6 > 0x355f63 JSC::eval(JSC::ExecState*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 7 > 0x37cfaf operationCallEval > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 8 > 0x7c45495 > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 9 > 0x7c3fb99 > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 10 0x4490d1 vmEntryToJavaScript > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 11 0x36af0b JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 12 0x358c31 JSC::Interpreter::execute(JSC::ProgramExecutable*, > JSC::ExecState*, JSC::JSObject*) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 13 0x1fda8f JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, > JSC::JSValue, WTF::NakedPtr<JSC::Exception>&) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 14 0x795f1 jscmain(int, char**) > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 15 0x7910b main > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > 16 0x34191873 <redacted> > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > ./test_script_855: line 2: 13988 Segmentation fault: 11 "$@" > /System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc > --useFTLJIT\=false --enableFunctionDotArguments\=true --useLLInt\=false > resources/standalone-pre.js dfg-float32array.js resources/standalone-post.js > [2015-08-20 15:42:00] INFO: > jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: > ERROR: Unexpected exit code: 139 > > Given that all of these failures are when testing with the LLInt turned off, > they are benign. With the LLInt on, these out of memory errors would cause > the JavaScript code being compiled to execute in the LLInt. Also, it is > quite possible that we wouldn't be using that much executable memory in the > first place. > > I filed <https://bugs.webkit.org/show_bug.cgi?id=148273> to change these > tests to not run the "no-llint" variants on iOS 32 bit. Thank you. I'll investigate it soon.
Note You need to log in before you can comment on or make changes to this bug.