<?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>99213</bug_id>
          
          <creation_ts>2012-10-12 15:04:31 -0700</creation_ts>
          <short_desc>[ARMv7] Neither linkCall() nor linkPointer() should flush code</short_desc>
          <delta_ts>2012-11-20 08:33:17 -0800</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="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>741251</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-12 15:04:31 -0700</bug_when>
    <thetext>LinkBuffer calls linkCall() and linkPointer(), which ends up with code flushing on ARMv7. However, this doesn&apos;t look necessary, as the code will be finally flushed anyway.

A simple solution is to pass an argument &quot;flush&quot; to linkCall() and linkPointer(), and suppress code flushing when it is called from LinkBuffer.

This gives &quot;noticeable&quot; boost on sunspider result.

But I&apos;m not sure if this is the best solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741254</commentid>
    <comment_count>1</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-12 15:11:45 -0700</bug_when>
    <thetext>A better plan: For ARMv7 only, make linkCall/linkPointer not flash code by default.  make other calls to linkCall/linkPointer in ARMv7 use explicit flags to flush code...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741523</commentid>
    <comment_count>2</comment_count>
      <attachid>168565</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-13 14:16:32 -0700</bug_when>
    <thetext>Created attachment 168565
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742070</commentid>
    <comment_count>3</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-15 08:38:45 -0700</bug_when>
    <thetext>I also found replaceWithLoad and replaceWithAddressComputation can unnecessarily flush code. going to fix it in another patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742145</commentid>
    <comment_count>4</comment_count>
      <attachid>168565</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-15 10:23:38 -0700</bug_when>
    <thetext>Comment on attachment 168565
the patch

hm... Not only LinkBuffer can call linkCall</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742199</commentid>
    <comment_count>5</comment_count>
      <attachid>168744</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-15 11:10:28 -0700</bug_when>
    <thetext>Created attachment 168744
Add the fix to replaceWith* methods

actually it was false alarm. Also, linkCall never flushes code in ARM/SHA/MIPS ports. This is pure ARMv7 bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742267</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-15 12:21:27 -0700</bug_when>
    <thetext>&gt; A better plan: For ARMv7 only, make linkCall/linkPointer not flash code by default.

Why make this optimization CPU-specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742269</commentid>
    <comment_count>7</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-15 12:23:15 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; A better plan: For ARMv7 only, make linkCall/linkPointer not flash code by default.
&gt; 
&gt; Why make this optimization CPU-specific?

This is only an issue in ARMv7Assembler. Other assemblers don&apos;t have this problem. x86/x64 don&apos;t need to flush code. ARM-traditional/mips/sh4 don&apos;t flush code in linkCall()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742548</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-15 16:06:49 -0700</bug_when>
    <thetext>&gt; &gt; Why make this optimization CPU-specific?
&gt; 
&gt; This is only an issue in ARMv7Assembler. Other assemblers don&apos;t have this problem. x86/x64 don&apos;t need to flush code. ARM-traditional/mips/sh4 don&apos;t flush code in linkCall()

It seems brittle, and a layering violation, for the ARMv7 assembler to guess that calls like linkCall() and linkPointer() will always be followed by a call to cacheFlush().

Even though you believe, based on reading the implementation details of all our assemblers, that only ARMv7 needs this particular optimization at this time, and that the optimization is correct for the current implementation of LinkBuffer, the goal of our MacroAssembler and LinkBuffer interfaces is to abstract away those details so we can make future changes without thinking about all platforms at once.

Is there a major blocker that forces this code to be ARMv7-specific?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743135</commentid>
    <comment_count>9</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-16 07:40:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; &gt; Why make this optimization CPU-specific?
&gt; &gt; 
&gt; &gt; This is only an issue in ARMv7Assembler. Other assemblers don&apos;t have this problem. x86/x64 don&apos;t need to flush code. ARM-traditional/mips/sh4 don&apos;t flush code in linkCall()
&gt; 
&gt; It seems brittle, and a layering violation, for the ARMv7 assembler to guess that calls like linkCall() and linkPointer() will always be followed by a call to cacheFlush().
&gt; 
&gt; Even though you believe, based on reading the implementation details of all our assemblers, that only ARMv7 needs this particular optimization at this time, and that the optimization is correct for the current implementation of LinkBuffer, the goal of our MacroAssembler and LinkBuffer interfaces is to abstract away those details so we can make future changes without thinking about all platforms at once.
&gt; 
&gt; Is there a major blocker that forces this code to be ARMv7-specific?

Maybe the title is confusing. I thought It was a more generic issue at the very beginning. However after reading more code, I found that it is not LinkBuffer&apos;s fault at all. I believe that none of the link*() calls need/should flush code. LinkBuffer will flush the entire assembly at the finalization step. However, those relink*/repatch*/replace* calls must flush code (except for x86 families). None of other assemblers flush code in linkCall() and linkPointer(), and ARMv7Assembler doesn&apos;t flush in linkJump(). So I think we can call it a bug in ARMv7Assembler, and it is an accident that linkCall/linkPointer finally flushes code through setInt32.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>744302</commentid>
    <comment_count>10</comment_count>
      <attachid>169195</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-17 09:25:13 -0700</bug_when>
    <thetext>Created attachment 169195
again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745371</commentid>
    <comment_count>11</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-18 10:42:08 -0700</bug_when>
    <thetext>Ping reviewers... has anyone tried it on iOS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752622</commentid>
    <comment_count>12</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-10-26 17:51:46 -0700</bug_when>
    <thetext>Hi Yong,

Nice catch – but I think there&apos;s a slightly better fix if you feel like taking it on.

Your patch fixes the problem that we&apos;ll flush ints/pointers more than once during the link phase, but there is a related issue that we sometimes flush the same cache line more than once when repatching code.  I&apos;d suggest changing the MacroAssembler::repatch* etc methods in all assemblers to return the range of code modified (start address &amp; end/size as a pair), and have the RepatchBuffer cache all required flushes &amp; only perform them once all modifications have been performed.  When buffering up the flushes, we can round to cache line size, then ditch redundant flushes &amp; coalesce flushes to adjacent cache lines.

(minor detail: JITWriteBarrier &amp; JumpReplacementWatchpoint currently aren&apos;t using RepatchBuffer &amp; should be – that will also need to be fixed).

I won&apos;t r+ for now, since I&apos;d rather see the fix I&apos;ve described, but if you don&apos;t feel like taking this on we could take your patch as is &amp; revisit – would just be unfortunate since some of this change would be redundant &amp; end up being reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752652</commentid>
    <comment_count>13</comment_count>
      <attachid>169195</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-10-26 19:08:09 -0700</bug_when>
    <thetext>Comment on attachment 169195
again

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

I remove the review flag for now.
I think this is a nice patch but I would really like it to be completely generic. ARM is not the only platform without completely consistent caches.

I think we should follow Gavin&apos;s advices here. Yong, any opinion?

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        LinkBuffer doesn&apos;t need to flush code during linking. It will
&gt; +        eventually flush the whole executable. Fixing this gives &gt;%5
&gt; +        sunspider boost (on QNX).

After profiling on hardware, I find it strange you get so much improvement from this. It is pretty far from a hotspot.

It is still a good idea to fix this though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752676</commentid>
    <comment_count>14</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-26 21:15:45 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Hi Yong,
&gt; 
&gt; Nice catch – but I think there&apos;s a slightly better fix if you feel like taking it on.
&gt; 
&gt; Your patch fixes the problem that we&apos;ll flush ints/pointers more than once during the link phase, but there is a related issue that we sometimes flush the same cache line more than once when repatching code.  I&apos;d suggest changing the MacroAssembler::repatch* etc methods in all assemblers to return the range of code modified (start address &amp; end/size as a pair), and have the RepatchBuffer cache all required flushes &amp; only perform them once all modifications have been performed.  When buffering up the flushes, we can round to cache line size, then ditch redundant flushes &amp; coalesce flushes to adjacent cache lines.

Actually I did try a very similar solution with RepatchBuffer. However it didn&apos;t show any boost on benchmarks. I could try improving that patch when time allowing. But I think the bug should be separated as this one is only an issue in ARMv7Assembler, and repatching is generic. Even now I had a ready patch for the repatching one, I still think it should be a separate bug.

&gt; 
&gt; (minor detail: JITWriteBarrier &amp; JumpReplacementWatchpoint currently aren&apos;t using RepatchBuffer &amp; should be – that will also need to be fixed).

Thanks. Very helpful info :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753459</commentid>
    <comment_count>15</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-10-29 08:04:34 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 169195 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169195&amp;action=review
&gt; 
&gt; I remove the review flag for now.
&gt; I think this is a nice patch but I would really like it to be completely generic. ARM is not the only platform without completely consistent caches.
&gt; 
&gt; I think we should follow Gavin&apos;s advices here. Yong, any opinion?
&gt; 

I still think it is an ARMV-v7 only bug, as none of other assemblers&apos; linkCall/linkPointer does cache flushing, nor ARMv7&apos;s linkJump() does. So it is very clear to me it is just an independent bug rather than a generic optimization. I could modify the changelog if needed.

We can create another bug for the potential duplicate cache flushing during &quot;repatching&quot;.

So I&apos;ll add back the review request.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765683</commentid>
    <comment_count>16</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-11-13 09:18:40 -0800</bug_when>
    <thetext>The patch is pending so long here. It seems there is no objection with this patch itself. Although it doesn&apos;t give so much boost on other platforms, it is still a proper fix, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771447</commentid>
    <comment_count>17</comment_count>
      <attachid>169195</attachid>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-11-19 20:53:35 -0800</bug_when>
    <thetext>Comment on attachment 169195
again

No complaints, it looks good, and gives improvements on at least one platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771895</commentid>
    <comment_count>18</comment_count>
      <attachid>169195</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 08:33:12 -0800</bug_when>
    <thetext>Comment on attachment 169195
again

Clearing flags on attachment: 169195

Committed r135286: &lt;http://trac.webkit.org/changeset/135286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771896</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-20 08:33:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168565</attachid>
            <date>2012-10-13 14:16:32 -0700</date>
            <delta_ts>2012-10-15 10:23:38 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>99213.patch</filename>
            <type>text/plain</type>
            <size>3887</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNjVjMjYuLjk5M2RiMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEwLTEzICBZb25nIExpICA8eW9s
aUByaW0uY29tPgorCisgICAgICAgIFtBUk12N10gTGlua0J1ZmZlciBmbHVzaGVzIGNvZGUgdW5u
ZWNlc3NhcmlseSBmb3IgZXZlcnkgbGluay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5MjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTGlua0J1ZmZlciBkb2Vzbid0IG5lZWQgdG8gZmx1c2ggY29kZSBk
dXJpbmcgbGlua2luZy4gSXQgd2lsbAorICAgICAgICBldmVudHVhbGx5IGZsdXNoIHRoZSB3aG9s
ZSBleGVjdXRhYmxlLiBGaXhpbmcgdGhpcyBnaXZlcyA+JTUKKyAgICAgICAgc3Vuc3BpZGVyIGJv
b3N0IChvbiBRTlgpLgorCisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6Cisg
ICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rQ2FsbCk6CisgICAgICAgIChKU0M6OkFS
TXY3QXNzZW1ibGVyOjpsaW5rUG9pbnRlcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVy
OjpyZWxpbmtDYWxsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGF0Y2hJbnQz
Mik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcik6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpzZXRJbnQzMik6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpzZXRQb2ludGVyKToKKwogMjAxMi0xMC0xMiAgS2FuZ2lsIEhhbiAgPGthbmdp
bC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGVycm9yIG9uIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTXY3QXNzZW1ibGVyLmgKaW5kZXggZTliOWZjYy4uNmM3NzIwZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKQEAgLTIwNTcsMTIg
KzIwNTcsMTIgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZnJvbS5pc1NldCgpKTsKICAgICAg
ICAgQVNTRVJUKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAmIDEpOwogCi0gICAgICAg
IHNldFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8
aW50cHRyX3Q+KGNvZGUpICsgZnJvbS5tX29mZnNldCkgLSAxLCB0byk7CisgICAgICAgIHNldFBv
aW50ZXIocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KGNvZGUpICsgZnJvbS5tX29mZnNldCkgLSAxLCB0bywgZmFsc2UpOwogICAgIH0KIAogICAg
IHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyKHZvaWQqIGNvZGUsIEFzc2VtYmxlckxhYmVsIHdoZXJl
LCB2b2lkKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHNldFBvaW50ZXIocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29kZSkgKyB3aGVyZS5tX29mZnNldCwgdmFsdWUpOworICAgICAgICBzZXRQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGNvZGUpICsgd2hlcmUubV9vZmZzZXQsIHZhbHVl
LCBmYWxzZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVsaW5rSnVtcCh2b2lkKiBmcm9t
LCB2b2lkKiB0bykKQEAgLTIwODAsNyArMjA4MCw3IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJU
KCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oZnJvbSkgJiAxKSk7CiAgICAgICAgIEFTU0VS
VChyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgJiAxKTsKIAotICAgICAgICBzZXRQb2lu
dGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEsIHRvKTsKKyAgICAgICAg
c2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSkgLSAxLCB0bywgdHJ1
ZSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyB2b2lkKiByZWFkQ2FsbFRhcmdldCh2b2lkKiBm
cm9tKQpAQCAtMjA5Miw3ICsyMDkyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJU
KCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hlcmUpICYgMSkpOwogICAgICAgICAKLSAg
ICAgICAgc2V0SW50MzIod2hlcmUsIHZhbHVlKTsKKyAgICAgICAgc2V0SW50MzIod2hlcmUsIHZh
bHVlLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHZvaWQgcmVwYXRjaENvbXBhY3Qo
dm9pZCogd2hlcmUsIGludDMyX3Qgb2Zmc2V0KQpAQCAtMjExOSw3ICsyMTE5LDcgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgQVNTRVJUKCEocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4od2hl
cmUpICYgMSkpOwogICAgICAgICAKLSAgICAgICAgc2V0UG9pbnRlcih3aGVyZSwgdmFsdWUpOwor
ICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSwgdHJ1ZSk7CiAgICAgfQogCiAgICAgc3Rh
dGljIHZvaWQqIHJlYWRQb2ludGVyKHZvaWQqIHdoZXJlKQpAQCAtMjI5MSw3ICsyMjkxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFZGUE9wZXJhbmQob3ApOwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIHNldEludDMyKHZvaWQqIGNvZGUsIHVpbnQzMl90IHZhbHVlKQorICAgIHN0YXRp
YyB2b2lkIHNldEludDMyKHZvaWQqIGNvZGUsIHVpbnQzMl90IHZhbHVlLCBib29sIGZsdXNoKQog
ICAgIHsKICAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
MTZfdCo+KGNvZGUpOwogICAgICAgICBBU1NFUlQoaXNNT1ZfaW1tX1QzKGxvY2F0aW9uIC0gNCkg
JiYgaXNNT1ZUKGxvY2F0aW9uIC0gMikpOwpAQCAtMjMwMyw3ICsyMzAzLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgbG9jYXRpb25bLTJdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tRmly
c3QoT1BfTU9WVCwgaGkxNik7CiAgICAgICAgIGxvY2F0aW9uWy0xXSA9IHR3b1dvcmRPcDVpNklt
bTRSZWc0RW5jb2RlZEltbVNlY29uZCgobG9jYXRpb25bLTFdID4+IDgpICYgMHhmLCBoaTE2KTsK
IAotICAgICAgICBjYWNoZUZsdXNoKGxvY2F0aW9uIC0gNCwgNCAqIHNpemVvZih1aW50MTZfdCkp
OworICAgICAgICBpZiAoZmx1c2gpCisgICAgICAgICAgICBjYWNoZUZsdXNoKGxvY2F0aW9uIC0g
NCwgNCAqIHNpemVvZih1aW50MTZfdCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgaW50MzJf
dCByZWFkSW50MzIodm9pZCogY29kZSkKQEAgLTIzMzQsOSArMjMzNSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24sIHNpemVvZih1aW50MTZfdCkpOwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHNldFBvaW50ZXIodm9pZCogY29kZSwgdm9pZCogdmFsdWUpCisgICAg
c3RhdGljIHZvaWQgc2V0UG9pbnRlcih2b2lkKiBjb2RlLCB2b2lkKiB2YWx1ZSwgYm9vbCBmbHVz
aCkKICAgICB7Ci0gICAgICAgIHNldEludDMyKGNvZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMy
X3Q+KHZhbHVlKSk7CisgICAgICAgIHNldEludDMyKGNvZGUsIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3Q+KHZhbHVlKSwgZmx1c2gpOwogICAgIH0KIAogICAgIHN0YXRpYyBib29sIGlzQih2b2lk
KiBhZGRyZXNzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168744</attachid>
            <date>2012-10-15 11:10:28 -0700</date>
            <delta_ts>2012-10-17 09:25:13 -0700</delta_ts>
            <desc>Add the fix to replaceWith* methods</desc>
            <filename>99213.patch</filename>
            <type>text/plain</type>
            <size>5039</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNjVjMjYuLmFhNjc4MWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTEzICBZb25nIExpICA8eW9s
aUByaW0uY29tPgorCisgICAgICAgIFtBUk12N10gTGlua0J1ZmZlciBmbHVzaGVzIGNvZGUgdW5u
ZWNlc3NhcmlseSBmb3IgZXZlcnkgbGluay4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5MjEzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTGlua0J1ZmZlciBkb2Vzbid0IG5lZWQgdG8gZmx1c2ggY29kZSBk
dXJpbmcgbGlua2luZy4gSXQgd2lsbAorICAgICAgICBldmVudHVhbGx5IGZsdXNoIHRoZSB3aG9s
ZSBleGVjdXRhYmxlLiBGaXhpbmcgdGhpcyBnaXZlcyA+JTUKKyAgICAgICAgc3Vuc3BpZGVyIGJv
b3N0IChvbiBRTlgpLgorCisgICAgICAgIEFsc28gbWFrZSByZXBsYWNlV2l0aExvYWQoKSBhbmQg
cmVwbGFjZVdpdGhBZGRyZXNzQ29tcHV0YXRpb24oKSBmbHVzaAorICAgICAgICBvbmx5IHdoZW4g
bmVjZXNzYXJ5LgorCisgICAgICAgICogYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmg6CisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpsaW5rQ2FsbCk6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpsaW5rUG9pbnRlcik6CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpy
ZWxpbmtDYWxsKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGF0Y2hJbnQzMik6
CisgICAgICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcik6CisgICAgICAg
IChKU0M6OkFSTXY3QXNzZW1ibGVyOjpyZXBsYWNlV2l0aExvYWQpOiBGbHVzaCBvbmx5IGFmdGVy
IGl0IGRpZCB3cml0ZS4KKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRo
QWRkcmVzc0NvbXB1dGF0aW9uKTogRmx1c2ggb25seSBhZnRlciBpdCBkaWQgd3JpdGUuCisgICAg
ICAgIChKU0M6OkFSTXY3QXNzZW1ibGVyOjpzZXRJbnQzMik6CisgICAgICAgIChKU0M6OkFSTXY3
QXNzZW1ibGVyOjpzZXRQb2ludGVyKToKKwogMjAxMi0xMC0xMiAgS2FuZ2lsIEhhbiAgPGthbmdp
bC5oYW5Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkIGVycm9yIG9uIERGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0FSTXY3QXNzZW1ibGVyLmgKaW5kZXggZTliOWZjYy4uNzZjMGNjMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaApAQCAtMjA1NywxMiAr
MjA1NywxMiBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChmcm9tLmlzU2V0KCkpOwogICAgICAg
ICBBU1NFUlQocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pICYgMSk7CiAKLSAgICAgICAg
c2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4ocmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4oY29kZSkgKyBmcm9tLm1fb2Zmc2V0KSAtIDEsIHRvKTsKKyAgICAgICAgc2V0UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4oY29kZSkgKyBmcm9tLm1fb2Zmc2V0KSAtIDEsIHRvLCBmYWxzZSk7CiAgICAgfQogCiAgICAg
c3RhdGljIHZvaWQgbGlua1BvaW50ZXIodm9pZCogY29kZSwgQXNzZW1ibGVyTGFiZWwgd2hlcmUs
IHZvaWQqIHZhbHVlKQogICAgIHsKLSAgICAgICAgc2V0UG9pbnRlcihyZWludGVycHJldF9jYXN0
PGNoYXIqPihjb2RlKSArIHdoZXJlLm1fb2Zmc2V0LCB2YWx1ZSk7CisgICAgICAgIHNldFBvaW50
ZXIocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oY29kZSkgKyB3aGVyZS5tX29mZnNldCwgdmFsdWUs
IGZhbHNlKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZWxpbmtKdW1wKHZvaWQqIGZyb20s
IHZvaWQqIHRvKQpAQCAtMjA4MCw3ICsyMDgwLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQo
IShyZWludGVycHJldF9jYXN0PGludHB0cl90Pihmcm9tKSAmIDEpKTsKICAgICAgICAgQVNTRVJU
KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAmIDEpOwogCi0gICAgICAgIHNldFBvaW50
ZXIocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pIC0gMSwgdG8pOworICAgICAgICBz
ZXRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihmcm9tKSAtIDEsIHRvLCB0cnVl
KTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHZvaWQqIHJlYWRDYWxsVGFyZ2V0KHZvaWQqIGZy
b20pCkBAIC0yMDkyLDcgKzIwOTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQo
IShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih3aGVyZSkgJiAxKSk7CiAgICAgICAgIAotICAg
ICAgICBzZXRJbnQzMih3aGVyZSwgdmFsdWUpOworICAgICAgICBzZXRJbnQzMih3aGVyZSwgdmFs
dWUsIHRydWUpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ29tcGFjdCh2
b2lkKiB3aGVyZSwgaW50MzJfdCBvZmZzZXQpCkBAIC0yMTE5LDcgKzIxMTksNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBBU1NFUlQoIShyZWludGVycHJldF9jYXN0PGludHB0cl90Pih3aGVy
ZSkgJiAxKSk7CiAgICAgICAgIAotICAgICAgICBzZXRQb2ludGVyKHdoZXJlLCB2YWx1ZSk7Cisg
ICAgICAgIHNldFBvaW50ZXIod2hlcmUsIHZhbHVlLCB0cnVlKTsKICAgICB9CiAKICAgICBzdGF0
aWMgdm9pZCogcmVhZFBvaW50ZXIodm9pZCogd2hlcmUpCkBAIC0yMTY0LDExICsyMTY0LDExIEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHB0clswXSB8PSBPUF9MRFJfaW1tX1QzOwogICAgICAgICAg
ICAgcHRyWzFdIHw9IChwdHJbMV0gJiAweDBGMDApIDw8IDQ7CiAgICAgICAgICAgICBwdHJbMV0g
Jj0gMHhGMEZGOworICAgICAgICAgICAgY2FjaGVGbHVzaChwdHIsIHNpemVvZih1aW50MTZfdCkg
KiAyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FjaGVGbHVzaChwdHIs
IHNpemVvZih1aW50MTZfdCkgKiAyKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNl
V2l0aEFkZHJlc3NDb21wdXRhdGlvbih2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQpAQCAtMjE4Miwx
MyArMjE4MiwxMyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBwdHJbMF0gfD0gT1BfQUREX2ltbV9U
MzsKICAgICAgICAgICAgIHB0clsxXSB8PSAocHRyWzFdICYgMHhGMDAwKSA+PiA0OwogICAgICAg
ICAgICAgcHRyWzFdICY9IDB4MEZGRjsKKyAgICAgICAgICAgIGNhY2hlRmx1c2gocHRyLCBzaXpl
b2YodWludDE2X3QpICogMik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBPUF9B
RERfaW1tX1QzOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBjYWNoZUZsdXNo
KHB0ciwgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOwogICAgIH0KIAogICAgIHVuc2lnbmVkIGRlYnVn
T2Zmc2V0KCkgeyByZXR1cm4gbV9mb3JtYXR0ZXIuZGVidWdPZmZzZXQoKTsgfQpAQCAtMjI5MSw3
ICsyMjkxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIFZGUE9wZXJhbmQob3ApOwogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldEludDMyKHZvaWQqIGNvZGUsIHVpbnQzMl90IHZhbHVl
KQorICAgIHN0YXRpYyB2b2lkIHNldEludDMyKHZvaWQqIGNvZGUsIHVpbnQzMl90IHZhbHVlLCBi
b29sIGZsdXNoKQogICAgIHsKICAgICAgICAgdWludDE2X3QqIGxvY2F0aW9uID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MTZfdCo+KGNvZGUpOwogICAgICAgICBBU1NFUlQoaXNNT1ZfaW1tX1QzKGxv
Y2F0aW9uIC0gNCkgJiYgaXNNT1ZUKGxvY2F0aW9uIC0gMikpOwpAQCAtMjMwMyw3ICsyMzAzLDgg
QEAgcHJpdmF0ZToKICAgICAgICAgbG9jYXRpb25bLTJdID0gdHdvV29yZE9wNWk2SW1tNFJlZzRF
bmNvZGVkSW1tRmlyc3QoT1BfTU9WVCwgaGkxNik7CiAgICAgICAgIGxvY2F0aW9uWy0xXSA9IHR3
b1dvcmRPcDVpNkltbTRSZWc0RW5jb2RlZEltbVNlY29uZCgobG9jYXRpb25bLTFdID4+IDgpICYg
MHhmLCBoaTE2KTsKIAotICAgICAgICBjYWNoZUZsdXNoKGxvY2F0aW9uIC0gNCwgNCAqIHNpemVv
Zih1aW50MTZfdCkpOworICAgICAgICBpZiAoZmx1c2gpCisgICAgICAgICAgICBjYWNoZUZsdXNo
KGxvY2F0aW9uIC0gNCwgNCAqIHNpemVvZih1aW50MTZfdCkpOwogICAgIH0KICAgICAKICAgICBz
dGF0aWMgaW50MzJfdCByZWFkSW50MzIodm9pZCogY29kZSkKQEAgLTIzMzQsOSArMjMzNSw5IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24sIHNpemVvZih1aW50MTZfdCkp
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFBvaW50ZXIodm9pZCogY29kZSwgdm9pZCog
dmFsdWUpCisgICAgc3RhdGljIHZvaWQgc2V0UG9pbnRlcih2b2lkKiBjb2RlLCB2b2lkKiB2YWx1
ZSwgYm9vbCBmbHVzaCkKICAgICB7Ci0gICAgICAgIHNldEludDMyKGNvZGUsIHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSk7CisgICAgICAgIHNldEludDMyKGNvZGUsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3Q+KHZhbHVlKSwgZmx1c2gpOwogICAgIH0KIAogICAgIHN0YXRpYyBi
b29sIGlzQih2b2lkKiBhZGRyZXNzKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169195</attachid>
            <date>2012-10-17 09:25:13 -0700</date>
            <delta_ts>2012-11-20 08:33:12 -0800</delta_ts>
            <desc>again</desc>
            <filename>99213.patch</filename>
            <type>text/plain</type>
            <size>5041</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNkNjVjMjYuLmQwYjlmZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTEzICBZb25nIExpICA8eW9s
aUByaW0uY29tPgorCisgICAgICAgIFtBUk12N10gTmVpdGhlciBsaW5rQ2FsbCgpIG5vciBsaW5r
UG9pbnRlcigpIHNob3VsZCBmbHVzaCBjb2RlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyMTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBMaW5rQnVmZmVyIGRvZXNuJ3QgbmVlZCB0byBmbHVzaCBjb2Rl
IGR1cmluZyBsaW5raW5nLiBJdCB3aWxsCisgICAgICAgIGV2ZW50dWFsbHkgZmx1c2ggdGhlIHdo
b2xlIGV4ZWN1dGFibGUuIEZpeGluZyB0aGlzIGdpdmVzID4lNQorICAgICAgICBzdW5zcGlkZXIg
Ym9vc3QgKG9uIFFOWCkuCisKKyAgICAgICAgQWxzbyBtYWtlIHJlcGxhY2VXaXRoTG9hZCgpIGFu
ZCByZXBsYWNlV2l0aEFkZHJlc3NDb21wdXRhdGlvbigpIGZsdXNoCisgICAgICAgIG9ubHkgd2hl
biBuZWNlc3NhcnkuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OmxpbmtDYWxsKToKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OmxpbmtQb2ludGVyKToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6
OnJlbGlua0NhbGwpOgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwYXRjaEludDMy
KToKKyAgICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGF0Y2hQb2ludGVyKToKKyAgICAg
ICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnJlcGxhY2VXaXRoTG9hZCk6IEZsdXNoIG9ubHkgYWZ0
ZXIgaXQgZGlkIHdyaXRlLgorICAgICAgICAoSlNDOjpBUk12N0Fzc2VtYmxlcjo6cmVwbGFjZVdp
dGhBZGRyZXNzQ29tcHV0YXRpb24pOiBGbHVzaCBvbmx5IGFmdGVyIGl0IGRpZCB3cml0ZS4KKyAg
ICAgICAgKEpTQzo6QVJNdjdBc3NlbWJsZXI6OnNldEludDMyKToKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OnNldFBvaW50ZXIpOgorCiAyMDEyLTEwLTEyICBLYW5naWwgSGFuICA8a2Fu
Z2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggYnVpbGQgZXJyb3Igb24gREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaAppbmRleCBlOWI5ZmNjLi43NmMwY2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCkBAIC0yMDU3LDEy
ICsyMDU3LDEyIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGZyb20uaXNTZXQoKSk7CiAgICAg
ICAgIEFTU0VSVChyZWludGVycHJldF9jYXN0PGludHB0cl90Pih0bykgJiAxKTsKIAotICAgICAg
ICBzZXRQb2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihyZWludGVycHJldF9jYXN0
PGludHB0cl90Pihjb2RlKSArIGZyb20ubV9vZmZzZXQpIC0gMSwgdG8pOworICAgICAgICBzZXRQ
b2ludGVyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPihyZWludGVycHJldF9jYXN0PGludHB0
cl90Pihjb2RlKSArIGZyb20ubV9vZmZzZXQpIC0gMSwgdG8sIGZhbHNlKTsKICAgICB9CiAKICAg
ICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCB3aGVy
ZSwgdm9pZCogdmFsdWUpCiAgICAgewotICAgICAgICBzZXRQb2ludGVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KGNvZGUpICsgd2hlcmUubV9vZmZzZXQsIHZhbHVlKTsKKyAgICAgICAgc2V0UG9p
bnRlcihyZWludGVycHJldF9jYXN0PGNoYXIqPihjb2RlKSArIHdoZXJlLm1fb2Zmc2V0LCB2YWx1
ZSwgZmFsc2UpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlbGlua0p1bXAodm9pZCogZnJv
bSwgdm9pZCogdG8pCkBAIC0yMDgwLDcgKzIwODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VS
VCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGZyb20pICYgMSkpOwogICAgICAgICBBU1NF
UlQocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pICYgMSk7CiAKLSAgICAgICAgc2V0UG9p
bnRlcihyZWludGVycHJldF9jYXN0PHVpbnQxNl90Kj4oZnJvbSkgLSAxLCB0byk7CisgICAgICAg
IHNldFBvaW50ZXIocmVpbnRlcnByZXRfY2FzdDx1aW50MTZfdCo+KGZyb20pIC0gMSwgdG8sIHRy
dWUpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgdm9pZCogcmVhZENhbGxUYXJnZXQodm9pZCog
ZnJvbSkKQEAgLTIwOTIsNyArMjA5Miw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIEFTU0VS
VCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHdoZXJlKSAmIDEpKTsKICAgICAgICAgCi0g
ICAgICAgIHNldEludDMyKHdoZXJlLCB2YWx1ZSk7CisgICAgICAgIHNldEludDMyKHdoZXJlLCB2
YWx1ZSwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDb21wYWN0
KHZvaWQqIHdoZXJlLCBpbnQzMl90IG9mZnNldCkKQEAgLTIxMTksNyArMjExOSw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIEFTU0VSVCghKHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHdo
ZXJlKSAmIDEpKTsKICAgICAgICAgCi0gICAgICAgIHNldFBvaW50ZXIod2hlcmUsIHZhbHVlKTsK
KyAgICAgICAgc2V0UG9pbnRlcih3aGVyZSwgdmFsdWUsIHRydWUpOwogICAgIH0KIAogICAgIHN0
YXRpYyB2b2lkKiByZWFkUG9pbnRlcih2b2lkKiB3aGVyZSkKQEAgLTIxNjQsMTEgKzIxNjQsMTEg
QEAgcHVibGljOgogICAgICAgICAgICAgcHRyWzBdIHw9IE9QX0xEUl9pbW1fVDM7CiAgICAgICAg
ICAgICBwdHJbMV0gfD0gKHB0clsxXSAmIDB4MEYwMCkgPDwgNDsKICAgICAgICAgICAgIHB0clsx
XSAmPSAweEYwRkY7CisgICAgICAgICAgICBjYWNoZUZsdXNoKHB0ciwgc2l6ZW9mKHVpbnQxNl90
KSAqIDIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAgICAgICBjYWNoZUZsdXNoKHB0
ciwgc2l6ZW9mKHVpbnQxNl90KSAqIDIpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoQWRkcmVzc0NvbXB1dGF0aW9uKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCkBAIC0yMTgy
LDEzICsyMTgyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHB0clswXSB8PSBPUF9BRERfaW1t
X1QzOwogICAgICAgICAgICAgcHRyWzFdIHw9IChwdHJbMV0gJiAweEYwMDApID4+IDQ7CiAgICAg
ICAgICAgICBwdHJbMV0gJj0gMHgwRkZGOworICAgICAgICAgICAgY2FjaGVGbHVzaChwdHIsIHNp
emVvZih1aW50MTZfdCkgKiAyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE9Q
X0FERF9pbW1fVDM6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9Ci0gICAgICAgIGNhY2hlRmx1
c2gocHRyLCBzaXplb2YodWludDE2X3QpICogMik7CiAgICAgfQogCiAgICAgdW5zaWduZWQgZGVi
dWdPZmZzZXQoKSB7IHJldHVybiBtX2Zvcm1hdHRlci5kZWJ1Z09mZnNldCgpOyB9CkBAIC0yMjkx
LDcgKzIyOTEsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gVkZQT3BlcmFuZChvcCk7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0SW50MzIodm9pZCogY29kZSwgdWludDMyX3QgdmFs
dWUpCisgICAgc3RhdGljIHZvaWQgc2V0SW50MzIodm9pZCogY29kZSwgdWludDMyX3QgdmFsdWUs
IGJvb2wgZmx1c2gpCiAgICAgewogICAgICAgICB1aW50MTZfdCogbG9jYXRpb24gPSByZWludGVy
cHJldF9jYXN0PHVpbnQxNl90Kj4oY29kZSk7CiAgICAgICAgIEFTU0VSVChpc01PVl9pbW1fVDMo
bG9jYXRpb24gLSA0KSAmJiBpc01PVlQobG9jYXRpb24gLSAyKSk7CkBAIC0yMzAzLDcgKzIzMDMs
OCBAQCBwcml2YXRlOgogICAgICAgICBsb2NhdGlvblstMl0gPSB0d29Xb3JkT3A1aTZJbW00UmVn
NEVuY29kZWRJbW1GaXJzdChPUF9NT1ZULCBoaTE2KTsKICAgICAgICAgbG9jYXRpb25bLTFdID0g
dHdvV29yZE9wNWk2SW1tNFJlZzRFbmNvZGVkSW1tU2Vjb25kKChsb2NhdGlvblstMV0gPj4gOCkg
JiAweGYsIGhpMTYpOwogCi0gICAgICAgIGNhY2hlRmx1c2gobG9jYXRpb24gLSA0LCA0ICogc2l6
ZW9mKHVpbnQxNl90KSk7CisgICAgICAgIGlmIChmbHVzaCkKKyAgICAgICAgICAgIGNhY2hlRmx1
c2gobG9jYXRpb24gLSA0LCA0ICogc2l6ZW9mKHVpbnQxNl90KSk7CiAgICAgfQogICAgIAogICAg
IHN0YXRpYyBpbnQzMl90IHJlYWRJbnQzMih2b2lkKiBjb2RlKQpAQCAtMjMzNCw5ICsyMzM1LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FjaGVGbHVzaChsb2NhdGlvbiwgc2l6ZW9mKHVpbnQxNl90
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0UG9pbnRlcih2b2lkKiBjb2RlLCB2b2lk
KiB2YWx1ZSkKKyAgICBzdGF0aWMgdm9pZCBzZXRQb2ludGVyKHZvaWQqIGNvZGUsIHZvaWQqIHZh
bHVlLCBib29sIGZsdXNoKQogICAgIHsKLSAgICAgICAgc2V0SW50MzIoY29kZSwgcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdD4odmFsdWUpKTsKKyAgICAgICAgc2V0SW50MzIoY29kZSwgcmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdD4odmFsdWUpLCBmbHVzaCk7CiAgICAgfQogCiAgICAgc3RhdGlj
IGJvb2wgaXNCKHZvaWQqIGFkZHJlc3MpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>