<?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>83961</bug_id>
          
          <creation_ts>2012-04-13 16:58:44 -0700</creation_ts>
          <short_desc>Generalize the single character optimization of r114072</short_desc>
          <delta_ts>2012-04-24 16:41:46 -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>Web Template Framework</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>
          
          <blocked>83968</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>barraclough</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>602525</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-13 16:58:44 -0700</bug_when>
    <thetext>Some more testing shows:
-After r114071, the specialization/inline of r114072 gives little performance improvement
-The biggest gain is actually because we avoid a memory allocation. This should be generalized in WTF

I should move the improvement of r114072 over to WTF.

+ Do not go over the string when searching for a UChar &gt; 0xff in a string of LChar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602527</commentid>
    <comment_count>1</comment_count>
      <attachid>137182</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-13 17:08:38 -0700</bug_when>
    <thetext>Created attachment 137182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602529</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-13 17:14:11 -0700</bug_when>
    <thetext>This introduce a tiny regression (&lt; 1%) for replaceUsingStringSearch() with 1 character string but we do not regress to levels prior to r114072.

On the plus side, this improves stringProtoFuncIndexOf() in similar ways to what was done for replaceUsingStringSearch().

I have an idea for another improvement for replaceUsingStringSearch().

If needed, I&apos;ll make a generalized inline version for replaceUsingStringSearch() and stringProtoFuncIndexOf().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606055</commentid>
    <comment_count>3</comment_count>
      <attachid>137182</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-19 15:57:31 -0700</bug_when>
    <thetext>Comment on attachment 137182
Patch

This seems reasonable.  Could you add performance/testing information to your ChangeLog?  That would make this an easy r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>606057</commentid>
    <comment_count>4</comment_count>
      <attachid>137182</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-19 15:58:18 -0700</bug_when>
    <thetext>Comment on attachment 137182
Patch

I guess you have some perf information in the comments of the bug.  They would be much better in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>609236</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-04-24 16:41:46 -0700</bug_when>
    <thetext>Committed r115132: &lt;http://trac.webkit.org/changeset/115132&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137182</attachid>
            <date>2012-04-13 17:08:38 -0700</date>
            <delta_ts>2012-04-19 15:58:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83961-20120413170837.patch</filename>
            <type>text/plain</type>
            <size>8328</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE0MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZDBmMTA4OWMyZDcwMmI5YmNiNmU2Mzc5MTdiZjEyMzY5MTFhNTMyLi41ZTZiZTcyOGMzZjc5MDA0
NGExZjFmOWJjOWJhZWM4NjFhZmYxZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wNC0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIHRoZSBzaW5nbGUgY2hhcmFjdGVyIG9wdGltaXph
dGlvbiBvZiByMTE0MDcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04Mzk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSB0aGUgcmVndWxhciBTdHJpbmc6OmZpbmQoU3RyaW5nSW1wbCopIGluIGFsbCBj
YXNlcyBub3cgdGhhdCBpdCBoYXMgYmVlbiBtYWRlIGZhc3Rlci4KKworICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6cmVwbGFjZVVzaW5nU3RyaW5n
U2VhcmNoKToKKwogMjAxMi0wNC0xMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBh
cHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgcmVseSBvbiBmaXhlZCBvZmZzZXRzIHRvIHBhdGNo
IGdldF9ieV9pZC9wdXRfYnlfaWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNmEzYzE1ZmJhMzAxYWQxMmU0OGU1ZGZmZjJhZmQ1
YmI2ODI3MDNiMS4uYmIwODg2ODlkM2Y5YjdmMjQxODIxYTJlZTI5N2VhOGM1ZDY3N2IyNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxMi0wNC0xMyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmFsaXplIHRoZSBzaW5nbGUgY2hhcmFjdGVyIG9w
dGltaXphdGlvbiBvZiByMTE0MDcyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Mzk2MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgc29tZSBpbXByb3ZtZW50IG92ZXIgU3RyaW5n
OjpmaW5kKCkgaW4gdGhlIGNhc2Ugb2YgbG9va3VwIGZvciBhIHNpbmdsZQorICAgICAgICBjaGFy
YWN0ZXIuCisKKyAgICAgICAgVGhlIHR3byBmdW5jdGlvbiBmaW5kKFVDaGFyfExDaGFyKSBhcmUg
cmVwbGFjZWQgYnkgYSB0ZW1wbGF0ZS4KKworICAgICAgICBUaGUgY2FzZSBvZiBzZWFyY2hpbmcg
YSBVQ2hhciBpbiBhIDhiaXQgc3RyaW5nIGhhcyBhIHNob3J0Y3V0IGlmIHRoZSBVQ2hhciBjYW5u
b3QKKyAgICAgICAgcG9zc2libHkgbWF0Y2ggYW55IGNoYXJhY3RlciBpbiB0aGUgcmFuZ2Ugb2Yg
dGhlIHR5cGUgTENoYXIuCisKKyAgICAgICAgVGhlIHNsb3cgY2FzZSBTdHJpbmdJbXBsOjpmaW5k
KFN0cmluZ0ltcGwqKSBpcyBtb2RpZmllZCB0bworICAgICAgICAtRG8gbm90IGFsbG9jYXRlIGlu
IHRoZSBmYXN0IGNhc2UgaWYgb25seSBvbmUgc3RyaW5nIGlzIDhiaXQuCisgICAgICAgIC1Vc2Ug
dGhlIHNob3J0Y3V0IGZvciBzZWFyY2hpbmcgVUNoYXIgaW4gTENoYXIuCisKKyAgICAgICAgKiB3
dGYvdGV4dC9TdHJpbmdJbXBsLmNwcDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6ZmluZCk6
CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoU3RyaW5nSW1wbCk6
CisgICAgICAgIChXVEYpOgorICAgICAgICAoV1RGOjpmaW5kKToKKyAgICAgICAgKFdURjo6U3Ry
aW5nSW1wbDo6ZmluZCk6CisKIDIwMTItMDQtMTIgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5saW5lIFN0cmluZ0ltcGw6OmZpbmQoVUNoYXIsIC4u
LikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwCmluZGV4IGYxMWU2NDFjYWE1OTdhMTNhNmM2ZDlmYWUwYjFjOTU0NjEyOGRiNzkuLjJiNDZl
MWU0NDkxYWE5NjhkODU2ZGM5MTIxZWNjNWUzNmM5NmY4MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtNjMyLDIwICs2MzIs
NyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJj
aChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKgogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAg
IHNpemVfdCBzZWFyY2hTdHJpbmdMZW5ndGggPSBzZWFyY2hTdHJpbmcubGVuZ3RoKCk7Ci0KLSAg
ICBzaXplX3QgbWF0Y2hTdGFydDsKLSAgICBpZiAoc2VhcmNoU3RyaW5nTGVuZ3RoID09IDEpIHsK
LSAgICAgICAgU3RyaW5nSW1wbCogc2VhcmNoU3RyaW5nSW1wbCA9IHNlYXJjaFN0cmluZy5pbXBs
KCk7Ci0gICAgICAgIFVDaGFyIHNlYXJjaENoYXJhY3RlcjsKLSAgICAgICAgaWYgKHNlYXJjaFN0
cmluZ0ltcGwtPmlzOEJpdCgpKQotICAgICAgICAgICAgc2VhcmNoQ2hhcmFjdGVyID0gc2VhcmNo
U3RyaW5nSW1wbC0+Y2hhcmFjdGVyczgoKVswXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c2VhcmNoQ2hhcmFjdGVyID0gc2VhcmNoU3RyaW5nSW1wbC0+Y2hhcmFjdGVyczE2KClbMF07Ci0K
LSAgICAgICAgbWF0Y2hTdGFydCA9IHN0cmluZy5maW5kKHNlYXJjaENoYXJhY3Rlcik7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG1hdGNoU3RhcnQgPSBzdHJpbmcuZmluZChzZWFyY2hTdHJpbmcpOwor
ICAgIHNpemVfdCBtYXRjaFN0YXJ0ID0gc3RyaW5nLmZpbmQoc2VhcmNoU3RyaW5nKTsKIAogICAg
IGlmIChtYXRjaFN0YXJ0ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKTsKQEAgLTY1NCw3ICs2NDEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5n
KgogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEocmVwbGFjZVZhbHVlLCBjYWxs
RGF0YSk7CiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewogICAgICAgICBNYXJr
ZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwotICAgICAgICBhcmdzLmFwcGVuZChqc1N1YnN0cmluZyhl
eGVjLCBzdHJpbmcsIG1hdGNoU3RhcnQsIHNlYXJjaFN0cmluZ0xlbmd0aCkpOworICAgICAgICBh
cmdzLmFwcGVuZChqc1N1YnN0cmluZyhleGVjLCBzdHJpbmcsIG1hdGNoU3RhcnQsIHNlYXJjaFN0
cmluZy5pbXBsKCktPmxlbmd0aCgpKSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKG1h
dGNoU3RhcnQpKTsKICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcpOwogICAgICAgICByZXBs
YWNlVmFsdWUgPSBjYWxsKGV4ZWMsIHJlcGxhY2VWYWx1ZSwgY2FsbFR5cGUsIGNhbGxEYXRhLCBq
c1VuZGVmaW5lZCgpLCBhcmdzKTsKQEAgLTY2OSw3ICs2NTYsNyBAQCBzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHJlcGxhY2VVc2luZ1N0cmluZ1NlYXJjaChFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKgogICAgIFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwgPSBzdHJpbmcuaW1wbCgpOwogICAg
IFVTdHJpbmcgbGVmdFBhcnQoU3RyaW5nSW1wbDo6Y3JlYXRlKHN0cmluZ0ltcGwsIDAsIG1hdGNo
U3RhcnQpKTsKIAotICAgIHNpemVfdCBtYXRjaEVuZCA9IG1hdGNoU3RhcnQgKyBzZWFyY2hTdHJp
bmdMZW5ndGg7CisgICAgc2l6ZV90IG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIHNlYXJjaFN0cmlu
Zy5pbXBsKCktPmxlbmd0aCgpOwogICAgIGludCBvdmVjdG9yWzJdID0geyBtYXRjaFN0YXJ0LCAg
bWF0Y2hFbmR9OwogICAgIFVTdHJpbmcgbWlkZGxlUGFydCA9IHN1YnN0aXR1dGVCYWNrcmVmZXJl
bmNlcyhyZXBsYWNlU3RyaW5nLCBzdHJpbmcsIG92ZWN0b3IsIDApOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmNwcAppbmRleCBhZTUwMWI5ZWU5Y2NiOGUzMmQwZjNiMmNiNjdjYzQzZWUxZTg2
OTk3Li43ZTAyNmNlZTBjY2MxNzgyMDQ5NjhhOWRmMGFiZWJjZWExOTEyNTY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTkwNSw5ICs5MDUsMTQgQEAgc2l6ZV90IFN0cmluZ0lt
cGw6OmZpbmQoU3RyaW5nSW1wbCogbWF0Y2hTdHJpbmcsIHVuc2lnbmVkIGluZGV4KQogCiAgICAg
Ly8gT3B0aW1pemF0aW9uIDE6IGZhc3QgY2FzZSBmb3Igc3RyaW5ncyBvZiBsZW5ndGggMS4KICAg
ICBpZiAobWF0Y2hMZW5ndGggPT0gMSkgewotICAgICAgICBpZiAoaXM4Qml0KCkgJiYgbWF0Y2hT
dHJpbmctPmlzOEJpdCgpKQotICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJz
OCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnM4KClbMF0sIGluZGV4KTsKLSAg
ICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0ZXJzKCksIGxlbmd0aCgpLCBtYXRjaFN0cmlu
Zy0+Y2hhcmFjdGVycygpWzBdLCBpbmRleCk7CisgICAgICAgIGlmIChpczhCaXQoKSkgeworICAg
ICAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIGxlbmd0aCgpLCBtYXRjaFN0cmluZy0+Y2hhcmFj
dGVyczgoKVswXSwgaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIFdURjo6ZmluZChjaGFyYWN0
ZXJzOCgpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdLCBpbmRleCk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1hdGNoU3RyaW5nLT5pczhCaXQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczE2KCksIGxlbmd0aCgpLCBtYXRjaFN0cmlu
Zy0+Y2hhcmFjdGVyczgoKVswXSwgaW5kZXgpOworICAgICAgICByZXR1cm4gV1RGOjpmaW5kKGNo
YXJhY3RlcnMxNigpLCBsZW5ndGgoKSwgbWF0Y2hTdHJpbmctPmNoYXJhY3RlcnMxNigpWzBdLCBp
bmRleCk7CiAgICAgfQogCiAgICAgLy8gQ2hlY2sgaW5kZXggJiBtYXRjaExlbmd0aCBhcmUgaW4g
cmFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaCBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IGVhODJiYjY2MGQ5ZjAyNDdiNGM3
OThhNTQ4ZmMyZjZiZGY2OWM2ZWUuLmJhM2FhZDAzZWI0OTllM2M1M2U1MDBhOGZhYjc5YzIwNmI2
NmMxZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCkBAIC00ODEsNiArNDgxLDggQEAgcHVi
bGljOgogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KICAgICBBTFdBWVNfSU5MSU5F
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSog
Y2hhcmFjdGVycywgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CiAKKyAgICBzaXplX3QgZmlu
ZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CisgICAgc2l6ZV90IGZpbmQo
Y2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7CiAgICAgc2l6ZV90IGZpbmQoVUNo
YXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwogICAgIFdURl9FWFBPUlRfUFJJVkFU
RSBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9
IDApOwogICAgIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiwgdW5zaWduZWQgaW5kZXggPSAwKTsK
QEAgLTczNSw3ICs3MzcsOCBAQCBpbmxpbmUgYm9vbCBlcXVhbElnbm9yaW5nQ2FzZShjb25zdCBj
aGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKSB7CiAKIFdURl9FWFBPUlRf
UFJJVkFURSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ0ltcGwqLCBTdHJpbmdJbXBs
Kik7CiAKLWlubGluZSBzaXplX3QgZmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWdu
ZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSAwKQordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2lubGluZSBzaXplX3QgZmluZChjb25zdCBD
aGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUg
bWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gMCkKIHsKICAgICB3aGlsZSAoaW5kZXgg
PCBsZW5ndGgpIHsKICAgICAgICAgaWYgKGNoYXJhY3RlcnNbaW5kZXhdID09IG1hdGNoQ2hhcmFj
dGVyKQpAQCAtNzQ1LDE0ICs3NDgsMTYgQEAgaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIExDaGFyIG1hdGNoQ2hhcmFjdGUKICAgICBy
ZXR1cm4gbm90Rm91bmQ7CiB9CiAKLWlubGluZSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQg
aW5kZXggPSAwKQorQUxXQVlTX0lOTElORSBzaXplX3QgZmluZChjb25zdCBVQ2hhciogY2hhcmFj
dGVycywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5k
ZXggPSAwKQogewotICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewotICAgICAgICBpZiAoY2hh
cmFjdGVyc1tpbmRleF0gPT0gbWF0Y2hDaGFyYWN0ZXIpCi0gICAgICAgICAgICByZXR1cm4gaW5k
ZXg7Ci0gICAgICAgICsraW5kZXg7Ci0gICAgfQotICAgIHJldHVybiBub3RGb3VuZDsKKyAgICBy
ZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0YXRpY19jYXN0PFVDaGFyPihtYXRjaENo
YXJhY3RlciksIGluZGV4KTsKK30KKworaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNoQ2hhcmFjdGVyLCB1bnNpZ25l
ZCBpbmRleCA9IDApCit7CisgICAgaWYgKG1hdGNoQ2hhcmFjdGVyICYgfjB4RkYpCisgICAgICAg
IHJldHVybiBub3RGb3VuZDsKKyAgICByZXR1cm4gZmluZChjaGFyYWN0ZXJzLCBsZW5ndGgsIHN0
YXRpY19jYXN0PExDaGFyPihtYXRjaENoYXJhY3RlciksIGluZGV4KTsKIH0KIAogaW5saW5lIHNp
emVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXggPSAwKQpA
QCAtODAxLDYgKzgwNiwxOCBAQCBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IFVDaGFy
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1hdGNoQwogICAgIHJldHVybiBp
bmRleDsKIH0KIAoraW5saW5lIHNpemVfdCBTdHJpbmdJbXBsOjpmaW5kKExDaGFyIGNoYXJhY3Rl
ciwgdW5zaWduZWQgc3RhcnQpCit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4g
V1RGOjpmaW5kKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoLCBjaGFyYWN0ZXIsIHN0YXJ0KTsKKyAg
ICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMxNigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBz
dGFydCk7Cit9CisKK0FMV0FZU19JTkxJTkUgc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoY2hhciBj
aGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0KQoreworICAgIHJldHVybiBmaW5kKHN0YXRpY19jYXN0
PExDaGFyPihjaGFyYWN0ZXIpLCBzdGFydCk7Cit9CisKIGlubGluZSBzaXplX3QgU3RyaW5nSW1w
bDo6ZmluZChVQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0KQogewogICAgIGlmIChpczhC
aXQoKSkK
</data>
<flag name="review"
          id="142183"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="143233"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>