<?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>68318</bug_id>
          
          <creation_ts>2011-09-17 17:19:14 -0700</creation_ts>
          <short_desc>DFG JIT should inline Math.min, Math.max, and Math.sqrt</short_desc>
          <delta_ts>2024-12-16 10:00:00 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=284631</see_also>
          <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>
          <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>469117</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-17 17:19:14 -0700</bug_when>
    <thetext>The Math.min, Math.max, and Math.sqrt functions are all trivial to inline as they do not require calls to C helpers.  DFG JIT should inline them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469120</commentid>
    <comment_count>1</comment_count>
      <attachid>107780</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-17 17:27:24 -0700</bug_when>
    <thetext>Created attachment 107780
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469158</commentid>
    <comment_count>2</comment_count>
      <attachid>107780</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-18 09:07:47 -0700</bug_when>
    <thetext>Comment on attachment 107780
the patch

This looks really great.  It&apos;s a shame that the intrinsics are in addition to the &quot;thunk generators&quot;.  The old thunks are really for intrinsics.  It would probably be cleaner to remove the ThunkGenerators from the lookup table, and just have an enum value.  When native function objects are constructed the thunk creation could just switch on the intrinsic enum value to select a generator, where one exists (and maybe over time these may be deprecated, as hot cases are inlined in the DFG JIT).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469198</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-18 15:29:04 -0700</bug_when>
    <thetext>Landed in r95399.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>469201</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-18 15:41:10 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 107780 [details])
&gt; This looks really great.  It&apos;s a shame that the intrinsics are in addition to the &quot;thunk generators&quot;.  The old thunks are really for intrinsics.  It would probably be cleaner to remove the ThunkGenerators from the lookup table, and just have an enum value.  When native function objects are constructed the thunk creation could just switch on the intrinsic enum value to select a generator, where one exists (and maybe over time these may be deprecated, as hot cases are inlined in the DFG JIT).

Agree.  Bug created: https://bugs.webkit.org/show_bug.cgi?id=68328</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477892</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-04 13:41:31 -0700</bug_when>
    <thetext>It appears that this patch introduced some regression in JSC. I can no longer load internal builds of Google docs. It repeatedly encounters the following error in WebKit2 (regardless of whether I use single process or not):

ERROR: Failed to send message to real exception port, error 10000003
/Volumes/Data/webkit/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp(407) : void CoreIPC::Connection::exceptionSourceEventHandler()

I&apos;ve manually bisected the builds and r95397 worked fine so I&apos;m pretty certain this patch caused it. Unfortunately, I don&apos;t know ways to provide access to our internal builds of Google docs at the moment :( so we can only inspect the code change manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477922</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-04 14:05:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; It appears that this patch introduced some regression in JSC. I can no longer load internal builds of Google docs. It repeatedly encounters the following error in WebKit2 (regardless of whether I use single process or not):
&gt; 
&gt; ERROR: Failed to send message to real exception port, error 10000003
&gt; /Volumes/Data/webkit/Source/WebKit2/Platform/CoreIPC/mac/ConnectionMac.cpp(407) : void CoreIPC::Connection::exceptionSourceEventHandler()
&gt; 
&gt; I&apos;ve manually bisected the builds and r95397 worked fine so I&apos;m pretty certain this patch caused it. Unfortunately, I don&apos;t know ways to provide access to our internal builds of Google docs at the moment :( so we can only inspect the code change manually.

Here&apos;s a simple test you could do to see if and how this changeset affects the problem you&apos;re seeing:

Go to Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp

Replace the contents of handleIntrinsic() method with just &quot;return false&quot;.

Check if you still see the problem.  If it makes the problem go away, then it&apos;s highly likely the fault of this patch.  If the problem persists, then it&apos;s highly unlikely that this patch caused it.

Thanks for your help.  I understand this can be complicated when the only repro is in internal code!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477960</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-10-04 14:26:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Here&apos;s a simple test you could do to see if and how this changeset affects the problem you&apos;re seeing:
&gt; 
&gt; Go to Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
&gt; 
&gt; Replace the contents of handleIntrinsic() method with just &quot;return false&quot;.

I did, and the problem disappeared. I also double-checked that reverting the change will introduce the bug again.

&gt; Thanks for your help.  I understand this can be complicated when the only repro is in internal code!

Nope. I just want to help Google products don&apos;t suck on Safari :)

Is there any information I can provide you to help investigating the issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477962</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-04 14:28:17 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Here&apos;s a simple test you could do to see if and how this changeset affects the problem you&apos;re seeing:
&gt; &gt; 
&gt; &gt; Go to Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp
&gt; &gt; 
&gt; &gt; Replace the contents of handleIntrinsic() method with just &quot;return false&quot;.
&gt; 
&gt; I did, and the problem disappeared. I also double-checked that reverting the change will introduce the bug again.
&gt; 
&gt; &gt; Thanks for your help.  I understand this can be complicated when the only repro is in internal code!
&gt; 
&gt; Nope. I just want to help Google products don&apos;t suck on Safari :)
&gt; 
&gt; Is there any information I can provide you to help investigating the issue?

Thanks for checking this.  I&apos;ll try to track this down by increasing test coverage on our end.  I will let you know if I need more info from you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107780</attachid>
            <date>2011-09-17 17:27:24 -0700</date>
            <delta_ts>2011-09-18 09:07:47 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>minmaxsqrt_patch_1.diff</filename>
            <type>text/plain</type>
            <size>12320</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTUzODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAK
KzIwMTEtMDktMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIHNob3VsZCBpbmxpbmUgTWF0aC5taW4sIE1hdGgubWF4LCBhbmQgTWF0aC5zcXJ0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODMxOAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRk
cyBNYXRoLm1pbiwgTWF0aC5tYXgsIGFuZCBNYXRoLnNxcnQgaW50cmluc2ljcy4gQWRkcyBzdXBw
b3J0IGZvcgorICAgICAgICBhIGZ1bmN0aW9uIHRvIGhhdmUgYW4gaW50cmluc2ljIGJ1dCBub3Qg
YSB0aHVuayBnZW5lcmF0b3IuIFRoaXMgaXMKKyAgICAgICAgYSA3JSBzcGVlZC11cCBvbiBhY2Nl
c3MtbmJvZHksIGFuZCBuZXV0cmFsIGVsc2V3aGVyZSwgbWFpbmx5IGJlY2F1c2UKKyAgICAgICAg
d2UncmUgc3RpbGwgbm90IERGRyBjb21waWxpbmcgdGhlIGJ1bGsgb2YgdGhlIGhvdCBjb2RlIGlu
IEtyYWtlbiBhdWRpbworICAgICAgICBiZW5jaG1hcmtzLgorCisgICAgICAgICogY3JlYXRlX2hh
c2hfdGFibGU6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlTWluTWF4KToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKKyAgICAgICAgKiBkZmcvREZH
SW50cmluc2ljLmg6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKiBkZmcvREZH
UHJvcGFnYXRvci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6cHJvcGFnYXRl
Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Zml4dXBOb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpKSVRUaHVua3M6Omhvc3RGdW5jdGlvblN0dWIpOgorICAgICAgICAqIHJ1bnRpbWUv
TG9va3VwLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorCiAy
MDExLTA5LTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgbWV0
aG9kX2NoZWNrIHNob3VsZCByZXBhdGNoIGl0c2VsZiBpZiBpdCBmaW5kcyB0aGF0IHRoZSBuZXcg
c3RydWN0dXJlKHMpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvY3JlYXRlX2hhc2hfdGFi
bGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2NyZWF0ZV9oYXNoX3RhYmxl
CShyZXZpc2lvbiA5NTM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9jcmVhdGVfaGFzaF90
YWJsZQkod29ya2luZyBjb3B5KQpAQCAtMjg4LDggKzI4OCwxNSBAQCBzdWIgb3V0cHV0KCkgewog
ICAgICAgICAgICAgJHRodW5rR2VuZXJhdG9yID0gImZyb21DaGFyQ29kZVRodW5rR2VuZXJhdG9y
IjsKICAgICAgICAgfQogICAgICAgICBpZiAoJG5hbWUgZXEgIm1hdGhUYWJsZSIpIHsKKyAgICAg
ICAgICAgIGlmICgka2V5IGVxICJtaW4iKSB7CisgICAgICAgICAgICAgICAgJGludHJpbnNpYyA9
ICJERkc6Ok1pbkludHJpbnNpYyI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoJGtl
eSBlcSAibWF4IikgeworICAgICAgICAgICAgICAgICRpbnRyaW5zaWMgPSAiREZHOjpNYXhJbnRy
aW5zaWMiOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRrZXkgZXEgInNxcnQiKSB7
CiAgICAgICAgICAgICAgICAgJHRodW5rR2VuZXJhdG9yID0gInNxcnRUaHVua0dlbmVyYXRvciI7
CisgICAgICAgICAgICAgICAgJGludHJpbnNpYyA9ICJERkc6OlNxcnRJbnRyaW5zaWMiOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCRrZXkgZXEgInBvdyIpIHsKICAgICAgICAgICAg
ICAgICAkdGh1bmtHZW5lcmF0b3IgPSAicG93VGh1bmtHZW5lcmF0b3IiOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDk1Mzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDYgKzY2LDkgQEAgcHVibGljOgogICAgIGJvb2wgcGFy
c2UoKTsKIAogcHJpdmF0ZToKKyAgICAvLyBIZWxwZXIgZm9yIG1pbiBhbmQgbWF4LgorICAgIGJv
b2wgaGFuZGxlTWluTWF4KGJvb2wgdXNlc1Jlc3VsdCwgaW50IHJlc3VsdE9wZXJhbmQsIE5vZGVU
eXBlIG9wLCBpbnQgZmlyc3RBcmcsIGludCBsYXN0QXJnKTsKKyAgICAKICAgICAvLyBIYW5kbGUg
aW50cmluc2ljIGZ1bmN0aW9ucy4KICAgICBib29sIGhhbmRsZUludHJpbnNpYyhib29sIHVzZXNS
ZXN1bHQsIGludCByZXN1bHRPcGVyYW5kLCBJbnRyaW5zaWMsIGludCBmaXJzdEFyZywgaW50IGxh
c3RBcmcpOwogICAgIC8vIFBhcnNlIGEgc2luZ2xlIGJhc2ljIGJsb2NrIG9mIGJ5dGVjb2RlIGlu
c3RydWN0aW9ucy4KQEAgLTYwMiw2ICs2MDUsMzAgQEAgcHJpdmF0ZToKICAgICBtX2N1cnJlbnRJ
bmRleCArPSBPUENPREVfTEVOR1RIKG5hbWUpOyBcCiAgICAgcmV0dXJuICFtX3BhcnNlRmFpbGVk
CiAKK2Jvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZU1pbk1heChib29sIHVzZXNSZXN1bHQsIGlu
dCByZXN1bHRPcGVyYW5kLCBOb2RlVHlwZSBvcCwgaW50IGZpcnN0QXJnLCBpbnQgbGFzdEFyZykK
K3sKKyAgICBpZiAoIXVzZXNSZXN1bHQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYg
KGxhc3RBcmcgPT0gZmlyc3RBcmcpIHsKKyAgICAgICAgc2V0KHJlc3VsdE9wZXJhbmQsIGNvbnN0
YW50TmFOKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgIAorICAgIGlmIChs
YXN0QXJnID09IGZpcnN0QXJnICsgMSkgeworICAgICAgICBzZXQocmVzdWx0T3BlcmFuZCwgZ2V0
VG9OdW1iZXIoZmlyc3RBcmcgKyAxKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICAKKyAgICBpZiAobGFzdEFyZyA9PSBmaXJzdEFyZyArIDIpIHsKKyAgICAgICAgc2V0KHJlc3Vs
dE9wZXJhbmQsIGFkZFRvR3JhcGgob3AsIGdldFRvTnVtYmVyKGZpcnN0QXJnICsgMSksIGdldFRv
TnVtYmVyKGZpcnN0QXJnICsgMikpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IAorICAgIC8vIERvbid0IGhhbmRsZSA+PTMgYXJndW1lbnRzIGZvciBub3cuCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMoYm9vbCB1
c2VzUmVzdWx0LCBpbnQgcmVzdWx0T3BlcmFuZCwgSW50cmluc2ljIGludHJpbnNpYywgaW50IGZp
cnN0QXJnLCBpbnQgbGFzdEFyZykKIHsKICAgICBzd2l0Y2ggKGludHJpbnNpYykgewpAQCAtNjIy
LDYgKzY0OSwyNSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMoYm9vCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBNaW5JbnRyaW5z
aWM6CisgICAgICAgIHJldHVybiBoYW5kbGVNaW5NYXgodXNlc1Jlc3VsdCwgcmVzdWx0T3BlcmFu
ZCwgQXJpdGhNaW4sIGZpcnN0QXJnLCBsYXN0QXJnKTsKKyAgICAgICAgCisgICAgY2FzZSBNYXhJ
bnRyaW5zaWM6CisgICAgICAgIHJldHVybiBoYW5kbGVNaW5NYXgodXNlc1Jlc3VsdCwgcmVzdWx0
T3BlcmFuZCwgQXJpdGhNYXgsIGZpcnN0QXJnLCBsYXN0QXJnKTsKKyAgICAgICAgCisgICAgY2Fz
ZSBTcXJ0SW50cmluc2ljOiB7CisgICAgICAgIGlmICghdXNlc1Jlc3VsdCkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGZpcnN0QXJnID09IGxhc3RBcmcp
IHsKKyAgICAgICAgICAgIHNldChyZXN1bHRPcGVyYW5kLCBjb25zdGFudE5hTigpKTsKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZXQocmVz
dWx0T3BlcmFuZCwgYWRkVG9HcmFwaChBcml0aFNxcnQsIGdldFRvTnVtYmVyKGZpcnN0QXJnICsg
MSkpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgICAgICAKICAgICBkZWZhdWx0
OgogICAgICAgICBBU1NFUlQoaW50cmluc2ljID09IE5vSW50cmluc2ljKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRyaW5zaWMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludHJpbnNpYy5o
CShyZXZpc2lvbiA5NTM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW50cmlu
c2ljLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDEwIEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKIAogZW51bSBJbnRyaW5zaWMgewogICAgIE5vSW50cmluc2ljLAotICAg
IEFic0ludHJpbnNpYworICAgIEFic0ludHJpbnNpYywKKyAgICBNaW5JbnRyaW5zaWMsCisgICAg
TWF4SW50cmluc2ljLAorICAgIFNxcnRJbnRyaW5zaWMKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiA5
NTM4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsNiArMTUyLDkgQEAgcHJpdmF0ZToKICAgICBtYWNybyhBcml0aERpdiwgTm9k
ZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoTW9kLCBOb2RlUmVzdWx0TnVtYmVyKSBc
CiAgICAgbWFjcm8oQXJpdGhBYnMsIE5vZGVSZXN1bHROdW1iZXIpIFwKKyAgICBtYWNybyhBcml0
aE1pbiwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIG1hY3JvKEFyaXRoTWF4LCBOb2RlUmVzdWx0
TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhTcXJ0LCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAg
LyogQXJpdGhtZXRpYyBvcGVyYXRvcnMgY2FsbCBUb051bWJlciBvbiB0aGVpciBvcGVyYW5kcy4g
Ki9cCiAgICAgbWFjcm8oVmFsdWVUb051bWJlciwgTm9kZVJlc3VsdE51bWJlciB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
b3BhZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJvcGFnYXRvci5jcHAJKHJldmlzaW9uIDk1Mzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdQcm9wYWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDcgKzE5Nyw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBBcml0aEFkZDoKICAgICAgICAg
Y2FzZSBBcml0aFN1YjoKLSAgICAgICAgY2FzZSBBcml0aE11bDogeworICAgICAgICBjYXNlIEFy
aXRoTXVsOgorICAgICAgICBjYXNlIEFyaXRoTWluOgorICAgICAgICBjYXNlIEFyaXRoTWF4OiB7
CiAgICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGxlZnQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hp
bGQxKCldOwogICAgICAgICAgICAgUHJlZGljdGVkVHlwZSByaWdodCA9IG1fcHJlZGljdGlvbnNb
bm9kZS5jaGlsZDIoKV07CiAgICAgICAgICAgICAKQEAgLTIxMCw3ICsyMTIsOCBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBj
YXNlIEFyaXRoRGl2OiB7CisgICAgICAgIGNhc2UgQXJpdGhEaXY6CisgICAgICAgIGNhc2UgQXJp
dGhTcXJ0OiB7CiAgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldFByZWRpY3Rpb24obWFrZVByZWRp
Y3Rpb24oUHJlZGljdERvdWJsZSwgU3Ryb25nUHJlZGljdGlvbikpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTM3Myw3ICszNzYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
CiAgICAgICAgIGNhc2UgQXJpdGhBZGQ6CiAgICAgICAgIGNhc2UgQXJpdGhTdWI6Ci0gICAgICAg
IGNhc2UgQXJpdGhNdWw6IHsKKyAgICAgICAgY2FzZSBBcml0aE11bDoKKyAgICAgICAgY2FzZSBB
cml0aE1pbjoKKyAgICAgICAgY2FzZSBBcml0aE1heDogewogICAgICAgICAgICAgUHJlZGljdGVk
VHlwZSBsZWZ0ID0gbV9wcmVkaWN0aW9uc1tub2RlLmNoaWxkMSgpXTsKICAgICAgICAgICAgIFBy
ZWRpY3RlZFR5cGUgcmlnaHQgPSBtX3ByZWRpY3Rpb25zW25vZGUuY2hpbGQyKCldOwogICAgICAg
ICAgICAgCkBAIC0zOTIsNiArMzk3LDE4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQXJpdGhBYnM6IHsKKyAgICAg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1fcHJlZGljdGlvbnNbbm9kZS5jaGls
ZDEoKV07CisgICAgICAgICAgICBpZiAoaXNTdHJvbmdQcmVkaWN0aW9uKHByZWRpY3Rpb24pICYm
IChwcmVkaWN0aW9uICYgUHJlZGljdERvdWJsZSkpCisgICAgICAgICAgICAgICAgdG9Eb3VibGUo
bm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgQXJpdGhTcXJ0OiB7CisgICAgICAgICAgICB0b0RvdWJsZShub2Rl
LmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICAgICAK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2
aXNpb24gOTUzODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4Myw2ICsxMDgzLDcwIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3Vs
dC5mcHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgICAg
IAorICAgIGNhc2UgQXJpdGhNaW46CisgICAgY2FzZSBBcml0aE1heDogeworICAgICAgICBpZiAo
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigpKSkgewor
ICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOworICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AyKHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvcDFMZXNzID0g
bV9qaXQuYnJhbmNoMzIob3AgPT0gQXJpdGhNaW4gPyBNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4g
OiBNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW4sIG9wMS5ncHIoKSwgb3AyLmdwcigpKTsKKyAg
ICAgICAgICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAg
ICAgaWYgKG9wMS5ncHIoKSAhPSByZXN1bHQuZ3ByKCkpIHsKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOworICAgICAgICAgICAgICAgIG9w
MUxlc3MubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigp
LCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOworICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgb3AxTGVzcy5saW5rKCZtX2ppdCk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2Nv
bXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwor
ICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CisgICAgICAgIAorICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZG9uZTsKKyAgICAgICAgCisgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG9wMUxlc3MgPSBtX2ppdC5icmFuY2hEb3VibGUob3AgPT0gQXJpdGhN
aW4gPyBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW4gOiBNYWNyb0Fzc2VtYmxlcjo6RG91
YmxlR3JlYXRlclRoYW4sIG9wMS5mcHIoKSwgb3AyLmZwcigpKTsKKyAgICAgICAgCisgICAgICAg
IC8vIG9wMiBpcyBlYXRoZXIgdGhlIGxlc3NlciBvbmUgb3Igb25lIG9mIHRoZW4gaXMgTmFOCisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG9wMkxlc3MgPSBtX2ppdC5icmFuY2hEb3VibGUo
b3AgPT0gQXJpdGhNaW4gPyBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlR3JlYXRlclRoYW4gOiBNYWNy
b0Fzc2VtYmxlcjo6RG91YmxlTGVzc1RoYW4sIG9wMS5mcHIoKSwgb3AyLmZwcigpKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIFVub3JkZXJlZCBjYXNlLiBXZSBkb24ndCBrbm93IHdoaWNoIG9mIG9w
MSwgb3AyIGlzIE5hTi4gTWFudWZhY3R1cmUgTmFOIGJ5IGFkZGluZyAKKyAgICAgICAgLy8gb3Ax
ICsgb3AyIGFuZCBwdXR0aW5nIGl0IGludG8gcmVzdWx0LgorICAgICAgICBtX2ppdC5hZGREb3Vi
bGUob3AxLmZwcigpLCBvcDIuZnByKCksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgIGRvbmUuYXBw
ZW5kKG1faml0Lmp1bXAoKSk7CisgICAgICAgIAorICAgICAgICBvcDJMZXNzLmxpbmsoJm1faml0
KTsKKyAgICAgICAgbV9qaXQubW92ZURvdWJsZShvcDIuZnByKCksIHJlc3VsdC5mcHIoKSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAob3AxLmZwcigpICE9IHJlc3VsdC5mcHIoKSkgeworICAgICAg
ICAgICAgZG9uZS5hcHBlbmQobV9qaXQuanVtcCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgb3AxTGVzcy5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlRG91YmxlKG9w
MS5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBvcDFM
ZXNzLmxpbmsoJm1faml0KTsKKyAgICAgICAgCisgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwor
ICAgICAgICAKKyAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21waWxlSW5k
ZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAorICAgIGNhc2UgQXJpdGhTcXJ0
OiB7CisgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CisgICAgICAgIAor
ICAgICAgICBtX2ppdC5zcXJ0RG91YmxlKG9wMS5mcHIoKSwgcmVzdWx0LmZwcigpKTsKKyAgICAg
ICAgCisgICAgICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG1fY29tcGlsZUluZGV4KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgY2FzZSBMb2dpY2FsTm90OiB7CiAgICAgICAg
IGlmIChpc0tub3duQm9vbGVhbihub2RlLmNoaWxkMSgpKSkgewpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDk1Mzg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3ODMsNyArMzc4
MywxNCBAQCBOYXRpdmVFeGVjdXRhYmxlKiBKSVRUaHVua3M6Omhvc3RGdW5jdGlvCiB7CiAgICAg
c3RkOjpwYWlyPEhvc3RGdW5jdGlvblN0dWJNYXA6Oml0ZXJhdG9yLCBib29sPiBlbnRyeSA9IG1f
aG9zdEZ1bmN0aW9uU3R1Yk1hcC0+YWRkKGZ1bmN0aW9uLCBXZWFrPE5hdGl2ZUV4ZWN1dGFibGU+
KCkpOwogICAgIGlmICghKmVudHJ5LmZpcnN0LT5zZWNvbmQpIHsKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGNvZGUgPSBnbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSA/IGdlbmVyYXRvcihn
bG9iYWxEYXRhKSA6IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOworICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgY29kZTsKKyAgICAgICAgaWYgKGdlbmVyYXRvcikgeworICAgICAgICAgICAg
aWYgKGdsb2JhbERhdGEtPmNhblVzZUpJVCgpKQorICAgICAgICAgICAgICAgIGNvZGUgPSBnZW5l
cmF0b3IoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY29k
ZSA9IE1hY3JvQXNzZW1ibGVyQ29kZVJlZigpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IGNvZGUgPSBKSVQ6OmNvbXBpbGVDVElOYXRpdmVDYWxsKGdsb2JhbERhdGEsIGZ1bmN0aW9uKTsK
ICAgICAgICAgZW50cnkuZmlyc3QtPnNlY29uZC5zZXQoKmdsb2JhbERhdGEsIE5hdGl2ZUV4ZWN1
dGFibGU6OmNyZWF0ZSgqZ2xvYmFsRGF0YSwgY29kZSwgZnVuY3Rpb24sIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGN0aU5hdGl2ZUNvbnN0cnVjdCgpKSwg
Y2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IsIGludHJpbnNpYykpOwogICAgIH0KICAgICBy
ZXR1cm4gZW50cnkuZmlyc3QtPnNlY29uZC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTG9va3VwLmNwcAkocmV2aXNpb24gOTUzODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Mb29rdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3
IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiAKICAgICAgICAgSlNG
dW5jdGlvbiogZnVuY3Rpb247CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKTsKICNpZiBFTkFCTEUoSklUKQotICAgICAgICBpZiAo
ZW50cnktPmdlbmVyYXRvcigpKQorICAgICAgICBpZiAoZW50cnktPmdlbmVyYXRvcigpIHx8IGVu
dHJ5LT5pbnRyaW5zaWMoKSAhPSBERkc6Ok5vSW50cmluc2ljKQogICAgICAgICAgICAgZnVuY3Rp
b24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3Qt
PmZ1bmN0aW9uU3RydWN0dXJlKCksIGVudHJ5LT5mdW5jdGlvbkxlbmd0aCgpLCBwcm9wZXJ0eU5h
bWUsIGV4ZWMtPmdsb2JhbERhdGEoKS5nZXRIb3N0RnVuY3Rpb24oZW50cnktPmZ1bmN0aW9uKCks
IGVudHJ5LT5nZW5lcmF0b3IoKSwgZW50cnktPmludHJpbnNpYygpKSk7CiAgICAgICAgIGVsc2UK
ICNlbmRpZgo=
</data>
<flag name="review"
          id="104558"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>