<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>147034</bug_id>
          
          <creation_ts>2015-07-17 00:58:24 -0700</creation_ts>
          <short_desc>DFG should have some obvious mitigations against watching structures that are unprofitable to watch</short_desc>
          <delta_ts>2015-07-20 13:48:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133625</blocked>
    
    <blocked>146929</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>basile_clement</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1110097</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-17 00:58:24 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110099</commentid>
    <comment_count>1</comment_count>
      <attachid>256959</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-17 01:05:34 -0700</bug_when>
    <thetext>Created attachment 256959
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110167</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-17 11:31:32 -0700</bug_when>
    <thetext>Currently performance below.  Note that this might only make sense if it&apos;s done alongside https://bugs.webkit.org/show_bug.cgi?id=146929.  I&apos;m going to investigate the slow-downs and see if they&apos;re something we can work around, or they&apos;re something that the other bug will fix, or if it&apos;s something fundamental.


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

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186953)
&quot;LessStructureWatch&quot; 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

   &lt;arithmetic&gt;                                       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        ?

   &lt;geometric&gt;                                      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

   &lt;geometric&gt;                                       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

   &lt;geometric&gt;                                       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

   &lt;arithmetic&gt;                                       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        

   &lt;geometric&gt;                                        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

   &lt;geometric&gt;                                      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        ?

   &lt;geometric&gt;                                      285.1320+-2.0936     ?    286.0359+-1.6772        ? might be 1.0032x slower

                                                        TipOfTree             LessStructureWatch                                
Geomean of preferred means:
   &lt;scaled-result&gt;                                   60.0311+-0.2154     ?     60.4370+-0.4389        ? might be 1.0068x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110215</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-17 14:29:02 -0700</bug_when>
    <thetext>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:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r186953)
&quot;LessStructureWatch&quot; 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        ?

   &lt;arithmetic&gt;                               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

   &lt;geometric&gt;                               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

   &lt;arithmetic&gt;                               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        ?

   &lt;geometric&gt;                              788.0894+-0.6839     ?    788.6182+-1.1628        ? might be 1.0007x slower

                                                TipOfTree             LessStructureWatch                                
Geomean of preferred means:
   &lt;scaled-result&gt;                           39.2020+-0.0755     ^     39.0186+-0.0761        ^ definitely 1.0047x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110216</commentid>
    <comment_count>4</comment_count>
      <attachid>256989</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-17 14:31:22 -0700</bug_when>
    <thetext>Created attachment 256989
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110220</commentid>
    <comment_count>5</comment_count>
      <attachid>256989</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-07-17 14:40:05 -0700</bug_when>
    <thetext>Comment on attachment 256989
the patch

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

r=me

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

typo: &quot;i also&quot; ==&gt; &quot;it also&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110343</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-07-17 22:52:41 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/186986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1110745</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-07-20 13:48:32 -0700</bug_when>
    <thetext>Looks like a ~3% progression on speedometer as well:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D&amp;zoom=%5B1437130445568.2446%2C1437215468995.9624%5D</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256959</attachid>
            <date>2015-07-17 01:05:34 -0700</date>
            <delta_ts>2015-07-17 14:31:22 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>8359</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBA
CisyMDE1LTA3LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIHNvbWUgb2J2aW91cyBtaXRpZ2F0aW9ucyBhZ2FpbnN0IHdhdGNoaW5n
IHN0cnVjdHVyZXMgdGhhdCBhcmUgdW5wcm9maXRhYmxlIHRvIHdhdGNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcwMzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW1wbGVtZW50
cyB0aHJlZSBndWFyZHMgYWdhaW5zdCB0aGUgREZHIHdhdGNoaW5nIHN0cnVjdHVyZXMgdGhhdCBh
cmUgbGlrZWx5IHRvIGZpcmUKKyAgICAgICAgdGhlaXIgd2F0Y2hwb2ludHM6CisgICAgICAgIAor
ICAgICAgICAtIERvbid0IHdhdGNoIHN0cnVjdHVyZXMgdGhhdCBoYXZlIG5vIHByb3BlcnRpZXMu
IFRob3NlIHN0cnVjdHVyZXMgdXN1YWxseSBoYXZlIHRoaW5ncyBkb25lCisgICAgICAgICAgdG8g
dGhlbSAtIHByb3BlcnRpZXMgZ2V0IGFkZGVkLCBpbmRleGluZyBzaGFwZXMgY2hhbmdlLgorICAg
ICAgICAKKyAgICAgICAgLSBEb24ndCB3YXRjaCBkaWN0aW9uYXJpZXMgb3IgYW55IHN0cnVjdHVy
ZSB0aGF0IGhhZCBhIGRpY3Rpb25hcnkgaW4gaXRzIHBhc3QuIERpY3Rpb25hcmllcworICAgICAg
ICAgIGNhbiBiZSBmbGF0dGVuZWQsIGFuZCB0aGVuIHRoZXkgY2FuIHRyYW5zZm9ybSBiYWNrIHRv
IGRpY3Rpb25hcmllcy4KKyAgICAgICAgCisgICAgICAgIC0gRG9uJ3Qgd2F0Y2ggc3RydWN0dXJl
cyB3aG9zZSBwYXN0IHN0cnVjdHVyZXMgd2VyZSB0cmFuc2l0aW9uZWQtYXdheSBmcm9tIHdoaWxl
IHRoZWlyCisgICAgICAgICAgdHJhbnNpdGlvbiB3YXRjaHBvaW50cyB3ZXJlIGJlaW5nIHdhdGNo
ZWQuIFRoaXMgcHJvcGVydHkgZ2l2ZXMgdXMgbW9ub3RvbmljaXR5OiBpZiB3ZQorICAgICAgICAg
IHJlY29tcGlsZSBiZWNhdXNlIHdlIHdhdGNoZWQgc3RydWN0dXJlIFMxIG9mIG9iamVjdCBPLCB0
aGVuIHdlIHdvbid0IG1ha2UgdGhlIHNhbWUgbWlzdGFrZQorICAgICAgICAgIGFnYWluIHdoZW4g
b2JqZWN0IE8gaGFzIHN0cnVjdHVyZSBTMiwgUzMsIGFuZCBzbyBvbi4KKyAgICAgICAgCisgICAg
ICAgIFNvbWUgY2FyZSBpcyB0YWtlbiB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGV1cmlzdGljcyBk
b24ndCBpbnRlcmZlcmUgd2l0aCBlYWNoIG90aGVyLiBGb3IKKyAgICAgICAgZXhhbXBsZSwgc2lu
Y2Ugd2Ugd291bGRuJ3Qgd2F0Y2ggYSBwcm9wZXJ0eS1sZXNzIHN0cnVjdHVyZSBpbiB0aGUgREZH
IGFueXdheSwgYnV0IHNvbWUgSUMKKyAgICAgICAgY291bGQgd2F0Y2ggaXQsIHRyYW5zaXRpb25p
bmcgYXdheSBmcm9tIGl0IGV2ZW4gd2hlbiBpdCdzIHdhdGNoZWQgZG9lc24ndCBwcmV2ZW50IGFu
eSBvZiBpdHMKKyAgICAgICAgc3VjY2Vzc29yIFN0cnVjdHVyZXMgZnJvbSBiZWluZyB3YXRjaGVk
IGluIHRoZSBERkcuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIHN0aWxsIGEgd29yayBpbiBw
cm9ncmVzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL1dhdGNocG9pbnQuaDoKKyAgICAgICAgKEpT
Qzo6V2F0Y2hwb2ludFNldDo6aW52YWxpZGF0ZSk6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRT
ZXQ6OmlzQmVpbmdXYXRjaGVkKToKKyAgICAgICAgKEpTQzo6V2F0Y2hwb2ludFNldDo6YWRkcmVz
c09mU3RhdGUpOgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0OjphZGRyZXNzT2ZTZXRJc05v
dEVtcHR5KToKKyAgICAgICAgKEpTQzo6SW5saW5lV2F0Y2hwb2ludFNldDo6dG91Y2gpOgorICAg
ICAgICAoSlNDOjpJbmxpbmVXYXRjaHBvaW50U2V0Ojppc0JlaW5nV2F0Y2hlZCk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnJlZ2lz
dGVyV2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAo
SlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6dG9E
aWN0aW9uYXJ5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6ZGlkVHJhbnNp
dGlvbkZyb21UaGlzU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
CiAyMDE1LTA3LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgZml4IGJ1aWxkIGZvciBuZXdlciBMTFZNcy4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkocmV2aXNpb24gMTg2OTUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1dhdGNocG9pbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTg4LDYgKzE4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIGludmFsaWRhdGUoU3RyaW5n
RmlyZURldGFpbChyZWFzb24pKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0JlaW5nV2F0Y2hl
ZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zZXRJc05vdEVtcHR5OworICAgIH0K
KyAgICAKICAgICBpbnQ4X3QqIGFkZHJlc3NPZlN0YXRlKCkgeyByZXR1cm4gJm1fc3RhdGU7IH0K
ICAgICBpbnQ4X3QqIGFkZHJlc3NPZlNldElzTm90RW1wdHkoKSB7IHJldHVybiAmbV9zZXRJc05v
dEVtcHR5OyB9CiAgICAgCkBAIC0zMzEsNiArMzM2LDEzIEBAIHB1YmxpYzoKICAgICAgICAgdG91
Y2goU3RyaW5nRmlyZURldGFpbChyZWFzb24pKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBpc0Jl
aW5nV2F0Y2hlZCgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNGYXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYXQoKS0+aXNCZWluZ1dhdGNoZWQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAKIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBJc1Ro
aW5GbGFnICAgICAgICA9IDE7CiAgICAgc3RhdGljIGNvbnN0IHVpbnRwdHJfdCBTdGF0ZU1hc2sg
ICAgICAgICA9IDY7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDE4Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxMyw3ICs2MTMs
OSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
IHZtLCBKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgMCwgcHJvdG90eXBlLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIFN0cnVjdHVyZSogcmVzdWx0ID0gU3RydWN0
dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXN1bHQtPnNldFRyYW5zaXRpb25X
YXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWQodHJ1ZSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCiAgICAgdm9pZCByZWdpc3RlcldlYWtNYXAoT3BhcXVlSlNXZWFrT2JqZWN0TWFw
KiBtYXApCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5j
cHAJKHJldmlzaW9uIDE4Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MSw2ICsxNzEsNyBAQCBTdHJ1Y3R1cmU6
OlN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqCiAgICAgc2V0RGlkVHJhbnNpdGlvbihmYWxz
ZSk7CiAgICAgc2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZChmYWxzZSk7CiAgICAgc2V0SGFzUmFy
ZURhdGEoZmFsc2UpOworICAgIHNldFRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmly
ZWQoZmFsc2UpOwogIAogICAgIEFTU0VSVChpbmxpbmVDYXBhY2l0eSA8PSBKU0ZpbmFsT2JqZWN0
OjptYXhJbmxpbmVDYXBhY2l0eSgpKTsKICAgICBBU1NFUlQoc3RhdGljX2Nhc3Q8UHJvcGVydHlP
ZmZzZXQ+KGlubGluZUNhcGFjaXR5KSA8IGZpcnN0T3V0T2ZMaW5lT2Zmc2V0KTsKQEAgLTIwMSw2
ICsyMDIsNyBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0pCiAgICAgc2V0RGlkVHJhbnNp
dGlvbihmYWxzZSk7CiAgICAgc2V0U3RhdGljRnVuY3Rpb25zUmVpZmllZChmYWxzZSk7CiAgICAg
c2V0SGFzUmFyZURhdGEoZmFsc2UpOworICAgIHNldFRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtl
bHlUb0JlRmlyZWQoZmFsc2UpOwogIAogICAgIFR5cGVJbmZvIHR5cGVJbmZvID0gVHlwZUluZm8o
Q2VsbFR5cGUsIFN0cnVjdHVyZUZsYWdzKTsKICAgICBtX2Jsb2IgPSBTdHJ1Y3R1cmVJREJsb2Io
dm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuYWxsb2NhdGVJRCh0aGlzKSwgMCwgdHlwZUluZm8p
OwpAQCAtMjM5LDYgKzI0MSwxMCBAQCBTdHJ1Y3R1cmU6OlN0cnVjdHVyZShWTSYgdm0sIFN0cnVj
dHVyZSogCiAgICAgc2V0UHJldmlvdXNJRCh2bSwgcHJldmlvdXMpOwogCiAgICAgcHJldmlvdXMt
PmRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZShkZWZlcnJlZCk7CisgICAgCisgICAgLy8g
Q29weSB0aGlzIGJpdCBub3csIGluIGNhc2UgcHJldmlvdXMgd2FzIGJlaW5nIHdhdGNoZWQuCisg
ICAgc2V0VHJhbnNpdGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZChwcmV2aW91cy0+dHJh
bnNpdGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCgpKTsKKwogICAgIGlmIChwcmV2aW91
cy0+bV9nbG9iYWxPYmplY3QpCiAgICAgICAgIG1fZ2xvYmFsT2JqZWN0LnNldCh2bSwgdGhpcywg
cHJldmlvdXMtPm1fZ2xvYmFsT2JqZWN0LmdldCgpKTsKICAgICBBU1NFUlQoaGFzUmVhZE9ubHlP
ckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpIHx8ICFtX2NsYXNzSW5mby0+
aGFzU3RhdGljU2V0dGVyT3JSZWFkb25seVByb3BlcnRpZXMoKSk7CkBAIC00OTUsNiArNTAxLDcg
QEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaQogICAgIHRyYW5zaXRp
b24tPm1fb2Zmc2V0ID0gc3RydWN0dXJlLT5tX29mZnNldDsKICAgICB0cmFuc2l0aW9uLT5zZXRE
aWN0aW9uYXJ5S2luZChraW5kKTsKICAgICB0cmFuc2l0aW9uLT5waW4oKTsKKyAgICB0cmFuc2l0
aW9uLT5zZXRUcmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKHRydWUpOwogCiAg
ICAgdHJhbnNpdGlvbi0+Y2hlY2tPZmZzZXRDb25zaXN0ZW5jeSgpOwogICAgIHJldHVybiB0cmFu
c2l0aW9uOwpAQCAtOTc1LDYgKzk4MiwxMiBAQCB2b2lkIERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pCiAKIHZvaWQgU3RydWN0dXJlOjpkaWRUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1
Y3R1cmUoRGVmZXJyZWRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludEZpcmUqIGRlZmVycmVk
KSBjb25zdAogeworICAgIC8vIElmIHRoZSBzdHJ1Y3R1cmUgaXMgYmVpbmcgd2F0Y2hlZCwgYW5k
IHRoaXMgaXMgdGhlIGtpbmQgb2Ygc3RydWN0dXJlIHRoYXQgdGhlIERGRyB3b3VsZAorICAgIC8v
IGxpa2UgdG8gd2F0Y2gsIHRoZW4gbWFrZSBzdXJlIHRvIG5vdGUgZm9yIGFsbCBmdXR1cmUgdmVy
c2lvbnMgb2YgdGhpcyBzdHJ1Y3R1cmUgdGhhdCBpdCdzCisgICAgLy8gdW53aXNlIHRvIHdhdGNo
IGl0LgorICAgIGlmIChtX3RyYW5zaXRpb25XYXRjaHBvaW50U2V0LmlzQmVnaW5XYXRjaGVkKCkg
JiYgdG90YWxTdG9yYWdlU2l6ZSgpKQorICAgICAgICBjb25zdF9jYXN0PFN0cnVjdHVyZSo+KHRo
aXMpLT5zZXRUcmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKHRydWUpOworICAg
IAogICAgIGlmIChkZWZlcnJlZCkKICAgICAgICAgZGVmZXJyZWQtPmFkZCh0aGlzKTsKICAgICBl
bHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gMTg2OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMyw2ICs0MTMsMjAgQEAgcHVibGljOgogICAgICAgICAv
LyB3YXRjaGluZyBpdC4gV2Ugc2hvdWxkIGNvbWUgdXAgd2l0aCBhIGNvbXByZWhlbnNpdmUgc3Rv
cnkgZm9yIG5vdCB3YXRjaGluZyB0aGluZ3MgdGhhdAogICAgICAgICAvLyBhcmVuJ3QgcHJvZml0
YWJsZSB0byB3YXRjaC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzMzYyNQorICAgICAgICAKKyAgICAgICAgLy8gRm9yIG5vdyB3ZSB0YWtlIGEg
dmVyeSBzaW1wbGUgYXBwcm9hY2g6CisgICAgICAgIC8vIC0gV2UgZG9uJ3Qgd2F0Y2ggU3RydWN0
dXJlcyB0aGF0IGhhdmUgemVybyBwcm9wZXJ0aWVzLiBUaGVzZSBhcmUgbGlrZWx5IHRvIGJlCisg
ICAgICAgIC8vICAgdHJhbnNpdGlvbmVkIGF3YXkgZnJvbSAoZWl0aGVyIGJlY2F1c2UgaW5kZXhp
bmcgc3RvcmFnZSBjaGFuZ2VzIHNoYXBlIG9yIGJlY2F1c2UKKyAgICAgICAgLy8gICBzb21lb25l
IGFkZHMgYSBwcm9wZXJ0eSkuIEFsc28sIHRoZXNlIGFyZSBhbG1vc3QgbmV2ZXIgaW52b2x2ZWQg
aW4gcHJvdG90eXBlIGNoYWlucy4KKyAgICAgICAgaWYgKCF0b3RhbFN0b3JhZ2VTaXplKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvLyAtIFdlIGRvbid0
IHdhdGNoIFN0cnVjdHVyZXMgdGhhdCBlaXRoZXIgZGVjaWRlZCBub3QgdG8gYmUgd2F0Y2hlZCwg
b3Igd2hvc2UgcHJlZGVjZXNzb3JzCisgICAgICAgIC8vICAgZGVjaWRlZCBub3QgdG8gYmUgd2F0
Y2hlZC4gVGhpcyBoYXBwZW5zIGVpdGhlciB3aGVuIGEgdHJhbnNpdGlvbiBpcyBmaXJlZCB3aGls
ZSBiZWluZworICAgICAgICAvLyAgIHdhdGNoZWQsIG9yIGlmIGEgZGljdGlvbmFyeSB0cmFuc2l0
aW9uIG9jY3Vycy4KKyAgICAgICAgaWYgKHRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0Jl
RmlyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KICAgICAKQEAgLTUwMiw2ICs1MTYsNyBAQCBwdWJsaWM6CiAgICAg
REVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc0JlZW5GbGF0dGVuZWRCZWZvcmUsIEhhc0JlZW5GbGF0
dGVuZWRCZWZvcmUsIDEsIDI0KTsKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgaGFzQ3VzdG9t
R2V0dGVyU2V0dGVyUHJvcGVydGllcywgSGFzQ3VzdG9tR2V0dGVyU2V0dGVyUHJvcGVydGllcywg
MSwgMjUpOwogICAgIERFRklORV9CSVRGSUVMRChib29sLCBkaWRXYXRjaEludGVybmFsUHJvcGVy
dGllcywgRGlkV2F0Y2hJbnRlcm5hbFByb3BlcnRpZXMsIDEsIDI2KTsKKyAgICBERUZJTkVfQklU
RklFTEQoYm9vbCwgdHJhbnNpdGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCwgVHJhbnNp
dGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCwgMSwgMjcpOwogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>256989</attachid>
            <date>2015-07-17 14:31:22 -0700</date>
            <delta_ts>2015-07-17 14:40:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7502</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg2OTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE1LTA3LTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBoYXZlIHNvbWUgb2J2aW91cyBtaXRpZ2F0aW9ucyBhZ2FpbnN0IHdhdGNoaW5n
IHN0cnVjdHVyZXMgdGhhdCBhcmUgdW5wcm9maXRhYmxlIHRvIHdhdGNoCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcwMzQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW1wbGVtZW50
cyB0d28gZ3VhcmRzIGFnYWluc3QgdGhlIERGRyB3YXRjaGluZyBzdHJ1Y3R1cmVzIHRoYXQgYXJl
IGxpa2VseSB0byBmaXJlCisgICAgICAgIHRoZWlyIHdhdGNocG9pbnRzOgorICAgICAgICAKKyAg
ICAgICAgLSBEb24ndCB3YXRjaCBkaWN0aW9uYXJpZXMgb3IgYW55IHN0cnVjdHVyZSB0aGF0IGhh
ZCBhIGRpY3Rpb25hcnkgaW4gaXRzIHBhc3QuIERpY3Rpb25hcmllcworICAgICAgICAgIGNhbiBi
ZSBmbGF0dGVuZWQsIGFuZCB0aGVuIHRoZXkgY2FuIHRyYW5zZm9ybSBiYWNrIHRvIGRpY3Rpb25h
cmllcy4KKyAgICAgICAgCisgICAgICAgIC0gRG9uJ3Qgd2F0Y2ggc3RydWN0dXJlcyB3aG9zZSBw
YXN0IHN0cnVjdHVyZXMgd2VyZSB0cmFuc2l0aW9uZWQtYXdheSBmcm9tIHdoaWxlIHRoZWlyCisg
ICAgICAgICAgdHJhbnNpdGlvbiB3YXRjaHBvaW50cyB3ZXJlIGJlaW5nIHdhdGNoZWQuIFRoaXMg
cHJvcGVydHkgZ2l2ZXMgdXMgbW9ub3RvbmljaXR5OiBpZiB3ZQorICAgICAgICAgIHJlY29tcGls
ZSBiZWNhdXNlIHdlIHdhdGNoZWQgc3RydWN0dXJlIFMxIG9mIG9iamVjdCBPLCB0aGVuIHdlIHdv
bid0IG1ha2UgdGhlIHNhbWUgbWlzdGFrZQorICAgICAgICAgIGFnYWluIHdoZW4gb2JqZWN0IE8g
aGFzIHN0cnVjdHVyZSBTMiwgUzMsIGFuZCBzbyBvbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMg
aXMgYSAxLjUlIHNwZWVkLXVwIG9uIEtyYWtlbi4gSXQgZG9lcyBwZW5hbGl6ZSBzb21lIE9jdGFu
ZSB0ZXN0cywgYnV0IGkgYWxzbyBzZWVtcyB0bworICAgICAgICBoZWxwIHNvbWUgb2YgdGhlbSwg
c28gb24gT2N0YW5lIGl0J3MgYmFzaWNhbGx5IG5ldXRyYWwuCisKKyAgICAgICAgKiBieXRlY29k
ZS9XYXRjaHBvaW50Lmg6CisgICAgICAgIChKU0M6OldhdGNocG9pbnRTZXQ6OmludmFsaWRhdGUp
OgorICAgICAgICAoSlNDOjpXYXRjaHBvaW50U2V0Ojppc0JlaW5nV2F0Y2hlZCk6CisgICAgICAg
IChKU0M6OldhdGNocG9pbnRTZXQ6OmFkZHJlc3NPZlN0YXRlKToKKyAgICAgICAgKEpTQzo6V2F0
Y2hwb2ludFNldDo6YWRkcmVzc09mU2V0SXNOb3RFbXB0eSk6CisgICAgICAgIChKU0M6OklubGlu
ZVdhdGNocG9pbnRTZXQ6OnRvdWNoKToKKyAgICAgICAgKEpTQzo6SW5saW5lV2F0Y2hwb2ludFNl
dDo6aXNCZWluZ1dhdGNoZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjpyZWdpc3RlcldlYWtNYXApOgorICAgICAgICAqIHJ1bnRp
bWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6OmRpZFRyYW5zaXRpb25Gcm9tVGhpc1N0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKwogMjAxNS0wNy0xNiAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGZpeCBidWlsZCBmb3IgbmV3
ZXIgTExWTXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvV2F0Y2hwb2lu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9XYXRjaHBv
aW50LmgJKHJldmlzaW9uIDE4Njk1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9XYXRjaHBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OCw2ICsxODgsMTEgQEAgcHVibGlj
OgogICAgICAgICBpbnZhbGlkYXRlKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7CiAgICAgfQog
ICAgIAorICAgIGJvb2wgaXNCZWluZ1dhdGNoZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fc2V0SXNOb3RFbXB0eTsKKyAgICB9CisgICAgCiAgICAgaW50OF90KiBhZGRyZXNzT2ZT
dGF0ZSgpIHsgcmV0dXJuICZtX3N0YXRlOyB9CiAgICAgaW50OF90KiBhZGRyZXNzT2ZTZXRJc05v
dEVtcHR5KCkgeyByZXR1cm4gJm1fc2V0SXNOb3RFbXB0eTsgfQogICAgIApAQCAtMzMxLDYgKzMz
NiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHRvdWNoKFN0cmluZ0ZpcmVEZXRhaWwocmVhc29uKSk7
CiAgICAgfQogICAgIAorICAgIGJvb2wgaXNCZWluZ1dhdGNoZWQoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgaWYgKGlzRmF0KCkpCisgICAgICAgICAgICByZXR1cm4gZmF0KCktPmlzQmVpbmdXYXRj
aGVkKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiBwcml2YXRlOgogICAg
IHN0YXRpYyBjb25zdCB1aW50cHRyX3QgSXNUaGluRmxhZyAgICAgICAgPSAxOwogICAgIHN0YXRp
YyBjb25zdCB1aW50cHRyX3QgU3RhdGVNYXNrICAgICAgICAgPSA2OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxODY5
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MTMsNyArNjEzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAg
ewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlw
ZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAg
ICBTdHJ1Y3R1cmUqIHJlc3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAwLCBwcm90b3R5cGUs
IFR5cGVJbmZvKEdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRUcmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKHRy
dWUpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIHZvaWQgcmVnaXN0ZXJX
ZWFrTWFwKE9wYXF1ZUpTV2Vha09iamVjdE1hcCogbWFwKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxODY5NTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzEsNiArMTcxLDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9i
agogICAgIHNldERpZFRyYW5zaXRpb24oZmFsc2UpOwogICAgIHNldFN0YXRpY0Z1bmN0aW9uc1Jl
aWZpZWQoZmFsc2UpOwogICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKKyAgICBzZXRUcmFuc2l0
aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKGZhbHNlKTsKICAKICAgICBBU1NFUlQoaW5s
aW5lQ2FwYWNpdHkgPD0gSlNGaW5hbE9iamVjdDo6bWF4SW5saW5lQ2FwYWNpdHkoKSk7CiAgICAg
QVNTRVJUKHN0YXRpY19jYXN0PFByb3BlcnR5T2Zmc2V0PihpbmxpbmVDYXBhY2l0eSkgPCBmaXJz
dE91dE9mTGluZU9mZnNldCk7CkBAIC0yMDEsNiArMjAyLDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1
cmUoVk0mIHZtKQogICAgIHNldERpZFRyYW5zaXRpb24oZmFsc2UpOwogICAgIHNldFN0YXRpY0Z1
bmN0aW9uc1JlaWZpZWQoZmFsc2UpOwogICAgIHNldEhhc1JhcmVEYXRhKGZhbHNlKTsKKyAgICBz
ZXRUcmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKGZhbHNlKTsKICAKICAgICBU
eXBlSW5mbyB0eXBlSW5mbyA9IFR5cGVJbmZvKENlbGxUeXBlLCBTdHJ1Y3R1cmVGbGFncyk7CiAg
ICAgbV9ibG9iID0gU3RydWN0dXJlSURCbG9iKHZtLmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmFs
bG9jYXRlSUQodGhpcyksIDAsIHR5cGVJbmZvKTsKQEAgLTIzOSw2ICsyNDEsMTAgQEAgU3RydWN0
dXJlOjpTdHJ1Y3R1cmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIAogICAgIHNldFByZXZpb3VzSUQodm0s
IHByZXZpb3VzKTsKIAogICAgIHByZXZpb3VzLT5kaWRUcmFuc2l0aW9uRnJvbVRoaXNTdHJ1Y3R1
cmUoZGVmZXJyZWQpOworICAgIAorICAgIC8vIENvcHkgdGhpcyBiaXQgbm93LCBpbiBjYXNlIHBy
ZXZpb3VzIHdhcyBiZWluZyB3YXRjaGVkLgorICAgIHNldFRyYW5zaXRpb25XYXRjaHBvaW50SXNM
aWtlbHlUb0JlRmlyZWQocHJldmlvdXMtPnRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0Jl
RmlyZWQoKSk7CisKICAgICBpZiAocHJldmlvdXMtPm1fZ2xvYmFsT2JqZWN0KQogICAgICAgICBt
X2dsb2JhbE9iamVjdC5zZXQodm0sIHRoaXMsIHByZXZpb3VzLT5tX2dsb2JhbE9iamVjdC5nZXQo
KSk7CiAgICAgQVNTRVJUKGhhc1JlYWRPbmx5T3JHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVk
aW5nUHJvdG8oKSB8fCAhbV9jbGFzc0luZm8tPmhhc1N0YXRpY1NldHRlck9yUmVhZG9ubHlQcm9w
ZXJ0aWVzKCkpOwpAQCAtNDk1LDYgKzUwMSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjp0b0Rp
Y3Rpb25hcnlUcmFuc2kKICAgICB0cmFuc2l0aW9uLT5tX29mZnNldCA9IHN0cnVjdHVyZS0+bV9v
ZmZzZXQ7CiAgICAgdHJhbnNpdGlvbi0+c2V0RGljdGlvbmFyeUtpbmQoa2luZCk7CiAgICAgdHJh
bnNpdGlvbi0+cGluKCk7CisgICAgdHJhbnNpdGlvbi0+c2V0VHJhbnNpdGlvbldhdGNocG9pbnRJ
c0xpa2VseVRvQmVGaXJlZCh0cnVlKTsKIAogICAgIHRyYW5zaXRpb24tPmNoZWNrT2Zmc2V0Q29u
c2lzdGVuY3koKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbjsKQEAgLTk3NSw2ICs5ODIsMTIgQEAg
dm9pZCBEZWZlcnJlZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaQogCiB2b2lkIFN0cnVjdHVy
ZTo6ZGlkVHJhbnNpdGlvbkZyb21UaGlzU3RydWN0dXJlKERlZmVycmVkU3RydWN0dXJlVHJhbnNp
dGlvbldhdGNocG9pbnRGaXJlKiBkZWZlcnJlZCkgY29uc3QKIHsKKyAgICAvLyBJZiB0aGUgc3Ry
dWN0dXJlIGlzIGJlaW5nIHdhdGNoZWQsIGFuZCB0aGlzIGlzIHRoZSBraW5kIG9mIHN0cnVjdHVy
ZSB0aGF0IHRoZSBERkcgd291bGQKKyAgICAvLyBsaWtlIHRvIHdhdGNoLCB0aGVuIG1ha2Ugc3Vy
ZSB0byBub3RlIGZvciBhbGwgZnV0dXJlIHZlcnNpb25zIG9mIHRoaXMgc3RydWN0dXJlIHRoYXQg
aXQncworICAgIC8vIHVud2lzZSB0byB3YXRjaCBpdC4KKyAgICBpZiAobV90cmFuc2l0aW9uV2F0
Y2hwb2ludFNldC5pc0JlaW5nV2F0Y2hlZCgpKQorICAgICAgICBjb25zdF9jYXN0PFN0cnVjdHVy
ZSo+KHRoaXMpLT5zZXRUcmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZpcmVkKHRydWUp
OworICAgIAogICAgIGlmIChkZWZlcnJlZCkKICAgICAgICAgZGVmZXJyZWQtPmFkZCh0aGlzKTsK
ICAgICBlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAkocmV2aXNpb24gMTg2OTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxMyw2ICs0MTMsMTMgQEAgcHVibGljOgogICAg
ICAgICAvLyB3YXRjaGluZyBpdC4gV2Ugc2hvdWxkIGNvbWUgdXAgd2l0aCBhIGNvbXByZWhlbnNp
dmUgc3RvcnkgZm9yIG5vdCB3YXRjaGluZyB0aGluZ3MgdGhhdAogICAgICAgICAvLyBhcmVuJ3Qg
cHJvZml0YWJsZSB0byB3YXRjaC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEzMzYyNQorICAgICAgICAKKyAgICAgICAgLy8gLSBXZSBkb24ndCB3
YXRjaCBTdHJ1Y3R1cmVzIHRoYXQgZWl0aGVyIGRlY2lkZWQgbm90IHRvIGJlIHdhdGNoZWQsIG9y
IHdob3NlIHByZWRlY2Vzc29ycworICAgICAgICAvLyAgIGRlY2lkZWQgbm90IHRvIGJlIHdhdGNo
ZWQuIFRoaXMgaGFwcGVucyBlaXRoZXIgd2hlbiBhIHRyYW5zaXRpb24gaXMgZmlyZWQgd2hpbGUg
YmVpbmcKKyAgICAgICAgLy8gICB3YXRjaGVkLCBvciBpZiBhIGRpY3Rpb25hcnkgdHJhbnNpdGlv
biBvY2N1cnMuCisgICAgICAgIGlmICh0cmFuc2l0aW9uV2F0Y2hwb2ludElzTGlrZWx5VG9CZUZp
cmVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC01MDIsNiArNTA5LDcgQEAgcHVibGljOgogICAgIERF
RklORV9CSVRGSUVMRChib29sLCBoYXNCZWVuRmxhdHRlbmVkQmVmb3JlLCBIYXNCZWVuRmxhdHRl
bmVkQmVmb3JlLCAxLCAyNCk7CiAgICAgREVGSU5FX0JJVEZJRUxEKGJvb2wsIGhhc0N1c3RvbUdl
dHRlclNldHRlclByb3BlcnRpZXMsIEhhc0N1c3RvbUdldHRlclNldHRlclByb3BlcnRpZXMsIDEs
IDI1KTsKICAgICBERUZJTkVfQklURklFTEQoYm9vbCwgZGlkV2F0Y2hJbnRlcm5hbFByb3BlcnRp
ZXMsIERpZFdhdGNoSW50ZXJuYWxQcm9wZXJ0aWVzLCAxLCAyNik7CisgICAgREVGSU5FX0JJVEZJ
RUxEKGJvb2wsIHRyYW5zaXRpb25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWQsIFRyYW5zaXRp
b25XYXRjaHBvaW50SXNMaWtlbHlUb0JlRmlyZWQsIDEsIDI3KTsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwo=
</data>
<flag name="review"
          id="282095"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>