<?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>195901</bug_id>
          
          <creation_ts>2019-03-18 11:58:38 -0700</creation_ts>
          <short_desc>[JSC] Generator should not create JSLexicalEnvironment if it is not necessary</short_desc>
          <delta_ts>2019-03-18 19:22:16 -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>WebKit Nightly Build</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1517828</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 11:58:38 -0700</bug_when>
    <thetext>When looking into the cells allocated in JetStream2 Basic, I found that so many empty JSLexicalEnvironments are allocated.
I think this is because the current implementation of ES6 Generators always allocates JSLexicalEnvironments for their suspend and resume.
However it seems that fair amount of generators do not load and store registers, and we are allocating empty JSLexicalEnvironments.
Currently, still I&apos;m investigating, but if it is true, we should emit op_create_lexical_environment only when the generatorification says it is required.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517829</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 11:59:12 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #0)
&gt; When looking into the cells allocated in JetStream2 Basic, I found that so
&gt; many empty JSLexicalEnvironments are allocated.
&gt; I think this is because the current implementation of ES6 Generators always
&gt; allocates JSLexicalEnvironments for their suspend and resume.
&gt; However it seems that fair amount of generators do not load and store
&gt; registers, and we are allocating empty JSLexicalEnvironments.
&gt; Currently, still I&apos;m investigating, but if it is true, we should emit
&gt; op_create_lexical_environment only when the generatorification says it is
&gt; required.

In addition to memory footprint improvement, it potentially brings performance improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517832</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 12:04:05 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #1)
&gt; (In reply to Yusuke Suzuki from comment #0)
&gt; &gt; When looking into the cells allocated in JetStream2 Basic, I found that so
&gt; &gt; many empty JSLexicalEnvironments are allocated.
&gt; &gt; I think this is because the current implementation of ES6 Generators always
&gt; &gt; allocates JSLexicalEnvironments for their suspend and resume.
&gt; &gt; However it seems that fair amount of generators do not load and store
&gt; &gt; registers, and we are allocating empty JSLexicalEnvironments.=

Hmm, it seems this is not correct. But it seems that it is correct that Basic allocates so many empty JSLexicalEnvironments. I&apos;m investigating what is going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517836</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 12:08:06 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; (In reply to Yusuke Suzuki from comment #1)
&gt; &gt; (In reply to Yusuke Suzuki from comment #0)
&gt; &gt; &gt; When looking into the cells allocated in JetStream2 Basic, I found that so
&gt; &gt; &gt; many empty JSLexicalEnvironments are allocated.
&gt; &gt; &gt; I think this is because the current implementation of ES6 Generators always
&gt; &gt; &gt; allocates JSLexicalEnvironments for their suspend and resume.
&gt; &gt; &gt; However it seems that fair amount of generators do not load and store
&gt; &gt; &gt; registers, and we are allocating empty JSLexicalEnvironments.=
&gt; 
&gt; Hmm, it seems this is not correct. But it seems that it is correct that
&gt; Basic allocates so many empty JSLexicalEnvironments. I&apos;m investigating what
&gt; is going on.

No, it was correct. We are allocating empty JSLexicalEnvironment due to empty generator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518039</commentid>
    <comment_count>4</comment_count>
      <attachid>365095</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 18:00:02 -0700</bug_when>
    <thetext>Created attachment 365095
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518045</commentid>
    <comment_count>5</comment_count>
      <attachid>365095</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-18 18:22:24 -0700</bug_when>
    <thetext>Comment on attachment 365095
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        are allocated in RAMification Basic test.

&quot;RAMification Basic&quot; =&gt; &quot;RAMification&apos;s Basic&quot;

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:286
&gt; +        rewriter.insertFragmentAfter(instruction, [&amp;](BytecodeRewriter::Fragment&amp; fragment) {

style nit: I think space between &quot;]&quot; and &quot;(&quot;

&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:288
&gt; +                // Generator frame is not necessary. Let&apos;s remove it if we can.

Let&apos;s rename this comment to say something like:
&quot;This will cause us to put jsUndefined() into the generator frame&apos;s scope value.&quot;

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:160
&gt; +    USES(OpCreateGeneratorFrameEnvironment, scope)

Do we not need to use initialValue/SymbolTable here?

&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:368
&gt; +    USES(OpCreateGeneratorFrameEnvironment, dst)

This needs to be DEFS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518052</commentid>
    <comment_count>6</comment_count>
      <attachid>365095</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 18:35:44 -0700</bug_when>
    <thetext>Comment on attachment 365095
Patch

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

Thanks!

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        are allocated in RAMification Basic test.
&gt; 
&gt; &quot;RAMification Basic&quot; =&gt; &quot;RAMification&apos;s Basic&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:286
&gt;&gt; +        rewriter.insertFragmentAfter(instruction, [&amp;](BytecodeRewriter::Fragment&amp; fragment) {
&gt; 
&gt; style nit: I think space between &quot;]&quot; and &quot;(&quot;

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeGeneratorification.cpp:288
&gt;&gt; +                // Generator frame is not necessary. Let&apos;s remove it if we can.
&gt; 
&gt; Let&apos;s rename this comment to say something like:
&gt; &quot;This will cause us to put jsUndefined() into the generator frame&apos;s scope value.&quot;

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:160
&gt;&gt; +    USES(OpCreateGeneratorFrameEnvironment, scope)
&gt; 
&gt; Do we not need to use initialValue/SymbolTable here?

Since op_create_lexical_environment / op_create_generator_frame_environment require that symbolTable / initialValue are constant, it will not affect on the correctness. But we can add them anyway, added.

&gt;&gt; Source/JavaScriptCore/bytecode/BytecodeUseDef.h:368
&gt;&gt; +    USES(OpCreateGeneratorFrameEnvironment, dst)
&gt; 
&gt; This needs to be DEFS

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518092</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-18 19:21:18 -0700</bug_when>
    <thetext>Committed r243127: &lt;https://trac.webkit.org/changeset/243127&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518093</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-18 19:22:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/49004255&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365095</attachid>
            <date>2019-03-18 18:00:02 -0700</date>
            <delta_ts>2019-03-18 18:22:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195901-20190318180000.patch</filename>
            <type>text/plain</type>
            <size>12018</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQzMDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MDU5Mjg5MjgwNmI3MTgzNjJlZDIxNmM1YzkxMGViNzY5MzZiOGI1Li4yYzgwMjFmMmM5YTRlMTlk
NjNhYTUxYWRkN2MxMWExYTNmZWQ2NzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAxOS0wMy0xOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEdlbmVyYXRvciBzaG91bGQgbm90IGNyZWF0ZSBKU0xleGljYWxF
bnZpcm9ubWVudCBpZiBpdCBpcyBub3QgbmVjZXNzYXJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU5MDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJdCBpcyBub3QgcmFyZSB0aGF0IGdlbmVyYXRvcnMg
ZG8gbm90IG5lZWQgdG8gaGF2ZSBhbnkgcmVnaXN0ZXJzIHRvIGJlIHN1c3BlbmRlZCBhbmQgcmVz
dW1lZC4KKyAgICAgICAgU2luY2UgY3VycmVudGx5IHdlIGFsd2F5cyBlbWl0IG9wX2NyZWF0ZV9s
ZXhpY2FsX2Vudmlyb25tZW50IGZvciBnZW5lcmF0b3IgY29kZSwgd2Ugc29tZXRpbWVzCisgICAg
ICAgIGNyZWF0ZSBlbXB0eSBKU0xleGljYWxFbnZpcm9ubWVudCB3aGlsZSBpdCBpcyBub3QgcmVx
dWlyZWQuIFdlIGNhbiBzZWUgdGhhdCBhIGxvdCBvZiBlbXB0eSBKU0xleGljYWxFbnZpcm9ubWVu
dAorICAgICAgICBhcmUgYWxsb2NhdGVkIGluIFJBTWlmaWNhdGlvbiBCYXNpYyB0ZXN0LgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGlzIHVubmVjZXNzYXJ5IGFsbG9jYXRpb24uIFdl
IGludHJvZHVjZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmlyb25tZW50LCB3aGljaCBp
cworICAgICAgICBhIG1hcmtlciwgc2ltaWxhciB0byBvcF95aWVsZC4gQW5kIGdlbmVyYXRvcmlm
aWNhdGlvbiBwaGFzZSBkZWNpZGVzIHdoZXRoZXIgd2Ugc2hvdWxkIGFjdHVhbGx5IGVtaXQgb3Bf
Y3JlYXRlX2xleGljYWxfZW52aXJvbm1lbnQsCisgICAgICAgIGJhc2VkIG9uIHRoZSByZXN1bHQg
b2YgdGhlIGFuYWx5c2lzIGluIGdlbmVyYXRvcmlmaWNhdGlvbi4gVGhpcyBjYW4gcmVtb3ZlIHVu
bmVjZXNzYXJ5IEpTTGV4aWNhbEVudmlyb25tZW50IGFsbG9jYXRpb25zLgorCisgICAgICAgIFdl
IHJ1biBSQU1pZmljYXRpb24gaW4gNiB0aW1lcywgdXNlIGF2ZXJhZ2Ugb2YgdGhlbS4KKyAgICAg
ICAgSW4gUkFNaWZpY2F0aW9uLCBCYXNpYyBpbiBKSVQgbW9kZSBzaG93cyAxLjQlIGltcHJvdmVt
ZW50LgorICAgICAgICBUb1QKKyAgICAgICAgICAgIEN1cnJlbnQ6IDU1MDc2ODY0LjAwLCBQZWFr
OiA1NTA4MDk2MC4wMAorICAgICAgICBQYXRjaGVkCisgICAgICAgICAgICBDdXJyZW50OiA1NDMy
NTkzMC42NywgUGVhazogNTQzMjkzNDQuMDAKKworICAgICAgICBJbiBSQU1pZmljYXRpb24sIEJh
c2ljIGluIG5vbi1KSVQgbW9kZSBzaG93cyA1LjAlIGltcHJvdmVtZW50LgorICAgICAgICBUb1QK
KyAgICAgICAgICAgIEN1cnJlbnQ6IDEyNDg1MjkwLjY3LCBQZWFrOiAxMjQ4NTI5MC42NworICAg
ICAgICBQYXRjaGVkCisgICAgICAgICAgICBDdXJyZW50OiAxMTg5NDEwMS4zMywgUGVhazogMTE4
OTQxMDEuMzMKKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZpY2F0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb246OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb246OmdlbmVyYXRvckZyYW1lRGF0YSBjb25zdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yaWZpY2F0aW9uOjpydW4pOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlz
dC5yYjoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZVVzZURlZi5oOgorICAgICAgICAoSlND
Ojpjb21wdXRlVXNlc0ZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Y29tcHV0ZURl
ZnNGb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2Vu
ZXJhdG9yKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpjYXBhYmlsaXR5TGV2ZWwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtOgorCiAyMDE5LTAzLTE4ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CiAKICAgICAgICAgW0pTQ10gQWRkIC0tZGVzdHJveS12bSBzaGVsbCBvcHRpb24gYW5kIGR1
bXBIZWFwU3RhdGlzdGljc0F0Vk1EZXN0cnVjdGlvbiBvcHRpb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRp
b24uY3BwCmluZGV4IDJiZTNjM2M3OWRmZTMxOTc3MmQ4ODI3ODAxNTIwNzk3OTIxNWU4ZGIuLjA3
NzEwNTQyZWU2NGNhMmMxMGY0YjRkMmNmOTIyNTJlZDFhZThmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUdlbmVyYXRvcmlmaWNhdGlvbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlR2VuZXJhdG9yaWZp
Y2F0aW9uLmNwcApAQCAtNTUsNiArNTUsMTQgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmlj
YXRpb24gewogcHVibGljOgogICAgIHR5cGVkZWYgVmVjdG9yPFlpZWxkRGF0YT4gWWllbGRzOwog
CisgICAgc3RydWN0IEdlbmVyYXRvckZyYW1lRGF0YSB7CisgICAgICAgIEluc3RydWN0aW9uU3Ry
ZWFtOjpPZmZzZXQgbV9wb2ludDsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1fZHN0OworICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9zY29wZTsKKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG1f
c3ltYm9sVGFibGU7CisgICAgICAgIFZpcnR1YWxSZWdpc3RlciBtX2luaXRpYWxWYWx1ZTsKKyAg
ICB9OworCiAgICAgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24oQnl0ZWNvZGVHZW5lcmF0b3Im
IGJ5dGVjb2RlR2VuZXJhdG9yLCBVbmxpbmtlZENvZGVCbG9jayogY29kZUJsb2NrLCBJbnN0cnVj
dGlvblN0cmVhbVdyaXRlciYgaW5zdHJ1Y3Rpb25zLCBTeW1ib2xUYWJsZSogZ2VuZXJhdG9yRnJh
bWVTeW1ib2xUYWJsZSwgaW50IGdlbmVyYXRvckZyYW1lU3ltYm9sVGFibGVJbmRleCkKICAgICAg
ICAgOiBtX2J5dGVjb2RlR2VuZXJhdG9yKGJ5dGVjb2RlR2VuZXJhdG9yKQogICAgICAgICAsIG1f
Y29kZUJsb2NrKGNvZGVCbG9jaykKQEAgLTgzLDYgKzkxLDE4IEBAIGNsYXNzIEJ5dGVjb2RlR2Vu
ZXJhdG9yaWZpY2F0aW9uIHsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogCisgICAgICAgICAgICAgICAgY2FzZSBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1l
X2Vudmlyb25tZW50OiB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0
cnVjdGlvbi0+YXM8T3BDcmVhdGVHZW5lcmF0b3JGcmFtZUVudmlyb25tZW50PigpOworICAgICAg
ICAgICAgICAgICAgICBHZW5lcmF0b3JGcmFtZURhdGEgZGF0YTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tX3BvaW50ID0gaW5zdHJ1Y3Rpb24ub2Zmc2V0KCk7CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEubV9kc3QgPSBieXRlY29kZS5tX2RzdDsKKyAgICAgICAgICAgICAgICAgICAgZGF0
YS5tX3Njb3BlID0gYnl0ZWNvZGUubV9zY29wZTsKKyAgICAgICAgICAgICAgICAgICAgZGF0YS5t
X3N5bWJvbFRhYmxlID0gYnl0ZWNvZGUubV9zeW1ib2xUYWJsZTsKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YS5tX2luaXRpYWxWYWx1ZSA9IGJ5dGVjb2RlLm1faW5pdGlhbFZhbHVlOworICAgICAg
ICAgICAgICAgICAgICBtX2dlbmVyYXRvckZyYW1lRGF0YSA9IFdURk1vdmUoZGF0YSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KQEAgLTExNSw2ICsxMzUsMTEgQEAgY2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24g
ewogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnMuYXQobV9lbnRlclBvaW50KTsKICAgICB9
CiAKKyAgICBPcHRpb25hbDxHZW5lcmF0b3JGcmFtZURhdGE+IGdlbmVyYXRvckZyYW1lRGF0YSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9nZW5lcmF0b3JGcmFtZURhdGE7CisgICAg
fQorCiAgICAgY29uc3QgSW5zdHJ1Y3Rpb25TdHJlYW0mIGluc3RydWN0aW9ucygpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9pbnN0cnVjdGlvbnM7CkBAIC0xNTAsNiArMTc1LDcgQEAg
Y2xhc3MgQnl0ZWNvZGVHZW5lcmF0b3JpZmljYXRpb24gewogCiAgICAgQnl0ZWNvZGVHZW5lcmF0
b3ImIG1fYnl0ZWNvZGVHZW5lcmF0b3I7CiAgICAgSW5zdHJ1Y3Rpb25TdHJlYW06Ok9mZnNldCBt
X2VudGVyUG9pbnQ7CisgICAgT3B0aW9uYWw8R2VuZXJhdG9yRnJhbWVEYXRhPiBtX2dlbmVyYXRv
ckZyYW1lRGF0YTsKICAgICBVbmxpbmtlZENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgSW5z
dHJ1Y3Rpb25TdHJlYW1Xcml0ZXImIG1faW5zdHJ1Y3Rpb25zOwogICAgIEJ5dGVjb2RlR3JhcGgg
bV9ncmFwaDsKQEAgLTI1NSw2ICsyODEsMTggQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcmlmaWNh
dGlvbjo6cnVuKCkKICAgICAgICAgcmV3cml0ZXIucmVtb3ZlQnl0ZWNvZGUoaW5zdHJ1Y3Rpb24p
OwogICAgIH0KIAorICAgIGlmIChtX2dlbmVyYXRvckZyYW1lRGF0YSkgeworICAgICAgICBhdXRv
IGluc3RydWN0aW9uID0gbV9pbnN0cnVjdGlvbnMuYXQobV9nZW5lcmF0b3JGcmFtZURhdGEtPm1f
cG9pbnQpOworICAgICAgICByZXdyaXRlci5pbnNlcnRGcmFnbWVudEFmdGVyKGluc3RydWN0aW9u
LCBbJl0oQnl0ZWNvZGVSZXdyaXRlcjo6RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAg
ICBpZiAoIW1fZ2VuZXJhdG9yRnJhbWVTeW1ib2xUYWJsZS0+c2NvcGVTaXplKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBHZW5lcmF0b3IgZnJhbWUgaXMgbm90IG5lY2Vzc2FyeS4gTGV0J3MgcmVt
b3ZlIGl0IGlmIHdlIGNhbi4KKyAgICAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRJbnN0cnVj
dGlvbjxPcE1vdj4obV9nZW5lcmF0b3JGcmFtZURhdGEtPm1fZHN0LCBtX2dlbmVyYXRvckZyYW1l
RGF0YS0+bV9pbml0aWFsVmFsdWUpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgZnJhZ21lbnQuYXBwZW5kSW5zdHJ1Y3Rpb248T3BDcmVhdGVMZXhpY2FsRW52aXJvbm1lbnQ+
KG1fZ2VuZXJhdG9yRnJhbWVEYXRhLT5tX2RzdCwgbV9nZW5lcmF0b3JGcmFtZURhdGEtPm1fc2Nv
cGUsIG1fZ2VuZXJhdG9yRnJhbWVEYXRhLT5tX3N5bWJvbFRhYmxlLCBtX2dlbmVyYXRvckZyYW1l
RGF0YS0+bV9pbml0aWFsVmFsdWUpOworICAgICAgICB9KTsKKyAgICAgICAgcmV3cml0ZXIucmVt
b3ZlQnl0ZWNvZGUoaW5zdHJ1Y3Rpb24pOworICAgIH0KKwogICAgIHJld3JpdGVyLmV4ZWN1dGUo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3Qu
cmIKaW5kZXggMTE1YmQzYjA2NWQ2NTAzMTc3M2NjMWYzMTI2ZDMzZmQ1NTc1NDIzYy4uOGNhMGRh
OWMzMGY1MmMyZTZiMTkwZjM5OWVmNTE0N2MzOTU3MDdkYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC05MjksNiArOTI5LDE0IEBACiAg
ICAgICAgIGluaXRpYWxWYWx1ZTogVmlydHVhbFJlZ2lzdGVyLAogICAgIH0KIAorb3AgOmNyZWF0
ZV9nZW5lcmF0b3JfZnJhbWVfZW52aXJvbm1lbnQsCisgICAgYXJnczogeworICAgICAgICBkc3Q6
IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgc2NvcGU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAg
ICAgc3ltYm9sVGFibGU6IFZpcnR1YWxSZWdpc3RlciwKKyAgICAgICAgaW5pdGlhbFZhbHVlOiBW
aXJ0dWFsUmVnaXN0ZXIsCisgICAgfQorCiBvcCA6Z2V0X3BhcmVudF9zY29wZSwKICAgICBhcmdz
OiB7CiAgICAgICAgIGRzdDogVmlydHVhbFJlZ2lzdGVyLApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlVXNlRGVmLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVVc2VEZWYuaAppbmRleCA2YTllZTUzNTU4ODRmY2Q4Njk1
Mjg5OGY2ZGFiMTQ4ZTIzNzU5ZWNhLi4zYjdiMWI2NTQwNWMxNzE5MmI5YzNmZTBjMjRkYWVkYTA2
YTY2YzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVVc2VEZWYuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVV
c2VEZWYuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIHZvaWQgY29tcHV0ZVVzZXNGb3JCeXRlY29kZU9m
ZnNldChCbG9jayogY29kZUJsb2NrLCBPcGNvZGVJRCBvcGNvZGVJRCwgY29uc3QgSW5zCiAgICAg
VVNFUyhPcE5ld0FzeW5jRnVuY0V4cCwgc2NvcGUpCiAgICAgVVNFUyhPcFRvSW5kZXhTdHJpbmcs
IGluZGV4KQogICAgIFVTRVMoT3BDcmVhdGVMZXhpY2FsRW52aXJvbm1lbnQsIHNjb3BlKQorICAg
IFVTRVMoT3BDcmVhdGVHZW5lcmF0b3JGcmFtZUVudmlyb25tZW50LCBzY29wZSkKICAgICBVU0VT
KE9wUmVzb2x2ZVNjb3BlLCBzY29wZSkKICAgICBVU0VTKE9wUmVzb2x2ZVNjb3BlRm9ySG9pc3Rp
bmdGdW5jRGVjbEluRXZhbCwgc2NvcGUpCiAgICAgVVNFUyhPcEdldEZyb21TY29wZSwgc2NvcGUp
CkBAIC0zNjQsNiArMzY1LDcgQEAgdm9pZCBjb21wdXRlRGVmc0ZvckJ5dGVjb2RlT2Zmc2V0KEJs
b2NrKiBjb2RlQmxvY2ssIE9wY29kZUlEIG9wY29kZUlELCBjb25zdCBJbnMKICAgICBERUZTKE9w
R2V0UGFyZW50U2NvcGUsIGRzdCkKICAgICBERUZTKE9wUHVzaFdpdGhTY29wZSwgZHN0KQogICAg
IERFRlMoT3BDcmVhdGVMZXhpY2FsRW52aXJvbm1lbnQsIGRzdCkKKyAgICBVU0VTKE9wQ3JlYXRl
R2VuZXJhdG9yRnJhbWVFbnZpcm9ubWVudCwgZHN0KQogICAgIERFRlMoT3BSZXNvbHZlU2NvcGUs
IGRzdCkKICAgICBERUZTKE9wUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdGdW5jRGVjbEluRXZhbCwg
ZHN0KQogICAgIERFRlMoT3BTdHJjYXQsIGRzdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggZTI2MzU1
NTQ5MDcyZjljZmNhODAzZmFlNGE2ZmQ1MDY2ZjVmYjdiMi4uNWJmNzVmNzM5OThkYTI5NWRiODA3
ODdiNzFjN2ExZGViMDYyYTA3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTQyMiw5ICs0MjIsNiBA
QCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5v
ZGUqIGZ1bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGlmIChpc0dlbmVyYXRvck9yQXN5bmNGdW5j
dGlvbkJvZHlQYXJzZU1vZGUocGFyc2VNb2RlKSkgewogICAgICAgICAvLyBHZW5lcmF0b3IgYW5k
IEFzeW5jRnVuY3Rpb24gbmV2ZXIgcHJvdmlkZXMgImFyZ3VtZW50cyIuICJhcmd1bWVudHMiIHJl
ZmVyZW5jZSB3aWxsIGJlIHJlc29sdmVkIGluIGFuIHVwcGVyIGdlbmVyYXRvciBmdW5jdGlvbiBz
Y29wZS4KICAgICAgICAgbmVlZHNBcmd1bWVudHMgPSBmYWxzZTsKLQotICAgICAgICAvLyBHZW5l
cmF0b3IgYW5kIEFzeW5jRnVuY3Rpb24gdXNlcyB0aGUgdmFyIHNjb3BlIHRvIHNhdmUgYW5kIHJl
c3VtZSBpdHMgdmFyaWFibGVzLiBTbyB0aGUgbGV4aWNhbCBzY29wZSBpcyBhbHdheXMgaW5zdGFu
dGlhdGVkLgotICAgICAgICBzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdzID0gdHJ1ZTsKICAg
ICB9CiAKICAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25XcmFwcGVyUGFyc2VNb2Rl
KHBhcnNlTW9kZSkgJiYgbmVlZHNBcmd1bWVudHMpIHsKQEAgLTQ5MCw3ICs0ODcsNyBAQCBCeXRl
Y29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoVk0mIHZtLCBGdW5jdGlvbk5vZGUqIGZ1
bmN0aW9uTm9kZSwgVW5saW5rZQogICAgIGlmIChzaG91bGRDYXB0dXJlU29tZU9mVGhlVGhpbmdz
KQogICAgICAgICBtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyID0gYWRkVmFyKCk7CiAKLSAg
ICBpZiAoc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyB8fCB2bS50eXBlUHJvZmlsZXIoKSkK
KyAgICBpZiAoaXNHZW5lcmF0b3JPckFzeW5jRnVuY3Rpb25Cb2R5UGFyc2VNb2RlKHBhcnNlTW9k
ZSkgfHwgc2hvdWxkQ2FwdHVyZVNvbWVPZlRoZVRoaW5ncyB8fCB2bS50eXBlUHJvZmlsZXIoKSkK
ICAgICAgICAgc3ltYm9sVGFibGVDb25zdGFudEluZGV4ID0gYWRkQ29uc3RhbnRWYWx1ZShmdW5j
dGlvblN5bWJvbFRhYmxlKS0+aW5kZXgoKTsKIAogICAgIC8vIFdlIGNhbiBhbGxvY2F0ZSB0aGUg
InZhciIgZW52aXJvbm1lbnQgaWYgd2UgZG9uJ3QgaGF2ZSBkZWZhdWx0IHBhcmFtZXRlciBleHBy
ZXNzaW9ucy4gSWYgd2UgaGF2ZQpAQCAtODM5LDEwICs4MzYsMTcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFZNJiB2bSwgRnVuY3Rpb25Ob2RlKiBmdW5jdGlvbk5vZGUs
IFVubGlua2UKICAgICAvLyBTZXQgdXAgdGhlIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUgYXMg
dGhlIGdlbmVyYXRvciBmcmFtZS4gV2Ugc3RvcmUgdGhlIHNhdmVkIGFuZCByZXN1bWVkIGdlbmVy
YXRvciByZWdpc3RlcnMgaW50byB0aGlzIHNjb3BlIHdpdGggdGhlIHN5bWJvbCBrZXlzLgogICAg
IC8vIFNpbmNlIHRoZXkgYXJlIHN5bWJvbCBrZXllZCwgdGhlc2UgdmFyaWFibGVzIGNhbm5vdCBi
ZSByZWFjaGVkIGZyb20gdGhlIHVzdWFsIGNvZGUuCiAgICAgaWYgKGlzR2VuZXJhdG9yT3JBc3lu
Y0Z1bmN0aW9uQm9keVBhcnNlTW9kZShwYXJzZU1vZGUpKSB7Ci0gICAgICAgIEFTU0VSVChtX2xl
eGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKTsKICAgICAgICAgbV9nZW5lcmF0b3JGcmFtZVN5bWJv
bFRhYmxlLnNldCgqbV92bSwgZnVuY3Rpb25TeW1ib2xUYWJsZSk7CiAgICAgICAgIG1fZ2VuZXJh
dG9yRnJhbWVTeW1ib2xUYWJsZUluZGV4ID0gc3ltYm9sVGFibGVDb25zdGFudEluZGV4OwotICAg
ICAgICBtb3ZlKGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgbV9sZXhpY2FsRW52aXJvbm1lbnRS
ZWdpc3Rlcik7CisgICAgICAgIGlmIChtX2xleGljYWxFbnZpcm9ubWVudFJlZ2lzdGVyKQorICAg
ICAgICAgICAgbW92ZShnZW5lcmF0b3JGcmFtZVJlZ2lzdGVyKCksIG1fbGV4aWNhbEVudmlyb25t
ZW50UmVnaXN0ZXIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIC8vIEl0IHdvdWxkIGJl
IHBvc3NpYmxlIHRoYXQgZ2VuZXJhdG9yIGRvZXMgbm90IG5lZWQgdG8gc3VzcGVuZCBhbmQgcmVz
dW1lIGFueSByZWdpc3RlcnMuCisgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHdvdWxk
IGxpa2UgdG8gYXZvaWQgY3JlYXRpbmcgYSBsZXhpY2FsIGVudmlyb25tZW50IGFzIG11Y2ggYXMg
cG9zc2libGUuCisgICAgICAgICAgICAvLyBvcF9jcmVhdGVfZ2VuZXJhdG9yX2ZyYW1lX2Vudmly
b25tZW50IGlzIGEgbWFya2VyLCB3aGljaCBpcyBzaW1pbGFyIHRvIG9wX3lpZWxkLgorICAgICAg
ICAgICAgLy8gR2VuZXJhdG9yaWZpY2F0aW9uIGluc2VydHMgbGV4aWNhbCBlbnZpcm9ubWVudCBj
cmVhdGlvbiBpZiBuZWNlc3NhcnkuIE90aGVyd2lzZSwgd2UgY29udmVydCBpdCB0byBvcF9tb3Yg
ZnJhbWUsIGB1bmRlZmluZWRgLgorICAgICAgICAgICAgT3BDcmVhdGVHZW5lcmF0b3JGcmFtZUVu
dmlyb25tZW50OjplbWl0KHRoaXMsIGdlbmVyYXRvckZyYW1lUmVnaXN0ZXIoKSwgc2NvcGVSZWdp
c3RlcigpLCBWaXJ0dWFsUmVnaXN0ZXIgeyBzeW1ib2xUYWJsZUNvbnN0YW50SW5kZXggfSwgYWRk
Q29uc3RhbnRWYWx1ZShqc1VuZGVmaW5lZCgpKSk7CisgICAgICAgIH0KICAgICAgICAgZW1pdFB1
dEJ5SWQoZ2VuZXJhdG9yUmVnaXN0ZXIoKSwgcHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygp
LmdlbmVyYXRvckZyYW1lUHJpdmF0ZU5hbWUoKSwgZ2VuZXJhdG9yRnJhbWVSZWdpc3RlcigpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNw
cAppbmRleCA3ODUyMTAzMDcwZjkwNjM2MGFiYzQ0ODQ3YjhjODU3NTZiMzRiN2IyLi5mNDViMzhl
ZWRiZmUwNjAwZTU2NWU0ZDMwMjY3YmI4ZTE4MGFhZGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCkBAIC0yODEsNiArMjgxLDcgQEAgQ2FwYWJp
bGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbChPcGNvZGVJRCBvcGNvZGVJRCwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIGNvbnN0IEkKICAgICAgICAgcmV0dXJuIENhbkNvbXBpbGU7CiAKICAgICBjYXNl
IG9wX3lpZWxkOgorICAgIGNhc2Ugb3BfY3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZpcm9ubWVu
dDoKICAgICBjYXNlIGxsaW50X3Byb2dyYW1fcHJvbG9ndWU6CiAgICAgY2FzZSBsbGludF9ldmFs
X3Byb2xvZ3VlOgogICAgIGNhc2UgbGxpbnRfbW9kdWxlX3Byb2dyYW1fcHJvbG9ndWU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
aW5kZXggNmE2NjhmN2Y1ZjE0NmM0YzAwMWI5YWQ3NDE0YzVkZDY3YTQ3MTRkNC4uNzkzNTcyZTcw
MTM2YTNjNjE2YmUzNzNmMDdiNzFlNWFlYmQyYzQwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTgwMCw2ICsxODAw
LDExIEBAIGxsaW50T3Aob3BfeWllbGQsIE9wWWllbGQsIG1hY3JvICh1bnVzZWQsIHVudXNlZCwg
dW51c2VkKQogZW5kKQogCiAKK2xsaW50T3Aob3BfY3JlYXRlX2dlbmVyYXRvcl9mcmFtZV9lbnZp
cm9ubWVudCwgT3BZaWVsZCwgbWFjcm8gKHVudXNlZCwgdW51c2VkLCB1bnVzZWQpCisgICAgbm90
U3VwcG9ydGVkKCkKK2VuZCkKKworCiBsbGludE9wKG9wX2RlYnVnLCBPcERlYnVnLCBtYWNybyAo
dW51c2VkLCB1bnVzZWQsIGRpc3BhdGNoKQogICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAog
ICAgIGxvYWRpIENvZGVCbG9jazo6bV9kZWJ1Z2dlclJlcXVlc3RzW3QwXSwgdDAK
</data>
<flag name="review"
          id="381578"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>