Bug 147034 - DFG should have some obvious mitigations against watching structures that are unprofitable to watch
Summary: DFG should have some obvious mitigations against watching structures that are...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on:
Blocks: 133625 146929
  Show dependency treegraph
 
Reported: 2015-07-17 00:58 PDT by Filip Pizlo
Modified: 2015-07-20 13:48 PDT (History)
13 users (show)

See Also:


Attachments
work in progress (8.16 KB, patch)
2015-07-17 01:05 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (7.33 KB, patch)
2015-07-17 14:31 PDT, Filip Pizlo
mark.lam: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2015-07-17 00:58:24 PDT
Patch forthcoming.
Comment 1 Filip Pizlo 2015-07-17 01:05:34 PDT
Created attachment 256959 [details]
work in progress
Comment 2 Filip Pizlo 2015-07-17 11:31:32 PDT
Currently performance below.  Note that this might only make sense if it's done alongside https://bugs.webkit.org/show_bug.cgi?id=146929.  I'm going to investigate the slow-downs and see if they're something we can work around, or they're something that the other bug will fix, or if it's something fundamental.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186953)
"LessStructureWatch" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r186953)

Collected 6 samples per benchmark/VM, with 6 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                        TipOfTree             LessStructureWatch                                
SunSpider:
   3d-cube                                            5.1227+-0.0491     ?      5.1593+-0.1025        ?
   3d-morph                                           5.8425+-0.1312            5.8416+-0.0865        
   3d-raytrace                                        7.0019+-0.8915            6.9184+-0.6295          might be 1.0121x faster
   access-binary-trees                                2.3812+-0.0587     ?      2.5446+-0.4466        ? might be 1.0686x slower
   access-fannkuch                                    7.0317+-0.9407     ?      7.3988+-0.4166        ? might be 1.0522x slower
   access-nbody                                       2.8944+-0.1325     ?      2.9469+-0.2904        ? might be 1.0181x slower
   access-nsieve                                      3.2571+-0.1568            3.2338+-0.1478        
   bitops-3bit-bits-in-byte                           1.6597+-0.0520            1.6486+-0.1077        
   bitops-bits-in-byte                                3.7209+-0.0630     ?      3.7495+-0.0536        ?
   bitops-bitwise-and                                 2.1720+-0.0366     ?      2.2493+-0.0816        ? might be 1.0356x slower
   bitops-nsieve-bits                                 3.2525+-0.1521            3.1722+-0.0409          might be 1.0253x faster
   controlflow-recursive                              2.2897+-0.0709            2.2845+-0.0544        
   crypto-aes                                         4.7708+-0.5618            4.5857+-0.1177          might be 1.0404x faster
   crypto-md5                                         3.1281+-0.1050     ^      2.7908+-0.0384        ^ definitely 1.1209x faster
   crypto-sha1                                        3.0228+-0.3130            2.7477+-0.3608          might be 1.1001x faster
   date-format-tofte                                  9.2890+-0.0965     ?      9.3651+-0.1547        ?
   date-format-xparb                                  5.8549+-0.4024     ?      6.1161+-0.5163        ? might be 1.0446x slower
   math-cordic                                        3.2145+-0.4340            3.1781+-0.1413          might be 1.0114x faster
   math-partial-sums                                  5.3800+-0.2640     ?      5.5767+-0.3968        ? might be 1.0365x slower
   math-spectral-norm                                 2.1757+-0.2549            2.0241+-0.0779          might be 1.0749x faster
   regexp-dna                                         7.4585+-0.3387     ?      8.3974+-1.6250        ? might be 1.1259x slower
   string-base64                                      5.1164+-0.5744     ?      5.1879+-0.5853        ? might be 1.0140x slower
   string-fasta                                       6.7684+-0.2676     ?      7.3094+-1.6763        ? might be 1.0799x slower
   string-tagcloud                                    9.5443+-0.4640            9.3837+-0.9398          might be 1.0171x faster
   string-unpack-code                                21.2838+-0.9582     ?     21.8983+-1.7160        ? might be 1.0289x slower
   string-validate-input                              5.0706+-0.0670     ?      5.3722+-0.3742        ? might be 1.0595x slower

   <arithmetic>                                       5.3348+-0.0819     ?      5.4262+-0.1581        ? might be 1.0171x slower

                                                        TipOfTree             LessStructureWatch                                
LongSpider:
   3d-cube                                         1128.3142+-10.4038    ?   1129.4134+-7.7678        ?
   3d-morph                                        1530.9549+-8.4739         1526.2681+-3.3230        
   3d-raytrace                                      677.1904+-8.4697     ?    692.9315+-36.7668       ? might be 1.0232x slower
   access-binary-trees                              985.0105+-6.7469     ?    990.1519+-4.0768        ?
   access-fannkuch                                  337.0742+-8.4067     ?    358.9362+-16.0836       ? might be 1.0649x slower
   access-nbody                                     601.6986+-27.8461         590.5837+-2.3384          might be 1.0188x faster
   access-nsieve                                    483.4601+-17.9585         479.3842+-5.9034        
   bitops-3bit-bits-in-byte                          46.3804+-2.6602     ?     46.6570+-2.0787        ?
   bitops-bits-in-byte                              104.3365+-2.0953          103.5336+-2.6675        
   bitops-nsieve-bits                               425.0335+-13.4224         418.2044+-2.6302          might be 1.0163x faster
   controlflow-recursive                            467.2895+-0.5892     !    478.5909+-9.0707        ! definitely 1.0242x slower
   crypto-aes                                       682.4941+-7.5115     ?    692.3256+-7.4216        ? might be 1.0144x slower
   crypto-md5                                       532.3827+-16.0736    !    560.6565+-9.2776        ! definitely 1.0531x slower
   crypto-sha1                                      688.3394+-27.0506         669.4077+-3.9408          might be 1.0283x faster
   date-format-tofte                                746.2266+-10.5141         730.8746+-8.3247          might be 1.0210x faster
   date-format-xparb                                895.6254+-58.7206         847.4987+-33.4115         might be 1.0568x faster
   hash-map                                         172.8623+-3.2932     ?    174.8031+-5.2023        ? might be 1.0112x slower
   math-cordic                                      586.2472+-25.4200         581.6319+-4.0452        
   math-partial-sums                                510.3378+-6.1348     ?    516.1380+-18.8141       ? might be 1.0114x slower
   math-spectral-norm                               598.6473+-74.5283         579.1882+-25.8096         might be 1.0336x faster
   string-base64                                    408.5756+-5.6259          407.0890+-6.7018        
   string-fasta                                     419.7620+-3.3008     ?    425.6649+-13.6026       ? might be 1.0141x slower
   string-tagcloud                                  194.5754+-2.6413     ?    196.1025+-2.7159        ?

   <geometric>                                      461.1248+-2.0404     ?    461.8452+-2.0309        ? might be 1.0016x slower

                                                        TipOfTree             LessStructureWatch                                
V8Spider:
   crypto                                            57.4730+-6.3130     ?     58.6360+-2.9606        ? might be 1.0202x slower
   deltablue                                         99.3115+-5.1755     ?    104.4810+-4.0975        ? might be 1.0521x slower
   earley-boyer                                      50.8027+-5.2431           46.8940+-1.1379          might be 1.0834x faster
   raytrace                                          38.4038+-2.1993     ?     38.7084+-1.2356        ?
   regexp                                            73.6573+-1.7138     ?     75.7203+-2.8910        ? might be 1.0280x slower
   richards                                          81.2666+-1.6698           80.2183+-1.8725          might be 1.0131x faster
   splay                                             38.5478+-1.2985     ?     40.3443+-1.5701        ? might be 1.0466x slower

   <geometric>                                       59.1841+-1.1347     ?     59.7420+-0.5038        ? might be 1.0094x slower

                                                        TipOfTree             LessStructureWatch                                
Octane:
   encrypt                                           0.20510+-0.02170          0.20088+-0.00559         might be 1.0210x faster
   decrypt                                           3.27650+-0.04727    !     3.67617+-0.31735       ! definitely 1.1220x slower
   deltablue                                x2       0.18832+-0.00164    ?     0.19501+-0.01732       ? might be 1.0355x slower
   earley                                            0.36576+-0.02773          0.35302+-0.00466         might be 1.0361x faster
   boyer                                             5.07114+-0.02547    ?     5.10443+-0.04142       ?
   navier-stokes                            x2       5.17140+-0.03399          5.16601+-0.01560       
   raytrace                                 x2       1.33167+-0.10178          1.28104+-0.03330         might be 1.0395x faster
   richards                                 x2       0.12873+-0.00118    ?     0.13352+-0.00838       ? might be 1.0372x slower
   splay                                    x2       0.40113+-0.02583          0.38961+-0.00210         might be 1.0296x faster
   regexp                                   x2      28.98852+-0.40597         28.93964+-0.13554       
   pdfjs                                    x2      43.83459+-2.50410         43.29484+-0.38085         might be 1.0125x faster
   mandreel                                 x2      50.76422+-0.20888    ?    54.36650+-7.73432       ? might be 1.0710x slower
   gbemu                                    x2      43.24485+-2.31290    ?    44.98321+-2.78101       ? might be 1.0402x slower
   closure                                           0.65113+-0.00503    ?     0.65166+-0.00378       ?
   jquery                                            8.49246+-0.03971    ?     8.54967+-0.08024       ?
   box2d                                    x2      11.82865+-0.06466    ?    12.49122+-1.30953       ? might be 1.0560x slower
   zlib                                     x2     410.65862+-4.00610        404.23362+-21.33200        might be 1.0159x faster
   typescript                               x2     870.50635+-75.83536       828.46106+-9.43928         might be 1.0508x faster

   <geometric>                                       6.61909+-0.08027    ?     6.67138+-0.17849       ? might be 1.0079x slower

                                                        TipOfTree             LessStructureWatch                                
Kraken:
   ai-astar                                          224.887+-5.263      ?     231.021+-12.725        ? might be 1.0273x slower
   audio-beat-detection                               83.315+-1.660      !      94.806+-0.369         ! definitely 1.1379x slower
   audio-dft                                         125.911+-9.937      ^     110.391+-1.606         ^ definitely 1.1406x faster
   audio-fft                                          70.014+-1.022      ^      64.781+-3.270         ^ definitely 1.0808x faster
   audio-oscillator                                   76.182+-0.454             75.460+-0.305         
   imaging-darkroom                                  106.391+-2.891      ?     108.323+-1.695         ? might be 1.0182x slower
   imaging-desaturate                                 61.706+-2.050             61.529+-1.607         
   imaging-gaussian-blur                             109.728+-2.685      ?     114.715+-5.894         ? might be 1.0455x slower
   json-parse-financial                               47.380+-1.276      ?      48.601+-1.827         ? might be 1.0258x slower
   json-stringify-tinderbox                           28.749+-0.306      ?      29.402+-1.456         ? might be 1.0227x slower
   stanford-crypto-aes                                58.611+-1.759      ^      48.480+-0.598         ^ definitely 1.2090x faster
   stanford-crypto-ccm                                48.202+-1.612      ?      51.372+-3.241         ? might be 1.0658x slower
   stanford-crypto-pbkdf2                            106.632+-2.501            106.066+-2.901         
   stanford-crypto-sha256-iterative                   40.791+-0.363      ?      41.487+-1.906         ? might be 1.0171x slower

   <arithmetic>                                       84.893+-0.987             84.745+-0.869           might be 1.0017x faster

                                                        TipOfTree             LessStructureWatch                                
JSRegress:
   abc-forward-loop-equal                            48.3405+-0.9245     ?     50.0940+-1.7087        ? might be 1.0363x slower
   abc-postfix-backward-loop                         47.4878+-1.6631     ?     47.8584+-1.3720        ?
   abc-simple-backward-loop                          48.1587+-2.0777           46.9499+-0.8292          might be 1.0257x faster
   abc-simple-forward-loop                           46.7741+-0.7845     ?     48.7075+-1.2361        ? might be 1.0413x slower
   abc-skippy-loop                                   32.4596+-0.9315     ?     32.9892+-1.3566        ? might be 1.0163x slower
   abs-boolean                                        2.7691+-0.1298            2.7213+-0.0315          might be 1.0176x faster
   adapt-to-double-divide                            16.8504+-0.5739           16.7599+-0.3276        
   aliased-arguments-getbyval                         1.3698+-0.1387            1.3509+-0.0672          might be 1.0140x faster
   allocate-big-object                                2.9073+-0.1038     ?      2.9327+-0.2422        ?
   arguments-named-and-reflective                    12.8797+-1.2521           12.7474+-1.0642          might be 1.0104x faster
   arguments-out-of-bounds                           14.8479+-0.7553           14.8121+-0.7198        
   arguments-strict-mode                             11.1230+-0.5187     ?     11.3999+-0.6905        ? might be 1.0249x slower
   arguments                                          9.8373+-0.7584     ?     10.5935+-1.2710        ? might be 1.0769x slower
   arity-mismatch-inlining                            0.8660+-0.0103     ?      0.9559+-0.1521        ? might be 1.1037x slower
   array-access-polymorphic-structure                 7.3016+-1.1427            6.6178+-0.0914          might be 1.1033x faster
   array-nonarray-polymorhpic-access                 32.2613+-1.5771     ?     32.2992+-1.3625        ?
   array-prototype-every                             86.3294+-4.1039     ?     87.3959+-2.5206        ? might be 1.0124x slower
   array-prototype-forEach                           86.4007+-2.1480     ?     86.8593+-3.3469        ?
   array-prototype-map                               90.6401+-1.8938     ?     93.1960+-2.4045        ? might be 1.0282x slower
   array-prototype-reduce                            81.3490+-2.7375     ?     82.0975+-3.9773        ?
   array-prototype-reduceRight                       80.6288+-1.5897     ?     81.4907+-1.3159        ? might be 1.0107x slower
   array-prototype-some                              85.8645+-0.7847     ?     89.4358+-5.1633        ? might be 1.0416x slower
   array-splice-contiguous                           27.6963+-1.7120     ?     28.9174+-1.8956        ? might be 1.0441x slower
   array-with-double-add                              4.1775+-0.1663     ?      4.3733+-0.0764        ? might be 1.0469x slower
   array-with-double-increment                        3.3788+-0.1266            3.2551+-0.0583          might be 1.0380x faster
   array-with-double-mul-add                          5.0972+-0.1486     ?      5.3552+-0.3133        ? might be 1.0506x slower
   array-with-double-sum                              3.3119+-0.0361     ?      3.3553+-0.2029        ? might be 1.0131x slower
   array-with-int32-add-sub                           6.8461+-0.1081     !      7.6870+-0.6275        ! definitely 1.1228x slower
   array-with-int32-or-double-sum                     3.4391+-0.1402            3.3347+-0.0576          might be 1.0313x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     33.6542+-0.9186     ?     33.9839+-2.8628        ?
   ArrayBuffer-DataView-alloc-long-lived             14.9133+-1.7525           14.8058+-2.0645        
   ArrayBuffer-Int32Array-byteOffset                  3.8797+-0.1983     ?      4.0631+-0.4613        ? might be 1.0473x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     33.6844+-1.6781           33.2395+-1.8573          might be 1.0134x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.0958+-1.6262           22.1255+-1.4790          might be 1.0439x faster
   ArrayBuffer-Int8Array-alloc-long-lived            13.0559+-1.3382           12.9740+-1.3878        
   ArrayBuffer-Int8Array-alloc                       10.4607+-0.2983     ?     10.6589+-0.7607        ? might be 1.0190x slower
   asmjs_bool_bug                                    18.4232+-0.1870           18.4063+-0.2601        
   assign-custom-setter-polymorphic                   3.4801+-0.3691            3.1212+-0.0774          might be 1.1150x faster
   assign-custom-setter                               4.5088+-0.0327     ?      4.8233+-0.9591        ? might be 1.0698x slower
   basic-set                                          9.3953+-1.1427            8.7535+-0.2959          might be 1.0733x faster
   big-int-mul                                        4.4745+-0.1404     ?      4.5550+-0.3317        ? might be 1.0180x slower
   boolean-test                                       3.1600+-0.0696            3.1558+-0.0566        
   branch-fold                                        3.7701+-0.0479     ?      3.7707+-0.0586        ?
   branch-on-string-as-boolean                       21.4072+-1.9561     ?     21.7258+-1.4324        ? might be 1.0149x slower
   by-val-generic                                     8.3690+-0.6662            8.2297+-0.2701          might be 1.0169x faster
   call-spread-apply                                 34.1996+-0.8360           33.1855+-1.7437          might be 1.0306x faster
   call-spread-call                                  26.3342+-1.4858     ^     24.4244+-0.1490        ^ definitely 1.0782x faster
   captured-assignments                               0.4927+-0.0458     ?      0.4959+-0.0197        ?
   cast-int-to-double                                 5.4194+-0.2932     ?      5.8903+-1.4736        ? might be 1.0869x slower
   cell-argument                                      8.6364+-0.0652     ?      9.1039+-0.5295        ? might be 1.0541x slower
   cfg-simplify                                       2.8516+-0.1210     ?      2.8671+-0.0895        ?
   chain-getter-access                                9.1040+-0.1641     ?      9.3640+-0.1656        ? might be 1.0286x slower
   cmpeq-obj-to-obj-other                            12.1335+-0.5871           11.3286+-1.5747          might be 1.0710x faster
   constant-test                                      5.0347+-0.0346     ?      5.0382+-0.0314        ?
   create-lots-of-functions                          11.4736+-0.2060     ?     12.0877+-1.2819        ? might be 1.0535x slower
   cse-new-array-buffer                               2.4717+-0.0426     ?      2.5995+-0.2334        ? might be 1.0517x slower
   cse-new-array                                      2.6152+-0.0764     ?      2.6263+-0.0977        ?
   DataView-custom-properties                        39.7209+-2.1489           39.4158+-2.8636        
   delay-tear-off-arguments-strictmode               14.0009+-0.2025     ?     14.7386+-1.6191        ? might be 1.0527x slower
   deltablue-varargs                                210.3434+-1.3297     ?    212.4523+-3.0580        ? might be 1.0100x slower
   destructuring-arguments                          185.9067+-4.9362          184.7534+-5.3667        
   destructuring-parameters-overridden-by-function   
                                                      0.5616+-0.0405     ?      0.5846+-0.0430        ? might be 1.0408x slower
   destructuring-swap                                 5.3404+-0.6263            5.1846+-0.1409          might be 1.0301x faster
   direct-arguments-getbyval                          1.3655+-0.1004     ?      1.3945+-0.0865        ? might be 1.0212x slower
   div-boolean-double                                 5.2530+-0.0224     ?      5.2558+-0.0094        ?
   div-boolean                                        7.8345+-0.0428     ?      7.8730+-0.1230        ?
   double-get-by-val-out-of-bounds                    4.7488+-0.3306            4.5685+-0.0658          might be 1.0395x faster
   double-pollution-getbyval                          8.9047+-0.0892     ?      8.9552+-0.1158        ?
   double-pollution-putbyoffset                       4.3383+-0.0744            4.3148+-0.0449        
   double-real-use                                   30.3134+-1.4338           30.0185+-1.1378        
   double-to-int32-typed-array-no-inline              2.4014+-0.1634            2.2999+-0.1303          might be 1.0441x faster
   double-to-int32-typed-array                        1.9653+-0.0731     ?      2.0146+-0.0876        ? might be 1.0251x slower
   double-to-uint32-typed-array-no-inline             2.4443+-0.0523            2.4092+-0.1140          might be 1.0146x faster
   double-to-uint32-typed-array                       2.0063+-0.0262     ?      2.0303+-0.0407        ? might be 1.0120x slower
   elidable-new-object-dag                           44.6658+-2.3256           43.9074+-1.4137          might be 1.0173x faster
   elidable-new-object-roflcopter                    41.0866+-2.1818     ?     44.0594+-2.2833        ? might be 1.0724x slower
   elidable-new-object-then-call                     40.2358+-1.5436           39.7164+-1.2734          might be 1.0131x faster
   elidable-new-object-tree                          46.6766+-2.8579           45.8627+-2.5087          might be 1.0177x faster
   empty-string-plus-int                              5.4469+-0.1372     ?      5.5065+-0.2215        ? might be 1.0109x slower
   emscripten-cube2hash                              37.5732+-1.0407     ?     39.2656+-1.5837        ? might be 1.0450x slower
   exit-length-on-plain-object                       13.9823+-0.9128           13.8151+-0.5297          might be 1.0121x faster
   external-arguments-getbyval                        1.3850+-0.0948            1.3263+-0.0921          might be 1.0442x faster
   external-arguments-putbyval                        2.4213+-0.0312            2.3966+-0.0675          might be 1.0103x faster
   fixed-typed-array-storage-var-index                1.2509+-0.0501     ?      1.2886+-0.1503        ? might be 1.0302x slower
   fixed-typed-array-storage                          0.9204+-0.0378     ?      0.9445+-0.0256        ? might be 1.0261x slower
   Float32Array-matrix-mult                           4.6971+-0.2428            4.6730+-0.2614        
   Float32Array-to-Float64Array-set                  55.1767+-0.5818     ?     56.0119+-1.6740        ? might be 1.0151x slower
   Float64Array-alloc-long-lived                     67.7380+-1.3591     ?     69.7845+-1.1958        ? might be 1.0302x slower
   Float64Array-to-Int16Array-set                    69.5137+-1.7439           69.2252+-4.7627        
   fold-double-to-int                                21.7250+-0.3580     ^     14.0004+-0.2098        ^ definitely 1.5517x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.1942+-1.2216     ?     10.5524+-1.1039        ? might be 1.0351x slower
   fold-get-by-id-to-multi-get-by-offset             10.3482+-0.8848     ?     10.3813+-1.2093        ?
   fold-multi-get-by-offset-to-get-by-offset   
                                                     10.0127+-0.7269            9.9585+-1.3735        
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.3042+-0.8757     ?     10.1222+-1.3023        ? might be 1.0879x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     10.1766+-0.9495            9.9465+-1.0505          might be 1.0231x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.7222+-1.6288     ?      8.0459+-0.7643        ? might be 1.0419x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.1882+-0.3178           10.0451+-0.4474          might be 1.0142x faster
   fold-put-by-id-to-multi-put-by-offset              9.4494+-1.1258     ?      9.5878+-1.2124        ? might be 1.0146x slower
   fold-put-structure                                 7.2207+-1.1319            6.8265+-1.5513          might be 1.0577x faster
   for-of-iterate-array-entries                      12.6816+-0.1925     ?     13.2106+-0.7904        ? might be 1.0417x slower
   for-of-iterate-array-keys                          4.2450+-0.6982            3.9635+-0.2098          might be 1.0710x faster
   for-of-iterate-array-values                        3.9067+-0.2512     ?      4.0115+-0.4061        ? might be 1.0268x slower
   fround                                            22.0250+-1.2537     ?     22.0979+-0.7831        ?
   ftl-library-inlining-dataview                     72.5578+-2.0265     ^     65.2876+-0.2983        ^ definitely 1.1114x faster
   ftl-library-inlining                              79.7553+-21.5892    ?     99.8196+-18.2658       ? might be 1.2516x slower
   function-dot-apply                                 2.2688+-0.1065            2.2149+-0.0401          might be 1.0243x faster
   function-test                                      2.9415+-0.0807     ?      3.1879+-0.3822        ? might be 1.0838x slower
   function-with-eval                               111.6179+-8.3537          109.8148+-4.6659          might be 1.0164x faster
   gcse-poly-get-less-obvious                        19.8890+-2.4131           18.4138+-0.6657          might be 1.0801x faster
   gcse-poly-get                                     20.5902+-1.4093     ?     22.3546+-1.7559        ? might be 1.0857x slower
   gcse                                               4.6088+-0.2608            4.4196+-0.0991          might be 1.0428x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7666+-0.0661     ?      2.8020+-0.1058        ? might be 1.0128x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.1010+-0.2172            6.0885+-0.2047        
   get-by-id-chain-from-try-block                     7.9062+-1.2726     ?      7.9588+-1.4001        ?
   get-by-id-check-structure-elimination              5.1049+-0.0059     ?      5.1616+-0.0880        ? might be 1.0111x slower
   get-by-id-proto-or-self                           19.4415+-1.3761           18.7145+-1.4080          might be 1.0388x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.1227+-0.3385            2.9750+-0.0130          might be 1.0497x faster
   get-by-id-self-or-proto                           18.6690+-1.8447           18.1394+-0.8593          might be 1.0292x faster
   get-by-val-out-of-bounds                           4.5388+-0.2621            4.4763+-0.0546          might be 1.0140x faster
   get_callee_monomorphic                             2.6238+-0.0585     ?      2.6285+-0.1065        ?
   get_callee_polymorphic                             4.6641+-0.3541     ?      4.6716+-0.5170        ?
   getter-no-activation                               5.0630+-0.3238     ?      5.2603+-0.3418        ? might be 1.0390x slower
   getter-prototype                                  15.4043+-1.0025           15.1630+-0.9022          might be 1.0159x faster
   getter-richards                                  123.6832+-5.9593     !    139.5712+-4.1627        ! definitely 1.1285x slower
   getter                                             5.5053+-0.4304     ?      5.8374+-0.5288        ? might be 1.0603x slower
   global-var-const-infer-fire-from-opt               1.0417+-0.1523            1.0343+-0.0822        
   global-var-const-infer                             0.9366+-0.0993            0.8051+-0.0365          might be 1.1632x faster
   HashMap-put-get-iterate-keys                      30.1650+-1.3800     ?     30.6547+-1.2366        ? might be 1.0162x slower
   HashMap-put-get-iterate                           32.5795+-0.7979           31.8463+-1.0586          might be 1.0230x faster
   HashMap-string-put-get-iterate                    27.5124+-0.3935     ?     31.1201+-4.2986        ? might be 1.1311x slower
   hoist-make-rope                                   12.6400+-0.7711     ?     13.2265+-1.4117        ? might be 1.0464x slower
   hoist-poly-check-structure-effectful-loop   
                                                      5.1881+-0.2145            5.1306+-0.0636          might be 1.0112x faster
   hoist-poly-check-structure                         3.7367+-0.0695            3.7098+-0.0526        
   imul-double-only                                   8.5817+-0.1430            8.4288+-0.0660          might be 1.0182x faster
   imul-int-only                                     10.1762+-0.8148     ?     10.5550+-0.1369        ? might be 1.0372x slower
   imul-mixed                                         8.5520+-0.3533     ?      8.6520+-0.3041        ? might be 1.0117x slower
   in-four-cases                                     22.6610+-0.1925     ?     22.8815+-0.2874        ?
   in-one-case-false                                 10.9951+-0.0709     ?     11.0380+-0.0661        ?
   in-one-case-true                                  11.5573+-0.9562           11.1200+-0.1343          might be 1.0393x faster
   in-two-cases                                      11.4033+-0.1359     ?     11.4886+-0.2123        ?
   indexed-properties-in-objects                      3.3034+-0.3586            3.1808+-0.2312          might be 1.0385x faster
   infer-closure-const-then-mov-no-inline             3.8875+-0.0980     ?      4.0560+-0.1742        ? might be 1.0434x slower
   infer-closure-const-then-mov                      19.9094+-0.3411     ?     19.9361+-0.5371        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     12.8010+-0.2880     ?     13.1810+-1.6167        ? might be 1.0297x slower
   infer-closure-const-then-put-to-scope             22.2561+-0.9632           21.6392+-1.2462          might be 1.0285x faster
   infer-closure-const-then-reenter-no-inline   
                                                     54.6941+-1.1902     ?     54.9567+-1.6102        ?
   infer-closure-const-then-reenter                  23.8452+-1.6407           22.5894+-1.9362          might be 1.0556x faster
   infer-constant-global-property                     3.6687+-0.1236            3.5728+-0.0716          might be 1.0268x faster
   infer-constant-property                            2.8294+-0.2032     ?      2.8389+-0.1959        ?
   infer-one-time-closure-ten-vars                   12.6018+-0.2912     ?     13.2776+-0.9421        ? might be 1.0536x slower
   infer-one-time-closure-two-vars                   12.6864+-1.4584     ?     13.3404+-1.3529        ? might be 1.0515x slower
   infer-one-time-closure                            12.2503+-0.3002     ?     12.4725+-0.8917        ? might be 1.0181x slower
   infer-one-time-deep-closure                       22.1427+-0.8174     ?     22.4632+-1.9483        ? might be 1.0145x slower
   inline-arguments-access                            4.3821+-0.1074     ?      4.6119+-0.4631        ? might be 1.0524x slower
   inline-arguments-aliased-access                    4.3227+-0.0527     ?      4.3555+-0.0750        ?
   inline-arguments-local-escape                      4.4083+-0.1273     ?      4.4362+-0.2098        ?
   inline-get-scoped-var                              4.8788+-0.2060            4.7977+-0.2027          might be 1.0169x faster
   inlined-put-by-id-transition                      11.9447+-0.4799           11.9095+-0.6141        
   int-or-other-abs-then-get-by-val                   5.1892+-0.3972            5.1235+-0.0507          might be 1.0128x faster
   int-or-other-abs-zero-then-get-by-val             18.4204+-1.4140     ?     19.3807+-2.2297        ? might be 1.0521x slower
   int-or-other-add-then-get-by-val                   4.3844+-0.0573     ?      4.4990+-0.0637        ? might be 1.0261x slower
   int-or-other-add                                   5.3757+-0.0486     ?      5.5550+-0.4599        ? might be 1.0334x slower
   int-or-other-div-then-get-by-val                   4.2679+-0.0157     ?      4.3127+-0.0885        ? might be 1.0105x slower
   int-or-other-max-then-get-by-val                   4.3482+-0.0653     !      4.5822+-0.0268        ! definitely 1.0538x slower
   int-or-other-min-then-get-by-val                   4.3873+-0.0993     !      4.6156+-0.0845        ! definitely 1.0520x slower
   int-or-other-mod-then-get-by-val                   3.9337+-0.0909     !      4.0893+-0.0601        ! definitely 1.0395x slower
   int-or-other-mul-then-get-by-val                   3.9138+-0.0936     ?      4.0237+-0.1038        ? might be 1.0281x slower
   int-or-other-neg-then-get-by-val                   4.7963+-0.0082     !      4.9216+-0.0182        ! definitely 1.0261x slower
   int-or-other-neg-zero-then-get-by-val             18.2139+-0.9379           18.0904+-0.5225        
   int-or-other-sub-then-get-by-val                   4.4143+-0.0908     ?      4.8241+-0.4217        ? might be 1.0928x slower
   int-or-other-sub                                   3.8247+-0.6661            3.6174+-0.0651          might be 1.0573x faster
   int-overflow-local                                 4.7767+-0.3405            4.5386+-0.0318          might be 1.0525x faster
   Int16Array-alloc-long-lived                       50.1576+-1.8614     ?     52.2330+-1.7054        ? might be 1.0414x slower
   Int16Array-bubble-sort-with-byteLength            15.4970+-1.0450           14.8652+-0.1124          might be 1.0425x faster
   Int16Array-bubble-sort                            16.1476+-0.1556     ?     16.3827+-0.5676        ? might be 1.0146x slower
   Int16Array-load-int-mul                            1.5099+-0.0131     ?      1.5315+-0.0292        ? might be 1.0143x slower
   Int16Array-to-Int32Array-set                      56.7033+-2.1214           55.7533+-2.0105          might be 1.0170x faster
   Int32Array-alloc-large                            24.3910+-1.0048     ?     25.1339+-2.2298        ? might be 1.0305x slower
   Int32Array-alloc-long-lived                       55.0893+-1.4605     ?     57.0154+-1.8365        ? might be 1.0350x slower
   Int32Array-alloc                                   3.4636+-0.2158     ?      3.6801+-0.6140        ? might be 1.0625x slower
   Int32Array-Int8Array-view-alloc                    7.3653+-1.1424            6.9337+-0.7404          might be 1.0623x faster
   int52-spill                                        5.4679+-0.2776            5.3627+-0.0803          might be 1.0196x faster
   Int8Array-alloc-long-lived                        45.3115+-1.7084     ?     46.6406+-1.4425        ? might be 1.0293x slower
   Int8Array-load-with-byteLength                     3.4043+-0.1144            3.4031+-0.0663        
   Int8Array-load                                     3.4106+-0.0910     ?      3.4490+-0.1814        ? might be 1.0113x slower
   integer-divide                                    10.9975+-0.1070     ?     11.0905+-0.1447        ?
   integer-modulo                                     2.1273+-0.0632            2.0559+-0.0292          might be 1.0347x faster
   is-boolean-fold-tricky                             4.4999+-0.0662     ?      4.5500+-0.1009        ? might be 1.0111x slower
   is-boolean-fold                                    2.8871+-0.0402     ?      2.9174+-0.0614        ? might be 1.0105x slower
   is-function-fold-tricky-internal-function   
                                                     12.4300+-0.9524     ?     12.6215+-1.0903        ? might be 1.0154x slower
   is-function-fold-tricky                            4.6135+-0.1284     ?      4.7167+-0.1681        ? might be 1.0224x slower
   is-function-fold                                   2.9994+-0.1079     ?      3.0037+-0.1665        ?
   is-number-fold-tricky                              4.4633+-0.0465     ?      4.4836+-0.0654        ?
   is-number-fold                                     2.9085+-0.0361     ?      2.9603+-0.1128        ? might be 1.0178x slower
   is-object-or-null-fold-functions                   2.9880+-0.0882     ?      3.0162+-0.1683        ?
   is-object-or-null-fold-less-tricky                 4.6233+-0.1548            4.6093+-0.1244        
   is-object-or-null-fold-tricky                      6.6365+-0.0144     ?      6.6519+-0.0303        ?
   is-object-or-null-fold                             3.0125+-0.2175            2.9523+-0.0653          might be 1.0204x faster
   is-object-or-null-trickier-function                4.6466+-0.0446     ?      4.7401+-0.1598        ? might be 1.0201x slower
   is-object-or-null-trickier-internal-function   
                                                     12.6354+-0.1936           12.4617+-0.0901          might be 1.0139x faster
   is-object-or-null-tricky-function                  4.7555+-0.2383            4.7487+-0.2805        
   is-object-or-null-tricky-internal-function   
                                                      9.4792+-0.2479            9.3185+-0.0787          might be 1.0172x faster
   is-string-fold-tricky                              4.6121+-0.1573            4.5189+-0.0819          might be 1.0206x faster
   is-string-fold                                     2.8739+-0.0255     ?      2.8942+-0.0318        ?
   is-undefined-fold-tricky                           3.8897+-0.1908            3.7559+-0.0401          might be 1.0356x faster
   is-undefined-fold                                  3.0341+-0.2890            2.9309+-0.1269          might be 1.0352x faster
   large-int-captured                                 4.6799+-0.0343            4.6767+-0.1038        
   large-int-neg                                     17.0731+-1.7044           16.5523+-0.7575          might be 1.0315x faster
   large-int                                         15.7759+-1.2744     ?     16.1302+-2.9965        ? might be 1.0225x slower
   load-varargs-elimination                          23.2935+-0.7354     ?     24.0074+-1.2142        ? might be 1.0307x slower
   logical-not-weird-types                            3.3803+-0.0488            3.3507+-0.0545        
   logical-not                                        4.9637+-0.3913            4.6570+-0.0326          might be 1.0659x faster
   lots-of-fields                                    13.0452+-1.5092           12.6518+-0.9796          might be 1.0311x faster
   make-indexed-storage                               3.0696+-0.2846     ?      3.2266+-0.0714        ? might be 1.0512x slower
   make-rope-cse                                      5.2536+-0.7473            4.7863+-0.4537          might be 1.0976x faster
   marsaglia-larger-ints                             37.3686+-0.8561           36.7177+-0.8559          might be 1.0177x faster
   marsaglia-osr-entry                               23.9230+-1.0254           23.1003+-0.6527          might be 1.0356x faster
   math-with-out-of-bounds-array-values              24.1257+-0.7051     ?     25.0756+-1.7214        ? might be 1.0394x slower
   max-boolean                                        2.6456+-0.3066            2.5506+-0.0329          might be 1.0373x faster
   method-on-number                                  17.0938+-0.2571     ?     17.1762+-0.4854        ?
   min-boolean                                        2.5300+-0.0211     ?      2.6252+-0.0839        ? might be 1.0376x slower
   minus-boolean-double                               3.2243+-0.0821            3.1813+-0.0220          might be 1.0135x faster
   minus-boolean                                      2.3972+-0.1061     ?      2.4472+-0.1425        ? might be 1.0208x slower
   misc-strict-eq                                    38.9596+-3.4730           38.4998+-1.8153          might be 1.0119x faster
   mod-boolean-double                                11.2698+-0.8989           10.9022+-0.0687          might be 1.0337x faster
   mod-boolean                                        7.8662+-0.0162     ?      7.9135+-0.0910        ?
   mul-boolean-double                                 3.7852+-0.1000            3.7749+-0.0981        
   mul-boolean                                        2.9653+-0.0306     ?      3.1378+-0.2990        ? might be 1.0582x slower
   neg-boolean                                        3.2292+-0.0381     ?      3.2455+-0.1185        ?
   negative-zero-divide                               0.3931+-0.0363            0.3893+-0.0094        
   negative-zero-modulo                               0.3884+-0.0565     ?      0.4022+-0.0247        ? might be 1.0355x slower
   negative-zero-negate                               0.3598+-0.0173     ?      0.3670+-0.0197        ? might be 1.0199x slower
   nested-function-parsing                           46.9522+-1.4050     ?     47.6545+-3.3242        ? might be 1.0150x slower
   new-array-buffer-dead                            112.9753+-2.8578          112.5961+-1.5643        
   new-array-buffer-push                              7.1798+-0.8359            7.1330+-0.6552        
   new-array-dead                                    19.6617+-1.4564           19.6220+-0.7215        
   new-array-push                                     3.9685+-0.1662     ?      4.1674+-0.4725        ? might be 1.0501x slower
   no-inline-constructor                             39.9917+-1.6603     ?     41.8111+-1.5268        ? might be 1.0455x slower
   number-test                                        3.0924+-0.0305     ?      3.1864+-0.1515        ? might be 1.0304x slower
   object-closure-call                                5.7633+-0.1490     ?      5.9495+-0.4601        ? might be 1.0323x slower
   object-test                                        2.9129+-0.0545     ?      2.9189+-0.0746        ?
   obvious-sink-pathology-taken                     140.5435+-1.8323     ?    140.8996+-2.9978        ?
   obvious-sink-pathology                           132.3804+-1.4559     ?    132.8220+-1.9026        ?
   obviously-elidable-new-object                     35.1048+-1.6209     ?     35.2808+-1.4862        ?
   plus-boolean-arith                                 2.6433+-0.1278            2.5697+-0.0804          might be 1.0286x faster
   plus-boolean-double                                3.2773+-0.1319            3.2723+-0.1128        
   plus-boolean                                       2.4303+-0.0322     ?      2.4583+-0.0983        ? might be 1.0115x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.3781+-0.1442     ?      3.5102+-0.0643        ? might be 1.0391x slower
   poly-chain-access-different-prototypes             2.6487+-0.0209     !      2.8100+-0.0127        ! definitely 1.0609x slower
   poly-chain-access-simpler                          3.3322+-0.0620            3.2758+-0.0442          might be 1.0172x faster
   poly-chain-access                                  2.6578+-0.1009     ?      2.6924+-0.0385        ? might be 1.0130x slower
   poly-stricteq                                     64.9640+-3.4025           63.8271+-3.3429          might be 1.0178x faster
   polymorphic-array-call                             1.4567+-0.1102            1.4115+-0.1392          might be 1.0321x faster
   polymorphic-get-by-id                              3.2250+-0.1927            3.2184+-0.2353        
   polymorphic-put-by-id                             32.4667+-3.0209           31.7050+-3.4762          might be 1.0240x faster
   polymorphic-structure                             15.1971+-0.7389     ?     15.5217+-1.2884        ? might be 1.0214x slower
   polyvariant-monomorphic-get-by-id                  8.9262+-0.6762            8.5732+-0.1635          might be 1.0412x faster
   proto-getter-access                                9.2377+-0.2042     ?      9.3940+-0.5664        ? might be 1.0169x slower
   put-by-id-replace-and-transition                   9.4395+-0.2014     ?      9.6689+-0.3086        ? might be 1.0243x slower
   put-by-id-slightly-polymorphic                     2.9012+-0.1288            2.8654+-0.0270          might be 1.0125x faster
   put-by-id                                         12.5905+-0.3854           12.5284+-0.2200        
   put-by-val-direct                                  0.3824+-0.0079     ?      0.4017+-0.0426        ? might be 1.0503x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.8570+-0.1009     ?      6.4388+-1.0312        ? might be 1.0993x slower
   put-by-val-machine-int                             2.7626+-0.0741     ?      2.8300+-0.1438        ? might be 1.0244x slower
   rare-osr-exit-on-local                            15.5280+-0.8577           15.4103+-0.6056        
   register-pressure-from-osr                        21.4495+-0.2445     ?     21.7596+-0.4589        ? might be 1.0145x slower
   repeat-multi-get-by-offset                        24.6664+-0.6563     ?     25.0372+-1.7643        ? might be 1.0150x slower
   setter-prototype                                  10.3833+-0.1410     !     10.7570+-0.1390        ! definitely 1.0360x slower
   setter                                             6.4519+-0.7876            6.2095+-0.7401          might be 1.0390x faster
   simple-activation-demo                            28.0876+-5.7720     ?     30.0220+-0.4393        ? might be 1.0689x slower
   simple-getter-access                              11.8186+-0.1738     ?     11.8603+-0.2008        ?
   simple-poly-call-nested                            8.0846+-0.1952     ?      8.2104+-0.4552        ? might be 1.0156x slower
   simple-poly-call                                   1.3093+-0.0503     ?      1.3368+-0.0528        ? might be 1.0210x slower
   sin-boolean                                       23.1127+-0.7796     ?     23.4304+-0.6941        ? might be 1.0137x slower
   singleton-scope                                   67.2503+-3.4719           62.8533+-1.6357          might be 1.0700x faster
   sink-function                                     12.1202+-0.9729           11.5935+-0.2850          might be 1.0454x faster
   sink-huge-activation                              19.0632+-1.1807     ?     19.9572+-1.3837        ? might be 1.0469x slower
   sinkable-new-object-dag                           70.9187+-2.9037           70.9089+-2.5389        
   sinkable-new-object-taken                         50.4895+-2.3767     ?     53.1172+-3.5277        ? might be 1.0520x slower
   sinkable-new-object                               39.1584+-1.1630           38.5725+-2.2639          might be 1.0152x faster
   slow-array-profile-convergence                     3.0636+-0.3641            2.9423+-0.1772          might be 1.0412x faster
   slow-convergence                                   2.7358+-0.0963     ?      2.7961+-0.1537        ? might be 1.0220x slower
   slow-ternaries                                    21.0726+-2.5922           19.1271+-0.2138          might be 1.1017x faster
   sorting-benchmark                                 18.7625+-0.3978     ?     19.2502+-0.7867        ? might be 1.0260x slower
   sparse-conditional                                 1.2416+-0.0578     ?      1.2738+-0.1991        ? might be 1.0260x slower
   splice-to-remove                                  16.1678+-1.4137     ?     16.2233+-1.6536        ?
   string-char-code-at                               15.9320+-0.2150     !     18.3215+-0.9348        ! definitely 1.1500x slower
   string-concat-object                               2.5597+-0.2120     ?      2.6215+-0.1253        ? might be 1.0241x slower
   string-concat-pair-object                          2.4418+-0.0926     ?      2.6075+-0.1874        ? might be 1.0679x slower
   string-concat-pair-simple                         12.0586+-0.9672     ?     12.6786+-1.1060        ? might be 1.0514x slower
   string-concat-simple                              12.2458+-0.7470     ?     12.5280+-1.1894        ? might be 1.0230x slower
   string-cons-repeat                                 8.1286+-0.7772     ?      8.5222+-0.9763        ? might be 1.0484x slower
   string-cons-tower                                  8.3689+-0.9411            8.0775+-0.5381          might be 1.0361x faster
   string-equality                                   19.5255+-1.3091     !     22.4263+-1.2145        ! definitely 1.1486x slower
   string-get-by-val-big-char                         7.1906+-0.0562     ?      7.2238+-0.0675        ?
   string-get-by-val-out-of-bounds-insane             3.7390+-0.0563     ?      4.0947+-0.6026        ? might be 1.0951x slower
   string-get-by-val-out-of-bounds                    5.3212+-0.1717            5.3186+-0.1061        
   string-get-by-val                                  3.5747+-0.1545            3.4598+-0.0372          might be 1.0332x faster
   string-hash                                        2.2757+-0.1936            2.2122+-0.0452          might be 1.0287x faster
   string-long-ident-equality                        17.1272+-0.1651     ^     14.8700+-0.1009        ^ definitely 1.1518x faster
   string-out-of-bounds                              14.9543+-0.2853           14.8764+-0.3766        
   string-repeat-arith                               36.6907+-3.3980           33.0738+-1.9988          might be 1.1094x faster
   string-sub                                        71.5992+-3.4570           67.0611+-6.1493          might be 1.0677x faster
   string-test                                        2.9843+-0.0267     ?      3.0304+-0.1127        ? might be 1.0154x slower
   string-var-equality                               35.4065+-1.2574           35.2086+-1.6646        
   structure-hoist-over-transitions                   2.6947+-0.0298     ?      2.7899+-0.1179        ? might be 1.0353x slower
   substring-concat-weird                            42.3701+-1.4398     ?     42.7102+-1.8789        ?
   substring-concat                                  45.8681+-2.7936           45.3753+-1.9612          might be 1.0109x faster
   substring                                         50.1287+-0.8952           49.2222+-1.6751          might be 1.0184x faster
   switch-char-constant                               2.7830+-0.0332            2.7803+-0.0384        
   switch-char                                        7.0155+-0.8930     ?      7.1380+-1.8247        ? might be 1.0175x slower
   switch-constant                                    8.3713+-0.4883            8.1588+-0.2428          might be 1.0260x faster
   switch-string-basic-big-var                       18.5824+-0.6848     ?     18.8724+-0.8379        ? might be 1.0156x slower
   switch-string-basic-big                           14.9683+-0.2187     ?     14.9751+-0.1675        ?
   switch-string-basic-var                           17.0731+-3.6567           15.5461+-0.5215          might be 1.0982x faster
   switch-string-basic                               14.2386+-0.6586     ?     14.2861+-0.7376        ?
   switch-string-big-length-tower-var                21.1213+-1.2706           21.0815+-1.0561        
   switch-string-length-tower-var                    15.5339+-0.2845           15.4727+-0.1779        
   switch-string-length-tower                        13.1515+-0.1575     ?     13.5460+-1.1197        ? might be 1.0300x slower
   switch-string-short                               13.2684+-0.7183     ?     13.3495+-0.2605        ?
   switch                                            11.9993+-0.2056     ?     12.0730+-0.2002        ?
   tear-off-arguments-simple                          3.4247+-0.0412     ?      3.4298+-0.0532        ?
   tear-off-arguments                                 4.7138+-0.1395     ?      4.8346+-0.3148        ? might be 1.0256x slower
   temporal-structure                                13.2530+-1.3000     ?     13.4786+-0.7828        ? might be 1.0170x slower
   to-int32-boolean                                  13.8994+-0.1961     ?     14.5888+-1.2472        ? might be 1.0496x slower
   try-catch-get-by-val-cloned-arguments             16.4914+-2.0129           16.0187+-1.8425          might be 1.0295x faster
   try-catch-get-by-val-direct-arguments              8.4675+-1.1870     ?      8.6473+-1.2411        ? might be 1.0212x slower
   try-catch-get-by-val-scoped-arguments              9.2049+-1.3204            8.1907+-0.4049          might be 1.1238x faster
   typed-array-get-set-by-val-profiling              28.1844+-0.5934     ?     28.9991+-1.2057        ? might be 1.0289x slower
   undefined-property-access                        354.5211+-19.9354         352.6212+-1.0323        
   undefined-test                                     3.1218+-0.0545     ?      3.1640+-0.1271        ? might be 1.0135x slower
   unprofiled-licm                                   23.1300+-0.6819     ?     23.5238+-1.3819        ? might be 1.0170x slower
   varargs-call                                      15.0773+-0.3464           14.7732+-0.7161          might be 1.0206x faster
   varargs-construct-inline                          28.6868+-1.3515           28.2830+-0.3583          might be 1.0143x faster
   varargs-construct                                 23.0296+-0.8713           22.5411+-0.5434          might be 1.0217x faster
   varargs-inline                                     9.4223+-0.0984            9.3025+-0.1248          might be 1.0129x faster
   varargs-strict-mode                               10.0506+-0.1103     ?     11.3258+-1.1716        ? might be 1.1269x slower
   varargs                                           10.1463+-0.3761     ?     10.4347+-0.3233        ? might be 1.0284x slower
   weird-inlining-const-prop                          2.5173+-0.2807            2.5020+-0.0717        

   <geometric>                                        9.1171+-0.0199     !      9.1552+-0.0172        ! definitely 1.0042x slower

                                                        TipOfTree             LessStructureWatch                                
AsmBench:
   bigfib.cpp                                       503.6298+-5.6343     ?    504.2080+-3.1340        ?
   cray.c                                           430.4480+-1.9480     ?    472.1991+-87.4661       ? might be 1.0970x slower
   dry.c                                            484.1921+-6.5212     ?    486.8872+-24.2799       ?
   FloatMM.c                                        734.4881+-32.0133         726.2287+-4.7405          might be 1.0114x faster
   gcc-loops.cpp                                   4076.8969+-10.9175    ?   4088.4528+-15.9339       ?
   n-body.c                                         991.4264+-35.1756         985.3775+-3.5226        
   Quicksort.c                                      423.3005+-2.1988     ?    424.7591+-4.5747        ?
   stepanov_container.cpp                          3603.8615+-14.5222    !   3641.6653+-9.5770        ! definitely 1.0105x slower
   Towers.c                                         262.3090+-12.1583    ?    269.2625+-8.6790        ? might be 1.0265x slower

   <geometric>                                      793.3432+-9.1167     ?    803.5950+-17.7223       ? might be 1.0129x slower

                                                        TipOfTree             LessStructureWatch                                
CompressionBench:
   huffman                                           58.0979+-2.4470           57.6393+-3.1458        
   arithmetic-simple                                338.2108+-4.0452     ?    338.8903+-2.3691        ?
   arithmetic-precise                               278.5265+-3.0120     ?    281.5090+-8.9300        ? might be 1.0107x slower
   arithmetic-complex-precise                       275.8210+-3.2094          274.9501+-2.1246        
   arithmetic-precise-order-0                       344.1038+-2.7765     ?    347.6334+-4.6079        ? might be 1.0103x slower
   arithmetic-precise-order-1                       336.6047+-6.4068          335.3737+-16.2832       
   arithmetic-precise-order-2                       365.7611+-4.6379     ?    368.5050+-5.2441        ?
   arithmetic-simple-order-1                        399.5012+-1.5025     ?    399.8178+-4.7706        ?
   arithmetic-simple-order-2                        442.9215+-4.7786     ?    448.7936+-3.2136        ? might be 1.0133x slower
   lz-string                                        314.1816+-4.5319     ?    315.3893+-7.9443        ?

   <geometric>                                      285.1320+-2.0936     ?    286.0359+-1.6772        ? might be 1.0032x slower

                                                        TipOfTree             LessStructureWatch                                
Geomean of preferred means:
   <scaled-result>                                   60.0311+-0.2154     ?     60.4370+-0.4389        ? might be 1.0068x slower
Comment 3 Filip Pizlo 2015-07-17 14:29:02 PDT
I removed the propertyless object restriction.  This makes this a speed-up.


Benchmark report for SunSpider, Octane, Kraken, and AsmBench on dethklok (MacBookPro9,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186953)
"LessStructureWatch" at /Volumes/Data/pizlo/quartary/OpenSource/WebKitBuild/Release/jsc (r186953)

Collected 20 samples per benchmark/VM, with 20 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to
get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                TipOfTree             LessStructureWatch                                
SunSpider:
   3d-cube                                    5.1957+-0.0829            5.1778+-0.0757        
   3d-morph                                   6.0407+-0.2317     ?      6.0629+-0.2217        ?
   3d-raytrace                                6.5680+-0.1624            6.4695+-0.0475          might be 1.0152x faster
   access-binary-trees                        2.4007+-0.0952            2.3955+-0.0703        
   access-fannkuch                            6.3869+-0.2364     ^      6.0495+-0.0702        ^ definitely 1.0558x faster
   access-nbody                               3.1385+-0.1642            3.0564+-0.1273          might be 1.0268x faster
   access-nsieve                              3.3853+-0.1232     ?      3.4073+-0.1182        ?
   bitops-3bit-bits-in-byte                   1.7606+-0.0964            1.6811+-0.0731          might be 1.0473x faster
   bitops-bits-in-byte                        3.8760+-0.1386            3.7545+-0.0950          might be 1.0323x faster
   bitops-bitwise-and                         2.2837+-0.1033     ?      2.4570+-0.1225        ? might be 1.0759x slower
   bitops-nsieve-bits                         3.2774+-0.0984     ?      3.2997+-0.0993        ?
   controlflow-recursive                      2.3644+-0.1017            2.3567+-0.0754        
   crypto-aes                                 4.7257+-0.1941            4.6290+-0.0868          might be 1.0209x faster
   crypto-md5                                 3.1641+-0.0931     ^      2.8708+-0.0550        ^ definitely 1.1021x faster
   crypto-sha1                                2.8622+-0.0861            2.8127+-0.1033          might be 1.0176x faster
   date-format-tofte                          9.3500+-0.1024     ?      9.4179+-0.2162        ?
   date-format-xparb                          5.8781+-0.2600     ?      5.9150+-0.1936        ?
   math-cordic                                3.2219+-0.1128            3.1266+-0.0670          might be 1.0305x faster
   math-partial-sums                          5.7603+-0.2957     ?      5.8969+-0.3617        ? might be 1.0237x slower
   math-spectral-norm                         2.0727+-0.0646            2.0707+-0.0343        
   regexp-dna                                 7.9452+-0.5589            7.6807+-0.4442          might be 1.0344x faster
   string-base64                              5.1536+-0.2554     ?      5.1944+-0.3421        ?
   string-fasta                               6.6033+-0.1466     ?      6.7071+-0.1119        ? might be 1.0157x slower
   string-tagcloud                           10.0388+-0.4808     ?     10.0757+-0.4228        ?
   string-unpack-code                        21.5384+-0.4560           21.3765+-0.5848        
   string-validate-input                      5.2088+-0.1267     ?      5.2134+-0.0512        ?

   <arithmetic>                               5.3923+-0.0412            5.3521+-0.0364          might be 1.0075x faster

                                                TipOfTree             LessStructureWatch                                
Octane:
   encrypt                                   0.19597+-0.00139    ^     0.19276+-0.00107       ^ definitely 1.0167x faster
   decrypt                                   3.29700+-0.02358    ?     3.30697+-0.02632       ?
   deltablue                        x2       0.18872+-0.00113    ?     0.18919+-0.00101       ?
   earley                                    0.35380+-0.00142    ?     0.35402+-0.00129       ?
   boyer                                     5.11007+-0.01974          5.09973+-0.01635       
   navier-stokes                    x2       5.16552+-0.05474          5.14959+-0.05017       
   raytrace                         x2       1.30043+-0.01690    ?     1.30685+-0.05375       ?
   richards                         x2       0.12809+-0.00063          0.12786+-0.00078       
   splay                            x2       0.38837+-0.00162    ?     0.38851+-0.00102       ?
   regexp                           x2      28.81811+-0.10458         28.80870+-0.09576       
   pdfjs                            x2      42.90301+-0.15137    !    43.28857+-0.21063       ! definitely 1.0090x slower
   mandreel                         x2      50.55480+-0.12857    ?    50.64727+-0.11491       ?
   gbemu                            x2      43.40649+-1.10976    ?    45.01546+-0.97829       ? might be 1.0371x slower
   closure                                   0.65210+-0.00141    ^     0.64751+-0.00235       ^ definitely 1.0071x faster
   jquery                                    8.50974+-0.01772          8.49329+-0.02028       
   box2d                            x2      11.86960+-0.03024    !    11.99490+-0.03460       ! definitely 1.0106x slower
   zlib                             x2     410.28797+-1.49609        402.61365+-7.78944         might be 1.0191x faster
   typescript                       x2     821.66068+-3.75257    !   831.00446+-4.71067       ! definitely 1.0114x slower

   <geometric>                               6.54672+-0.01600    ?     6.56318+-0.02326       ? might be 1.0025x slower

                                                TipOfTree             LessStructureWatch                                
Kraken:
   ai-astar                                  225.993+-2.739            225.260+-1.839         
   audio-beat-detection                       82.707+-0.646      !      92.692+-0.637         ! definitely 1.1207x slower
   audio-dft                                 120.947+-1.577      ^     108.904+-1.133         ^ definitely 1.1106x faster
   audio-fft                                  69.944+-1.530      ^      63.369+-0.976         ^ definitely 1.1038x faster
   audio-oscillator                           77.310+-0.909             76.810+-0.762         
   imaging-darkroom                          106.429+-0.762      !     108.570+-1.143         ! definitely 1.0201x slower
   imaging-desaturate                         62.376+-0.954             61.833+-0.789         
   imaging-gaussian-blur                     109.475+-0.982      ?     110.611+-0.797         ? might be 1.0104x slower
   json-parse-financial                       48.172+-0.752             47.546+-0.869           might be 1.0132x faster
   json-stringify-tinderbox                   29.637+-0.769             29.508+-0.687         
   stanford-crypto-aes                        58.220+-0.398      ^      47.649+-0.449         ^ definitely 1.2219x faster
   stanford-crypto-ccm                        48.691+-0.479      !      50.385+-0.595         ! definitely 1.0348x slower
   stanford-crypto-pbkdf2                    106.467+-0.811      ?     106.703+-1.022         ?
   stanford-crypto-sha256-iterative           42.244+-0.833             41.709+-0.406           might be 1.0128x faster

   <arithmetic>                               84.901+-0.279      ^      83.682+-0.263         ^ definitely 1.0146x faster

                                                TipOfTree             LessStructureWatch                                
AsmBench:
   bigfib.cpp                               500.7538+-1.1005          500.4637+-1.3677        
   cray.c                                   430.7704+-1.0927     ?    431.0023+-1.3998        ?
   dry.c                                    486.3751+-2.8061          486.2966+-2.5636        
   FloatMM.c                                722.9566+-3.1133          721.6365+-0.8576        
   gcc-loops.cpp                           4085.1423+-7.3460         4080.8391+-5.7365        
   n-body.c                                 975.7405+-1.4292          975.7127+-2.6451        
   Quicksort.c                              421.0503+-2.1266     ?    423.6416+-2.0855        ?
   stepanov_container.cpp                  3601.2143+-6.6035     ?   3603.6897+-6.0555        ?
   Towers.c                                 255.8531+-0.5480     ?    256.4533+-1.6170        ?

   <geometric>                              788.0894+-0.6839     ?    788.6182+-1.1628        ? might be 1.0007x slower

                                                TipOfTree             LessStructureWatch                                
Geomean of preferred means:
   <scaled-result>                           39.2020+-0.0755     ^     39.0186+-0.0761        ^ definitely 1.0047x faster
Comment 4 Filip Pizlo 2015-07-17 14:31:22 PDT
Created attachment 256989 [details]
the patch
Comment 5 Mark Lam 2015-07-17 14:40:05 PDT
Comment on attachment 256989 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=256989&action=review

r=me

> Source/JavaScriptCore/ChangeLog:19
> +        This is a 1.5% speed-up on Kraken. It does penalize some Octane tests, but i also seems to

typo: "i also" ==> "it also".
Comment 6 Filip Pizlo 2015-07-17 22:52:41 PDT
Landed in http://trac.webkit.org/changeset/186986