<?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>27527</bug_id>
          
          <creation_ts>2009-07-21 19:50:05 -0700</creation_ts>
          <short_desc>Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes.</short_desc>
          <delta_ts>2009-07-21 20:24:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>133682</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-07-21 19:50:05 -0700</bug_when>
    <thetext>This allows the implementation to be defined per architecture.  Specifically this addresses the fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call to register.  Patching the call actually requires the pointer load to be patched, rather than the call to be patched.  This is implementation detail specific to MacroAssemblerX86_64, and as such is best handled there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133683</commentid>
    <comment_count>1</comment_count>
      <attachid>33236</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-07-21 19:50:47 -0700</bug_when>
    <thetext>Created attachment 33236
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>133685</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2009-07-21 20:24:52 -0700</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/assembler/AbstractMacroAssembler.h
Sending        JavaScriptCore/assembler/MacroAssemblerARM.h
Sending        JavaScriptCore/assembler/MacroAssemblerARMv7.h
Sending        JavaScriptCore/assembler/MacroAssemblerX86.h
Sending        JavaScriptCore/assembler/MacroAssemblerX86_64.h
Sending        JavaScriptCore/assembler/X86Assembler.h
Transmitting file data .......
Committed revision 46209.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33236</attachid>
            <date>2009-07-21 19:50:47 -0700</date>
            <delta_ts>2009-07-21 20:01:00 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>patch.callMAx64.txt</filename>
            <type>text/plain</type>
            <size>9784</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDQ2MjA2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMDktMDctMjEgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgY2FsbCBsaW5raW5nIC8gcmVwYXRjaGlu
ZyBkb3duIGZyb20gQWJzdHJhY3RNYWNyb0Fzc2VtYmxlciBpbnRvIE1hY3JvQXNzZW1ibGVyQVJD
SCBjbGFzc2VzLgorICAgICAgICAoIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yNzUyNyApCisKKyAgICAgICAgVGhpcyBhbGxvd3MgdGhlIGltcGxlbWVudGF0aW9uIHRv
IGJlIGRlZmluZWQgcGVyIGFyY2hpdGVjdHVyZS4gIFNwZWNpZmljYWxseSB0aGlzIGFkZHJlc3Nl
cyB0aGUKKyAgICAgICAgZmFjdCB0aGF0IHg4Ni02NCBNYWNyb0Fzc2VtYmxlciBpbXBsZW1lbnRz
IGZhciBjYWxscyBhcyBhIGxvYWQgdG8gcmVnaXN0ZXIsIGZvbGxvd2VkIGJ5IGEgY2FsbAorICAg
ICAgICB0byByZWdpc3Rlci4gIFBhdGNoaW5nIHRoZSBjYWxsIGFjdHVhbGx5IHJlcXVpcmVzIHRo
ZSBwb2ludGVyIGxvYWQgdG8gYmUgcGF0Y2hlZCwgcmF0aGVyIHRoYW4KKyAgICAgICAgdGhlIGNh
bGwgdG8gYmUgcGF0Y2hlZC4gIFRoaXMgaXMgaW1wbGVtZW50YXRpb24gZGV0YWlsIHNwZWNpZmlj
IHRvIE1hY3JvQXNzZW1ibGVyWDg2XzY0LCBhbmQgYXMKKyAgICAgICAgc3VjaCBpcyBiZXN0IGhh
bmRsZWQgdGhlcmUuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTS5oOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlckFSTTo6bGlua0NhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlckFSTTo6cmVwYXRjaENhbGwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmxpbmtDYWxs
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJBUk12Nzo6cmVwYXRjaENhbGwpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Ni5oOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlclg4Njo6bGlua0NhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4
Njo6cmVwYXRjaENhbGwpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82
NC5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6bGlua0NhbGwpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4Nl82NDo6cmVwYXRjaENhbGwpOgorCiAyMDA5LTA3
LTIxICBBZGFtIFRyZWF0ICA8YWRhbS50cmVhdEB0b3JjaG1vYmlsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgR2VvcmdlIFN0YWlrb3MuCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDQ2MjAyKQorKysg
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsMTEgKzM1LDYgQEAKIAogI2lmIEVOQUJMRShBU1NFTUJMRVIpCiAKLS8v
IEZJWE1FOiBrZWVwIHRyYW5zaXRpb25pbmcgdGhpcyBvdXQgaW50byBNYWNyb0Fzc2VtYmxlclg4
Nl82NC4KLSNpZiBQTEFURk9STShYODZfNjQpCi0jZGVmaW5lIFJFUFRBQ0hfT0ZGU0VUX0NBTExf
UjExIDMKLSNlbmRpZgotCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTGlua0J1ZmZlcjsKQEAg
LTI5NSw3ICsyOTAsNyBAQCBwdWJsaWM6CiAgICAgY2xhc3MgQ2FsbCB7CiAgICAgICAgIHRlbXBs
YXRlPGNsYXNzIFRlbXBsYXRlQXNzZW1ibGVyVHlwZT4KICAgICAgICAgZnJpZW5kIGNsYXNzIEFi
c3RyYWN0TWFjcm9Bc3NlbWJsZXI7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwor
CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIEZsYWdzIHsKICAgICAgICAgICAgIE5vbmUgPSAw
eDAsCkBAIC0zMzAsOCArMzI1LDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9qbXAuZW5hYmxl
TGF0ZVBhdGNoKCk7CiAgICAgICAgIH0KIAotICAgIHByaXZhdGU6CiAgICAgICAgIEptcFNyYyBt
X2ptcDsKKyAgICBwcml2YXRlOgogICAgICAgICBGbGFncyBtX2ZsYWdzOwogICAgIH07CiAKQEAg
LTQ4NSw3ICs0ODAsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgQXNzZW1ibGVyVHlwZSBt
X2Fzc2VtYmxlcjsKIAotcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKICAg
ICBmcmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKIApAQCAtNDk0LDE3ICs0ODgsNiBAQCBwcml2
YXRlOgogICAgICAgICBBc3NlbWJsZXJUeXBlOjpsaW5rSnVtcChjb2RlLCBqdW1wLm1fam1wLCB0
YXJnZXQuZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGxpbmtDYWxs
KHZvaWQqIGNvZGUsIENhbGwgY2FsbCwgRnVuY3Rpb25QdHIgZnVuY3Rpb24pCi0gICAgewotI2lm
IFBMQVRGT1JNKFg4Nl82NCkKLSAgICAgICAgaWYgKCFjYWxsLmlzRmxhZ1NldChDYWxsOjpOZWFy
KSkgewotICAgICAgICAgICAgY2hhciogY2FsbExvY2F0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxj
aGFyKj4oZ2V0TGlua2VyQWRkcmVzcyhjb2RlLCBjYWxsLm1fam1wKSkgLSBSRVBUQUNIX09GRlNF
VF9DQUxMX1IxMTsKLSAgICAgICAgICAgIEFzc2VtYmxlclR5cGU6OmxpbmtQb2ludGVyRm9yQ2Fs
bChjYWxsTG9jYXRpb24sIGZ1bmN0aW9uLnZhbHVlKCkpOwotICAgICAgICB9IGVsc2UKLSNlbmRp
ZgotICAgICAgICBBc3NlbWJsZXJUeXBlOjpsaW5rQ2FsbChjb2RlLCBjYWxsLm1fam1wLCBmdW5j
dGlvbi52YWx1ZSgpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRlcih2b2lk
KiBjb2RlLCB0eXBlbmFtZSBBc3NlbWJsZXJUeXBlOjpKbXBEc3QgbGFiZWwsIHZvaWQqIHZhbHVl
KQogICAgIHsKICAgICAgICAgQXNzZW1ibGVyVHlwZTo6bGlua1BvaW50ZXIoY29kZSwgbGFiZWws
IHZhbHVlKTsKQEAgLTUzMCwyNCArNTEzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgQXNzZW1ibGVy
VHlwZTo6cmVsaW5rSnVtcChqdW1wLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9j
YXRpb24oKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0
aW9uQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKLSAgICB7Ci0jaWYg
UExBVEZPUk0oWDg2XzY0KQotICAgICAgICBBc3NlbWJsZXJUeXBlOjpyZXBhdGNoUG9pbnRlcihj
YWxsLmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC1SRVBUQUNIX09GRlNFVF9DQUxMX1IxMSkuZGF0YUxv
Y2F0aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotI2Vsc2UKLSAgICAg
ICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5h
dGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHN0YXRpYyB2
b2lkIHJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwgY2FsbCwgRnVuY3Rpb25QdHIgZGVzdGlu
YXRpb24pCi0gICAgewotI2lmIFBMQVRGT1JNKFg4Nl82NCkKLSAgICAgICAgQXNzZW1ibGVyVHlw
ZTo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRhTGFiZWxQdHJBdE9mZnNldCgtUkVQVEFDSF9PRkZT
RVRfQ0FMTF9SMTEpLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVz
cygpKTsKLSNlbHNlCi0gICAgICAgIEFzc2VtYmxlclR5cGU6OnJlbGlua0NhbGwoY2FsbC5kYXRh
TG9jYXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7Ci0jZW5kaWYKLSAg
ICB9Ci0KICAgICBzdGF0aWMgdm9pZCByZXBhdGNoTmVhckNhbGwoQ29kZUxvY2F0aW9uTmVhckNh
bGwgbmVhckNhbGwsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKICAgICAg
ICAgQXNzZW1ibGVyVHlwZTo6cmVsaW5rQ2FsbChuZWFyQ2FsbC5kYXRhTG9jYXRpb24oKSwgZGVz
dGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkocmV2aXNpb24gNDYyMDEpCisrKyBKYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uaAkod29ya2luZyBjb3B5KQpAQCAt
NzY5LDYgKzc2OSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIH0KICAgICB9CiAKK3ByaXZhdGU6
CisgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNzIFJlcGF0Y2hC
dWZmZXI7CisKKyAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBDYWxsIGNhbGws
IEZ1bmN0aW9uUHRyIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgQVJNQXNzZW1ibGVyOjpsaW5r
Q2FsbChjb2RlLCBjYWxsLm1fam1wLCBmdW5jdGlvbi52YWx1ZSgpKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsIGNhbGwsIENvZGVMb2NhdGlv
bkxhYmVsIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAgICAgQVJNQXNzZW1ibGVyOjpyZWxpbmtD
YWxsKGNhbGwuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwg
Y2FsbCwgRnVuY3Rpb25QdHIgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk1Bc3NlbWJs
ZXI6OnJlbGlua0NhbGwoY2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7CisgICAgfQorCiB9OwogCiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDQ2MjAxKQorKysgSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA1NCw2ICsxMDU0LDI1IEBAIHByb3RlY3RlZDoKICAgICB7CiAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxBUk12N0Fzc2VtYmxlcjo6Q29uZGl0aW9uPihjb25kKTsKICAgICB9CisK
K3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7CisgICAgZnJpZW5kIGNsYXNz
IFJlcGF0Y2hCdWZmZXI7CisKKyAgICBzdGF0aWMgdm9pZCBsaW5rQ2FsbCh2b2lkKiBjb2RlLCBD
YWxsIGNhbGwsIEZ1bmN0aW9uUHRyIGZ1bmN0aW9uKQorICAgIHsKKyAgICAgICAgQVJNdjdBc3Nl
bWJsZXI6OmxpbmtDYWxsKGNvZGUsIGNhbGwubV9qbXAsIGZ1bmN0aW9uLnZhbHVlKCkpOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwgY2FsbCwg
Q29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCisgICAgeworICAgICAgICBBUk12N0Fzc2Vt
Ymxlcjo6cmVsaW5rQ2FsbChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRh
YmxlQWRkcmVzcygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCByZXBhdGNoQ2FsbChDb2Rl
TG9jYXRpb25DYWxsIGNhbGwsIEZ1bmN0aW9uUHRyIGRlc3RpbmF0aW9uKQorICAgIHsKKyAgICAg
ICAgQVJNdjdBc3NlbWJsZXI6OnJlbGlua0NhbGwoY2FsbC5kYXRhTG9jYXRpb24oKSwgZGVzdGlu
YXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODYu
aAkocmV2aXNpb24gNDYyMDEpCisrKyBKYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODYuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwyNCBAQCBwdWJsaWM6CiAK
IHByaXZhdGU6CiAgICAgY29uc3QgYm9vbCBtX2lzU1NFMlByZXNlbnQ7CisKKyAgICBmcmllbmQg
Y2xhc3MgTGlua0J1ZmZlcjsKKyAgICBmcmllbmQgY2xhc3MgUmVwYXRjaEJ1ZmZlcjsKKworICAg
IHN0YXRpYyB2b2lkIGxpbmtDYWxsKHZvaWQqIGNvZGUsIENhbGwgY2FsbCwgRnVuY3Rpb25QdHIg
ZnVuY3Rpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OmxpbmtDYWxsKGNvZGUsIGNh
bGwubV9qbXAsIGZ1bmN0aW9uLnZhbHVlKCkpOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHJl
cGF0Y2hDYWxsKENvZGVMb2NhdGlvbkNhbGwgY2FsbCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGlu
YXRpb24pCisgICAgeworICAgICAgICBYODZBc3NlbWJsZXI6OnJlbGlua0NhbGwoY2FsbC5kYXRh
TG9jYXRpb24oKSwgZGVzdGluYXRpb24uZXhlY3V0YWJsZUFkZHJlc3MoKSk7CisgICAgfQorCisg
ICAgc3RhdGljIHZvaWQgcmVwYXRjaENhbGwoQ29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBGdW5jdGlv
blB0ciBkZXN0aW5hdGlvbikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVsaW5rQ2Fs
bChjYWxsLmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsK
KyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCShyZXZpc2lvbiA0NjIwMSkKKysr
IEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4Nl82NC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw4IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlclg4NkNv
bW1vbi5oIgogCisjZGVmaW5lIFJFUFRBQ0hfT0ZGU0VUX0NBTExfUjExIDMKKwogbmFtZXNwYWNl
IEpTQyB7CiAKIGNsYXNzIE1hY3JvQXNzZW1ibGVyWDg2XzY0IDogcHVibGljIE1hY3JvQXNzZW1i
bGVyWDg2Q29tbW9uIHsKQEAgLTQ0Niw2ICs0NDgsMjkgQEAgcHVibGljOgogICAgIGJvb2wgc3Vw
cG9ydHNGbG9hdGluZ1BvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIC8vIFNlZSBj
b21tZW50IG9uIE1hY3JvQXNzZW1ibGVyQVJNdjc6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5j
YXRlKCkKICAgICBib29sIHN1cHBvcnRzRmxvYXRpbmdQb2ludFRydW5jYXRlKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMaW5rQnVmZmVyOwor
ICAgIGZyaWVuZCBjbGFzcyBSZXBhdGNoQnVmZmVyOworCisgICAgc3RhdGljIHZvaWQgbGlua0Nh
bGwodm9pZCogY29kZSwgQ2FsbCBjYWxsLCBGdW5jdGlvblB0ciBmdW5jdGlvbikKKyAgICB7Cisg
ICAgICAgIGlmICghY2FsbC5pc0ZsYWdTZXQoQ2FsbDo6TmVhcikpCisgICAgICAgICAgICBYODZB
c3NlbWJsZXI6OmxpbmtQb2ludGVyKGNvZGUsIFg4NkFzc2VtYmxlcjo6bGFiZWxGb3IoY2FsbC5t
X2ptcCwgLVJFUFRBQ0hfT0ZGU0VUX0NBTExfUjExKSwgZnVuY3Rpb24udmFsdWUoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6bGlua0NhbGwoY29kZSwgY2FsbC5t
X2ptcCwgZnVuY3Rpb24udmFsdWUoKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgcmVwYXRj
aENhbGwoQ29kZUxvY2F0aW9uQ2FsbCBjYWxsLCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlv
bikKKyAgICB7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6cmVwYXRjaFBvaW50ZXIoY2FsbC5kYXRh
TGFiZWxQdHJBdE9mZnNldCgtUkVQVEFDSF9PRkZTRVRfQ0FMTF9SMTEpLmRhdGFMb2NhdGlvbigp
LCBkZXN0aW5hdGlvbi5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dm9pZCByZXBhdGNoQ2FsbChDb2RlTG9jYXRpb25DYWxsIGNhbGwsIEZ1bmN0aW9uUHRyIGRlc3Rp
bmF0aW9uKQorICAgIHsKKyAgICAgICAgWDg2QXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcihjYWxs
LmRhdGFMYWJlbFB0ckF0T2Zmc2V0KC1SRVBUQUNIX09GRlNFVF9DQUxMX1IxMSkuZGF0YUxvY2F0
aW9uKCksIGRlc3RpbmF0aW9uLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgIH0KKwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNz
ZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oCShyZXZpc2lvbiA0NjIwMikKKysrIEphdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTM0NSw2ICsxMzQ1LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIEptcERzdChtX2Zvcm1hdHRlci5zaXplKCkpOwogICAgIH0KICAgICAK
KyAgICBzdGF0aWMgSm1wRHN0IGxhYmVsRm9yKEptcFNyYyBqdW1wLCBpbnRwdHJfdCBvZmZzZXQg
PSAwKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEptcERzdChqdW1wLm1fb2Zmc2V0ICsgb2Zmc2V0
KTsKKyAgICB9CisgICAgCiAgICAgSm1wRHN0IGFsaWduKGludCBhbGlnbm1lbnQpCiAgICAgewog
ICAgICAgICB3aGlsZSAoIW1fZm9ybWF0dGVyLmlzQWxpZ25lZChhbGlnbm1lbnQpKQpAQCAtMTM4
NCwxMyArMTM4OSw2IEBAIHB1YmxpYzoKICAgICAgICAgc2V0UmVsMzIocmVpbnRlcnByZXRfY2Fz
dDxjaGFyKj4oY29kZSkgKyBmcm9tLm1fb2Zmc2V0LCB0byk7CiAgICAgfQogCi0jaWYgUExBVEZP
Uk0oWDg2XzY0KQotICAgIHN0YXRpYyB2b2lkIGxpbmtQb2ludGVyRm9yQ2FsbCh2b2lkKiB3aGVy
ZSwgdm9pZCogdmFsdWUpCi0gICAgewotICAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqKj4o
d2hlcmUpWy0xXSA9IHZhbHVlOwotICAgIH0KLSNlbmRpZgotCiAgICAgc3RhdGljIHZvaWQgbGlu
a1BvaW50ZXIodm9pZCogY29kZSwgSm1wRHN0IHdoZXJlLCB2b2lkKiB2YWx1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCh3aGVyZS5tX29mZnNldCAhPSAtMSk7Cg==
</data>
<flag name="review"
          id="17549"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>