<?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>143960</bug_id>
          
          <creation_ts>2015-04-20 13:06:17 -0700</creation_ts>
          <short_desc>REGRESSION (r182899): icloud.com crashes</short_desc>
          <delta_ts>2015-04-21 14:57:07 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>msaboff</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1086882</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-20 13:06:17 -0700</bug_when>
    <thetext>icloud.com crashes following the changes in https://bugs.webkit.org/show_bug.cgi?id=143807, patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086883</commentid>
    <comment_count>1</comment_count>
      <attachid>251185</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-20 13:08:26 -0700</bug_when>
    <thetext>Created attachment 251185
Possible patch, regression test forthcoming</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086908</commentid>
    <comment_count>2</comment_count>
      <attachid>251185</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-20 14:34:01 -0700</bug_when>
    <thetext>Comment on attachment 251185
Possible patch, regression test forthcoming

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

&gt; Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp:113
&gt; +        case AllocationProfileWatchpoint: {
&gt; +            InlineWatchpointSet* watchpointSet = m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet();
&gt; +            if (watchpointSet)
&gt; +                addLazily(*watchpointSet);
&gt;              break;
&gt; +        }

If watchpointSet is null, the compiler will fail to add a necessary watchpoint, which means that we&apos;ll end up with incorrect code if the watchpoint fires.

Can we ASSERT that watchpointSet is not null instead of checking?

What guarantees that it will not be null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086917</commentid>
    <comment_count>3</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-20 14:55:36 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 251185 [details]
&gt; Possible patch, regression test forthcoming
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251185&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp:113
&gt; &gt; +        case AllocationProfileWatchpoint: {
&gt; &gt; +            InlineWatchpointSet* watchpointSet = m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet();
&gt; &gt; +            if (watchpointSet)
&gt; &gt; +                addLazily(*watchpointSet);
&gt; &gt;              break;
&gt; &gt; +        }
&gt; 
&gt; If watchpointSet is null, the compiler will fail to add a necessary
&gt; watchpoint, which means that we&apos;ll end up with incorrect code if the
&gt; watchpoint fires.
&gt; 
&gt; Can we ASSERT that watchpointSet is not null instead of checking?
&gt; 
&gt; What guarantees that it will not be null?

If the watchpointSet is null, it means there is no rare data and thus there shouldn&apos;t be an AllocationProfileWatchpoint for this node.
A least that was the case before I made the allocation profile clearing too aggressive when the .prototype is overwritten.

This can only appear in the case of a singleton constructor whose prototype is overwritten after having been already constructed in the DFG, then constructed again, so no wonder the test cases did not catch this.

I am writing a proper fix now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086951</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-20 16:58:34 -0700</bug_when>
    <thetext>&gt; If the watchpointSet is null, it means there is no rare data and thus there
&gt; shouldn&apos;t be an AllocationProfileWatchpoint for this node.

OK. Sounds like an ASSERT is appropriate, then.

&gt; A least that was the case before I made the allocation profile clearing too
&gt; aggressive when the .prototype is overwritten.
&gt; 
&gt; This can only appear in the case of a singleton constructor whose prototype
&gt; is overwritten after having been already constructed in the DFG, then
&gt; constructed again, so no wonder the test cases did not catch this.
&gt; 
&gt; I am writing a proper fix now.

Nice!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1086972</commentid>
    <comment_count>5</comment_count>
      <attachid>251211</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-20 19:19:41 -0700</bug_when>
    <thetext>Created attachment 251211
Slow (but clean) patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087079</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 09:55:30 -0700</bug_when>
    <thetext>So in spite of the outrageous slowdown on Kraken/ai-astar I experienced yesterday, things seems to be now OK with the same code...
Patch w/ ChangeLog and additional style details used for this benchmark forthcoming.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;Conf#1&quot; at /Volumes/Data/Baseline/OpenSource/WebKitBuild/Release/jsc (r183038)
&quot;Conf#2&quot; at /Volumes/Data/Temp/OpenSource/WebKitBuild/Release/jsc (r183038)

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.

                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            4.4111+-0.2044            4.3238+-0.1437          might be 1.0202x faster
   3d-morph                                           5.3675+-0.2143     ?      5.5118+-0.3181        ? might be 1.0269x slower
   3d-raytrace                                        5.1515+-0.1547     ?      5.2351+-0.3690        ? might be 1.0162x slower
   access-binary-trees                                2.1466+-0.2869     ?      2.1582+-0.1988        ?
   access-fannkuch                                    5.1811+-0.1676     ?      5.6444+-0.6224        ? might be 1.0894x slower
   access-nbody                                       2.8918+-0.6780            2.6600+-0.3254          might be 1.0871x faster
   access-nsieve                                      3.1853+-0.3112            3.1574+-0.3144        
   bitops-3bit-bits-in-byte                           1.4046+-0.0306     ?      1.4376+-0.0628        ? might be 1.0235x slower
   bitops-bits-in-byte                                3.2297+-0.4151     ?      3.5550+-0.3327        ? might be 1.1007x slower
   bitops-bitwise-and                                 2.0845+-0.0474            2.0393+-0.0925          might be 1.0222x faster
   bitops-nsieve-bits                                 3.4909+-0.2473     ?      3.4997+-0.3675        ?
   controlflow-recursive                              1.8942+-0.0722     ?      1.9248+-0.1217        ? might be 1.0162x slower
   crypto-aes                                         3.8242+-0.3814            3.7720+-0.2282          might be 1.0138x faster
   crypto-md5                                         2.1725+-0.0943            2.1700+-0.1034        
   crypto-sha1                                        2.3858+-0.2348     ?      2.5206+-0.5790        ? might be 1.0565x slower
   date-format-tofte                                  7.1268+-0.9663            6.9247+-0.2957          might be 1.0292x faster
   date-format-xparb                                  4.9818+-0.5199     ?      5.0142+-0.1648        ?
   math-cordic                                        2.8288+-0.1861     ?      2.8327+-0.1511        ?
   math-partial-sums                                  4.5638+-0.1321     ?      5.0288+-0.8141        ? might be 1.1019x slower
   math-spectral-norm                                 1.7558+-0.0402     ?      1.8155+-0.0769        ? might be 1.0340x slower
   regexp-dna                                         6.6329+-0.1391     ?      6.8435+-0.5221        ? might be 1.0317x slower
   string-base64                                      4.3359+-0.2851            4.3359+-0.2919        
   string-fasta                                       6.0370+-0.3537            5.8378+-0.1334          might be 1.0341x faster
   string-tagcloud                                    8.9259+-0.3721     ?      9.3738+-1.4458        ? might be 1.0502x slower
   string-unpack-code                                18.9049+-0.7931     ?     19.1390+-0.6200        ? might be 1.0124x slower
   string-validate-input                              4.4896+-0.1714     ?      4.5817+-0.3382        ? might be 1.0205x slower

   &lt;arithmetic&gt;                                       4.5925+-0.0960     ?      4.6668+-0.0724        ? might be 1.0162x slower

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                          817.6180+-19.7165    ?    822.9426+-12.3744       ?
   3d-morph                                        1573.7068+-14.2216    ?   1588.3167+-40.2457       ?
   3d-raytrace                                      688.1183+-12.9003    ?    691.6603+-16.6387       ?
   access-binary-trees                              870.7376+-11.3850    ?    887.5717+-42.1808       ? might be 1.0193x slower
   access-fannkuch                                  280.5467+-15.9701         279.4959+-17.8178       
   access-nbody                                     580.6865+-13.6523    ?    584.6453+-26.0042       ?
   access-nsieve                                    680.6292+-24.1388         661.7668+-9.8425          might be 1.0285x faster
   bitops-3bit-bits-in-byte                          44.4220+-0.9161           43.4525+-1.4874          might be 1.0223x faster
   bitops-bits-in-byte                               88.4662+-9.0516     ?     92.8015+-6.3850        ? might be 1.0490x slower
   bitops-nsieve-bits                               709.9130+-31.4591         697.8083+-17.1376         might be 1.0173x faster
   controlflow-recursive                            474.7817+-8.5041          474.7696+-12.7393       
   crypto-aes                                       583.7215+-13.5868    ?    588.3995+-18.9155       ?
   crypto-md5                                       553.5954+-11.9800         553.0100+-14.4423       
   crypto-sha1                                      606.8895+-17.2668         600.1799+-10.2761         might be 1.0112x faster
   date-format-tofte                                539.9448+-15.2411    ?    540.1794+-11.5012       ?
   date-format-xparb                                656.9644+-19.0389    ?    663.0825+-14.8690       ?
   math-cordic                                      531.5884+-20.5807         527.6919+-15.8413       
   math-partial-sums                                448.3560+-6.5085     ?    450.0747+-13.1886       ?
   math-spectral-norm                               578.6361+-14.8553    ?    594.4453+-28.2468       ? might be 1.0273x slower
   string-base64                                    343.0765+-8.1814     ?    345.7093+-11.5500       ?
   string-fasta                                     392.9964+-5.9136     ?    394.9641+-13.0204       ?
   string-tagcloud                                  205.1713+-3.3125     ?    205.8254+-2.9971        ?

   &lt;geometric&gt;                                      454.8897+-4.7613     ?    456.3003+-4.2183        ? might be 1.0031x slower

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            54.5824+-2.7855           54.1031+-3.3591        
   deltablue                                         85.6617+-2.8945           82.2306+-7.5361          might be 1.0417x faster
   earley-boyer                                      42.2645+-2.0524           41.5098+-3.0421          might be 1.0182x faster
   raytrace                                          32.2721+-2.1072     ?     32.7733+-2.7647        ? might be 1.0155x slower
   regexp                                            60.5894+-2.2568     ?     62.2518+-2.2598        ? might be 1.0274x slower
   richards                                          79.4209+-3.5216           76.1930+-4.9852          might be 1.0424x faster
   splay                                             36.9962+-4.2056     ?     39.1694+-2.4252        ? might be 1.0587x slower

   &lt;geometric&gt;                                       52.6704+-0.5327           52.5930+-1.6708          might be 1.0015x faster

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.21007+-0.00446    ?     0.21144+-0.00308       ?
   decrypt                                           3.71290+-0.14272    ?     3.75313+-0.21931       ? might be 1.0108x slower
   deltablue                                x2       0.16996+-0.00489    ?     0.17085+-0.00273       ?
   earley                                            0.45581+-0.00553    ?     0.45863+-0.01049       ?
   boyer                                             5.91343+-0.10822    ?     6.14323+-0.24823       ? might be 1.0389x slower
   navier-stokes                            x2       5.37667+-0.13896    ?     5.38362+-0.13202       ?
   raytrace                                 x2       1.10628+-0.06968          1.04890+-0.03014         might be 1.0547x faster
   richards                                 x2       0.10011+-0.00399          0.09725+-0.00413         might be 1.0294x faster
   splay                                    x2       0.37522+-0.01394          0.37513+-0.01274       
   regexp                                   x2      30.36643+-0.71624         29.97653+-0.48692         might be 1.0130x faster
   pdfjs                                    x2      40.33048+-0.99985         40.21220+-0.47707       
   mandreel                                 x2      49.51375+-2.06638         47.59378+-0.59116         might be 1.0403x faster
   gbemu                                    x2      32.76628+-1.98360    ?    33.43657+-2.29444       ? might be 1.0205x slower
   closure                                           0.52168+-0.01117    ?     0.52477+-0.01508       ?
   jquery                                            6.72555+-0.17672          6.44958+-0.21828         might be 1.0428x faster
   box2d                                    x2      10.59619+-0.15298    ?    10.79456+-0.38331       ? might be 1.0187x slower
   zlib                                     x2     369.35583+-16.86866   ?   370.48058+-20.24982      ?
   typescript                               x2     679.37744+-22.76805   ?   685.72013+-28.59215      ?

   &lt;geometric&gt;                                       6.05632+-0.04854          6.02923+-0.05310         might be 1.0045x faster

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                          287.336+-15.250           284.738+-8.406         
   audio-beat-detection                              100.672+-1.883      ?     103.208+-6.142         ? might be 1.0252x slower
   audio-dft                                         172.977+-4.890      ?     176.204+-5.033         ? might be 1.0187x slower
   audio-fft                                          81.997+-3.216             79.780+-4.816           might be 1.0278x faster
   audio-oscillator                                  185.525+-2.845      ?     185.645+-3.430         ?
   imaging-darkroom                                   98.589+-2.853      ?      98.676+-3.153         ?
   imaging-desaturate                                 62.835+-2.297             58.786+-3.219           might be 1.0689x faster
   imaging-gaussian-blur                              90.820+-2.361      ?      93.428+-3.716         ? might be 1.0287x slower
   json-parse-financial                               40.398+-3.083             38.619+-2.061           might be 1.0461x faster
   json-stringify-tinderbox                           53.089+-2.624             52.673+-1.704         
   stanford-crypto-aes                                61.027+-2.323             59.853+-2.455           might be 1.0196x faster
   stanford-crypto-ccm                                55.202+-8.040             50.737+-3.651           might be 1.0880x faster
   stanford-crypto-pbkdf2                            162.948+-5.371            157.755+-4.224           might be 1.0329x faster
   stanford-crypto-sha256-iterative                   54.075+-4.366             53.503+-2.294           might be 1.0107x faster

   &lt;arithmetic&gt;                                      107.678+-1.610            106.686+-1.659           might be 1.0093x faster

                                                          Conf#1                    Conf#2                                      
JSRegress:
   abs-boolean                                        2.6124+-0.4033            2.4428+-0.1249          might be 1.0694x faster
   adapt-to-double-divide                            17.0688+-0.5593     ?     17.1006+-0.3706        ?
   aliased-arguments-getbyval                         1.1637+-0.2058            1.1230+-0.0949          might be 1.0362x faster
   allocate-big-object                                2.8472+-0.4356     ?      2.9385+-0.8776        ? might be 1.0320x slower
   arguments-named-and-reflective                    11.2933+-0.9596           11.1178+-0.4019          might be 1.0158x faster
   arguments-out-of-bounds                           10.9053+-0.4980           10.6532+-0.3087          might be 1.0237x faster
   arguments-strict-mode                             10.6584+-0.7108     ?     10.9958+-0.7231        ? might be 1.0317x slower
   arguments                                          9.5830+-0.5207            9.2352+-0.6302          might be 1.0377x faster
   arity-mismatch-inlining                            0.8003+-0.0312            0.7971+-0.0338        
   array-access-polymorphic-structure                 6.3953+-0.5653            6.3636+-0.3803        
   array-nonarray-polymorhpic-access                 29.6038+-1.2433           29.4707+-1.7052        
   array-prototype-every                             84.1193+-4.0456     ?     86.0033+-2.0384        ? might be 1.0224x slower
   array-prototype-forEach                           84.4655+-2.6500           83.4175+-3.5744          might be 1.0126x faster
   array-prototype-map                               91.3452+-3.1869     ?     92.9378+-4.6529        ? might be 1.0174x slower
   array-prototype-some                              84.7174+-2.7073     ?     85.0240+-5.3037        ?
   array-splice-contiguous                           43.6191+-1.6529     ^     38.8805+-0.8602        ^ definitely 1.1219x faster
   array-with-double-add                              3.5232+-0.4815     ?      3.5730+-0.2506        ? might be 1.0141x slower
   array-with-double-increment                        3.1361+-0.2830     ?      3.2225+-0.2474        ? might be 1.0275x slower
   array-with-double-mul-add                          4.3812+-0.5406            4.2806+-0.3037          might be 1.0235x faster
   array-with-double-sum                              3.3892+-0.1037            3.3739+-0.3085        
   array-with-int32-add-sub                           5.8597+-0.1233     ?      6.1549+-0.6268        ? might be 1.0504x slower
   array-with-int32-or-double-sum                     3.4059+-0.3212            3.3490+-0.2758          might be 1.0170x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     30.9327+-4.1872           27.4834+-0.5178          might be 1.1255x faster
   ArrayBuffer-DataView-alloc-long-lived             12.8712+-0.9715     ?     13.7437+-1.6279        ? might be 1.0678x slower
   ArrayBuffer-Int32Array-byteOffset                  3.7529+-0.1095            3.7030+-0.2212          might be 1.0135x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     29.4908+-2.1964     ?     30.2222+-4.2261        ? might be 1.0248x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     21.8310+-1.2266     ?     22.1141+-1.6000        ? might be 1.0130x slower
   ArrayBuffer-Int8Array-alloc-long-lived            12.3098+-0.6281           12.2984+-0.5201        
   ArrayBuffer-Int8Array-alloc                       10.8290+-1.3924           10.2240+-0.2865          might be 1.0592x faster
   asmjs_bool_bug                                     7.1077+-0.5078            6.8527+-0.4310          might be 1.0372x faster
   assign-custom-setter-polymorphic                   2.6458+-0.1286     ?      2.6799+-0.2595        ? might be 1.0129x slower
   assign-custom-setter                               3.6307+-0.2180            3.5252+-0.1748          might be 1.0299x faster
   basic-set                                          7.9879+-0.7943     ?      8.3805+-0.7784        ? might be 1.0492x slower
   big-int-mul                                        3.4585+-0.1257     ?      3.4856+-0.1692        ?
   boolean-test                                       3.0920+-0.3657            2.7690+-0.0611          might be 1.1166x faster
   branch-fold                                        3.5407+-0.0889     ?      3.6171+-0.1821        ? might be 1.0216x slower
   by-val-generic                                     8.0601+-0.3659            7.4375+-0.2719          might be 1.0837x faster
   call-spread-apply                                 27.6390+-1.5798           27.2447+-0.5247          might be 1.0145x faster
   call-spread-call                                  22.4515+-1.0915     ?     22.5743+-0.4371        ?
   captured-assignments                               0.3919+-0.0371            0.3857+-0.0517          might be 1.0160x faster
   cast-int-to-double                                 5.0644+-0.4675            5.0507+-0.2256        
   cell-argument                                      7.0046+-0.8499            6.6217+-0.9109          might be 1.0578x faster
   cfg-simplify                                       2.8696+-0.1196     ?      3.0249+-0.2185        ? might be 1.0541x slower
   chain-getter-access                                9.3335+-0.3058            9.1649+-0.1615          might be 1.0184x faster
   cmpeq-obj-to-obj-other                            11.1920+-1.0460           10.0025+-0.7598          might be 1.1189x faster
   constant-test                                      4.6949+-0.1809     ?      4.7850+-0.2780        ? might be 1.0192x slower
   create-lots-of-functions                          11.6183+-1.6850           10.7512+-1.1989          might be 1.0807x faster
   DataView-custom-properties                        37.7437+-2.6097           35.7613+-2.7194          might be 1.0554x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.5586+-0.2080            0.4260+-0.0377          might be 1.3113x faster
   delay-tear-off-arguments-strictmode               12.5851+-0.6293     ?     13.5450+-1.1332        ? might be 1.0763x slower
   deltablue-varargs                                150.9985+-4.3408          149.9580+-4.0979        
   destructuring-arguments                           14.5688+-1.2935     ?     15.5117+-0.9651        ? might be 1.0647x slower
   destructuring-swap                                 4.8762+-0.3395            4.7178+-0.1383          might be 1.0336x faster
   direct-arguments-getbyval                          1.0990+-0.0450     ?      1.3486+-0.4359        ? might be 1.2271x slower
   div-boolean-double                                 5.4707+-0.1005            5.4607+-0.1971        
   div-boolean                                        8.6695+-0.2311            8.4148+-0.4300          might be 1.0303x faster
   double-get-by-val-out-of-bounds                    4.2937+-0.1702            4.0596+-0.1076          might be 1.0577x faster
   double-pollution-getbyval                          9.1175+-0.3625            8.9581+-0.2146          might be 1.0178x faster
   double-pollution-putbyoffset                       4.0350+-0.1464     ?      4.6441+-1.1842        ? might be 1.1509x slower
   double-to-int32-typed-array-no-inline              2.2477+-0.2448     ?      2.2925+-0.6242        ? might be 1.0199x slower
   double-to-int32-typed-array                        1.9484+-0.3038     ?      1.9720+-0.5252        ? might be 1.0121x slower
   double-to-uint32-typed-array-no-inline             2.2250+-0.1157            2.1003+-0.0203          might be 1.0594x faster
   double-to-uint32-typed-array                       1.8212+-0.1917            1.7602+-0.1020          might be 1.0347x faster
   elidable-new-object-dag                           37.2981+-3.1315     ?     38.7206+-2.9826        ? might be 1.0381x slower
   elidable-new-object-roflcopter                    39.6376+-3.2297           39.5931+-3.8236        
   elidable-new-object-then-call                     34.0243+-3.1473     ?     34.7145+-4.2870        ? might be 1.0203x slower
   elidable-new-object-tree                          39.7441+-2.5039           39.3264+-2.1488          might be 1.0106x faster
   empty-string-plus-int                              4.8006+-0.1188     ?      4.8724+-0.2138        ? might be 1.0150x slower
   emscripten-cube2hash                              27.5030+-1.1814     ?     30.8230+-3.5570        ? might be 1.1207x slower
   exit-length-on-plain-object                       12.8774+-0.2845           12.7901+-0.7225        
   external-arguments-getbyval                        1.3349+-0.1772            1.2212+-0.1398          might be 1.0931x faster
   external-arguments-putbyval                        2.1980+-0.1282     ?      2.2215+-0.1669        ? might be 1.0107x slower
   fixed-typed-array-storage-var-index                1.2353+-0.2150            1.1725+-0.0669          might be 1.0535x faster
   fixed-typed-array-storage                          0.8152+-0.0426            0.8137+-0.0436        
   Float32Array-matrix-mult                           4.1239+-0.3860            3.8107+-0.0821          might be 1.0822x faster
   Float32Array-to-Float64Array-set                  51.0987+-1.0249           50.8393+-2.5773        
   Float64Array-alloc-long-lived                     66.3454+-4.6387     ?     66.9267+-3.3990        ?
   Float64Array-to-Int16Array-set                    62.0043+-1.3961     ?     64.2865+-3.4803        ? might be 1.0368x slower
   fold-double-to-int                                13.0621+-0.5187           12.9029+-0.4743          might be 1.0123x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.2085+-0.4990            9.6475+-0.3437          might be 1.0582x faster
   fold-get-by-id-to-multi-get-by-offset              8.4259+-0.7676            7.8657+-1.7257          might be 1.0712x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.4025+-1.1130     ?      8.2970+-0.6792        ? might be 1.1208x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      7.3861+-0.8781            7.1215+-0.9959          might be 1.0372x faster
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.8603+-0.9585            7.2335+-0.6107          might be 1.0867x faster
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.2035+-0.9675     ?      5.1413+-0.9192        ? might be 1.2231x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      8.9422+-0.7122            8.6329+-0.6409          might be 1.0358x faster
   fold-put-by-id-to-multi-put-by-offset              8.3568+-0.4795     ?      8.5654+-1.2329        ? might be 1.0250x slower
   fold-put-structure                                 4.3931+-0.9913     ?      4.4553+-0.7154        ? might be 1.0142x slower
   for-of-iterate-array-entries                       4.3953+-0.5308            4.1294+-0.0866          might be 1.0644x faster
   for-of-iterate-array-keys                          3.2304+-0.0878     ?      3.3182+-0.2229        ? might be 1.0272x slower
   for-of-iterate-array-values                        3.6969+-1.3025            3.3634+-0.3986          might be 1.0991x faster
   fround                                            18.4783+-1.1521     ?     18.6940+-0.7156        ? might be 1.0117x slower
   ftl-library-inlining-dataview                     61.3789+-1.4651           60.9891+-1.7918        
   ftl-library-inlining                             118.6348+-5.0307          114.4706+-5.2385          might be 1.0364x faster
   function-dot-apply                                 2.0585+-0.0683     ?      2.2522+-0.1995        ? might be 1.0941x slower
   function-test                                      2.9905+-0.0819            2.9102+-0.0363          might be 1.0276x faster
   function-with-eval                                95.9841+-4.0819     ?    110.1152+-24.8950       ? might be 1.1472x slower
   gcse-poly-get-less-obvious                        14.8907+-0.2268           14.8212+-0.4925        
   gcse-poly-get                                     16.4358+-0.2338     ?     16.9280+-0.5059        ? might be 1.0299x slower
   gcse                                               4.1624+-0.4775            4.0576+-0.4708          might be 1.0258x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.8382+-0.4728            2.5909+-0.0508          might be 1.0955x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.9729+-0.1525            5.8138+-0.1369          might be 1.0274x faster
   get-by-id-chain-from-try-block                     6.7079+-0.3848            6.6500+-0.2590        
   get-by-id-check-structure-elimination              4.5428+-0.2881     ?      4.9865+-1.2217        ? might be 1.0977x slower
   get-by-id-proto-or-self                           14.9050+-0.2173     ?     14.9645+-0.6398        ?
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.3185+-0.8081            3.2056+-0.3717          might be 1.0352x faster
   get-by-id-self-or-proto                           14.8591+-0.7872     ?     15.0859+-0.6957        ? might be 1.0153x slower
   get-by-val-out-of-bounds                           4.0846+-0.1382     ?      4.1166+-0.5714        ?
   get_callee_monomorphic                             2.3303+-0.1135     ?      2.4639+-0.2337        ? might be 1.0573x slower
   get_callee_polymorphic                             3.6390+-0.6101            3.4173+-0.2397          might be 1.0649x faster
   getter-no-activation                               4.8637+-0.1939     ?      4.9764+-0.3604        ? might be 1.0232x slower
   getter-richards                                  120.9899+-15.6810         114.1755+-8.8575          might be 1.0597x faster
   getter                                             5.4965+-0.3118     ?      5.5071+-0.2932        ?
   global-var-const-infer-fire-from-opt               0.8497+-0.0889            0.8380+-0.0945          might be 1.0140x faster
   global-var-const-infer                             0.8065+-0.1089     ?      0.8110+-0.1850        ?
   HashMap-put-get-iterate-keys                      24.0239+-0.3676     ?     24.7915+-0.8495        ? might be 1.0320x slower
   HashMap-put-get-iterate                           24.8761+-0.8427           24.4520+-1.1561          might be 1.0173x faster
   HashMap-string-put-get-iterate                    24.8168+-1.7032           23.8726+-1.6081          might be 1.0396x faster
   hoist-make-rope                                    8.3755+-0.7564            8.2123+-0.4897          might be 1.0199x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.3172+-0.3195     ?      4.3516+-0.2903        ?
   hoist-poly-check-structure                         3.2174+-0.0681     ?      3.2314+-0.1458        ?
   imul-double-only                                   6.6746+-0.2625     ?      6.8629+-0.4471        ? might be 1.0282x slower
   imul-int-only                                      8.4836+-0.3282     ?      8.6803+-0.6001        ? might be 1.0232x slower
   imul-mixed                                         6.7882+-0.3174            6.6359+-0.4031          might be 1.0230x faster
   in-four-cases                                     15.8355+-0.7204     ?     16.8802+-2.1376        ? might be 1.0660x slower
   in-one-case-false                                  8.5850+-0.4471     ?      9.8381+-2.0429        ? might be 1.1460x slower
   in-one-case-true                                   9.8300+-1.9223            8.6866+-0.5848          might be 1.1316x faster
   in-two-cases                                       8.8835+-0.7052     ?      9.1420+-0.6992        ? might be 1.0291x slower
   indexed-properties-in-objects                      2.8223+-0.1008     ?      2.8234+-0.0950        ?
   infer-closure-const-then-mov-no-inline             3.4264+-0.8576            3.0686+-0.0462          might be 1.1166x faster
   infer-closure-const-then-mov                      18.2389+-0.3675           18.1495+-0.7134        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     13.8455+-0.7286           13.2236+-0.2516          might be 1.0470x faster
   infer-closure-const-then-put-to-scope             24.2026+-0.6288     ?     24.6665+-1.0772        ? might be 1.0192x slower
   infer-closure-const-then-reenter-no-inline   
                                                     53.7620+-1.7351     ?     55.7958+-2.6804        ? might be 1.0378x slower
   infer-closure-const-then-reenter                  25.3317+-1.3177           25.1524+-1.5309        
   infer-constant-global-property                    31.3579+-1.8043           31.0830+-0.8867        
   infer-constant-property                            2.6389+-0.0945     ?      2.7349+-0.2005        ? might be 1.0364x slower
   infer-one-time-closure-ten-vars                    9.0155+-0.7036     ?      9.0997+-0.5744        ?
   infer-one-time-closure-two-vars                    8.2882+-0.3000     ?      8.9283+-1.5039        ? might be 1.0772x slower
   infer-one-time-closure                             8.0345+-0.1446     ?      8.2469+-0.4173        ? might be 1.0264x slower
   infer-one-time-deep-closure                       13.7146+-1.0183           13.3157+-0.9131          might be 1.0300x faster
   inline-arguments-access                            4.0356+-0.3460     ?      4.1931+-0.5745        ? might be 1.0390x slower
   inline-arguments-aliased-access                    4.1823+-0.2530            3.9044+-0.0809          might be 1.0712x faster
   inline-arguments-local-escape                      4.3812+-0.2852     ?      4.4043+-0.3647        ?
   inline-get-scoped-var                              4.7461+-0.2033     ?      4.9052+-0.3011        ? might be 1.0335x slower
   inlined-put-by-id-transition                      10.3148+-0.7765            9.9667+-0.8308          might be 1.0349x faster
   int-or-other-abs-then-get-by-val                   5.1212+-0.4289            5.0435+-0.4794          might be 1.0154x faster
   int-or-other-abs-zero-then-get-by-val             16.7528+-0.2182     ?     17.4038+-0.6839        ? might be 1.0389x slower
   int-or-other-add-then-get-by-val                   4.0844+-0.1849     ?      4.1119+-0.2725        ?
   int-or-other-add                                   5.2224+-0.2567            4.9546+-0.2567          might be 1.0541x faster
   int-or-other-div-then-get-by-val                   3.8312+-0.1098            3.8222+-0.1107        
   int-or-other-max-then-get-by-val                   4.4756+-0.9596            4.3152+-0.5135          might be 1.0372x faster
   int-or-other-min-then-get-by-val                   4.3708+-0.2186            4.1888+-0.1418          might be 1.0434x faster
   int-or-other-mod-then-get-by-val                   3.7262+-0.3753            3.6206+-0.2314          might be 1.0292x faster
   int-or-other-mul-then-get-by-val                   3.9207+-0.2014     ?      4.1636+-0.4268        ? might be 1.0619x slower
   int-or-other-neg-then-get-by-val                   4.4564+-0.1105            4.4125+-0.1963        
   int-or-other-neg-zero-then-get-by-val             17.8671+-1.3597           16.9993+-0.5341          might be 1.0510x faster
   int-or-other-sub-then-get-by-val                   4.0664+-0.1521     ?      4.2163+-0.3643        ? might be 1.0369x slower
   int-or-other-sub                                   3.6337+-0.4867            3.4364+-0.1194          might be 1.0574x faster
   int-overflow-local                                 4.1526+-0.0403            4.1104+-0.0776          might be 1.0103x faster
   Int16Array-alloc-long-lived                       48.7369+-4.0494           47.8248+-5.0278          might be 1.0191x faster
   Int16Array-bubble-sort-with-byteLength            17.6099+-0.4861           17.4806+-0.3733        
   Int16Array-bubble-sort                            17.6533+-0.7791     ?     17.6838+-0.7807        ?
   Int16Array-load-int-mul                            1.3483+-0.0232     ?      1.4420+-0.1950        ? might be 1.0695x slower
   Int16Array-to-Int32Array-set                      46.2507+-0.8523     ?     46.4640+-1.0458        ?
   Int32Array-alloc-large                            13.6655+-2.0230           13.3265+-1.8258          might be 1.0254x faster
   Int32Array-alloc-long-lived                       55.9387+-3.9141           53.5671+-5.2731          might be 1.0443x faster
   Int32Array-alloc                                   2.8921+-0.3054     ?      3.0367+-0.2173        ? might be 1.0500x slower
   Int32Array-Int8Array-view-alloc                    6.7293+-0.5029            6.5955+-0.5190          might be 1.0203x faster
   int52-spill                                        6.2748+-0.9450            6.0066+-0.3288          might be 1.0446x faster
   Int8Array-alloc-long-lived                        43.8311+-4.5533           43.6835+-2.8911        
   Int8Array-load-with-byteLength                     3.4565+-0.2464            3.4504+-0.0970        
   Int8Array-load                                     3.4598+-0.1892     ?      3.5139+-0.2510        ? might be 1.0156x slower
   integer-divide                                    11.2052+-0.5573           10.9589+-0.4075          might be 1.0225x faster
   integer-modulo                                     1.6611+-0.0679     ?      1.7275+-0.2495        ? might be 1.0400x slower
   large-int-captured                                 3.9163+-0.0747     ?      4.0233+-0.1640        ? might be 1.0273x slower
   large-int-neg                                     15.0482+-0.4990           15.0210+-0.2414        
   large-int                                         14.3858+-0.5765     ?     15.4661+-1.5988        ? might be 1.0751x slower
   logical-not                                        4.3418+-0.2568     ?      4.3884+-0.2367        ? might be 1.0107x slower
   lots-of-fields                                    10.4569+-0.4284           10.2705+-0.5437          might be 1.0181x faster
   make-indexed-storage                               2.7777+-0.0751     ?      2.9109+-0.1726        ? might be 1.0480x slower
   make-rope-cse                                      3.9885+-0.2592     ?      4.1922+-0.6506        ? might be 1.0511x slower
   marsaglia-larger-ints                             35.6355+-1.6379           35.2685+-1.0325          might be 1.0104x faster
   marsaglia-osr-entry                               22.1777+-0.5668           22.0870+-0.9666        
   max-boolean                                        2.7627+-0.1074            2.7440+-0.1887        
   method-on-number                                  18.1119+-0.7544           16.8166+-1.0631          might be 1.0770x faster
   min-boolean                                        2.8259+-0.2639            2.7153+-0.1995          might be 1.0407x faster
   minus-boolean-double                               3.0961+-0.0982     ?      3.1600+-0.1237        ? might be 1.0206x slower
   minus-boolean                                      2.4540+-0.3917     ?      2.4784+-0.3236        ?
   misc-strict-eq                                    31.6663+-2.1068     ?     32.6092+-1.9717        ? might be 1.0298x slower
   mod-boolean-double                                11.5306+-0.2425     ?     11.5972+-0.5547        ?
   mod-boolean                                        8.5161+-0.1225     ?      8.5398+-0.1789        ?
   mul-boolean-double                                 3.7844+-0.1778     ?      3.8935+-0.4416        ? might be 1.0288x slower
   mul-boolean                                        2.7473+-0.0381     ?      2.8382+-0.0946        ? might be 1.0331x slower
   neg-boolean                                        3.2996+-0.3726     ?      3.3427+-0.4394        ? might be 1.0130x slower
   negative-zero-divide                               0.3033+-0.0246     ?      0.3065+-0.0180        ? might be 1.0107x slower
   negative-zero-modulo                               0.3037+-0.0243     ?      0.3303+-0.0393        ? might be 1.0876x slower
   negative-zero-negate                               0.3098+-0.0706     ?      0.3193+-0.0728        ? might be 1.0309x slower
   nested-function-parsing                           34.5573+-2.6194           33.6400+-0.7249          might be 1.0273x faster
   new-array-buffer-dead                              2.7913+-0.1426            2.7263+-0.0645          might be 1.0239x faster
   new-array-buffer-push                              6.0462+-0.3556            6.0190+-0.4608        
   new-array-dead                                     9.6864+-0.5997     ?      9.9414+-0.8334        ? might be 1.0263x slower
   new-array-push                                     3.7024+-0.5537            3.5044+-0.2072          might be 1.0565x faster
   no-inline-constructor                            108.9671+-2.2867          104.5506+-4.7201          might be 1.0422x faster
   number-test                                        2.9881+-0.3125            2.9140+-0.2580          might be 1.0254x faster
   object-closure-call                                4.8981+-0.1294            4.8772+-0.0618        
   object-test                                        2.9364+-0.1908     ?      2.9474+-0.1983        ?
   obvious-sink-pathology-taken                     107.0574+-3.9488     ?    111.6744+-6.7696        ? might be 1.0431x slower
   obvious-sink-pathology                           104.7736+-4.2252     ?    108.2299+-4.2431        ? might be 1.0330x slower
   obviously-elidable-new-object                     31.3320+-2.5127           30.7920+-3.1901          might be 1.0175x faster
   plus-boolean-arith                                 2.5021+-0.2101            2.4873+-0.2770        
   plus-boolean-double                                3.3088+-0.6157            3.0722+-0.0601          might be 1.0770x faster
   plus-boolean                                       2.5480+-0.0853            2.5155+-0.0646          might be 1.0129x faster
   poly-chain-access-different-prototypes-simple   
                                                      2.6983+-0.0776     ?      2.8265+-0.2295        ? might be 1.0475x slower
   poly-chain-access-different-prototypes             2.5655+-0.1119     ?      2.6258+-0.3196        ? might be 1.0235x slower
   poly-chain-access-simpler                          2.8056+-0.2506     ?      2.8295+-0.4094        ?
   poly-chain-access                                  2.5168+-0.1450     ?      2.5530+-0.1645        ? might be 1.0144x slower
   poly-stricteq                                     49.1741+-1.6906     ?     50.1401+-2.8268        ? might be 1.0196x slower
   polymorphic-array-call                             1.0881+-0.1012     ?      1.1031+-0.1228        ? might be 1.0137x slower
   polymorphic-get-by-id                              2.8107+-0.0662     ?      2.8518+-0.0942        ? might be 1.0146x slower
   polymorphic-put-by-id                             26.2426+-1.0928           25.5664+-0.1925          might be 1.0264x faster
   polymorphic-structure                             13.9203+-0.5674           13.8964+-1.0804        
   polyvariant-monomorphic-get-by-id                  6.4553+-0.2236     !      7.5822+-0.7260        ! definitely 1.1746x slower
   proto-getter-access                                9.0942+-0.0968     ?      9.3986+-0.3046        ? might be 1.0335x slower
   put-by-id-replace-and-transition                   8.4405+-0.6790     ?      8.7300+-1.1852        ? might be 1.0343x slower
   put-by-id-slightly-polymorphic                     2.6528+-0.1409     ?      2.6679+-0.1786        ?
   put-by-id                                         10.7583+-1.4083     ?     10.9115+-1.1898        ? might be 1.0142x slower
   put-by-val-direct                                  0.3788+-0.0268     ?      0.4498+-0.1291        ? might be 1.1873x slower
   put-by-val-large-index-blank-indexing-type   
                                                      5.6993+-0.7683     ?      5.9220+-1.3019        ? might be 1.0391x slower
   put-by-val-machine-int                             2.4703+-0.1134     ?      2.5688+-0.2164        ? might be 1.0399x slower
   rare-osr-exit-on-local                            15.7332+-0.9632           15.2385+-0.5151          might be 1.0325x faster
   register-pressure-from-osr                        17.7685+-0.4828           17.3510+-0.4243          might be 1.0241x faster
   setter                                             5.7622+-0.4019            5.5868+-0.1466          might be 1.0314x faster
   simple-activation-demo                            25.4145+-1.0757     ?     26.0834+-1.6628        ? might be 1.0263x slower
   simple-getter-access                              12.3498+-0.4463           12.2237+-0.2240          might be 1.0103x faster
   simple-poly-call-nested                            9.2196+-0.8026            9.2072+-0.4101        
   simple-poly-call                                   1.2638+-0.1809            1.1849+-0.0164          might be 1.0666x faster
   sin-boolean                                       18.8774+-1.3058           18.2290+-0.4796          might be 1.0356x faster
   singleton-scope                                   66.5435+-2.1890           65.5371+-3.0307          might be 1.0154x faster
   sinkable-new-object-dag                           62.5098+-2.9018     ?     63.9054+-5.0768        ? might be 1.0223x slower
   sinkable-new-object-taken                         50.3336+-4.5854           48.2935+-2.3465          might be 1.0422x faster
   sinkable-new-object                               32.9258+-1.3582     ?     32.9503+-2.7257        ?
   slow-array-profile-convergence                     2.5645+-0.1417            2.4883+-0.0961          might be 1.0306x faster
   slow-convergence                                   2.4004+-0.1481     ?      2.4690+-0.2960        ? might be 1.0285x slower
   sorting-benchmark                                 19.9376+-0.5832     ?     20.3229+-0.9949        ? might be 1.0193x slower
   sparse-conditional                                 1.2254+-0.3264     ?      1.2809+-0.4717        ? might be 1.0453x slower
   splice-to-remove                                  15.2596+-2.8761           14.4368+-0.4090          might be 1.0570x faster
   string-char-code-at                               15.4146+-0.6647     ?     15.4984+-0.4344        ?
   string-concat-object                               2.1832+-0.1572     ?      2.4016+-0.2744        ? might be 1.1000x slower
   string-concat-pair-object                          2.2862+-0.3378            2.2569+-0.1136          might be 1.0130x faster
   string-concat-pair-simple                         10.4030+-1.3108           10.2056+-1.1025          might be 1.0193x faster
   string-concat-simple                              11.5682+-3.7015           10.1462+-1.2285          might be 1.1401x faster
   string-cons-repeat                                 6.7654+-0.3419     ?      8.0803+-1.4258        ? might be 1.1944x slower
   string-cons-tower                                  7.1641+-0.4320     ?      7.1866+-0.7949        ?
   string-equality                                   16.4210+-0.4724     ?     16.4843+-1.2007        ?
   string-get-by-val-big-char                         6.9902+-0.2899            6.8252+-0.3940          might be 1.0242x faster
   string-get-by-val-out-of-bounds-insane             3.1980+-0.2120     ?      3.2200+-0.0968        ?
   string-get-by-val-out-of-bounds                    3.9671+-0.0994     ?      4.1689+-0.1258        ? might be 1.0509x slower
   string-get-by-val                                  3.0064+-0.3366            2.9761+-0.1745          might be 1.0102x faster
   string-hash                                        2.0874+-0.4243            1.8457+-0.0976          might be 1.1310x faster
   string-long-ident-equality                        13.5976+-0.3661     ?     14.4719+-1.5542        ? might be 1.0643x slower
   string-out-of-bounds                              10.5994+-0.2091     ?     10.9404+-0.7613        ? might be 1.0322x slower
   string-repeat-arith                               28.0467+-1.0644           27.4799+-0.7036          might be 1.0206x faster
   string-sub                                        58.4035+-2.0790           55.2434+-3.2920          might be 1.0572x faster
   string-test                                        2.9138+-0.4746            2.7748+-0.0839          might be 1.0501x faster
   string-var-equality                               28.5701+-0.5370     ?     29.8542+-2.1021        ? might be 1.0449x slower
   structure-hoist-over-transitions                   2.5118+-0.2271     ?      2.5342+-0.1670        ?
   substring-concat-weird                            36.6634+-1.8219     ?     38.2138+-2.6922        ? might be 1.0423x slower
   substring-concat                                  39.1127+-1.0932     ?     39.3696+-1.2294        ?
   substring                                         46.6574+-2.5097           46.5481+-3.7045        
   switch-char-constant                               2.8241+-0.2673            2.6672+-0.0314          might be 1.0588x faster
   switch-char                                        6.1698+-0.6116     ?      6.2150+-0.9096        ?
   switch-constant                                    9.8255+-3.1176            8.6575+-1.0438          might be 1.1349x faster
   switch-string-basic-big-var                       13.6732+-0.7577           13.5375+-0.7866          might be 1.0100x faster
   switch-string-basic-big                           12.7436+-0.4469     ?     12.7967+-0.5288        ?
   switch-string-basic-var                           13.0576+-0.2949           12.7418+-0.4423          might be 1.0248x faster
   switch-string-basic                               12.9240+-1.0038           11.9897+-0.3513          might be 1.0779x faster
   switch-string-big-length-tower-var                19.2532+-0.5932     ?     19.9592+-2.9737        ? might be 1.0367x slower
   switch-string-length-tower-var                    13.3217+-0.5538     ?     13.5393+-0.7084        ? might be 1.0163x slower
   switch-string-length-tower                        11.9067+-0.5744           11.6297+-0.1933          might be 1.0238x faster
   switch-string-short                               11.7114+-0.5644     ?     11.8004+-0.4911        ?
   switch                                            12.7096+-1.0044           11.7810+-0.6533          might be 1.0788x faster
   tear-off-arguments-simple                          3.2962+-0.1680            3.2032+-0.4366          might be 1.0290x faster
   tear-off-arguments                                 4.6378+-0.7649            4.1485+-0.1433          might be 1.1179x faster
   temporal-structure                                12.4672+-0.3427     ?     13.1151+-1.4988        ? might be 1.0520x slower
   to-int32-boolean                                  13.3999+-0.3373     ?     13.4344+-0.3336        ?
   try-catch-get-by-val-cloned-arguments             13.4958+-0.6048     ?     14.2495+-1.2112        ? might be 1.0558x slower
   try-catch-get-by-val-direct-arguments              6.2397+-0.6576            5.9273+-0.2225          might be 1.0527x faster
   try-catch-get-by-val-scoped-arguments              7.7965+-0.8139     ?     10.7249+-2.9016        ? might be 1.3756x slower
   undefined-property-access                        223.6949+-4.0243     ?    224.4459+-6.7891        ?
   undefined-test                                     2.9040+-0.2012     ?      2.9294+-0.2558        ?
   unprofiled-licm                                   15.9854+-2.9598           15.1021+-1.2818          might be 1.0585x faster
   varargs-call                                      14.1574+-0.3450     ?     15.4649+-0.9988        ? might be 1.0924x slower
   varargs-construct-inline                          18.9257+-0.7375     ?     19.4996+-2.0310        ? might be 1.0303x slower
   varargs-construct                                 32.1125+-1.8864     ?     34.0411+-3.5164        ? might be 1.0601x slower
   varargs-inline                                     8.3596+-0.2664     ?      8.9384+-0.5767        ? might be 1.0692x slower
   varargs-strict-mode                                9.9932+-1.2811            9.4230+-0.1707          might be 1.0605x faster
   varargs                                            9.8012+-0.7140     ?     10.0531+-2.0576        ? might be 1.0257x slower
   weird-inlining-const-prop                          2.0902+-0.1633     ?      2.1792+-0.3850        ? might be 1.0426x slower

   &lt;geometric&gt;                                        7.8998+-0.0467            7.8978+-0.0334          might be 1.0003x faster

                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       466.4996+-6.8999     ?    468.8544+-9.9788        ?
   cray.c                                           411.6480+-9.4796     ?    424.9932+-17.2724       ? might be 1.0324x slower
   dry.c                                            460.8665+-56.1903         440.3503+-11.8731         might be 1.0466x faster
   FloatMM.c                                        712.5105+-5.4940     !    739.2544+-16.0969       ! definitely 1.0375x slower
   gcc-loops.cpp                                   3732.0947+-127.2753   ?   3737.2475+-96.7664       ?
   n-body.c                                         896.1395+-24.6118         871.9576+-28.1694         might be 1.0277x faster
   Quicksort.c                                      412.6768+-3.4782     ?    419.7579+-14.5950       ? might be 1.0172x slower
   stepanov_container.cpp                          3836.8887+-124.5477   ?   3847.3214+-139.0657      ?
   Towers.c                                         246.8086+-3.6901     ?    252.5093+-9.1557        ? might be 1.0231x slower

   &lt;geometric&gt;                                      757.2919+-10.7685    ?    761.3380+-7.5114        ? might be 1.0053x slower

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                          326.3646+-13.0703         318.5332+-8.9526          might be 1.0246x faster
   arithmetic-simple                                357.8881+-3.6055     ?    372.2515+-33.4373       ? might be 1.0401x slower
   arithmetic-precise                               276.5046+-3.2232          275.1275+-9.0497        
   arithmetic-complex-precise                       277.9065+-10.6697         277.4886+-4.0506        
   arithmetic-precise-order-0                       378.1003+-9.4672     ?    387.9857+-12.3537       ? might be 1.0261x slower
   arithmetic-precise-order-1                       313.9424+-8.4653          313.6561+-4.4173        
   arithmetic-precise-order-2                       381.2032+-43.7698         353.2679+-7.1584          might be 1.0791x faster
   arithmetic-simple-order-1                        353.0623+-8.1321          351.3759+-9.6957        
   arithmetic-simple-order-2                        402.5803+-11.3447         395.0693+-4.9827          might be 1.0190x faster
   lz-string                                        352.1007+-10.6296    ?    371.1422+-29.5769       ? might be 1.0541x slower

   &lt;geometric&gt;                                      339.2868+-7.6625          338.8005+-4.3919          might be 1.0014x faster

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   &lt;scaled-result&gt;                                   58.9361+-0.2459     ?     58.9913+-0.2349        ? might be 1.0009x slower


Rerunning AsmBench gives:

Benchmark report for AsmBench on Basiles-MacBook-Pro (MacBookPro11,3).

VMs tested:
&quot;Conf#1&quot; at /Volumes/Data/Baseline/OpenSource/WebKitBuild/Release/jsc (r183038)
&quot;Conf#2&quot; at /Volumes/Data/Temp/OpenSource/WebKitBuild/Release/jsc (r183038)

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.

                                  Conf#1                    Conf#2                                      

bigfib.cpp                  459.5575+-1.9665     ?    460.1482+-2.6871        ?
cray.c                      407.4002+-4.6968     ?    411.0604+-5.2820        ?
dry.c                       457.5689+-11.3058         446.9803+-17.9435         might be 1.0237x faster
FloatMM.c                   717.0470+-5.0931          715.4148+-6.2474        
gcc-loops.cpp              3666.1530+-49.8003        3649.7342+-25.0163       
n-body.c                    861.4548+-10.7466         855.5641+-8.6685        
Quicksort.c                 416.2374+-8.0882          413.8203+-6.3448        
stepanov_container.cpp     3801.0749+-51.4163    ?   3807.4605+-52.6609       ?
Towers.c                    247.6909+-5.0338     ?    249.9651+-7.5637        ?

&lt;geometric&gt;                 750.9835+-4.5607          749.1282+-5.4124          might be 1.0025x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087082</commentid>
    <comment_count>7</comment_count>
      <attachid>251211</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 10:14:28 -0700</bug_when>
    <thetext>Comment on attachment 251211
Slow (but clean) patch

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

It&apos;s surprising that this patch is a slow-down. :-/

&gt; Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp:116
&gt; -        case AllocationProfileWatchpoint:
&gt; -            addLazily(m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet());
&gt; +        case AllocationProfileWatchpoint: {
&gt; +            InlineWatchpointSet* watchpointSet = m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet();
&gt; +            // If we reach this point, the function&apos;s rare data was allocated when the AllocationProfileWatchpoint
&gt; +            // was added to the graph. We never de-allocate the rare data, so it must still be present, and the
&gt; +            // allocationProfileWatchpointSet with it.
&gt; +            ASSERT (watchpointSet);
&gt; +            addLazily(*watchpointSet);
&gt;              break;
&gt; +        }

It would be better to remove the AllocationProfileWatchpoint node in this patch, and do the watchpoint set registration in ByteCodeParser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087083</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 10:15:12 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 251211 [details]
&gt; Slow (but clean) patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251211&amp;action=review
&gt; 
&gt; It&apos;s surprising that this patch is a slow-down. :-/

Oh - I guess the slow-down went away?  Lol.

&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp:116
&gt; &gt; -        case AllocationProfileWatchpoint:
&gt; &gt; -            addLazily(m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet());
&gt; &gt; +        case AllocationProfileWatchpoint: {
&gt; &gt; +            InlineWatchpointSet* watchpointSet = m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet();
&gt; &gt; +            // If we reach this point, the function&apos;s rare data was allocated when the AllocationProfileWatchpoint
&gt; &gt; +            // was added to the graph. We never de-allocate the rare data, so it must still be present, and the
&gt; &gt; +            // allocationProfileWatchpointSet with it.
&gt; &gt; +            ASSERT (watchpointSet);
&gt; &gt; +            addLazily(*watchpointSet);
&gt; &gt;              break;
&gt; &gt; +        }
&gt; 
&gt; It would be better to remove the AllocationProfileWatchpoint node in this
&gt; patch, and do the watchpoint set registration in ByteCodeParser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087085</commentid>
    <comment_count>9</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 10:24:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Comment on attachment 251211 [details]
&gt; Slow (but clean) patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=251211&amp;action=review
&gt; 
&gt; It&apos;s surprising that this patch is a slow-down. :-/
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp:116
&gt; &gt; -        case AllocationProfileWatchpoint:
&gt; &gt; -            addLazily(m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet());
&gt; &gt; +        case AllocationProfileWatchpoint: {
&gt; &gt; +            InlineWatchpointSet* watchpointSet = m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet();
&gt; &gt; +            // If we reach this point, the function&apos;s rare data was allocated when the AllocationProfileWatchpoint
&gt; &gt; +            // was added to the graph. We never de-allocate the rare data, so it must still be present, and the
&gt; &gt; +            // allocationProfileWatchpointSet with it.
&gt; &gt; +            ASSERT (watchpointSet);
&gt; &gt; +            addLazily(*watchpointSet);
&gt; &gt;              break;
&gt; &gt; +        }
&gt; 
&gt; It would be better to remove the AllocationProfileWatchpoint node in this
&gt; patch, and do the watchpoint set registration in ByteCodeParser.

I thought we said we shouldn&apos;t do this?

(Splitting this into smaller more atomic patches)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087086</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 10:25:37 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; Comment on attachment 251211 [details]
&gt; &gt; Slow (but clean) patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=251211&amp;action=review
&gt; &gt; 
&gt; &gt; It&apos;s surprising that this patch is a slow-down. :-/
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp:116
&gt; &gt; &gt; -        case AllocationProfileWatchpoint:
&gt; &gt; &gt; -            addLazily(m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet());
&gt; &gt; &gt; +        case AllocationProfileWatchpoint: {
&gt; &gt; &gt; +            InlineWatchpointSet* watchpointSet = m_node-&gt;castOperand&lt;JSFunction*&gt;()-&gt;allocationProfileWatchpointSet();
&gt; &gt; &gt; +            // If we reach this point, the function&apos;s rare data was allocated when the AllocationProfileWatchpoint
&gt; &gt; &gt; +            // was added to the graph. We never de-allocate the rare data, so it must still be present, and the
&gt; &gt; &gt; +            // allocationProfileWatchpointSet with it.
&gt; &gt; &gt; +            ASSERT (watchpointSet);
&gt; &gt; &gt; +            addLazily(*watchpointSet);
&gt; &gt; &gt;              break;
&gt; &gt; &gt; +        }
&gt; &gt; 
&gt; &gt; It would be better to remove the AllocationProfileWatchpoint node in this
&gt; &gt; patch, and do the watchpoint set registration in ByteCodeParser.
&gt; 
&gt; I thought we said we shouldn&apos;t do this?
&gt; 
&gt; (Splitting this into smaller more atomic patches)

Ah - it makes sense to do that as a different patch, if you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087100</commentid>
    <comment_count>11</comment_count>
      <attachid>251241</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 11:02:47 -0700</bug_when>
    <thetext>Created attachment 251241
Atomic patch w/ test

This only fixes this bug (+ adds a regression test) and nothing more.

Related improvements/fixes coming in other patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087119</commentid>
    <comment_count>12</comment_count>
      <attachid>251241</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-21 11:51:24 -0700</bug_when>
    <thetext>Comment on attachment 251241
Atomic patch w/ test

Clearing flags on attachment: 251241

Committed r183069: &lt;http://trac.webkit.org/changeset/183069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087120</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-21 11:51:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087161</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 13:47:37 -0700</bug_when>
    <thetext>I&apos;m seeing this crash in r183071:

stress/dfg-rare-data.js.always-trigger-copy-phase: test_script_8421: line 2: 47158 Segmentation fault: 11  &quot;$@&quot; ../../.vm/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false --enableFunctionDotArguments\=true --minHeapUtilization\=2.0 --minCopiedBlockUtilization\=2.0 dfg-rare-data.js
stress/dfg-rare-data.js.always-trigger-copy-phase: ERROR: Unexpected exit code: 139</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087172</commentid>
    <comment_count>15</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 14:40:17 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; I&apos;m seeing this crash in r183071:
&gt; 
&gt; stress/dfg-rare-data.js.always-trigger-copy-phase: test_script_8421: line 2:
&gt; 47158 Segmentation fault: 11  &quot;$@&quot;
&gt; ../../.vm/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false
&gt; --enableFunctionDotArguments\=true --minHeapUtilization\=2.0
&gt; --minCopiedBlockUtilization\=2.0 dfg-rare-data.js
&gt; stress/dfg-rare-data.js.always-trigger-copy-phase: ERROR: Unexpected exit
&gt; code: 139

I don&apos;t see it in r183076 ; checking out r183071 to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087173</commentid>
    <comment_count>16</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-21 14:42:49 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; I&apos;m seeing this crash in r183071:
&gt; &gt; 
&gt; &gt; stress/dfg-rare-data.js.always-trigger-copy-phase: test_script_8421: line 2:
&gt; &gt; 47158 Segmentation fault: 11  &quot;$@&quot;
&gt; &gt; ../../.vm/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false
&gt; &gt; --enableFunctionDotArguments\=true --minHeapUtilization\=2.0
&gt; &gt; --minCopiedBlockUtilization\=2.0 dfg-rare-data.js
&gt; &gt; stress/dfg-rare-data.js.always-trigger-copy-phase: ERROR: Unexpected exit
&gt; &gt; code: 139
&gt; 
&gt; I don&apos;t see it in r183076 ; checking out r183071 to test.

It appears flaky.  I got it on one run and haven&apos;t seen it since.  Maybe your &quot;don&apos;t reallocate&quot; work will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087178</commentid>
    <comment_count>17</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-04-21 14:57:07 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; I&apos;m seeing this crash in r183071:
&gt; &gt; &gt; 
&gt; &gt; &gt; stress/dfg-rare-data.js.always-trigger-copy-phase: test_script_8421: line 2:
&gt; &gt; &gt; 47158 Segmentation fault: 11  &quot;$@&quot;
&gt; &gt; &gt; ../../.vm/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false
&gt; &gt; &gt; --enableFunctionDotArguments\=true --minHeapUtilization\=2.0
&gt; &gt; &gt; --minCopiedBlockUtilization\=2.0 dfg-rare-data.js
&gt; &gt; &gt; stress/dfg-rare-data.js.always-trigger-copy-phase: ERROR: Unexpected exit
&gt; &gt; &gt; code: 139
&gt; &gt; 
&gt; &gt; I don&apos;t see it in r183076 ; checking out r183071 to test.
&gt; 
&gt; It appears flaky.  I got it on one run and haven&apos;t seen it since.  Maybe
&gt; your &quot;don&apos;t reallocate&quot; work will fix it.

Running

while true; do
  DYLD_FRAMEWORK_PATH=WebKitBuild/Debug/ WebKitBuild/Debug/jsc Source/JavaScriptCore/tests/stress/dfg-rare-data.js --useFTLJIT=false --enableFunctionDotArguments=true --minHeapUtilization=2.0 --minCopiedBlockUtilization=2.0;
done

on r183071 dies frequently, while it doesn&apos;t happen in r183076, so I think this is the race condition incidently fixed in https://bugs.webkit.org/show_bug.cgi?id=143999.

The backtrace seems to support this:

ASSERTION FAILED: m_rareData
/Volumes/Data/SVN/WIP/OpenSource/Source/JavaScriptCore/runtime/JSFunction.h(129) : JSC::InlineWatchpointSet &amp;JSC::JSFunction::allocationProfileWatchpointSet()
1   0x109e1fce0 WTFCrash
2   0x10982ce86 JSC::JSFunction::allocationProfileWatchpointSet()
3   0x10982cb9a JSC::DFG::WatchpointCollectionPhase::handle()
4   0x10982c7c9 JSC::DFG::WatchpointCollectionPhase::run()
5   0x10982c675 bool JSC::DFG::runAndLog&lt;JSC::DFG::WatchpointCollectionPhase&gt;(JSC::DFG::WatchpointCollectionPhase&amp;)
6   0x10982c605 bool JSC::DFG::runPhase&lt;JSC::DFG::WatchpointCollectionPhase&gt;(JSC::DFG::Graph&amp;)
7   0x10982c598 JSC::DFG::performWatchpointCollection(JSC::DFG::Graph&amp;)
8   0x109764bfb JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&amp;)
9   0x109763bf1 JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&amp;, JSC::DFG::ThreadData*)
10  0x10982efc0 JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*)
11  0x10982d5a4 JSC::DFG::Worklist::threadFunction(void*)
12  0x109e76f99 WTF::createThread(void (*)(void*), void*, char const*)::$_0::operator()() const
13  0x109e76f6c std::__1::__function::__func&lt;WTF::createThread(void (*)(void*), void*, char const*)::$_0, std::__1::allocator&lt;WTF::createThread(void (*)(void*), void*, char const*)::$_0&gt;, void ()&gt;::operator()()
14  0x1099437aa std::__1::function&lt;void ()&gt;::operator()() const
15  0x109e75eee WTF::threadEntryPoint(void*)
16  0x109e778c8 WTF::wtfThreadEntryPoint(void*)
17  0x7fff8d91b268 _pthread_body
18  0x7fff8d91b1e5 _pthread_body
19  0x7fff8d91941d thread_start
Segmentation fault: 11</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251185</attachid>
            <date>2015-04-20 13:08:26 -0700</date>
            <delta_ts>2015-04-21 11:02:47 -0700</delta_ts>
            <desc>Possible patch, regression test forthcoming</desc>
            <filename>fix_icloud_com_crash.patch</filename>
            <type>text/plain</type>
            <size>2792</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMDI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDE1LTA0LTIwICBCYXNpbGUgQ2xlbWVudCAgPGJhc2lsZV9jbGVtZW50QGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OIChyMTgyODk5KTogaWNsb3VkLmNvbSBjcmFzaGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM5NjAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdXYXRj
aHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpXYXRjaHBvaW50
Q29sbGVjdGlvblBoYXNlOjpoYW5kbGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5o
OgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpoYXNSYXJlRGF0YSk6CisgICAgICAgIChKU0M6
OkpTRnVuY3Rpb246OmFsbG9jYXRpb25TdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpKU0Z1bmN0
aW9uOjphbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQpOgorCiAyMDE1LTA0LTIwICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIEhhc2hNYXAgc3Rv
cmluZyBQcm9wZXJ0eUtleSBTdHJpbmdJbXBsKiBuZWVkIHRvIHVzZSBJZGVudGlmaWVyUmVwSGFz
aCB0byBoYW5kbGUgU3ltYm9scwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdX
YXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
ODMwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0
aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDEyIEBACiAgICAgICAg
ICAgICAgICAgYWRkTGF6aWx5KGdsb2JhbE9iamVjdCgpLT5oYXZpbmdBQmFkVGltZVdhdGNocG9p
bnQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGFkZExhemlseShtX25vZGUt
PmNhc3RPcGVyYW5kPEpTRnVuY3Rpb24qPigpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRT
ZXQoKSk7CisgICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAg
ICAgICAgICBJbmxpbmVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0ID0gbV9ub2RlLT5jYXN0
T3BlcmFuZDxKU0Z1bmN0aW9uKj4oKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCk7
CisgICAgICAgICAgICBpZiAod2F0Y2hwb2ludFNldCkKKyAgICAgICAgICAgICAgICBhZGRMYXpp
bHkoKndhdGNocG9pbnRTZXQpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICBjYXNlIFZhckluamVjdGlvbldhdGNocG9pbnQ6CiAgICAgICAgICAg
ICBhZGRMYXppbHkoZ2xvYmFsT2JqZWN0KCktPnZhckluamVjdGlvbldhdGNocG9pbnQoKSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lv
biAxODMwMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExNiwxNiArMTE2LDIyIEBACiAgICAgICAgIHJldHVybiBtX3Jh
cmVEYXRhLmdldCgpOwogICAgIH0KIAorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7IHJl
dHVybiAhIW1fcmFyZURhdGE7IH0KKwogICAgIFN0cnVjdHVyZSogYWxsb2NhdGlvblN0cnVjdHVy
ZSgpCiAgICAgewotICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CisgICAgICAgIGlmICghaGFz
UmFyZURhdGEoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIHJldHVy
biBtX3JhcmVEYXRhLmdldCgpLT5hbGxvY2F0aW9uU3RydWN0dXJlKCk7CiAgICAgfQogCi0gICAg
SW5saW5lV2F0Y2hwb2ludFNldCYgYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkKKyAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0KiBhbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmFyZURhdGEpOwotICAgICAgICByZXR1cm4gbV9yYXJl
RGF0YS5nZXQoKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCk7CisgICAgICAgIGlm
ICghaGFzUmFyZURhdGEoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgICAg
IHJldHVybiAmbV9yYXJlRGF0YS5nZXQoKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0
KCk7CiAgICAgfQogCiAgICAgYm9vbCBpc0hvc3RPckJ1aWx0aW5GdW5jdGlvbigpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251211</attachid>
            <date>2015-04-20 19:19:41 -0700</date>
            <delta_ts>2015-04-21 11:02:47 -0700</delta_ts>
            <desc>Slow (but clean) patch</desc>
            <filename>fix_rare_data_slow.js</filename>
            <type>text/plain</type>
            <size>13720</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTgzMDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUwNyw2
ICszNTA3LDcgQEAKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7CiAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZz
ZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9m
U3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgICAgICBzbG93UGF0aC5hcHBlbmQobV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgYWxsb2NhdG9yR1BSKSk7CiAg
ICAgICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgYWxsb2NhdG9yR1BSLCBzdHJ1
Y3R1cmVHUFIsIFRydXN0ZWRJbW1QdHIoMCksIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKIAogICAg
ICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd1BhdGgsIHRoaXMsIG9w
ZXJhdGlvbkNyZWF0ZVRoaXMsIHJlc3VsdEdQUiwgY2FsbGVlR1BSLCBub2RlLT5pbmxpbmVDYXBh
Y2l0eSgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4MzAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Nzgs
NiArMzU3OCw3IEBACiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwogICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zm
c2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CiAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICAgICAgc2xvd1BhdGguYXBwZW5kKG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIGFsbG9jYXRvckdQUikpOwog
ICAgICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIGFsbG9jYXRvckdQUiwgc3Ry
dWN0dXJlR1BSLCBUcnVzdGVkSW1tUHRyKDApLCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKICAg
ICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dQYXRoLCB0aGlzLCBv
cGVyYXRpb25DcmVhdGVUaGlzLCByZXN1bHRHUFIsIGNhbGxlZUdQUiwgbm9kZS0+aW5saW5lQ2Fw
YWNpdHkoKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50
Q29sbGVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxODMwMzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsOSArMTA1LDE1IEBACiAgICAgICAgICAgICAgICAg
YWRkTGF6aWx5KGdsb2JhbE9iamVjdCgpLT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKSk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAgICBjYXNlIEFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludDoKLSAgICAgICAgICAgIGFkZExhemlseShtX25vZGUtPmNhc3RPcGVy
YW5kPEpTRnVuY3Rpb24qPigpLT5hbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnRTZXQoKSk7Cisg
ICAgICAgIGNhc2UgQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OiB7CisgICAgICAgICAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0KiB3YXRjaHBvaW50U2V0ID0gbV9ub2RlLT5jYXN0T3BlcmFuZDxK
U0Z1bmN0aW9uKj4oKS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCk7CisgICAgICAg
ICAgICAvLyBJZiB3ZSByZWFjaCB0aGlzIHBvaW50LCB0aGUgZnVuY3Rpb24ncyByYXJlIGRhdGEg
d2FzIGFsbG9jYXRlZCB3aGVuIHRoZSBBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQKKyAgICAg
ICAgICAgIC8vIHdhcyBhZGRlZCB0byB0aGUgZ3JhcGguIFdlIG5ldmVyIGRlLWFsbG9jYXRlIHRo
ZSByYXJlIGRhdGEsIHNvIGl0IG11c3Qgc3RpbGwgYmUgcHJlc2VudCwgYW5kIHRoZQorICAgICAg
ICAgICAgLy8gYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50U2V0IHdpdGggaXQuCisgICAgICAg
ICAgICBBU1NFUlQgKHdhdGNocG9pbnRTZXQpOworICAgICAgICAgICAgYWRkTGF6aWx5KCp3YXRj
aHBvaW50U2V0KTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAK
ICAgICAgICAgY2FzZSBWYXJJbmplY3Rpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgYWRkTGF6
aWx5KGdsb2JhbE9iamVjdCgpLT52YXJJbmplY3Rpb25XYXRjaHBvaW50KCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCShyZXZpc2lvbiAxODMwMzgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MDYsNiArNzA2LDcgQEAKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8s
IHJhcmVEYXRhUmVnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlv
blJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7CiAgICAgbG9hZFB0
cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZkFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUo
KSksIHN0cnVjdHVyZVJlZyk7CisgICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJvLCBh
bGxvY2F0b3JSZWcpKTsKIAogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KGFsbG9jYXRvclJlZywg
c3RydWN0dXJlUmVnLCByZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGVtaXRQdXRWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CkBAIC03MTMsNiArNzE0
LDcgQEAKIAogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2NyZWF0ZV90aGlzKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIp
CiB7CisgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgcmFyZSBkYXRhCiAg
ICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBkb2Vzbid0IGhhdmUgYW4gYWxsb2NhdGlvbiBwcm9m
aWxlCiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOyAvLyBhbGxvY2F0aW9uIGZhaWxlZAogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCShyZXZp
c2lvbiAxODMwMzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyNSw2ICs5MjUsNyBAQAogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3Mo
cmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2Nh
dG9yUmVnKTsKICAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mQWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBhZGRTbG93Q2FzZShi
cmFuY2hUZXN0UHRyKFplcm8sIGFsbG9jYXRvclJlZykpOwogCiAgICAgZW1pdEFsbG9jYXRlSlNP
YmplY3QoYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7
CiAgICAgZW1pdFN0b3JlQ2VsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCByZXN1
bHRSZWcpOwpAQCAtOTMyLDYgKzkzMyw3IEBACiAKIHZvaWQgSklUOjplbWl0U2xvd19vcF9jcmVh
dGVfdGhpcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VF
bnRyeT46Oml0ZXJhdG9yJiBpdGVyKQogeworICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9l
c24ndCBoYXZlIHJhcmUgZGF0YQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gZG9lc24ndCBo
YXZlIGFuIGFsbG9jYXRpb24gcHJvZmlsZQogICAgIGxpbmtTbG93Q2FzZShpdGVyKTsgLy8gYWxs
b2NhdGlvbiBmYWlsZWQKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20JKHJldmlzaW9uIDE4MzAzOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCSh3b3JraW5nIGNvcHkpCkBAIC03NDQsNiArNzQ0LDcgQEAKICAgICBidHB6IHQ0LCAub3BD
cmVhdGVUaGlzU2xvdwogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblBy
b2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAg
IGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZTo6bV9zdHJ1Y3R1cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0
ZVRoaXNTbG93CiAgICAgYWxsb2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRl
VGhpc1Nsb3cpCiAgICAgbG9hZGkgNFtQQ10sIHQxCiAgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE4MzAzOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MzAsNiArNjMwLDcgQEAKICAgICBidHB6IHQ0LCAub3BDcmVhdGVUaGlz
U2xvdwogICAgIGxvYWRwIEZ1bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6bV9hbGxvY2F0b3JbdDRdLCB0MQogICAgIGxvYWRwIEZ1
bmN0aW9uUmFyZURhdGE6Om1fYWxsb2NhdGlvblByb2ZpbGUgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6bV9zdHJ1Y3R1cmVbdDRdLCB0MgorICAgIGJ0cHogdDEsIC5vcENyZWF0ZVRoaXNTbG93
CiAgICAgYWxsb2NhdGVKU09iamVjdCh0MSwgdDIsIHQwLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cp
CiAgICAgbG9hZGlzRnJvbUluc3RydWN0aW9uKDEsIHQxKQogICAgIHN0b3JlcSB0MCwgW2Nmciwg
dDEsIDhdCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblJhcmVEYXRhLmNwcAkocmV2aXNpb24gMTgzMDM4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDEw
ICszMiwxMCBAQAogCiBjb25zdCBDbGFzc0luZm8gRnVuY3Rpb25SYXJlRGF0YTo6c19pbmZvID0g
eyAiRnVuY3Rpb25SYXJlRGF0YSIsIDAsIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoRnVuY3Rpb25S
YXJlRGF0YSkgfTsKIAotRnVuY3Rpb25SYXJlRGF0YSogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRl
KFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5KQorRnVu
Y3Rpb25SYXJlRGF0YSogRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKFZNJiB2bSkKIHsKICAgICBG
dW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEZ1
bmN0aW9uUmFyZURhdGE+KHZtLmhlYXApKSBGdW5jdGlvblJhcmVEYXRhKHZtKTsKLSAgICByYXJl
RGF0YS0+ZmluaXNoQ3JlYXRpb24odm0sIHByb3RvdHlwZSwgaW5saW5lQ2FwYWNpdHkpOworICAg
IHJhcmVEYXRhLT5maW5pc2hDcmVhdGlvbih2bSk7CiAgICAgcmV0dXJuIHJhcmVEYXRhOwogfQog
CkBAIC03Nyw5ICs3Nyw4IEBACiB7CiB9CiAKLXZvaWQgRnVuY3Rpb25SYXJlRGF0YTo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU09iamVjdCogcHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNp
dHkpCit2b2lkIEZ1bmN0aW9uUmFyZURhdGE6OmluaXRpYWxpemUoVk0mIHZtLCBKU09iamVjdCog
cHJvdG90eXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIG1fYWxsb2NhdGlvblByb2ZpbGUuaW5pdGlhbGl6ZSh2bSwgdGhpcywg
cHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgJKHJldmlzaW9uIDE4MzAzOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtNDksMTEgKzQ5LDExIEBACiAgICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBTdHJ1Y3R1cmVJc0lt
bW9ydGFsIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiAKLSAgICBzdGF0aWMgRnVuY3Rpb25SYXJl
RGF0YSogY3JlYXRlKFZNJiwgSlNPYmplY3QqIHByb3RvdHlwZSwgc2l6ZV90IGlubGluZUNhcGFj
aXR5KTsKLQogICAgIHN0YXRpYyBjb25zdCBib29sIG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKKyAgICBzdGF0aWMgRnVuY3Rpb25S
YXJlRGF0YSogY3JlYXRlKFZNJik7CisKICAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIAogICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKQEAgLTc3LDYg
Kzc3LDEwIEBACiAgICAgICAgIHJldHVybiBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsK
ICAgICB9CiAKKyAgICB2b2lkIGluaXRpYWxpemUoVk0mLCBKU09iamVjdCogcHJvdG90eXBlLCBz
aXplX3QgaW5saW5lQ2FwYWNpdHkpOworCisgICAgYm9vbCBpc0luaXRpYWxpemVkKCkgeyByZXR1
cm4gIW1fYWxsb2NhdGlvblByb2ZpbGUuaXNOdWxsKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIEZ1
bmN0aW9uUmFyZURhdGEoVk0mKTsKICAgICB+RnVuY3Rpb25SYXJlRGF0YSgpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDE4
MzAzOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsMTQgKzEwOCwyMCBAQAogICAgIHJldHVybiBmdW5jdGlvbjsK
IH0KIAotRnVuY3Rpb25SYXJlRGF0YSogSlNGdW5jdGlvbjo6Y3JlYXRlUmFyZURhdGEoRXhlY1N0
YXRlKiBleGVjLCBzaXplX3QgaW5saW5lQ2FwYWNpdHkpCit2b2lkIEpTRnVuY3Rpb246OmFsbG9j
YXRlUmFyZURhdGEoVk0mIHZtKQogeworICAgIEZ1bmN0aW9uUmFyZURhdGEqIHJhcmVEYXRhID0g
RnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlKHZtKTsKKyAgICBtX3JhcmVEYXRhLnNldCh2bSwgdGhp
cywgcmFyZURhdGEpOworICAgIFdURjo6c3RvcmVMb2FkRmVuY2UoKTsKK30KKworRnVuY3Rpb25S
YXJlRGF0YSogSlNGdW5jdGlvbjo6aW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSogZXhlYywg
c2l6ZV90IGlubGluZUNhcGFjaXR5KQorewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihnZXQoZXhlYywg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlKSk7CiAgICAgaWYgKCFwcm90b3R5cGUpCiAgICAg
ICAgIHByb3RvdHlwZSA9IGdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90b3R5cGUoKTsKLSAgICBG
dW5jdGlvblJhcmVEYXRhKiByYXJlRGF0YSA9IEZ1bmN0aW9uUmFyZURhdGE6OmNyZWF0ZSh2bSwg
cHJvdG90eXBlLCBpbmxpbmVDYXBhY2l0eSk7Ci0gICAgbV9yYXJlRGF0YS5zZXQodm0sIHRoaXMs
IHJhcmVEYXRhKTsKKyAgICBtX3JhcmVEYXRhLT5pbml0aWFsaXplKGdsb2JhbE9iamVjdCgpLT52
bSgpLCBwcm90b3R5cGUsIGlubGluZUNhcGFjaXR5KTsKICAgICByZXR1cm4gbV9yYXJlRGF0YS5n
ZXQoKTsKIH0KIApAQCAtMzkwLDggKzM5Niw4IEBACiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90
KHRoaXNPYmplY3QpOwogICAgICAgICB0aGlzT2JqZWN0LT5tZXRob2RUYWJsZShleGVjLT52bSgp
KS0+Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7CiAgICAgICAgIGlmICh0aGlzT2JqZWN0LT5tX3JhcmVEYXRhKSB7CisgICAgICAgICAgICB0
aGlzT2JqZWN0LT5tX3JhcmVEYXRhLT5hbGxvY2F0aW9uUHJvZmlsZSgpLT5jbGVhcigpOwogICAg
ICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGVXYXRjaHBv
aW50U2V0KCkuZmlyZUFsbCgiU3RvcmUgdG8gcHJvdG90eXBlIHByb3BlcnR5IG9mIGEgZnVuY3Rp
b24iKTsKLSAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEuY2xlYXIoKTsKICAgICAg
ICAgfQogICAgICAgICAvLyBEb24ndCBhbGxvdyB0aGlzIHRvIGJlIGNhY2hlZCwgc2luY2UgYSBb
W1B1dF1dIG11c3QgY2xlYXIgbV9yYXJlRGF0YS4KICAgICAgICAgUHV0UHJvcGVydHlTbG90IGRv
bnRDYWNoZSh0aGlzT2JqZWN0KTsKQEAgLTQzOSw4ICs0NDUsOCBAQAogICAgICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdCh0aGlzT2JqZWN0KTsKICAgICAgICAgdGhpc09iamVjdC0+bWV0aG9kVGFibGUo
ZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgICAgICBpZiAodGhpc09iamVjdC0+bV9yYXJlRGF0YSkgeworICAg
ICAgICAgICAgdGhpc09iamVjdC0+bV9yYXJlRGF0YS0+YWxsb2NhdGlvblByb2ZpbGUoKS0+Y2xl
YXIoKTsKICAgICAgICAgICAgIHRoaXNPYmplY3QtPm1fcmFyZURhdGEtPmFsbG9jYXRpb25Qcm9m
aWxlV2F0Y2hwb2ludFNldCgpLmZpcmVBbGwoIlN0b3JlIHRvIHByb3RvdHlwZSBwcm9wZXJ0eSBv
ZiBhIGZ1bmN0aW9uIik7Ci0gICAgICAgICAgICB0aGlzT2JqZWN0LT5tX3JhcmVEYXRhLmNsZWFy
KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEJhc2U6OmRlZmluZU93blByb3BlcnR5KG9i
amVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAg
ICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAko
cmV2aXNpb24gMTgzMDM4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsMjEgKzExMSwzMiBAQAogCiAgICAgRnVuY3Rp
b25SYXJlRGF0YSogcmFyZURhdGEoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbmxpbmVDYXBh
Y2l0eSkKICAgICB7Ci0gICAgICAgIGlmIChVTkxJS0VMWSghbV9yYXJlRGF0YSkpCi0gICAgICAg
ICAgICByZXR1cm4gY3JlYXRlUmFyZURhdGEoZXhlYywgaW5saW5lQ2FwYWNpdHkpOworICAgICAg
ICBpZiAoVU5MSUtFTFkoIWhhc1JhcmVEYXRhKCkpKQorICAgICAgICAgICAgYWxsb2NhdGVSYXJl
RGF0YShleGVjLT52bSgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JhcmVEYXRhLT5pc0lu
aXRpYWxpemVkKCkpKQorICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxpemVSYXJlRGF0YShleGVj
LCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLmdldCgpOwogICAg
IH0KIAorICAgIGJvb2wgaGFzUmFyZURhdGEoKSBjb25zdCB7CisgICAgICAgIFdURjo6c3RvcmVM
b2FkRmVuY2UoKTsKKyAgICAgICAgcmV0dXJuICEhbV9yYXJlRGF0YTsKKyAgICB9CisKICAgICBT
dHJ1Y3R1cmUqIGFsbG9jYXRpb25TdHJ1Y3R1cmUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1f
cmFyZURhdGEpOworICAgICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgICAgICByZXR1cm4gbV9yYXJlRGF0YS5nZXQoKS0+YWxsb2NhdGlv
blN0cnVjdHVyZSgpOwogICAgIH0KIAotICAgIElubGluZVdhdGNocG9pbnRTZXQmIGFsbG9jYXRp
b25Qcm9maWxlV2F0Y2hwb2ludFNldCgpCisgICAgSW5saW5lV2F0Y2hwb2ludFNldCogYWxsb2Nh
dGlvblByb2ZpbGVXYXRjaHBvaW50U2V0KCkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX3JhcmVE
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fcmFyZURhdGEuZ2V0KCktPmFsbG9jYXRpb25Qcm9maWxl
V2F0Y2hwb2ludFNldCgpOworICAgICAgICBpZiAoIWhhc1JhcmVEYXRhKCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgICAgICByZXR1cm4gJm1fcmFyZURhdGEuZ2V0KCktPmFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludFNldCgpOwogICAgIH0KIAogICAgIGJvb2wgaXNIb3N0
T3JCdWlsdGluRnVuY3Rpb24oKSBjb25zdDsKQEAgLTE0MCw3ICsxNTEsOCBAQAogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oVk0mLCBOYXRpdmVFeGVjdXRhYmxlKiwgaW50IGxlbmd0aCwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKICAgICB1c2luZyBCYXNlOjpmaW5pc2hDcmVhdGlvbjsKIAotICAgIEZ1
bmN0aW9uUmFyZURhdGEqIGNyZWF0ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSk7CisgICAgdm9pZCBhbGxvY2F0ZVJhcmVEYXRhKFZNJik7CisgICAgRnVuY3Rpb25S
YXJlRGF0YSogaW5pdGlhbGl6ZVJhcmVEYXRhKEV4ZWNTdGF0ZSosIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSk7CiAKICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOwogICAgIHN0YXRpYyB2b2lk
IGdldE93bk5vbkluZGV4UHJvcGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlID0gRW51bWVyYXRpb25Nb2RlKCkpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZmctcmFyZS1kYXRhLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGZnLXJhcmUt
ZGF0YS5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvZGZnLXJhcmUtZGF0YS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDkgQEAKK2Z1bmN0
aW9uIEYgKCkgeyB0aGlzLmlubmVyID0gNDI7IH07CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAw
MDA7ICsraSkgeworICAgIHZhciB4ID0gbmV3IEYoZmFsc2UpOworICAgIEYucHJvdG90eXBlID0g
T2JqZWN0OyAvLyBGb3JjZSBjbGVhcmluZyBvZiB0aGUgZnVuY3Rpb24ncyByYXJlIGRhdGEKKyAg
ICB2YXIgcmVzdWx0ID0geC5pbm5lcjsKKyAgICBpZiAocmVzdWx0ICE9PSA0MikKKyAgICAgICAg
dGhyb3cgIkV4cGVjdGVkIDQyLCBnb3Q6ICIgKyByZXN1bHQ7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251241</attachid>
            <date>2015-04-21 11:02:47 -0700</date>
            <delta_ts>2015-04-21 11:51:24 -0700</delta_ts>
            <desc>Atomic patch w/ test</desc>
            <filename>atomic.patch</filename>
            <type>text/plain</type>
            <size>1645</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGM2M2JiNTQuLmM3OWUxZGE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNC0yMSAgQmFzaWxlIENsZW1l
bnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjE4
Mjg5OSk6IGljbG91ZC5jb20gY3Jhc2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzOTYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6
SlNGdW5jdGlvbjo6YWxsb2NhdGlvblN0cnVjdHVyZSk6CisgICAgICAgICogdGVzdHMvc3RyZXNz
L2RmZy1yYXJlLWRhdGEuanM6IEFkZGVkLgorICAgICAgICAoRik6IFJlZ3Jlc3Npb24gdGVzdAor
CiAyMDE1LTA0LTIwICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ2xlYW51cCBzb21lIFN0cmluZ0J1aWxkZXIgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKaW5kZXggMmNmYjMzNy4uODFkZmY4NyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaApAQCAtMTE4LDcgKzExOCw5IEBA
IHB1YmxpYzoKIAogICAgIFN0cnVjdHVyZSogYWxsb2NhdGlvblN0cnVjdHVyZSgpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9yYXJlRGF0YSk7CisgICAgICAgIGlmICghbV9yYXJlRGF0YSkKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgICAgIHJldHVybiBtX3JhcmVEYXRhLmdl
dCgpLT5hbGxvY2F0aW9uU3RydWN0dXJlKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RmZy1yYXJlLWRhdGEuanMgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RmZy1yYXJlLWRhdGEuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNDVhM2YwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGZnLXJhcmUtZGF0YS5qcwpAQCAtMCwwICsxLDkg
QEAKK2Z1bmN0aW9uIEYgKCkgeyB0aGlzLmlubmVyID0gNDI7IH07CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMTAwMDA7ICsraSkgeworICAgIHZhciB4ID0gbmV3IEYoZmFsc2UpOworICAgIEYucHJv
dG90eXBlID0gT2JqZWN0OyAvLyBGb3JjZSBjbGVhcmluZyBvZiB0aGUgZnVuY3Rpb24ncyByYXJl
IGRhdGEKKyAgICB2YXIgcmVzdWx0ID0geC5pbm5lcjsKKyAgICBpZiAocmVzdWx0ICE9PSA0MikK
KyAgICAgICAgdGhyb3cgIkV4cGVjdGVkIDQyLCBnb3Q6ICIgKyByZXN1bHQ7Cit9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>