<?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>150794</bug_id>
          
          <creation_ts>2015-11-02 04:54:47 -0800</creation_ts>
          <short_desc>Fix the ENABLE(B3_JIT) build on Linux</short_desc>
          <delta_ts>2016-01-28 14:11:21 -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>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>150279</blocked>
    
    <blocked>152248</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Csaba Osztrogonác">ossy</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>ossy</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138522</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-02 04:54:47 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138523</commentid>
    <comment_count>1</comment_count>
      <attachid>264574</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-02 04:58:36 -0800</bug_when>
    <thetext>Created attachment 264574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138524</commentid>
    <comment_count>2</comment_count>
      <attachid>264574</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-02 05:17:14 -0800</bug_when>
    <thetext>Comment on attachment 264574
Patch

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

&gt; Source/JavaScriptCore/b3/B3IndexSet.h:89
&gt;              iterator&amp; operator++()
&gt;              {
&gt; -                m_iter++;
&gt; +                ++m_iter;
&gt;                  return *this;
&gt;              }

The build failure which this change fixes:

../../Source/JavaScriptCore/b3/B3IndexSet.h: In member function ‘JSC::B3::IndexSet&lt;T&gt;::Iterable&lt;CollectionType&gt;::iterator&amp; JSC::B3::IndexSet&lt;T&gt;::Iterable&lt;CollectionType&gt;::iterator::operator++()’:
../../Source/JavaScriptCore/b3/B3IndexSet.h:87:23: error: no ‘operator++(int)’ declared for postfix ‘++’ [-fpermissive]
                 m_iter++;
                       ^
I&apos;m wondering how does it build on Apple Mac, because there isn&apos;t postfix operator++ in wtf/BitVector.h : BitVector::SetBitsIterable::iterator.
Additionally using postfix operator++ isn&apos;t necessary here, since we don&apos;t use the previous value of m_iter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138526</commentid>
    <comment_count>3</comment_count>
      <attachid>264574</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-02 05:22:11 -0800</bug_when>
    <thetext>Comment on attachment 264574
Patch

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

&gt; Source/JavaScriptCore/b3/B3HeapRange.h:31
&gt; +#include &lt;limits.h&gt;

because we uses UINT_MAX in this file:
../../Source/JavaScriptCore/b3/B3HeapRange.h: In static member function &apos;static JSC::B3::HeapRange JSC::B3::HeapRange::top()&apos;:
../../Source/JavaScriptCore/b3/B3HeapRange.h:62:29: error: &apos;UINT_MAX&apos; was not declared in this scope

&gt; Source/JavaScriptCore/b3/air/AirSpecial.cpp:31
&gt; +#include &lt;limits.h&gt;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138527</commentid>
    <comment_count>4</comment_count>
      <attachid>264574</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-02 05:26:57 -0800</bug_when>
    <thetext>Comment on attachment 264574
Patch

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

&gt; Source/JavaScriptCore/b3/B3Type.h:73
&gt; +    RELEASE_ASSERT_NOT_REACHED();
&gt; +    return 0;
&gt;  }

The build failure which this change fixes:

../../Source/JavaScriptCore/b3/B3Type.h: In function &apos;size_t JSC::B3::sizeofType(JSC::B3::Type)&apos;:
../../Source/JavaScriptCore/b3/B3Type.h:71:1: error: control reaches end of non-void function [-Werror=return-type]
cc1plus: all warnings being treated as errors

Type isn&apos;t strongly typed enum, so we have to add this unreachable return to make the compiler happy.

&gt; Source/JavaScriptCore/b3/air/AirArg.h:127
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return false;
&gt;      }

ditto

&gt; Source/JavaScriptCore/b3/air/AirArg.h:142
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return false;
&gt;      }

ditto

&gt; Source/JavaScriptCore/b3/air/AirArg.h:477
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return false;
&gt;      }

ditto

&gt; Source/JavaScriptCore/b3/air/AirArg.h:501
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return false;
&gt;      }

ditto

&gt; Source/JavaScriptCore/b3/air/AirArg.h:531
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return false;
&gt;      }

ditto

&gt; Source/JavaScriptCore/b3/air/AirCode.h:76
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return { };
&gt;      }

ditto

&gt; Source/JavaScriptCore/b3/air/AirCode.h:88
&gt; +        RELEASE_ASSERT_NOT_REACHED();
&gt; +        return 0;
&gt;      }

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138928</commentid>
    <comment_count>5</comment_count>
      <attachid>264574</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 07:51:29 -0800</bug_when>
    <thetext>Comment on attachment 264574
Patch

Clearing flags on attachment: 264574

Committed r191952: &lt;http://trac.webkit.org/changeset/191952&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138929</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-03 07:51:33 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138953</commentid>
    <comment_count>7</comment_count>
      <attachid>264574</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 10:05:34 -0800</bug_when>
    <thetext>Comment on attachment 264574
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/air/AirArg.h:127
&gt;&gt;      }
&gt; 
&gt; ditto

Can we please find some other way of doing these kinds of fixes?  These methods are called from hot paths, and on clang, this change causes the compiler to emit substantially more code.  I don&apos;t like it when fixes for Linux unnecessarily slow things down on OSX.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138955</commentid>
    <comment_count>8</comment_count>
      <attachid>264574</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-03 10:15:34 -0800</bug_when>
    <thetext>Comment on attachment 264574
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/b3/air/AirArg.h:127
&gt;&gt;&gt;      }
&gt;&gt; 
&gt;&gt; ditto
&gt; 
&gt; Can we please find some other way of doing these kinds of fixes?  These methods are called from hot paths, and on clang, this change causes the compiler to emit substantially more code.  I don&apos;t like it when fixes for Linux unnecessarily slow things down on OSX.

Sure, I&apos;ll check if we can fix it in a different way.

I agree that the code size can be a little bit bigger, but unreachable code can&apos;t slow down anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138956</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-03 10:21:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 264574 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264574&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/b3/air/AirArg.h:127
&gt; &gt;&gt;&gt;      }
&gt; &gt;&gt; 
&gt; &gt;&gt; ditto
&gt; &gt; 
&gt; &gt; Can we please find some other way of doing these kinds of fixes?  These methods are called from hot paths, and on clang, this change causes the compiler to emit substantially more code.  I don&apos;t like it when fixes for Linux unnecessarily slow things down on OSX.
&gt; 
&gt; Sure, I&apos;ll check if we can fix it in a different way.
&gt; 
&gt; I agree that the code size can be a little bit bigger, but unreachable code
&gt; can&apos;t slow down anything.

False.

I just wrote this program, and compiled it with clang -O3.

#include &lt;stdlib.h&gt;

int foo(int x)
{
    switch (x) {
    case 42:
        return 23;
    case 85:
        return 12;
    }
}

int bar(int x)
{
    switch (x) {
    case 42:
        return 23;
    case 85:
        return 12;
    }
    return 65;
}

int baz(int x)
{
    switch (x) {
    case 42:
        return 23;
    case 85:
        return 12;
    }
    abort();
    return 65;
}

The output is:

[pizlo@shakezilla OpenSource] otool -tv test.o
test.o:
(__TEXT,__text) section
_foo:
0000000000000000	pushq	%rbp
0000000000000001	movq	%rsp, %rbp
0000000000000004	cmpl	$0x55, %edi
0000000000000007	movl	$0xc, %ecx
000000000000000c	movl	$0x17, %eax
0000000000000011	cmovel	%ecx, %eax
0000000000000014	popq	%rbp
0000000000000015	retq
0000000000000016	nopw	%cs:(%rax,%rax)
_bar:
0000000000000020	pushq	%rbp
0000000000000021	movq	%rsp, %rbp
0000000000000024	movl	$0x17, %eax
0000000000000029	cmpl	$0x2a, %edi
000000000000002c	je	0x3f
000000000000002e	cmpl	$0x55, %edi
0000000000000031	jne	0x3a
0000000000000033	movl	$0xc, %eax
0000000000000038	popq	%rbp
0000000000000039	retq
000000000000003a	movl	$0x41, %eax
000000000000003f	popq	%rbp
0000000000000040	retq
0000000000000041	nopw	%cs:(%rax,%rax)
_baz:
0000000000000050	pushq	%rbp
0000000000000051	movq	%rsp, %rbp
0000000000000054	movl	$0x17, %eax
0000000000000059	cmpl	$0x2a, %edi
000000000000005c	je	0x68
000000000000005e	cmpl	$0x55, %edi
0000000000000061	jne	0x6a
0000000000000063	movl	$0xc, %eax
0000000000000068	popq	%rbp
0000000000000069	retq
000000000000006a	callq	0x6f

As you can see, foo is compiled into a super-efficient conditional move.  Bar and baz are both compiled into a pair of branches - you need to execute one branch to get to the first case, and two branches to get to the second case.  Even one branch is worse than a conditional move, but two branches are a lot worse.

It would actually be best if you reverted your change.  There is no value to having B3 ported to Linux right now, and there is definitely harm to introducing any overheads, even hypothetical ones.  We are working hard to turn B3 into a hotrod that generates code super quickly, and we&apos;d rather not have any changes go in that have uncertain performance implications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138959</commentid>
    <comment_count>10</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-03 10:22:55 -0800</bug_when>
    <thetext>Filed new bug report for follow up: bug150842 . I&apos;ll investigate it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138965</commentid>
    <comment_count>11</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-11-03 10:34:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; As you can see, foo is compiled into a super-efficient conditional move. 
&gt; Bar and baz are both compiled into a pair of branches - you need to execute
&gt; one branch to get to the first case, and two branches to get to the second
&gt; case.  Even one branch is worse than a conditional move, but two branches
&gt; are a lot worse.
 
&gt; It would actually be best if you reverted your change.  There is no value to
&gt; having B3 ported to Linux right now, and there is definitely harm to
&gt; introducing any overheads, even hypothetical ones.  We are working hard to
&gt; turn B3 into a hotrod that generates code super quickly, and we&apos;d rather not
&gt; have any changes go in that have uncertain performance implications.

OK, you convinced me, I reverted unreachable returns
in http://trac.webkit.org/changeset/191957 .

Will find a better fix bug150842 which doesn&apos;t generate any code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159862</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 13:45:35 -0800</bug_when>
    <thetext>Seeing https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62272, I noticed that we have very very easy (and no performance regression!!!) fix for this issue.
Just replacing `addEdge` in the nested lambda to `this-&gt;addEdge`.

Filip, how about this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159863</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-01-28 13:48:19 -0800</bug_when>
    <thetext>Ah, oops, I miscommented.
https://bugs.webkit.org/show_bug.cgi?id=151624 is correct issue for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159872</commentid>
    <comment_count>14</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-01-28 14:11:21 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; Seeing https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62272, I noticed that we
&gt; have very very easy (and no performance regression!!!) fix for this issue.
&gt; Just replacing `addEdge` in the nested lambda to `this-&gt;addEdge`.
&gt; 
&gt; Filip, how about this?

Seems sensible!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264574</attachid>
            <date>2015-11-02 04:58:36 -0800</date>
            <delta_ts>2015-11-03 07:51:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150794-20151102135740.patch</filename>
            <type>text/plain</type>
            <size>6607</size>
            <attacher name="Csaba Osztrogonác">ossy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxODg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MjdiNzE5MmRkNTU0NjY1MDZlMWI0YTkzNTU2ZDhlMTc1MGYxOWU1Li4wNGRiN2IzMzRiNDlkOWVm
NGIyYTYxOTNjZmQ3MDAyZTBmY2E5MzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0xMS0wMiAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEZpeCB0aGUgRU5BQkxFKEIzX0pJVCkgYnVpbGQgb24gTGludXgKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDc5NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogYjMvQjNIZWFwUmFuZ2UuaDoKKyAgICAgICAgKiBiMy9CM0luZGV4
U2V0Lmg6CisgICAgICAgIChKU0M6OkIzOjpJbmRleFNldDo6SXRlcmFibGU6Oml0ZXJhdG9yOjpv
cGVyYXRvcisrKToKKyAgICAgICAgKiBiMy9CM1R5cGUuaDoKKyAgICAgICAgKEpTQzo6QjM6OnNp
emVvZlR5cGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuY3BwOgorICAgICAgICAoSlNDOjpC
Mzo6QWlyOjpBcmc6OmR1bXApOgorICAgICAgICAqIGIzL2Fpci9BaXJBcmcuaDoKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6QXJnOjppc1VzZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6
aXNEZWYpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzR1ApOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpBcmc6OmlzRlApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpBcmc6OmlzVHlw
ZSk6CisgICAgICAgICogYjMvYWlyL0FpckNvZGUuaDoKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
Q29kZTo6bmV3VG1wKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6Q29kZTo6bnVtVG1wcyk6Cisg
ICAgICAgICogYjMvYWlyL0FpclNwZWNpYWwuY3BwOgorCiAyMDE1LTExLTAxICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFUzZdIFN1cHBvcnQgR2Vu
ZXJhdG9yIFN5bnRheApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGRmMzcz
M2QxOGRmNDNmNTg2ZGRkNGI0M2Y4NGRhMzIwNDIzZTgxNDEuLjY0MzBlZWU2MDBlNWJkZWQ3ZGM0
ODZkYjZjYWI1OWJjNGYwODdhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTczLDYgKzczLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBiMy9haXIv
QWlyQmFzaWNCbG9jay5jcHAKICAgICBiMy9haXIvQWlyQ0NhbGxTcGVjaWFsLmNwcAogICAgIGIz
L2Fpci9BaXJDb2RlLmNwcAorICAgIGIzL2Fpci9BaXJFbGltaW5hdGVEZWFkQ29kZS5jcHAKICAg
ICBiMy9haXIvQWlyR2VuZXJhdGUuY3BwCiAgICAgYjMvYWlyL0FpckdlbmVyYXRlZC5jcHAKICAg
ICBiMy9haXIvQWlySGFuZGxlQ2FsbGVlU2F2ZXMuY3BwCkBAIC04MCw2ICs4MSw3IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgYjMvYWlyL0Fpckluc3QuY3BwCiAgICAgYjMvYWly
L0FpclBoYXNlU2NvcGUuY3BwCiAgICAgYjMvYWlyL0FpclJlZ2lzdGVyUHJpb3JpdHkuY3BwCisg
ICAgYjMvYWlyL0FpclJlcG9ydFVzZWRSZWdpc3RlcnMuY3BwCiAgICAgYjMvYWlyL0FpclNwZWNp
YWwuY3BwCiAgICAgYjMvYWlyL0FpclNwaWxsRXZlcnl0aGluZy5jcHAKICAgICBiMy9haXIvQWly
U3RhY2tTbG90LmNwcApAQCAtMTE2LDYgKzExOCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgYjMvQjNTdGFja1Nsb3RWYWx1ZS5jcHAKICAgICBiMy9CM1N3aXRjaENhc2UuY3Bw
CiAgICAgYjMvQjNTd2l0Y2hWYWx1ZS5jcHAKKyAgICBiMy9CM1RpbWluZ1Njb3BlLmNwcAogICAg
IGIzL0IzVHlwZS5jcHAKICAgICBiMy9CM1Vwc2lsb25WYWx1ZS5jcHAKICAgICBiMy9CM1VzZUNv
dW50cy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0hlYXBSYW5n
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdlLmgKaW5kZXggMTAwMWVj
YzU5YzMxYTlhMTMxNTM2MDA2NzQ0NTk2MTUzOWQxMmNiMi4uNTFlZjE1ZGFmNjQ5ZWRkY2QyZDJl
NDc1NGE0NzQwYzI1OTYzOTFiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzSGVhcFJhbmdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSGVhcFJhbmdl
LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShCM19KSVQpCiAKKyNpbmNsdWRlIDxs
aW1pdHMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9Qcmlu
dFN0cmVhbS5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbmRl
eFNldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5kZXhTZXQuaAppbmRleCA0MWQ3
MWQ4ZWU2MzExMjA2YmNkNzgwNGY4ODJiMzdhZTFkMGZkZGIzLi43NzJjNTExNzY5NTljNzA3NjUw
NDk2YjQzZDI1NjMxZDY1NWEyZmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNJbmRleFNldC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luZGV4U2V0
LmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogCiAgICAgICAgICAgICBpdGVyYXRvciYgb3Bl
cmF0b3IrKygpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9pdGVyKys7CisgICAg
ICAgICAgICAgICAgKyttX2l0ZXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwogICAg
ICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKaW5kZXggY2Y0YTU2MDU1NzU1
OGJmNzU3ZTRjYzJjZDZkNWJmNzg0YzdhODE2My4uYTkxNDYwMTUzYzJmNTdiNThlMDg3YTUzZGM1
YmUyYmU3MGRmMTgyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlw
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuaApAQCAtNjgsNiArNjgs
OCBAQCBpbmxpbmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQogICAgIGNhc2UgRG91Ymxl
OgogICAgICAgICByZXR1cm4gODsKICAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gMDsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5jcHAKaW5kZXggNThhMzA3ZGIzNmIzNGJjZDc5
MDIyZTdiZmY1NTc5ZTViM2VhZDU5OC4uN2FlODdmMzMxNmNlYzE1ZDkzZmQ0NWY4Y2Y0Yzc1ODVj
NDRiYWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmNwcApAQCAtNDYs
NyArNDYsNyBAQCB2b2lkIEFyZzo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogICAgICAg
ICBvdXQucHJpbnQoIiQiLCBtX29mZnNldCk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIElt
bTY0OgotICAgICAgICBvdXQucHJpbnRmKCIkMHglbGx4IiwgbV9vZmZzZXQpOworICAgICAgICBv
dXQucHJpbnRmKCIkMHglbGx4Iiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nIHVuc2lnbmVkPihtX29m
ZnNldCkpOwogICAgICAgICByZXR1cm47CiAgICAgY2FzZSBBZGRyOgogICAgICAgICBpZiAob2Zm
c2V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCA2YjlmY2E1MTA5
Njk0ZWViN2Y5MjI0ODM4MDJhNTJjOTYzNGExZGFiLi45OWM0NzNiNjRjNGFkNmVhM2ZhMGVhNGE4
ZGNlMjQ1MmQ3MDZlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWly
L0FpckFyZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKQEAg
LTEyMiw2ICsxMjIsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVXNlQWRkcjoKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gUmV0dXJu
cyB0cnVlIGlmIHRoZSBSb2xlIGltcGxpZXMgdGhhdCB0aGUgSW5zdCB3aWxsIERlZiB0aGUgQXJn
LgpAQCAtMTM1LDYgKzEzNyw4IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVc2VEZWY6CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgc3RhdGlj
IFR5cGUgdHlwZUZvckIzVHlwZShCMzo6VHlwZSB0eXBlKQpAQCAtNDY4LDYgKzQ3Miw4IEBAIHB1
YmxpYzoKICAgICAgICAgY2FzZSBJbnZhbGlkOgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyBUZWxscyB1cyBpZiB0aGlzIEFyZyBjYW4g
YmUgdXNlZCBpbiBhIHBvc2l0aW9uIHRoYXQgcmVxdWlyZXMgYSBGUCB2YWx1ZS4KQEAgLTQ5MCw2
ICs0OTYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgVG1wOgogICAgICAgICAgICAgcmV0dXJu
IGlzRlBUbXAoKTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYm9vbCBoYXNUeXBlKCkg
Y29uc3QKQEAgLTUxOCw2ICs1MjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgRlA6CiAgICAg
ICAgICAgICByZXR1cm4gaXNGUCgpOwogICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBib29s
IGlzR1BSKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIv
QWlyQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJDb2RlLmgKaW5kZXgg
ZTc3NzRlZWQzODc3ODE4MGNkMDlhMzEzYjA0MDQxNmQwNjE5ZmFmMS4uOTZlMjg2YmVjNTBjZmU1
MTIzZDAwNWMzN2ZiOWQ4ZWUzMjBkYzZlNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJDb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9B
aXJDb2RlLmgKQEAgLTcxLDYgKzcxLDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEFyZzo6RlA6
CiAgICAgICAgICAgICByZXR1cm4gVG1wOjpmcFRtcEZvckluZGV4KG1fbnVtRlBUbXBzKyspOwog
ICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCiAgICAgdW5zaWduZWQgbnVtVG1wcyhBcmc6OlR5cGUgdHlw
ZSkKQEAgLTgxLDYgKzgzLDggQEAgcHVibGljOgogICAgICAgICBjYXNlIEFyZzo6RlA6CiAgICAg
ICAgICAgICByZXR1cm4gbV9udW1GUFRtcHM7CiAgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgdW5z
aWduZWQgY2FsbEFyZ0FyZWFTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsQXJnQXJlYVNpemU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyU3BlY2lhbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpclNwZWNpYWwuY3BwCmluZGV4IDYy
NzA3NmJlNGQwYjEzMjQ3ODFiNzJlMWNjYzQxYjBlNzFhYWRiZjYuLjM5OTVkMjYwNjBlMGExMWUz
ZDhkYWExZmU4OTE2OWFkOWFlODQyNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9haXIvQWlyU3BlY2lhbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJTcGVjaWFsLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKEIzX0pJVCkK
IAorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsgbmFtZXNwYWNlIEFpciB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>