<?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>32463</bug_id>
          
          <creation_ts>2009-12-11 23:34:55 -0800</creation_ts>
          <short_desc>Unify codegen for forward and backward variants of branches</short_desc>
          <delta_ts>2009-12-12 09:59:06 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>171045</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-11 23:34:55 -0800</bug_when>
    <thetext>Unify codegen for forward and backward variants of branches. Often the forward (jfoo) and backward (loop_if_foo) variants of branches both exist and native codegen is completely duplicated. These should be unified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171049</commentid>
    <comment_count>1</comment_count>
      <attachid>44727</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-11 23:46:13 -0800</bug_when>
    <thetext>Created attachment 44727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171054</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-11 23:56:43 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44727 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171058</commentid>
    <comment_count>3</comment_count>
      <attachid>44727</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-12-12 00:13:55 -0800</bug_when>
    <thetext>Comment on attachment 44727
Patch

r=me yay for lots of minuses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>171105</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-12-12 09:59:06 -0800</bug_when>
    <thetext>Committed r52051: &lt;http://trac.webkit.org/changeset/52051&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44727</attachid>
            <date>2009-12-11 23:46:13 -0800</date>
            <delta_ts>2009-12-12 00:13:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-32463-20091211234611.patch</filename>
            <type>text/plain</type>
            <size>13621</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyMDQ3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMTItMTEgIE1hY2llaiBT
dGFjaG93aWFrICA8bWpzQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVbmlmeSBjb2RlZ2VuIGZvciBmb3J3YXJkIGFuZCBiYWNrd2Fy
ZCB2YXJpYW50cyBvZiBicmFuY2hlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MzI0NjMKKworICAgICAgICAqIGppdC9KSVQuaDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2xvb3ApOiBJbXBsZW1lbnRlZCBpbiB0ZXJtcyBvZiBmb3J3YXJkIHZh
cmlhbnQuCisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9sb29wX2lmX3RydWUpOiBkaXR0bwor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRTbG93X29wX2xvb3BfaWZfdHJ1ZSk6IGRpdHRvCisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9sb29wX2lmX2ZhbHNlKTogZGl0dG8KKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0U2xvd19vcF9sb29wX2lmX2ZhbHNlKTogZGl0dG8KKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2xvb3BfaWZfbGVzcyk6IGRpdHRvCisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dFNsb3dfb3BfbG9vcF9pZl9sZXNzKTogZGl0dG8KKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5j
cHA6CisKIDIwMDktMTItMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQv
SklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiA1
MjAzNCkKKysrIEphdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAkod29ya2luZyBjb3B5KQpAQCAtOTU0
LDYgKzk1NCw0NiBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogI2VuZGlmCiAgICAgfSBKSVRf
Q0xBU1NfQUxJR05NRU5UOworCisgICAgaW5saW5lIHZvaWQgSklUOjplbWl0X29wX2xvb3AoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKKyAgICB7CisgICAgICAgIGVtaXRUaW1lb3V0
Q2hlY2soKTsKKyAgICAgICAgZW1pdF9vcF9qbXAoY3VycmVudEluc3RydWN0aW9uKTsKKyAgICB9
CisKKyAgICBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9pZl90cnVlKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCisgICAgeworICAgICAgICBlbWl0VGltZW91dENoZWNrKCk7
CisgICAgICAgIGVtaXRfb3BfanRydWUoY3VycmVudEluc3RydWN0aW9uKTsKKyAgICB9CisKKyAg
ICBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaWZfdHJ1ZShJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVy
KQorICAgIHsKKyAgICAgICAgZW1pdFNsb3dfb3BfanRydWUoY3VycmVudEluc3RydWN0aW9uLCBp
dGVyKTsKKyAgICB9CisKKyAgICBpbmxpbmUgdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9pZl9mYWxz
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorICAgIHsKKyAgICAgICAgZW1pdFRp
bWVvdXRDaGVjaygpOworICAgICAgICBlbWl0X29wX2pmYWxzZShjdXJyZW50SW5zdHJ1Y3Rpb24p
OworICAgIH0KKworICAgIGlubGluZSB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9pZl9mYWxz
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46
Oml0ZXJhdG9yJiBpdGVyKQorICAgIHsKKyAgICAgICAgZW1pdFNsb3dfb3BfamZhbHNlKGN1cnJl
bnRJbnN0cnVjdGlvbiwgaXRlcik7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSklUOjplbWl0
X29wX2xvb3BfaWZfbGVzcyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQorICAgIHsK
KyAgICAgICAgZW1pdFRpbWVvdXRDaGVjaygpOworICAgICAgICBlbWl0X29wX2psZXNzKGN1cnJl
bnRJbnN0cnVjdGlvbik7CisgICAgfQorCisgICAgaW5saW5lIHZvaWQgSklUOjplbWl0U2xvd19v
cF9sb29wX2lmX2xlc3MoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbiwgVmVjdG9yPFNs
b3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKKyAgICB7CisgICAgICAgIGVtaXRTbG93X29w
X2psZXNzKGN1cnJlbnRJbnN0cnVjdGlvbiwgaXRlcik7CisgICAgfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKIAogI2VuZGlmIC8vIEVOQUJMRShKSVQpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCShyZXZpc2lvbiA1MjAzNCkKKysrIEphdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDU4ICs0MDksNiBAQCB2b2lkIEpJVDo6ZW1pdF9v
cF9qbXAoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3AoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKLXsKLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kOwotICAgIGVtaXRUaW1lb3V0Q2hlY2soKTsKLSAgICBhZGRKdW1wKGp1bXAoKSwgdGFyZ2V0
KTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9pZl9sZXNzKEluc3RydWN0aW9uKiBjdXJy
ZW50SW5zdHJ1Y3Rpb24pCi17Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQ7Ci0KLSAgICBlbWl0VGltZW91dENoZWNrKCk7Ci0KLSAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbW1lZGlhdGVJbnQob3AxKSkgewotICAgICAgICBlbWl0TG9hZChvcDIsIHJlZ1Qx
LCByZWdUMCk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwg
SW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoR3Jl
YXRlclRoYW4sIHJlZ1QwLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AxKS5hc0ludDMyKCkp
KSwgdGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBpZiAoaXNPcGVy
YW5kQ29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewotICAgICAgICBlbWl0TG9hZChvcDEsIHJl
Z1QxLCByZWdUMCk7Ci0gICAgICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdU
MSwgSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgICAgIGFkZEp1bXAoYnJhbmNoMzIo
TGVzc1RoYW4sIHJlZ1QwLCBJbW0zMihnZXRDb25zdGFudE9wZXJhbmQob3AyKS5hc0ludDMyKCkp
KSwgdGFyZ2V0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGVtaXRMb2FkMihvcDEs
IHJlZ1QxLCByZWdUMCwgb3AyLCByZWdUMywgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNlKGJyYW5j
aDMyKE5vdEVxdWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKSk7Ci0gICAgYWRk
U2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QzLCBJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpKTsKLSAgICBhZGRKdW1wKGJyYW5jaDMyKExlc3NUaGFuLCByZWdUMCwgcmVnVDIpLCB0YXJn
ZXQpOwotfQotCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3BfbG9vcF9pZl9sZXNzKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0
ZXIpCi17Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwot
ICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0K
LSAgICBpZiAoIWlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMSkgJiYgIWlzT3BlcmFu
ZENvbnN0YW50SW1tZWRpYXRlSW50KG9wMikpCi0gICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsg
Ly8gaW50MzIgY2hlY2sKLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7IC8vIGludDMyIGNoZWNrCi0K
LSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfamxlc3MpOwotICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KG9wMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AyKTsKLSAg
ICBzdHViQ2FsbC5jYWxsKCk7Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKE5v
blplcm8sIHJlZ1QwKSwgdGFyZ2V0KTsKLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3BfbG9vcF9pZl9s
ZXNzZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICB1bnNpZ25lZCBv
cDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwpAQCAtNzA5LDg0ICs2NTcsNiBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF9zdHJjYXQoSW5zdHJ1Y3Rpb24qIGN1CiAgICAgc3R1YkNhbGwu
Y2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIAotdm9pZCBKSVQ6OmVt
aXRfb3BfbG9vcF9pZl90cnVlKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCi17Ci0g
ICAgdW5zaWduZWQgY29uZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQ7Ci0gICAg
dW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLQotICAg
IGVtaXRUaW1lb3V0Q2hlY2soKTsKLQotICAgIGVtaXRMb2FkKGNvbmQsIHJlZ1QxLCByZWdUMCk7
Ci0KLSAgICBKdW1wIGlzTm90SW50ZWdlciA9IGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgSW1t
MzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICBhZGRKdW1wKGJyYW5jaDMyKE5vdEVxdWFsLCBy
ZWdUMCwgSW1tMzIoMCkpLCB0YXJnZXQpOwotICAgIEp1bXAgaXNOb3RaZXJvID0ganVtcCgpOwot
Ci0gICAgaXNOb3RJbnRlZ2VyLmxpbmsodGhpcyk7Ci0KLSAgICBhZGRKdW1wKGJyYW5jaDMyKEVx
dWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6VHJ1ZVRhZykpLCB0YXJnZXQpOwotICAgIGFkZFNs
b3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFsLCByZWdUMSwgSW1tMzIoSlNWYWx1ZTo6RmFsc2VUYWcp
KSk7Ci0KLSAgICBpc05vdFplcm8ubGluayh0aGlzKTsKLX0KLQotdm9pZCBKSVQ6OmVtaXRTbG93
X29wX2xvb3BfaWZfdHJ1ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLCBWZWN0b3I8
U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIHVuc2lnbmVkIGNvbmQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0KLSAgICBsaW5rU2xvd0Nhc2UoaXRlcik7
Ci0KLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfanRydWUpOwotICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KGNvbmQpOwotICAgIHN0dWJDYWxsLmNhbGwoKTsKLSAgICBlbWl0
SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQpOwotfQot
Ci12b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2lmX2ZhbHNlKEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCi17Ci0gICAgdW5zaWduZWQgY29uZCA9IGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZDsKLQotICAgIGVtaXRUaW1lb3V0Q2hlY2soKTsKLQotICAgIGVtaXRMb2FkKGNvbmQs
IHJlZ1QxLCByZWdUMCk7Ci0KLSAgICBKdW1wIGlzVHJ1ZSA9IGJyYW5jaDMyKEVxdWFsLCByZWdU
MSwgSW1tMzIoSlNWYWx1ZTo6VHJ1ZVRhZykpOwotICAgIGFkZEp1bXAoYnJhbmNoMzIoRXF1YWws
IHJlZ1QxLCBJbW0zMihKU1ZhbHVlOjpGYWxzZVRhZykpLCB0YXJnZXQpOwotCi0gICAgSnVtcCBp
c05vdEludGVnZXIgPSBicmFuY2gzMihOb3RFcXVhbCwgcmVnVDEsIEltbTMyKEpTVmFsdWU6Oklu
dDMyVGFnKSk7Ci0gICAgSnVtcCBpc1RydWUyID0gYnJhbmNoMzIoTm90RXF1YWwsIHJlZ1QwLCBJ
bW0zMigwKSk7Ci0gICAgYWRkSnVtcChqdW1wKCksIHRhcmdldCk7Ci0KLSAgICBpZiAoc3VwcG9y
dHNGbG9hdGluZ1BvaW50KCkpIHsKLSAgICAgICAgaXNOb3RJbnRlZ2VyLmxpbmsodGhpcyk7Ci0K
LSAgICAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoQWJvdmUsIHJlZ1QxLCBJbW0zMihKU1ZhbHVl
OjpMb3dlc3RUYWcpKSk7Ci0KLSAgICAgICAgemVyb0RvdWJsZShmcFJlZ1QwKTsKLSAgICAgICAg
ZW1pdExvYWREb3VibGUoY29uZCwgZnBSZWdUMSk7Ci0gICAgICAgIGFkZEp1bXAoYnJhbmNoRG91
YmxlKERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIGZwUmVnVDAsIGZwUmVnVDEpLCB0YXJnZXQpOwot
ICAgIH0gZWxzZQotICAgICAgICBhZGRTbG93Q2FzZShpc05vdEludGVnZXIpOwotCi0gICAgaXNU
cnVlLmxpbmsodGhpcyk7Ci0gICAgaXNUcnVlMi5saW5rKHRoaXMpOwotfQotCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbG9vcF9pZl9mYWxzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIHVuc2lnbmVk
IGNvbmQgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHRh
cmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0KLSAgICBsaW5rU2xvd0Nh
c2UoaXRlcik7Ci0KLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfanRydWUp
OwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGNvbmQpOwotICAgIHN0dWJDYWxsLmNhbGwoKTsK
LSAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoWmVybywgcmVnVDApLCB0YXJnZXQp
OwotfQotCiB2b2lkIEpJVDo6ZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bf
cmVzb2x2ZV9iYXNlKTsKQEAgLTIwMDUsNDcgKzE4NzUsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9q
bXAoSW5zdHJ1Y3Rpb24qIGN1cnJlCiAgICAgUkVDT1JEX0pVTVBfVEFSR0VUKHRhcmdldCk7CiB9
CiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3AoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlv
bikKLXsKLSAgICBlbWl0VGltZW91dENoZWNrKCk7Ci0KLSAgICB1bnNpZ25lZCB0YXJnZXQgPSBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIGFkZEp1bXAoanVtcCgpLCB0YXJn
ZXQpOwotfQotCi12b2lkIEpJVDo6ZW1pdF9vcF9sb29wX2lmX2xlc3MoSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKLXsKLSAgICBlbWl0VGltZW91dENoZWNrKCk7Ci0KLSAgICB1bnNp
Z25lZCBvcDEgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVk
IG9wMiA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7Ci0gICAgdW5zaWduZWQgdGFy
Z2V0ID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKLSAgICBpZiAoaXNPcGVyYW5k
Q29uc3RhbnRJbW1lZGlhdGVJbnQob3AyKSkgewotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKG9wMSwgcmVnVDApOwotICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW1lZGlhdGVJ
bnRlZ2VyKHJlZ1QwKTsKLSNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBpbnQzMl90IG9wMmlt
bSA9IGdldENvbnN0YW50T3BlcmFuZEltbWVkaWF0ZUludChvcDIpOwotI2Vsc2UKLSAgICAgICAg
aW50MzJfdCBvcDJpbW0gPSBzdGF0aWNfY2FzdDxpbnQzMl90PihKU0ltbWVkaWF0ZTo6cmF3VmFs
dWUoZ2V0Q29uc3RhbnRPcGVyYW5kKG9wMikpKTsKLSNlbmRpZgotICAgICAgICBhZGRKdW1wKGJy
YW5jaDMyKExlc3NUaGFuLCByZWdUMCwgSW1tMzIob3AyaW1tKSksIHRhcmdldCk7Ci0gICAgfSBl
bHNlIGlmIChpc09wZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7Ci0gICAgICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIob3AyLCByZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nh
c2VJZk5vdEltbWVkaWF0ZUludGVnZXIocmVnVDApOwotI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAg
ICAgIGludDMyX3Qgb3AxaW1tID0gZ2V0Q29uc3RhbnRPcGVyYW5kSW1tZWRpYXRlSW50KG9wMSk7
Ci0jZWxzZQotICAgICAgICBpbnQzMl90IG9wMWltbSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KEpT
SW1tZWRpYXRlOjpyYXdWYWx1ZShnZXRDb25zdGFudE9wZXJhbmQob3AxKSkpOwotI2VuZGlmCi0g
ICAgICAgIGFkZEp1bXAoYnJhbmNoMzIoR3JlYXRlclRoYW4sIHJlZ1QwLCBJbW0zMihvcDFpbW0p
KSwgdGFyZ2V0KTsKLSAgICB9IGVsc2UgewotICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVy
cyhvcDEsIHJlZ1QwLCBvcDIsIHJlZ1QxKTsKLSAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tZWRpYXRlSW50ZWdlcihyZWdUMCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bWVkaWF0ZUludGVnZXIocmVnVDEpOwotICAgICAgICBhZGRKdW1wKGJyYW5jaDMyKExlc3NUaGFu
LCByZWdUMCwgcmVnVDEpLCB0YXJnZXQpOwotICAgIH0KLX0KLQogdm9pZCBKSVQ6OmVtaXRfb3Bf
bG9vcF9pZl9sZXNzZXEoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBl
bWl0VGltZW91dENoZWNrKCk7CkBAIC0yMjg0LDQwICsyMTEzLDYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3Bfc3RyY2F0KEluc3RydWN0aW9uKiBjdQogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKLXZvaWQgSklUOjplbWl0X29wX2xvb3BfaWZfdHJ1
ZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewotICAgIGVtaXRUaW1lb3V0Q2hl
Y2soKTsKLQotICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmQ7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kLCByZWdUMCk7Ci0KLSAgICBKdW1wIGlzWmVybyA9IGJyYW5jaFB0cihFcXVhbCwg
cmVnVDAsIEltbVB0cihKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIobV9nbG9iYWxEYXRhLCAwKSkp
KTsKLSAgICBhZGRKdW1wKGVtaXRKdW1wSWZJbW1lZGlhdGVJbnRlZ2VyKHJlZ1QwKSwgdGFyZ2V0
KTsKLQotICAgIGFkZEp1bXAoYnJhbmNoUHRyKEVxdWFsLCByZWdUMCwgSW1tUHRyKEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSksIHRhcmdldCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJh
bmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgSW1tUHRyKEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
ZmFsc2UpKSkpKTsKLQotICAgIGlzWmVyby5saW5rKHRoaXMpOwotfTsKLQotdm9pZCBKSVQ6OmVt
aXRfb3BfbG9vcF9pZl9mYWxzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQotewot
ICAgIGVtaXRUaW1lb3V0Q2hlY2soKTsKLQotCi0gICAgdW5zaWduZWQgdGFyZ2V0ID0gY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHJlZ1QwKTsKLQotICAgIGFkZEp1bXAoYnJh
bmNoUHRyKEVxdWFsLCByZWdUMCwgSW1tUHRyKEpTVmFsdWU6OmVuY29kZShqc051bWJlcihtX2ds
b2JhbERhdGEsIDApKSkpLCB0YXJnZXQpOwotICAgIEp1bXAgaXNOb25aZXJvID0gZW1pdEp1bXBJ
ZkltbWVkaWF0ZUludGVnZXIocmVnVDApOwotCi0gICAgYWRkSnVtcChicmFuY2hQdHIoRXF1YWws
IHJlZ1QwLCBJbW1QdHIoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpKSksIHRhcmdl
dCk7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgSW1tUHRyKEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4odHJ1ZSkpKSkpOwotCi0gICAgaXNOb25aZXJvLmxpbmso
dGhpcyk7Ci0gICAgUkVDT1JEX0pVTVBfVEFSR0VUKHRhcmdldCk7Ci19OwotCiB2b2lkIEpJVDo6
ZW1pdF9vcF9yZXNvbHZlX2Jhc2UoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsK
ICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcmVzb2x2ZV9iYXNlKTsKQEAg
LTI5OTcsMzYgKzI3OTIsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3dfb3BfZ2V0X2J5X3ZhbChJbnN0
cnVjCiAgICAgc3R1YkNhbGwuY2FsbChkc3QpOwogfQogCi12b2lkIEpJVDo6ZW1pdFNsb3dfb3Bf
bG9vcF9pZl9sZXNzKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93
Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCi17Ci0gICAgdW5zaWduZWQgb3AxID0gY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZDsKLSAgICB1bnNpZ25lZCBvcDIgPSBjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGN1cnJlbnRJbnN0
cnVjdGlvblszXS51Lm9wZXJhbmQ7Ci0gICAgaWYgKGlzT3BlcmFuZENvbnN0YW50SW1tZWRpYXRl
SW50KG9wMikpIHsKLSAgICAgICAgbGlua1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICBKSVRTdHVi
Q2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3Bfamxlc3MpOwotICAgICAgICBzdHViQ2FsbC5hZGRB
cmd1bWVudChyZWdUMCk7Ci0gICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KG9wMiwgcmVnVDIp
OwotICAgICAgICBzdHViQ2FsbC5jYWxsKCk7Ci0gICAgICAgIGVtaXRKdW1wU2xvd1RvSG90KGJy
YW5jaFRlc3QzMihOb25aZXJvLCByZWdUMCksIHRhcmdldCk7Ci0gICAgfSBlbHNlIGlmIChpc09w
ZXJhbmRDb25zdGFudEltbWVkaWF0ZUludChvcDEpKSB7Ci0gICAgICAgIGxpbmtTbG93Q2FzZShp
dGVyKTsKLSAgICAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX2psZXNzKTsK
LSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQob3AxLCByZWdUMik7Ci0gICAgICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbCgpOwotICAgICAg
ICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0YXJnZXQp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxpbmtTbG93Q2FzZShpdGVyKTsKLSAgICAgICAgbGlu
a1Nsb3dDYXNlKGl0ZXIpOwotICAgICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlf
b3Bfamxlc3MpOwotICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QxKTsKLSAgICAgICAgc3R1YkNhbGwuY2FsbCgpOwot
ICAgICAgICBlbWl0SnVtcFNsb3dUb0hvdChicmFuY2hUZXN0MzIoTm9uWmVybywgcmVnVDApLCB0
YXJnZXQpOwotICAgIH0KLX0KLQogdm9pZCBKSVQ6OmVtaXRTbG93X29wX2xvb3BfaWZfbGVzc2Vx
KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxTbG93Q2FzZUVudHJ5Pjo6
aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgdW5zaWduZWQgb3AyID0gY3VycmVudEluc3RydWN0aW9u
WzJdLnUub3BlcmFuZDsKQEAgLTMwNjcsMjQgKzI4MzIsNiBAQCB2b2lkIEpJVDo6ZW1pdFNsb3df
b3BfcHV0X2J5X3ZhbChJbnN0cnVjCiAgICAgc3R1YlB1dEJ5VmFsQ2FsbC5jYWxsKCk7CiB9CiAK
LXZvaWQgSklUOjplbWl0U2xvd19vcF9sb29wX2lmX3RydWUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbiwgVmVjdG9yPFNsb3dDYXNlRW50cnk+OjppdGVyYXRvciYgaXRlcikKLXsKLSAg
ICBsaW5rU2xvd0Nhc2UoaXRlcik7Ci0gICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3Rp
X29wX2p0cnVlKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChyZWdUMCk7Ci0gICAgc3R1YkNh
bGwuY2FsbCgpOwotICAgIGVtaXRKdW1wU2xvd1RvSG90KGJyYW5jaFRlc3QzMihOb25aZXJvLCBy
ZWdUMCksIGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotfQotCi12b2lkIEpJVDo6
ZW1pdFNsb3dfb3BfbG9vcF9pZl9mYWxzZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
LCBWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJhdG9yJiBpdGVyKQotewotICAgIGxpbmtTbG93
Q2FzZShpdGVyKTsKLSAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfanRydWUp
OwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KHJlZ1QwKTsKLSAgICBzdHViQ2FsbC5jYWxsKCk7
Ci0gICAgZW1pdEp1bXBTbG93VG9Ib3QoYnJhbmNoVGVzdDMyKFplcm8sIHJlZ1QwKSwgY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7IC8vIGludmVydGVkIQotfQotCiB2b2lkIEpJVDo6
ZW1pdFNsb3dfb3Bfbm90KEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24sIFZlY3RvcjxT
bG93Q2FzZUVudHJ5Pjo6aXRlcmF0b3ImIGl0ZXIpCiB7CiAgICAgbGlua1Nsb3dDYXNlKGl0ZXIp
OwpJbmRleDogV2ViS2l0VG9vbHMvU2NyaXB0cy9zdW5zcGlkZXItY29tcGFyZS1yZXN1bHRzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1NjcmlwdHMvc3Vuc3BpZGVyLWNvbXBhcmUtcmVzdWx0
cwkocmV2aXNpb24gNTIwMzQpCisrKyBXZWJLaXRUb29scy9TY3JpcHRzL3N1bnNwaWRlci1jb21w
YXJlLXJlc3VsdHMJKHdvcmtpbmcgY29weSkKQEAgLTkzLDEwICs5MywxMCBAQCBzdWIgcGF0aFRv
QnVpbHRKU0MoJCkKIAogc3ViIHBhdGhUb1N5c3RlbUpTQygpCiB7Ci0gICAgbXkgJHBhdGggPSAi
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrL1Jlc291
cmNlcy9qc2MiOwotICAgIGlmICgtZiAkcGF0aCkgewotICAgICAgICByZXR1cm4gJHBhdGg7Ci0g
ICAgfQorIyAgICBteSAkcGF0aCA9ICIvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcmsvUmVzb3VyY2VzL2pzYyI7CisjICAgIGlmICgtZiAkcGF0aCkgewor
IyAgICAgICAgcmV0dXJuICRwYXRoOworIyAgICB9CiAgICAgcmV0dXJuIHVuZGVmOwogfQogCg==
</data>
<flag name="review"
          id="26630"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>