<?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>103868</bug_id>
          
          <creation_ts>2012-12-03 01:49:42 -0800</creation_ts>
          <short_desc>Change ChildNodeInsertionNotifier::m_postInsertionsNotificationTargets from a Vector to an OwnPtr</short_desc>
          <delta_ts>2017-07-18 08:30:16 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></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="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>781232</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 01:49:42 -0800</bug_when>
    <thetext>ChildNodeInsertionNotifier::m_postInsertionsNotificationTargets is used for HTMLFrameElement and HTMLBodyElement only, which would be a cold path. We can change it from a Vector to an OwnPtr&lt;Vector&gt; so that ChildNodeInsertionNotifier can be allocated faster. This will slightly optimize Dromaeo/dom-modify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781234</commentid>
    <comment_count>1</comment_count>
      <attachid>177209</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 01:54:04 -0800</bug_when>
    <thetext>Created attachment 177209
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781390</commentid>
    <comment_count>2</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-12-03 06:25:10 -0800</bug_when>
    <thetext>Are we confident that this is a real improvement?
It looks to me like the Vector is never appended to in the common case, which means it would never allocate a buffer.
While this patch shrinks ChildNodeInsertionNotifier, it shouldn&apos;t cause any fewer allocations.
In fact, it adds allocations to the iframe and body cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781432</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 07:36:04 -0800</bug_when>
    <thetext>&gt; Are we confident that this is a real improvement?

Let me check it again in micro benchmarks tomorrow. This is one of the optimizations I tried in bug 88834 to offset performance regression introduced by another patch (the patch didn&apos;t land).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>781613</commentid>
    <comment_count>4</comment_count>
      <attachid>177209</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-12-03 10:38:00 -0800</bug_when>
    <thetext>Comment on attachment 177209
Patch

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

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:50
&gt; +    OwnPtr&lt;Vector&lt; RefPtr&lt;Node&gt; &gt; &gt; m_postInsertionNotificationTargets;

The space in Vector&lt; RefPtr is not the correct style. It should be Vector&lt;RefPtr.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:197
&gt; +    if (UNLIKELY(Node::InsertionShouldCallDidNotifySubtreeInsertions == node-&gt;insertedInto(m_insertionPoint))) {

Are you sure this improved performance? Normally we only use LIKELY and UNLIKELY when we have concrete evidence it’s helpful.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:199
&gt; +            m_postInsertionNotificationTargets = adoptPtr(new Vector&lt;RefPtr&lt;Node&gt; &gt;());

The () here is not needed.

&gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:213
&gt; +            m_postInsertionNotificationTargets = adoptPtr(new Vector&lt;RefPtr&lt;Node&gt; &gt;());

The () here is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782057</commentid>
    <comment_count>5</comment_count>
      <attachid>177378</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 17:12:03 -0800</bug_when>
    <thetext>Created attachment 177378
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782058</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 17:13:31 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 177209 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=177209&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:50
&gt; &gt; +    OwnPtr&lt;Vector&lt; RefPtr&lt;Node&gt; &gt; &gt; m_postInsertionNotificationTargets;
&gt; 
&gt; The space in Vector&lt; RefPtr is not the correct style. It should be Vector&lt;RefPtr.

Fixed.

&gt; &gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:197
&gt; &gt; +    if (UNLIKELY(Node::InsertionShouldCallDidNotifySubtreeInsertions == node-&gt;insertedInto(m_insertionPoint))) {
&gt; 
&gt; Are you sure this improved performance? Normally we only use LIKELY and UNLIKELY when we have concrete evidence it’s helpful.

You&apos;re right. I couldn&apos;t observe any effect. Removed.

&gt; &gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:199
&gt; &gt; +            m_postInsertionNotificationTargets = adoptPtr(new Vector&lt;RefPtr&lt;Node&gt; &gt;());
&gt; 
&gt; The () here is not needed.
&gt; 
&gt; &gt; Source/WebCore/dom/ContainerNodeAlgorithms.h:213
&gt; &gt; +            m_postInsertionNotificationTargets = adoptPtr(new Vector&lt;RefPtr&lt;Node&gt; &gt;());
&gt; 
&gt; The () here is not needed.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782059</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 17:15:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Are we confident that this is a real improvement?

I confirmed, yes. When we insert a tree whose depth is 2 or larger, insertion time is improved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782061</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-12-03 17:17:34 -0800</bug_when>
    <thetext>This still looks wrong to me. ChildNodeInsertionNotifier is only created on the stack, so all this patch does is save 8 bytes of stack space in the common case, and adds a heap allocation for body and iframe elements. Where is the improvement coming from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782064</commentid>
    <comment_count>9</comment_count>
      <attachid>177378</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 17:20:05 -0800</bug_when>
    <thetext>Comment on attachment 177378
patch for landing

ok, then let me investigate the details later. (Maybe instruction cache? A Vector allocation code is removed from a hot call path, which is larger than a OwnPtr allocation code?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782245</commentid>
    <comment_count>10</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-03 23:04:38 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; This still looks wrong to me. ChildNodeInsertionNotifier is only created on the stack, so all this patch does is save 8 bytes of stack space in the common case, and adds a heap allocation for body and iframe elements. Where is the improvement coming from?

for (NodeVector::const_iterator it = targets.begin(); it != targets.end(); ++it) {
  Node* child = it-&gt;get();
  insertBeforeCommon(next.get(), child);
  childrenChanged(true, nextChildPreviousSibling.get(), nextChild, 1);
  asm(&quot;_ppppp:&quot;);
  ChildNodeInsertionNotifier tmp(this);
  asm(&quot;_qqqqq:&quot;);
  tmp.notify(child);
}


Here are assemblies for between _ppppp and _qqqqq.


Before this patch:

00000000005f9d6b &lt;_pppppp&gt;:
  5f9d6b:       48 89 6c 24 10          mov    %rbp,0x10(%rsp)
  5f9d70:       48 8d 44 24 18          lea    0x18(%rsp),%rax
  5f9d75:       48 c7 40 10 00 00 00    movq   $0x0,0x10(%rax)
  5f9d7c:       00 
  5f9d7d:       48 c7 40 08 00 00 00    movq   $0x0,0x8(%rax)
  5f9d84:       00 
  5f9d85:       48 c7 00 00 00 00 00    movq   $0x0,(%rax)

00000000005f9d8c &lt;_qqqqqq&gt;:

After this patch:

00000000005f9c5d &lt;_pppppp&gt;:
  5f9c5d:       48 89 1c 24             mov    %rbx,(%rsp)
  5f9c61:       48 c7 44 24 08 00 00    movq   $0x0,0x8(%rsp)
  5f9c68:       00 00 

00000000005f9c6a &lt;_qqqqqq&gt;:



In this way, instructions per ChildNodeInsertionNotifier&apos;s constructor are reduced. In particular, note that ChildNodeInsertionNotifier&apos;s constructor is used inside for loops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782293</commentid>
    <comment_count>11</comment_count>
      <attachid>177378</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 00:05:21 -0800</bug_when>
    <thetext>Comment on attachment 177378
patch for landing

Clearing flags on attachment: 177378

Committed r136481: &lt;http://trac.webkit.org/changeset/136481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782294</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-04 00:05:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>783208</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-12-04 18:12:59 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; This still looks wrong to me. ChildNodeInsertionNotifier is only created on the stack, so all this patch does is save 8 bytes of stack space in the common case, and adds a heap allocation for body and iframe elements. Where is the improvement coming from?
&gt; 
&gt; for (NodeVector::const_iterator it = targets.begin(); it != targets.end(); ++it) {
&gt;   Node* child = it-&gt;get();
&gt;   insertBeforeCommon(next.get(), child);
&gt;   childrenChanged(true, nextChildPreviousSibling.get(), nextChild, 1);
&gt;   asm(&quot;_ppppp:&quot;);
&gt;   ChildNodeInsertionNotifier tmp(this);
&gt;   asm(&quot;_qqqqq:&quot;);
&gt;   tmp.notify(child);
&gt; }
&gt; 
&gt; 
&gt; Here are assemblies for between _ppppp and _qqqqq.
&gt; 
&gt; 
&gt; Before this patch:
&gt; 
&gt; 00000000005f9d6b &lt;_pppppp&gt;:
&gt;   5f9d6b:       48 89 6c 24 10          mov    %rbp,0x10(%rsp)
&gt;   5f9d70:       48 8d 44 24 18          lea    0x18(%rsp),%rax
&gt;   5f9d75:       48 c7 40 10 00 00 00    movq   $0x0,0x10(%rax)
&gt;   5f9d7c:       00 
&gt;   5f9d7d:       48 c7 40 08 00 00 00    movq   $0x0,0x8(%rax)
&gt;   5f9d84:       00 
&gt;   5f9d85:       48 c7 00 00 00 00 00    movq   $0x0,(%rax)
&gt; 
&gt; 00000000005f9d8c &lt;_qqqqqq&gt;:
&gt; 
&gt; After this patch:
&gt; 
&gt; 00000000005f9c5d &lt;_pppppp&gt;:
&gt;   5f9c5d:       48 89 1c 24             mov    %rbx,(%rsp)
&gt;   5f9c61:       48 c7 44 24 08 00 00    movq   $0x0,0x8(%rsp)
&gt;   5f9c68:       00 00 
&gt; 
&gt; 00000000005f9c6a &lt;_qqqqqq&gt;:
&gt; 
&gt; 
&gt; 
&gt; In this way, instructions per ChildNodeInsertionNotifier&apos;s constructor are reduced. In particular, note that ChildNodeInsertionNotifier&apos;s constructor is used inside for loops.

If making the ChildNodeInsertionNotifier constructor 3 instructions shorter gives you a ~1.4% speed boost on Dromaeo/dom-modify, you should probably move construction out of the loop which would be trivial since you&apos;re always passing &apos;this&apos; to the constructor.

You could also move the reffing/unreffing of the Document out of ChildNodeInsertionNotifier::notify() since that Document* should be the same for every call.

Personally, I don&apos;t trust these numbers but if they are indeed true then there is much work here to be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784242</commentid>
    <comment_count>14</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-05 16:32:29 -0800</bug_when>
    <thetext>Reverted r136481 for reason:

it might have regressed dom_perf/CloneNodes (See bug 104177)

Committed r136777: &lt;http://trac.webkit.org/changeset/136777&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177209</attachid>
            <date>2012-12-03 01:54:04 -0800</date>
            <delta_ts>2012-12-03 17:11:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103868-20121203185131.patch</filename>
            <type>text/plain</type>
            <size>4230</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxMTA4YTIwYzljNzFm
NmRmNjlkNTgyYmY1MzQzMTU4ODg5MmFiZi4uODEyY2IxZmM2YzAyOTJiMjdlZjU3YTI1ZTY5MmIx
Y2I0ZWU5NmViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTAzICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgQ2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om1fcG9zdEluc2VydGlvbnNOb3RpZmljYXRpb25UYXJnZXRz
IGZyb20gYSBWZWN0b3IgdG8gYW4gT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bV9wb3N0SW5z
ZXJ0aW9uc05vdGlmaWNhdGlvblRhcmdldHMgaXMKKyAgICAgICAgdXNlZCBmb3IgSFRNTEZyYW1l
RWxlbWVudCBhbmQgSFRNTEJvZHlFbGVtZW50IG9ubHksIHdoaWNoIHdvdWxkIGJlCisgICAgICAg
IGEgY29sZCBwYXRoLiBXZSBjYW4gY2hhbmdlIGl0IGZyb20gYSBWZWN0b3IgdG8gYW4gT3duUHRy
PFZlY3Rvcj4KKyAgICAgICAgc28gdGhhdCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllciBjYW4g
YmUgYWxsb2NhdGVkIGZhc3Rlci4gVGhpcyBwYXRjaAorICAgICAgICBvcHRpbWl6ZXMgRHJvbWFl
by9kb20tbW9kaWZ5IGJ5IDEuNCUuCisKKyAgICAgICAgW0Ryb21hZW8vZG9tLW1vZGlmeSBpbiBD
aHJvbWl1bS9MaW51eF0KKyAgICAgICAgQmVmb3JlOiA0NTMyIHJ1bnMvc2VjLCA0NTQ1IHJ1bnMv
c2VjLCA0NTMwIHJ1bnMvc2VjLCA0NTM2IHJ1bnMvc2VjCisgICAgICAgIEFmdGVyOiAgNDU5NSBy
dW5zL3NlYywgNDYwNiBydW5zL3NlYywgNDU5NyBydW5zL3NlYywgNDYwMiBydW5zL3NlYworCisg
ICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20v
Q29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKyAgICAgICAgKENoaWxkTm9kZUluc2VydGlvbk5v
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpu
b3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkpOgorCiAyMDEy
LTEyLTAyICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAg
c2hvdWxkIHNuaWZmIGl0IGlmIG1pbWV0eXBlIGRvbid0IGNvbnRhaW4gYSBzbGFzaC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggMjE5YTVkNDk2
MGNiYjJlMzM0ZjNmZDFkZGY4YTk5OWNhMDk5NzUyYi4uODNhNmZlMDRkZjRmOWY5MDI1NDhhMDEy
Y2RjOTY5NmVmODZlMzk3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeU5v
ZGVJbnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUq
IG1faW5zZXJ0aW9uUG9pbnQ7Ci0gICAgVmVjdG9yPCBSZWZQdHI8Tm9kZT4gPiBtX3Bvc3RJbnNl
cnRpb25Ob3RpZmljYXRpb25UYXJnZXRzOworICAgIE93blB0cjxWZWN0b3I8IFJlZlB0cjxOb2Rl
PiA+ID4gbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKIH07CiAKIGNsYXNzIENo
aWxkTm9kZVJlbW92YWxOb3RpZmllciB7CkBAIC0xOTQsOCArMTk0LDExIEBAIGlubGluZSB2b2lk
IENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1l
bnQoTm9kZSogbm9kCiB7CiAgICAgQVNTRVJUKG1faW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQo
KSk7CiAgICAgUmVmUHRyPE5vZGU+IHByb3RlY3Qobm9kZSk7Ci0gICAgaWYgKE5vZGU6Okluc2Vy
dGlvblNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRl
ZEludG8obV9pbnNlcnRpb25Qb2ludCkpCi0gICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNh
dGlvblRhcmdldHMuYXBwZW5kKG5vZGUpOworICAgIGlmIChVTkxJS0VMWShOb2RlOjpJbnNlcnRp
b25TaG91bGRDYWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJ
bnRvKG1faW5zZXJ0aW9uUG9pbnQpKSkgeworICAgICAgICBpZiAoIW1fcG9zdEluc2VydGlvbk5v
dGlmaWNhdGlvblRhcmdldHMpCisgICAgICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRp
b25UYXJnZXRzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAgICAg
ICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+YXBwZW5kKG5vZGUpOworICAg
IH0KICAgICBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAgIG5vdGlmeURlc2Nl
bmRhbnRJbnNlcnRlZEludG9Eb2N1bWVudCh0b0NvbnRhaW5lck5vZGUobm9kZSkpOwogfQpAQCAt
MjA1LDggKzIwOCwxMSBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6
bm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQ29udGFpbmVyTm9kZQogICAgIE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CiAgICAgQVNTRVJUKCFtX2luc2Vy
dGlvblBvaW50LT5pbkRvY3VtZW50KCkpOwogCi0gICAgaWYgKE5vZGU6Okluc2VydGlvblNob3Vs
ZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8obV9p
bnNlcnRpb25Qb2ludCkpCi0gICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHMuYXBwZW5kKG5vZGUpOworICAgIGlmIChVTkxJS0VMWShOb2RlOjpJbnNlcnRpb25TaG91bGRD
YWxsRGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMgPT0gbm9kZS0+aW5zZXJ0ZWRJbnRvKG1faW5z
ZXJ0aW9uUG9pbnQpKSkgeworICAgICAgICBpZiAoIW1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlv
blRhcmdldHMpCisgICAgICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
ID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPigpKTsKKyAgICAgICAgbV9wb3N0
SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+YXBwZW5kKG5vZGUpOworICAgIH0KICAgICBu
b3RpZnlEZXNjZW5kYW50SW5zZXJ0ZWRJbnRvVHJlZShub2RlKTsKIH0KIApAQCAtMjMxLDggKzIz
NywxMCBAQCBpbmxpbmUgdm9pZCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bm90aWZ5KE5v
ZGUqIG5vZGUpCiAgICAgZWxzZSBpZiAobm9kZS0+aXNDb250YWluZXJOb2RlKCkpCiAgICAgICAg
IG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKHRvQ29udGFpbmVyTm9kZShub2RlKSk7CiAKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHMuc2l6ZSgpOyArK2kpCi0gICAgICAgIG1fcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdl
dHNbaV0tPmRpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zKG1faW5zZXJ0aW9uUG9pbnQpOworICAg
IGlmIChtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKSB7CisgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy0+c2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
LT5hdChpKS0+ZGlkTm90aWZ5U3VidHJlZUluc2VydGlvbnMobV9pbnNlcnRpb25Qb2ludCk7Cisg
ICAgfQogfQogCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177378</attachid>
            <date>2012-12-03 17:12:03 -0800</date>
            <delta_ts>2012-12-04 00:05:21 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-103868-20121204100928.patch</filename>
            <type>text/plain</type>
            <size>4202</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MzYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxMTA4YTIwYzljNzFm
NmRmNjlkNTgyYmY1MzQzMTU4ODg5MmFiZi4uOTI5ZWZlNTA0NzQwYTVkZGUzZGE3ZDEyMGQ5NDI3
ZjA2ZjY3NGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEyLTAzICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgQ2hpbGRO
b2RlSW5zZXJ0aW9uTm90aWZpZXI6Om1fcG9zdEluc2VydGlvbnNOb3RpZmljYXRpb25UYXJnZXRz
IGZyb20gYSBWZWN0b3IgdG8gYW4gT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDM4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllcjo6bV9wb3N0SW5zZXJ0
aW9uc05vdGlmaWNhdGlvblRhcmdldHMgaXMKKyAgICAgICAgdXNlZCBmb3IgSFRNTEZyYW1lRWxl
bWVudCBhbmQgSFRNTEJvZHlFbGVtZW50IG9ubHksIHdoaWNoIHdvdWxkIGJlCisgICAgICAgIGEg
Y29sZCBwYXRoLiBXZSBjYW4gY2hhbmdlIGl0IGZyb20gYSBWZWN0b3IgdG8gYW4gT3duUHRyPFZl
Y3Rvcj4KKyAgICAgICAgc28gdGhhdCBDaGlsZE5vZGVJbnNlcnRpb25Ob3RpZmllciBjYW4gYmUg
YWxsb2NhdGVkIGZhc3Rlci4gVGhpcyBwYXRjaAorICAgICAgICBvcHRpbWl6ZXMgRHJvbWFlby9k
b20tbW9kaWZ5IGJ5IDEuNCUuCisKKyAgICAgICAgW0Ryb21hZW8vZG9tLW1vZGlmeSBpbiBDaHJv
bWl1bS9MaW51eF0KKyAgICAgICAgQmVmb3JlOiA0NTMyIHJ1bnMvc2VjLCA0NTQ1IHJ1bnMvc2Vj
LCA0NTMwIHJ1bnMvc2VjLCA0NTM2IHJ1bnMvc2VjCisgICAgICAgIEFmdGVyOiAgNDU5NSBydW5z
L3NlYywgNDYwNiBydW5zL3NlYywgNDU5NyBydW5zL3NlYywgNDYwMiBydW5zL3NlYworCisgICAg
ICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBkb20vQ29u
dGFpbmVyTm9kZUFsZ29yaXRobXMuaDoKKyAgICAgICAgKENoaWxkTm9kZUluc2VydGlvbk5vdGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3Rp
ZnlOb2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGROb2Rl
SW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkpOgorCiAyMDEyLTEy
LTAyICBNYXJ5IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgc2hv
dWxkIHNuaWZmIGl0IGlmIG1pbWV0eXBlIGRvbid0IGNvbnRhaW4gYSBzbGFzaC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgKaW5kZXggMjE5YTVkNDk2MGNi
YjJlMzM0ZjNmZDFkZGY4YTk5OWNhMDk5NzUyYi4uYjVmMGM0YmZhMDQwNmZlODRkZWEyYTMwOGFh
OWFiNDZlYmZmNGFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGVBbGdvcml0aG1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdv
cml0aG1zLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeU5vZGVJ
bnNlcnRlZEludG9UcmVlKENvbnRhaW5lck5vZGUqKTsKIAogICAgIENvbnRhaW5lck5vZGUqIG1f
aW5zZXJ0aW9uUG9pbnQ7Ci0gICAgVmVjdG9yPCBSZWZQdHI8Tm9kZT4gPiBtX3Bvc3RJbnNlcnRp
b25Ob3RpZmljYXRpb25UYXJnZXRzOworICAgIE93blB0cjxWZWN0b3I8UmVmUHRyPE5vZGU+ID4g
PiBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzOwogfTsKIAogY2xhc3MgQ2hpbGRO
b2RlUmVtb3ZhbE5vdGlmaWVyIHsKQEAgLTE5NCw4ICsxOTQsMTEgQEAgaW5saW5lIHZvaWQgQ2hp
bGROb2RlSW5zZXJ0aW9uTm90aWZpZXI6Om5vdGlmeU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudChO
b2RlKiBub2QKIHsKICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKTsK
ICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdChub2RlKTsKLSAgICBpZiAoTm9kZTo6SW5zZXJ0aW9u
U2hvdWxkQ2FsbERpZE5vdGlmeVN1YnRyZWVJbnNlcnRpb25zID09IG5vZGUtPmluc2VydGVkSW50
byhtX2luc2VydGlvblBvaW50KSkKLSAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9u
VGFyZ2V0cy5hcHBlbmQobm9kZSk7CisgICAgaWYgKE5vZGU6Okluc2VydGlvblNob3VsZENhbGxE
aWROb3RpZnlTdWJ0cmVlSW5zZXJ0aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRp
b25Qb2ludCkpIHsKKyAgICAgICAgaWYgKCFtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJn
ZXRzKQorICAgICAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyA9IGFk
b3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPE5vZGU+ID4pOworICAgICAgICBtX3Bvc3RJbnNlcnRp
b25Ob3RpZmljYXRpb25UYXJnZXRzLT5hcHBlbmQobm9kZSk7CisgICAgfQogICAgIGlmIChub2Rl
LT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5RGVzY2VuZGFudEluc2VydGVkSW50
b0RvY3VtZW50KHRvQ29udGFpbmVyTm9kZShub2RlKSk7CiB9CkBAIC0yMDUsOCArMjA4LDExIEBA
IGlubGluZSB2b2lkIENoaWxkTm9kZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnlOb2RlSW5zZXJ0
ZWRJbnRvVHJlZShDb250YWluZXJOb2RlCiAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIGFz
c2VydE5vRXZlbnREaXNwYXRjaDsKICAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnQtPmluRG9j
dW1lbnQoKSk7CiAKLSAgICBpZiAoTm9kZTo6SW5zZXJ0aW9uU2hvdWxkQ2FsbERpZE5vdGlmeVN1
YnRyZWVJbnNlcnRpb25zID09IG5vZGUtPmluc2VydGVkSW50byhtX2luc2VydGlvblBvaW50KSkK
LSAgICAgICAgbV9wb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5hcHBlbmQobm9kZSk7
CisgICAgaWYgKE5vZGU6Okluc2VydGlvblNob3VsZENhbGxEaWROb3RpZnlTdWJ0cmVlSW5zZXJ0
aW9ucyA9PSBub2RlLT5pbnNlcnRlZEludG8obV9pbnNlcnRpb25Qb2ludCkpIHsKKyAgICAgICAg
aWYgKCFtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQorICAgICAgICAgICAgbV9w
b3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4pOworICAgICAgICBtX3Bvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRz
LT5hcHBlbmQobm9kZSk7CisgICAgfQogICAgIG5vdGlmeURlc2NlbmRhbnRJbnNlcnRlZEludG9U
cmVlKG5vZGUpOwogfQogCkBAIC0yMzEsOCArMjM3LDEwIEBAIGlubGluZSB2b2lkIENoaWxkTm9k
ZUluc2VydGlvbk5vdGlmaWVyOjpub3RpZnkoTm9kZSogbm9kZSkKICAgICBlbHNlIGlmIChub2Rl
LT5pc0NvbnRhaW5lck5vZGUoKSkKICAgICAgICAgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUo
dG9Db250YWluZXJOb2RlKG5vZGUpKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9w
b3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cy5zaXplKCk7ICsraSkKLSAgICAgICAgbV9w
b3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0c1tpXS0+ZGlkTm90aWZ5U3VidHJlZUluc2Vy
dGlvbnMobV9pbnNlcnRpb25Qb2ludCk7CisgICAgaWYgKG1fcG9zdEluc2VydGlvbk5vdGlmaWNh
dGlvblRhcmdldHMpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3Bvc3RJbnNl
cnRpb25Ob3RpZmljYXRpb25UYXJnZXRzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fcG9z
dEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMtPmF0KGkpLT5kaWROb3RpZnlTdWJ0cmVlSW5z
ZXJ0aW9ucyhtX2luc2VydGlvblBvaW50KTsKKyAgICB9CiB9CiAKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>