<?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>71427</bug_id>
          
          <creation_ts>2011-11-02 18:13:30 -0700</creation_ts>
          <short_desc>Inlined uses of the global object should use the right global object</short_desc>
          <delta_ts>2011-11-02 19:59:13 -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>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>495123</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-02 18:13:30 -0700</bug_when>
    <thetext>The DFG backend was assuming that uses of the global object can use the global object associated with the machine code block.  But they should be the ones associated with the (potentially inlined) function instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495124</commentid>
    <comment_count>1</comment_count>
      <attachid>113413</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-02 18:14:44 -0700</bug_when>
    <thetext>Created attachment 113413
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495155</commentid>
    <comment_count>2</comment_count>
      <attachid>113413</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-11-02 19:30:06 -0700</bug_when>
    <thetext>Comment on attachment 113413
the patch

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

r=me, but i don&apos;t believe that fix me is correct.

&gt; Source/JavaScriptCore/dfg/DFGJITCompiler.h:439
&gt; +        // FIXME: if we ever inline based on executable not function, this code will need to change.

I don&apos;t believe that this is correct -- all functions for a given executable must by definition share the same global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495156</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-02 19:31:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 113413 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=113413&amp;action=review
&gt; 
&gt; r=me, but i don&apos;t believe that fix me is correct.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGJITCompiler.h:439
&gt; &gt; +        // FIXME: if we ever inline based on executable not function, this code will need to change.
&gt; 
&gt; I don&apos;t believe that this is correct -- all functions for a given executable must by definition share the same global object.

If we inline based on executable, the inlineCallFrame-&gt;callee field will be 0, and there will be another field that tells you how to get the callee from the register file.  That&apos;s what I meant by the FIXME.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495164</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-02 19:52:23 -0700</bug_when>
    <thetext>Looks performance neutral and all tests pass.



Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc
&quot;FixInlineGlobal&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                            TipOfTree            FixInlineGlobal                                 
SunSpider:
   3d-cube                                7.9055+-0.0250          7.9030+-0.0245       
   3d-morph                               8.4010+-0.0327          8.3968+-0.0273       
   3d-raytrace                            8.2108+-0.0663          8.1345+-0.0946       
   access-binary-trees                    1.7229+-0.0395          1.6849+-0.0058         might be 1.0226x faster
   access-fannkuch                        7.8228+-0.0070    ?     7.8424+-0.0260       ?
   access-nbody                           4.5250+-0.0182    ?     4.5274+-0.0092       ?
   access-nsieve                          3.1817+-0.0122    ?     3.2215+-0.0327       ? might be 1.0125x slower
   bitops-3bit-bits-in-byte               1.2934+-0.0156    ?     1.2998+-0.0149       ?
   bitops-bits-in-byte                    4.9984+-0.0076          4.9842+-0.0120       
   bitops-bitwise-and                     3.4312+-0.0617    ?     3.4583+-0.0728       ?
   bitops-nsieve-bits                     5.6541+-0.0357    ?     5.6871+-0.0369       ?
   controlflow-recursive                  2.3309+-0.0122    ?     2.3598+-0.0281       ? might be 1.0124x slower
   crypto-aes                             7.7440+-0.0641          7.7323+-0.0451       
   crypto-md5                             2.8935+-0.0283          2.8830+-0.0122       
   crypto-sha1                            2.6501+-0.0400          2.6337+-0.0210       
   date-format-tofte                     10.8381+-0.1213         10.7141+-0.0460         might be 1.0116x faster
   date-format-xparb                     10.0780+-0.1998    ^     9.7163+-0.1056       ^ definitely 1.0372x faster
   math-cordic                            7.2948+-0.0635          7.2656+-0.0419       
   math-partial-sums                     10.5843+-0.0257         10.5822+-0.0750       
   math-spectral-norm                     2.9087+-0.0334          2.8803+-0.0069       
   regexp-dna                            13.4231+-0.1595    ?    13.4949+-0.1883       ?
   string-base64                          4.3142+-0.0267          4.2876+-0.0140       
   string-fasta                           7.1573+-0.0114    ^     7.1321+-0.0136       ^ definitely 1.0035x faster
   string-tagcloud                       13.2550+-0.1296    ?    13.2607+-0.1008       ?
   string-unpack-code                    23.0323+-0.1087         22.9692+-0.1619       
   string-validate-input                  5.6430+-0.0265    ?     5.6622+-0.0404       ?

   &lt;arithmetic&gt; *                         6.9729+-0.0207          6.9505+-0.0238       
   &lt;geometric&gt;                            5.6266+-0.0158          5.6126+-0.0150       
   &lt;harmonic&gt;                             4.4490+-0.0168          4.4406+-0.0118       

                                            TipOfTree            FixInlineGlobal                                 
V8:
   crypto                                81.1349+-0.2988         80.8813+-0.2027       
   deltablue                            182.6440+-0.9418        182.6097+-1.9133       
   earley-boyer                         111.4420+-0.2287        111.3792+-0.4176       
   raytrace                              69.1373+-0.3317    !    70.0228+-0.5185       ! definitely 1.0128x slower
   regexp                               125.9373+-0.5356        125.8627+-0.1749       
   richards                             144.1570+-0.5759    ?   145.0371+-0.3479       ?
   splay                                 90.5705+-0.9146         90.4614+-1.1537       

   &lt;arithmetic&gt;                         115.0033+-0.1811    ?   115.1792+-0.2915       ?
   &lt;geometric&gt; *                        109.4122+-0.1859    ?   109.6156+-0.2958       ?
   &lt;harmonic&gt;                           104.2286+-0.2096    ?   104.4777+-0.3322       ?

                                            TipOfTree            FixInlineGlobal                                 
Kraken:
   ai-astar                             818.0541+-10.8419   ?   827.8603+-0.5665       ? might be 1.0120x slower
   audio-beat-detection                 209.9056+-1.0301        209.7902+-0.8383       
   audio-dft                            262.9032+-1.8822        260.7352+-2.4678       
   audio-fft                            136.9000+-0.5795    ?   137.1937+-0.7243       ?
   audio-oscillator                     317.5338+-30.9262       290.2611+-1.1621         might be 1.0940x faster
   imaging-darkroom                     338.8633+-5.6019        338.4315+-5.8906       
   imaging-desaturate                   240.9064+-0.0799    ?   240.9227+-0.1222       ?
   imaging-gaussian-blur                621.3248+-0.9010        621.1927+-0.3395       
   json-parse-financial                  70.4761+-0.1563    ?    70.5841+-0.1556       ?
   json-stringify-tinderbox              79.2334+-0.2014    ?    79.5120+-0.6848       ?
   stanford-crypto-aes                  116.6959+-0.7287        116.5538+-0.6824       
   stanford-crypto-ccm                  114.7526+-0.5635    !   115.8885+-0.5538       ! definitely 1.0099x slower
   stanford-crypto-pbkdf2               234.7142+-0.5188    ?   235.8879+-1.0809       ?
   stanford-crypto-sha256-iterative      97.5235+-0.2353    ?    97.6753+-0.1444       ?

   &lt;arithmetic&gt; *                       261.4134+-2.5696        260.1778+-0.3637       
   &lt;geometric&gt;                          200.4197+-1.3682        199.6099+-0.2592       
   &lt;harmonic&gt;                           159.7703+-0.5276        159.6421+-0.2686       

                                            TipOfTree            FixInlineGlobal                                 
All benchmarks:
   &lt;arithmetic&gt;                          98.8533+-0.7571         98.4991+-0.1172       
   &lt;geometric&gt;                           25.3745+-0.0676         25.3164+-0.0442       
   &lt;harmonic&gt;                             7.8349+-0.0288          7.8206+-0.0204       

                                            TipOfTree            FixInlineGlobal                                 
Geomean of preferred means:
   &lt;scaled-result&gt;                       58.4237+-0.1967         58.3067+-0.1016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>495165</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-02 19:59:13 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/99132</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113413</attachid>
            <date>2011-11-02 18:14:44 -0700</date>
            <delta_ts>2011-11-02 19:30:05 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>fixglobal_patch_1.diff</filename>
            <type>text/plain</type>
            <size>10366</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTkxMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTEtMTEtMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bmxpbmVkIHVzZXMgb2YgdGhlIGdsb2JhbCBvYmplY3Qgc2hvdWxkIHVzZSB0aGUgcmlnaHQgZ2xv
YmFsIG9iamVjdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzE0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGRmZy9ERkdKSVRDb21waWxlci5oOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVy
OjpnbG9iYWxPYmplY3RGb3IpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEt
MTEtMDIgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEZS12aXJ0dWFsaXplIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiA5OTExMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMyLDYgKzQzMiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2dyYXBo
LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgsIGJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fZ3JhcGhb
bm9kZUluZGV4XS5jb2RlT3JpZ2luKSk7CiAgICAgfQogICAgIAorICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3RGb3IoQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAgICAg
aWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBjb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgICAgIC8vIEZJWE1FOiBpZiB3ZSBldmVyIGlu
bGluZSBiYXNlZCBvbiBleGVjdXRhYmxlIG5vdCBmdW5jdGlvbiwgdGhpcyBjb2RlIHdpbGwgbmVl
ZCB0byBjaGFuZ2UuCisgICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
Y2FsbGVlLT5zY29wZSgpLT5nbG9iYWxPYmplY3QuZ2V0KCk7CisgICAgfQorICAgIAogcHJpdmF0
ZToKICAgICAvLyBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiB0byBjb21waWxlLgogICAgIHZvaWQg
Y29tcGlsZUVudHJ5KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDk5MTEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTkwMSw3ICsxOTAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgICAgICAgICAgLy8gc2luY2UgdGhpcyBvcGVyYXRpb24gZG9lcyBub3Qg
b3RoZXJ3aXNlIGdldCB0aGUgcGF5bG9hZC4KICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSkpOwogICAg
ICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKSksIHNjcmF0Y2hHUFIpOwor
ICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSksIHNjcmF0Y2hHUFIpOwogICAgICAg
ICAgICAgY2VsbFJlc3VsdChzY3JhdGNoR1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTk5NCw3ICsxOTk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAgZW1pdEFsbG9jYXRlSlNG
aW5hbE9iamVjdChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2so
KS0+Z2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpLCByZXN1bHRHUFIsIHNj
cmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNGaW5hbE9iamVjdChN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5j
b2RlT3JpZ2luKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdEdQUiwgc2NyYXRjaEdQ
Uiwgc2xvd1BhdGgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9u
ZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC0yMjg2LDcgKzIyODYsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBpZiAo
IW1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5kb2VzTm90Q29udGFp
bkFueU90aGVyVGhhbihtZXRob2RDaGVja0RhdGEuc3RydWN0dXJlKSkKICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6
OnN0cnVjdHVyZU9mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobWV0aG9kQ2hl
Y2tEYXRhLnN0cnVjdHVyZSkpKTsKLSAgICAgICAgaWYgKG1ldGhvZENoZWNrRGF0YS5wcm90b3R5
cGUgIT0gbV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLT5tZXRob2RDYWxsRHVtbXko
KSkgeworICAgICAgICBpZiAobWV0aG9kQ2hlY2tEYXRhLnByb3RvdHlwZSAhPSBtX2ppdC5nbG9i
YWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+bWV0aG9kQ2FsbER1bW15KCkpIHsKICAgICAg
ICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobWV0aG9kQ2hlY2tE
YXRhLnByb3RvdHlwZS0+c3RydWN0dXJlQWRkcmVzcygpKSwgc2NyYXRjaEdQUik7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3Moc2NyYXRjaEdQ
UiksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1ldGhvZENoZWNrRGF0YS5wcm90b3R5cGVT
dHJ1Y3R1cmUpKSk7CiAgICAgICAgIH0KQEAgLTIzMzgsNyArMjMzOCw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKLSAgICAgICAg
SlNWYXJpYWJsZU9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuY29kZUJsb2NrKCktPmdsb2Jh
bE9iamVjdCgpOworICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2pp
dC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKTsKICAgICAgICAgbV9qaXQubG9hZFB0
cihjb25zdF9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPioqPihnbG9iYWxPYmplY3QtPmFkZHJl
c3NPZlJlZ2lzdGVycygpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjp0YWdGb3JHbG9iYWxWYXIocmVzdWx0LmdwcigpLCBub2RlLnZhck51bWJlcigp
KSwgc2NyYXRjaC5ncHIoKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5
bG9hZEZvckdsb2JhbFZhcihyZXN1bHQuZ3ByKCksIG5vZGUudmFyTnVtYmVyKCkpLCByZXN1bHQu
Z3ByKCkpOwpAQCAtMjM1NSw5ICsyMzU1LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgZ2xvYmFsT2JqZWN0UmVnID0gZ2xvYmFsT2Jq
ZWN0LmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAK
LSAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5j
b2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RSZWcpOworICAgICAgICBt
X2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbE9iamVj
dEZvcihub2RlLmNvZGVPcmlnaW4pKSwgZ2xvYmFsT2JqZWN0UmVnKTsKIAotICAgICAgICB3cml0
ZUJhcnJpZXIobV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLCB2YWx1ZS50YWdHUFIo
KSwgbm9kZS5jaGlsZDEoKSwgV3JpdGVCYXJyaWVyRm9yVmFyaWFibGVBY2Nlc3MsIHNjcmF0Y2hS
ZWcpOworICAgICAgICB3cml0ZUJhcnJpZXIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29k
ZU9yaWdpbiksIHZhbHVlLnRhZ0dQUigpLCBub2RlLmNoaWxkMSgpLCBXcml0ZUJhcnJpZXJGb3JW
YXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJlZyk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhnbG9iYWxPYmplY3RSZWcsIEpTVmFyaWFibGVPYmplY3Q6Om9m
ZnNldE9mUmVnaXN0ZXJzKCkpLCBzY3JhdGNoUmVnKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMih2
YWx1ZS50YWdHUFIoKSwgSklUQ29tcGlsZXI6OnRhZ0Zvckdsb2JhbFZhcihzY3JhdGNoUmVnLCBu
b2RlLnZhck51bWJlcigpKSk7CkBAIC0yNDc1LDcgKzI0NzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvKiByZXNv
bHZlSW5mb0FkZHJlc3MgPSAmKG1faml0LmNvZGVCbG9jaygpLT5nbG9iYWxSZXNvbHZlSW5mbyhk
YXRhLnJlc29sdmVJbmZvSW5kZXgpKTsKIAogICAgICAgICAvLyBDaGVjayBTdHJ1Y3R1cmUgb2Yg
Z2xvYmFsIG9iamVjdAotICAgICAgICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdEdQUik7
CisgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbikpLCBnbG9iYWxPYmplY3RHUFIpOwogICAgICAg
ICBtX2ppdC5tb3ZlKEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKHJlc29sdmVJbmZvQWRkcmVz
cyksIHJlc29sdmVJbmZvR1BSKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
QWRkcmVzcyhyZXNvbHZlSW5mb0dQUiwgT0JKRUNUX09GRlNFVE9GKEdsb2JhbFJlc29sdmVJbmZv
LCBzdHJ1Y3R1cmUpKSwgcmVzdWx0UGF5bG9hZEdQUik7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gOTkx
MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTExLDcgKzE5MTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihWYWx1ZU51bGwpKSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygpLT5nbG9iYWxPYmplY3QoKSksIHNj
cmF0Y2hHUFIpOworICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAgICAgY2VsbFJlc3VsdChzY3JhdGNoR1BSLCBtX2NvbXBpbGVJbmRleCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjAwMyw3ICsyMDAzLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICAKLSAgICAgICAgZW1p
dEFsbG9jYXRlSlNGaW5hbE9iamVjdChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCktPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpLCBy
ZXN1bHRHUFIsIHNjcmF0Y2hHUFIsIHNsb3dQYXRoKTsKKyAgICAgICAgZW1pdEFsbG9jYXRlSlNG
aW5hbE9iamVjdChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxPYmpl
Y3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSksIHJlc3VsdEdQ
Uiwgc2NyYXRjaEdQUiwgc2xvd1BhdGgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgCkBAIC0yMjgwLDcgKzIyODAs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAog
ICAgICAgICBpZiAoIW1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3N0cnVjdHVyZS5k
b2VzTm90Q29udGFpbkFueU90aGVyVGhhbihtZXRob2RDaGVja0RhdGEuc3RydWN0dXJlKSkKICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2hQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNl
R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1Q
dHIobWV0aG9kQ2hlY2tEYXRhLnN0cnVjdHVyZSkpKTsKLSAgICAgICAgaWYgKG1ldGhvZENoZWNr
RGF0YS5wcm90b3R5cGUgIT0gbV9qaXQuY29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLT5tZXRo
b2RDYWxsRHVtbXkoKSkgeworICAgICAgICBpZiAobWV0aG9kQ2hlY2tEYXRhLnByb3RvdHlwZSAh
PSBtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKS0+bWV0aG9kQ2FsbER1bW15
KCkpIHsKICAgICAgICAgICAgIG1faml0Lm1vdmUoSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIo
bWV0aG9kQ2hlY2tEYXRhLnByb3RvdHlwZS0+c3RydWN0dXJlQWRkcmVzcygpKSwgc2NyYXRjaEdQ
Uik7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJl
c3Moc2NyYXRjaEdQUiksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1ldGhvZENoZWNrRGF0
YS5wcm90b3R5cGVTdHJ1Y3R1cmUpKSk7CiAgICAgICAgIH0KQEAgLTIzMjksNyArMjMyOSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBjYXNlIEdldEds
b2JhbFZhcjogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogCi0gICAgICAg
IEpTVmFyaWFibGVPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1faml0LmNvZGVCbG9jaygpLT5nbG9i
YWxPYmplY3QoKTsKKyAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9q
aXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbik7CiAgICAgICAgIG1faml0LmxvYWRQ
dHIoZ2xvYmFsT2JqZWN0LT5hZGRyZXNzT2ZSZWdpc3RlcnMoKSwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvckdsb2JhbFZhcihyZXN1
bHQuZ3ByKCksIG5vZGUudmFyTnVtYmVyKCkpLCByZXN1bHQuZ3ByKCkpOwogCkBAIC0yMzQ1LDkg
KzIzNDUsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
ICAgIEdQUlJlZyBnbG9iYWxPYmplY3RSZWcgPSBnbG9iYWxPYmplY3QuZ3ByKCk7CiAgICAgICAg
IEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKIAotICAgICAgICBtX2ppdC5tb3Zl
KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygpLT5nbG9iYWxP
YmplY3QoKSksIGdsb2JhbE9iamVjdFJlZyk7CisgICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdp
bikpLCBnbG9iYWxPYmplY3RSZWcpOwogCi0gICAgICAgIHdyaXRlQmFycmllcihtX2ppdC5jb2Rl
QmxvY2soKS0+Z2xvYmFsT2JqZWN0KCksIHZhbHVlLmdwcigpLCBub2RlLmNoaWxkMSgpLCBXcml0
ZUJhcnJpZXJGb3JWYXJpYWJsZUFjY2Vzcywgc2NyYXRjaFJlZyk7CisgICAgICAgIHdyaXRlQmFy
cmllcihtX2ppdC5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKSwgdmFsdWUuZ3ByKCks
IG5vZGUuY2hpbGQxKCksIFdyaXRlQmFycmllckZvclZhcmlhYmxlQWNjZXNzLCBzY3JhdGNoUmVn
KTsKIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGdsb2Jh
bE9iamVjdFJlZywgSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZSZWdpc3RlcnMoKSksIHNjcmF0
Y2hSZWcpOwogICAgICAgICBtX2ppdC5zdG9yZVB0cih2YWx1ZS5ncHIoKSwgSklUQ29tcGlsZXI6
OmFkZHJlc3NGb3JHbG9iYWxWYXIoc2NyYXRjaFJlZywgbm9kZS52YXJOdW1iZXIoKSkpOwpAQCAt
MjQ1OSw3ICsyNDU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyogcmVzb2x2ZUluZm9BZGRyZXNzID0gJihtX2pp
dC5jb2RlQmxvY2soKS0+Z2xvYmFsUmVzb2x2ZUluZm8oZGF0YS5yZXNvbHZlSW5mb0luZGV4KSk7
CiAKICAgICAgICAgLy8gQ2hlY2sgU3RydWN0dXJlIG9mIGdsb2JhbCBvYmplY3QKLSAgICAgICAg
bV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5jb2RlQmxvY2soKS0+
Z2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3RHUFIpOworICAgICAgICBtX2ppdC5tb3ZlKEpJ
VENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVP
cmlnaW4pKSwgZ2xvYmFsT2JqZWN0R1BSKTsKICAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxl
cjo6VHJ1c3RlZEltbVB0cihyZXNvbHZlSW5mb0FkZHJlc3MpLCByZXNvbHZlSW5mb0dQUik7CiAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzb2x2ZUluZm9HUFIs
IE9CSkVDVF9PRkZTRVRPRihHbG9iYWxSZXNvbHZlSW5mbywgc3RydWN0dXJlKSksIHJlc3VsdEdQ
Uik7CiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHN0cnVjdHVyZXNNYXRjaCA9IG1faml0LmJy
YW5jaFB0cihKSVRDb21waWxlcjo6RXF1YWwsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OkFkZHJl
c3MoZ2xvYmFsT2JqZWN0R1BSLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSk7Cg==
</data>
<flag name="review"
          id="111772"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>