<?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>179765</bug_id>
          
          <creation_ts>2017-11-16 06:58:15 -0800</creation_ts>
          <short_desc>Provide a runtime option for disabling the optimization of recursive tail calls</short_desc>
          <delta_ts>2017-11-16 09:16:49 -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>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="Robin Morisset">rmorisset</reporter>
          <assigned_to name="Robin Morisset">rmorisset</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</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>1372591</commentid>
    <comment_count>0</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-11-16 06:58:15 -0800</bug_when>
    <thetext>This should make benchmarking and debugging this optimization a bit less painful.
Name of the option: optimizeRecursiveTailCalls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372592</commentid>
    <comment_count>1</comment_count>
      <attachid>327060</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-11-16 06:59:36 -0800</bug_when>
    <thetext>Created attachment 327060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372594</commentid>
    <comment_count>2</comment_count>
      <attachid>327060</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-11-16 07:04:07 -0800</bug_when>
    <thetext>Comment on attachment 327060
Patch

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

r=me

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:1318
&gt; +    if (Options::optimizeRecursiveTailCalls()) {

I suggest making this:
    if (LIKELY(Options::optimizeRecursiveTailCalls())) {

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1425
&gt; +    if (!Options::optimizeRecursiveTailCalls())

I suggest making this:
    if (UNLIKELY(!Options::optimizeRecursiveTailCalls()))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372600</commentid>
    <comment_count>3</comment_count>
      <attachid>327062</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-11-16 07:17:10 -0800</bug_when>
    <thetext>Created attachment 327062
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372608</commentid>
    <comment_count>4</comment_count>
      <attachid>327062</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-16 07:48:15 -0800</bug_when>
    <thetext>Comment on attachment 327062
Patch for landing

Clearing flags on attachment: 327062

Committed r224918: &lt;https://trac.webkit.org/changeset/224918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372609</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-16 07:48:16 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372610</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-16 07:49:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/35588622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372619</commentid>
    <comment_count>7</comment_count>
      <attachid>327062</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-16 08:18:41 -0800</bug_when>
    <thetext>Comment on attachment 327062
Patch for landing

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

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1425
&gt; +    if (UNLIKELY(!Options::optimizeRecursiveTailCalls()))

Why reference this option anywhere else? Isn’t it only  here that we care?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372625</commentid>
    <comment_count>8</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2017-11-16 08:42:39 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #7)
&gt; Comment on attachment 327062 [details]
&gt; Patch for landing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327062&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1425
&gt; &gt; +    if (UNLIKELY(!Options::optimizeRecursiveTailCalls()))
&gt; 
&gt; Why reference this option anywhere else? Isn’t it only  here that we care?

The other two places where we reference this option take care of splitting the entry block for functions that have at least one tail call, so the optimisation has somewhere to jump to.
I decided to also make them conditional on the option, to make it easier to benchmark cleanly the cost incurred by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372642</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-11-16 09:16:49 -0800</bug_when>
    <thetext>(In reply to Robin Morisset from comment #8)
&gt; (In reply to Saam Barati from comment #7)
&gt; &gt; Comment on attachment 327062 [details]
&gt; &gt; Patch for landing
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=327062&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1425
&gt; &gt; &gt; +    if (UNLIKELY(!Options::optimizeRecursiveTailCalls()))
&gt; &gt; 
&gt; &gt; Why reference this option anywhere else? Isn’t it only  here that we care?
&gt; 
&gt; The other two places where we reference this option take care of splitting
&gt; the entry block for functions that have at least one tail call, so the
&gt; optimisation has somewhere to jump to.
&gt; I decided to also make them conditional on the option, to make it easier to
&gt; benchmark cleanly the cost incurred by this.

👍🏼</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327060</attachid>
            <date>2017-11-16 06:59:36 -0800</date>
            <delta_ts>2017-11-16 07:17:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179765-20171116155935.patch</filename>
            <type>text/plain</type>
            <size>4989</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODE4ZmZlYWIxYTQ0M2U1MzVmZDQwZGNkMTdlYmE2MWM3ZDY4MjgxLi41MmJmYjU5NzM3MjE5MGM4
Mjc3NGZjZWE4ODMzM2I3YjY2MWNhYzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMS0xNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb3ZpZGUgYSBydW50aW1lIG9wdGlvbiBmb3IgZGlzYWJsaW5nIHRo
ZSBvcHRpbWl6YXRpb24gb2YgcmVjdXJzaXZlIHRhaWwgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTc2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJn
ZXRzLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnRlcik6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUmVjdXJzaXZlVGFpbENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAy
MDE3LTExLTE1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjQ4NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IDllZDkzNWIw
NzAzMmUxMzM3NmU2OGM3YTk5NjY5NzIwNzAyYWVkZTAuLjU2MzA2ZmQ3Y2U4YmMxMzY3ZTZiMWVl
ZjljOThmZWViNGQ2NTczYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyB2
b2lkIGdldEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW5z
dHJ1Y3Rpb24qIGluc3RyCiAgICAgLy8gb3BfbG9vcF9oaW50IGRvZXMgbm90IGhhdmUganVtcCB0
YXJnZXQgc3RvcmVkIGluIGJ5dGVjb2RlIGluc3RydWN0aW9ucy4KICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfbG9vcF9oaW50KQogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0KTsKLSAg
ICBlbHNlIGlmIChvcGNvZGVJRCA9PSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPmhhc1RhaWxDYWxs
cygpKSB7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT5o
YXNUYWlsQ2FsbHMoKSAmJiBPcHRpb25zOjpvcHRpbWl6ZVJlY3Vyc2l2ZVRhaWxDYWxscygpKSB7
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGEganVtcCBhZnRlciBvcF9lbnRlciwgc28g
cmVjdXJzaXZlIHRhaWwgY2FsbHMgaGF2ZSBzb21ld2hlcmUgdG8ganVtcCB0by4KICAgICAgICAg
Ly8gQnV0IHdlIG9ubHkgd2FudCB0byBwYXkgdGhhdCBwcmljZSBmb3IgZnVuY3Rpb25zIHRoYXQg
aGF2ZSBhdCBsZWFzdCBvbmUgdGFpbCBjYWxsLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2Rl
T2Zmc2V0ICsgb3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAw
OTIyNDY0YzIyZDc0MjQxN2M4YjQ4M2UxMThiOTdkMDZlYjZlMWI4Li5iOWUzOTcxMWM4NTAxMmNh
ZmJlNjkzYzE4Y2JhMzA0ZWJlNjg2M2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTMxNSwxMSAr
MTMxNSwxMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW50ZXIoKQogewogICAgIGVt
aXRPcGNvZGUob3BfZW50ZXIpOwogCi0gICAgLy8gV2UgbXVzdCBhZGQgdGhlIGVuZCBvZiBvcF9l
bnRlciBhcyBhIHBvdGVudGlhbCBqdW1wIHRhcmdldCwgYmVjYXVzZSB0aGUgYnl0ZWNvZGUgcGFy
c2VyIG1heSBkZWNpZGUgdG8gc3BsaXQgaXRzIGJhc2ljIGJsb2NrCi0gICAgLy8gdG8gaGF2ZSBz
b21ld2hlcmUgdG8ganVtcCB0byBpZiB0aGVyZSBpcyBhIHJlY3Vyc2l2ZSB0YWlsLWNhbGwgdGhh
dCBwb2ludHMgdG8gdGhpcyBmdW5jdGlvbi4KLSAgICBtX2NvZGVCbG9jay0+YWRkSnVtcFRhcmdl
dChpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotICAgIC8vIFRoaXMgZGlzYWJsZXMgcGVlcGhvbGUg
b3B0aW1pemF0aW9ucyB3aGVuIGFuIGluc3RydWN0aW9uIGlzIGEganVtcCB0YXJnZXQKLSAgICBt
X2xhc3RPcGNvZGVJRCA9IG9wX2VuZDsKKyAgICBpZiAoT3B0aW9uczo6b3B0aW1pemVSZWN1cnNp
dmVUYWlsQ2FsbHMoKSkgeworICAgICAgICAvLyBXZSBtdXN0IGFkZCB0aGUgZW5kIG9mIG9wX2Vu
dGVyIGFzIGEgcG90ZW50aWFsIGp1bXAgdGFyZ2V0LCBiZWNhdXNlIHRoZSBieXRlY29kZSBwYXJz
ZXIgbWF5IGRlY2lkZSB0byBzcGxpdCBpdHMgYmFzaWMgYmxvY2sKKyAgICAgICAgLy8gdG8gaGF2
ZSBzb21ld2hlcmUgdG8ganVtcCB0byBpZiB0aGVyZSBpcyBhIHJlY3Vyc2l2ZSB0YWlsLWNhbGwg
dGhhdCBwb2ludHMgdG8gdGhpcyBmdW5jdGlvbi4KKyAgICAgICAgbV9jb2RlQmxvY2stPmFkZEp1
bXBUYXJnZXQoaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKKyAgICAgICAgLy8gVGhpcyBkaXNhYmxl
cyBwZWVwaG9sZSBvcHRpbWl6YXRpb25zIHdoZW4gYW4gaW5zdHJ1Y3Rpb24gaXMgYSBqdW1wIHRh
cmdldAorICAgICAgICBtX2xhc3RPcGNvZGVJRCA9IG9wX2VuZDsKKyAgICB9CiB9CiAKIHZvaWQg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRMb29wSGludCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDI5YmVmZTBmOThmYWY4ZjAyZDE4
NjY0ZWE0OTlmYmM4ZTgyM2ZmNTguLjE5MGIwZDA1MTU0YzMzYTI4MWFkOTNjYjIxMjg5YTYzNTQ5
Mjg5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCkBAIC0xNDIyLDYgKzE0MjIsOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjplbWl0QXJn
dW1lbnRQaGFudG9tcyhpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SQogCiBi
b29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVSZWN1cnNpdmVUYWlsQ2FsbChOb2RlKiBjYWxsVGFy
Z2V0Tm9kZSwgY29uc3QgQ2FsbExpbmtTdGF0dXMmIGNhbGxMaW5rU3RhdHVzLCBpbnQgcmVnaXN0
ZXJPZmZzZXQsIFZpcnR1YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcykKIHsKKyAgICBpZiAoIU9wdGlvbnM6Om9wdGltaXplUmVjdXJzaXZlVGFp
bENhbGxzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIEZJWE1FOiBXZSBjdXJy
ZW50bHkgb25seSBkbyB0aGlzIG9wdGltaXNhdGlvbiBpbiB0aGUgc2ltcGxlLCBub24tcG9seW1v
cnBoaWMgY2FzZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc4MzkwCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNsb3dQYXRoKCkgfHwg
Y2FsbExpbmtTdGF0dXMuc2l6ZSgpICE9IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKaW5kZXggOGM3OGU3MjI5ZjE2M2JmYWFhNWVjOTBjMzc4N2Q3N2Y4ZjcxNmU5My4u
NzhlNzdhZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBAIGNvbnN0ZXhwciBi
b29sIGVuYWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgXAogICAgIHYoYm9vbCwgdXNl
RnVuY3Rpb25Eb3RBcmd1bWVudHMsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoYm9v
bCwgdXNlVGFpbENhbGxzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KGJvb2wsIG9w
dGltaXplUmVjdXJzaXZlVGFpbENhbGxzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KGJvb2wsIGFsd2F5c1VzZVNoYWRvd0NoaWNrZW4sIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwK
ICAgICB2KHVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAwMCwgTm9ybWFsLCBudWxs
cHRyKSBcCiAgICAgdih1bnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRhaWxEZWxldGVkRnJhbWVz
U2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327062</attachid>
            <date>2017-11-16 07:17:10 -0800</date>
            <delta_ts>2017-11-16 07:48:15 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-179765-20171116161709.patch</filename>
            <type>text/plain</type>
            <size>5001</size>
            <attacher name="Robin Morisset">rmorisset</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ODE4ZmZlYWIxYTQ0M2U1MzVmZDQwZGNkMTdlYmE2MWM3ZDY4MjgxLi42MjhiMjNlYjVhOGJlOTBj
MzM5M2FlOGM2ZWVmM2QzMGJjNDliMDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNy0xMS0xNiAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUu
Y29tPgorCisgICAgICAgIFByb3ZpZGUgYSBydW50aW1lIG9wdGlvbiBmb3IgZGlzYWJsaW5nIHRo
ZSBvcHRpbWl6YXRpb24gb2YgcmVjdXJzaXZlIHRhaWwgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTc2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE1hcmsgTGFtLgorCisgICAgICAgICogYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2V0SnVtcFRhcmdldHNGb3JCeXRlY29kZU9mZnNldCk6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRFbnRlcik6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlUmVj
dXJzaXZlVGFpbENhbGwpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorCiAyMDE3LTEx
LTE1ICBSeWFuIEhhZGRhZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjQ4NjMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvUHJlY2lzZUp1bXBUYXJnZXRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCmluZGV4IDllZDkzNWIwNzAzMmUx
MzM3NmU2OGM3YTk5NjY5NzIwNzAyYWVkZTAuLjU2MzA2ZmQ3Y2U4YmMxMzY3ZTZiMWVlZjljOThm
ZWViNGQ2NTczYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
cmVjaXNlSnVtcFRhcmdldHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHN0YXRpYyB2b2lkIGdl
dEp1bXBUYXJnZXRzRm9yQnl0ZWNvZGVPZmZzZXQoQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rp
b24qIGluc3RyCiAgICAgLy8gb3BfbG9vcF9oaW50IGRvZXMgbm90IGhhdmUganVtcCB0YXJnZXQg
c3RvcmVkIGluIGJ5dGVjb2RlIGluc3RydWN0aW9ucy4KICAgICBpZiAob3Bjb2RlSUQgPT0gb3Bf
bG9vcF9oaW50KQogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICBlbHNl
IGlmIChvcGNvZGVJRCA9PSBvcF9lbnRlciAmJiBjb2RlQmxvY2stPmhhc1RhaWxDYWxscygpKSB7
CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0gb3BfZW50ZXIgJiYgY29kZUJsb2NrLT5oYXNUYWls
Q2FsbHMoKSAmJiBPcHRpb25zOjpvcHRpbWl6ZVJlY3Vyc2l2ZVRhaWxDYWxscygpKSB7CiAgICAg
ICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGEganVtcCBhZnRlciBvcF9lbnRlciwgc28gcmVjdXJz
aXZlIHRhaWwgY2FsbHMgaGF2ZSBzb21ld2hlcmUgdG8ganVtcCB0by4KICAgICAgICAgLy8gQnV0
IHdlIG9ubHkgd2FudCB0byBwYXkgdGhhdCBwcmljZSBmb3IgZnVuY3Rpb25zIHRoYXQgaGF2ZSBh
dCBsZWFzdCBvbmUgdGFpbCBjYWxsLgogICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0
ICsgb3Bjb2RlTGVuZ3Roc1tvcF9lbnRlcl0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAwOTIyNDY0
YzIyZDc0MjQxN2M4YjQ4M2UxMThiOTdkMDZlYjZlMWI4Li42M2UzOThkNjExYmJhODEyNzQ0Y2Vi
ZmI1Y2JmODk3NjQ5OTBlNTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTMxNSwxMSArMTMxNSwx
MyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RW50ZXIoKQogewogICAgIGVtaXRPcGNv
ZGUob3BfZW50ZXIpOwogCi0gICAgLy8gV2UgbXVzdCBhZGQgdGhlIGVuZCBvZiBvcF9lbnRlciBh
cyBhIHBvdGVudGlhbCBqdW1wIHRhcmdldCwgYmVjYXVzZSB0aGUgYnl0ZWNvZGUgcGFyc2VyIG1h
eSBkZWNpZGUgdG8gc3BsaXQgaXRzIGJhc2ljIGJsb2NrCi0gICAgLy8gdG8gaGF2ZSBzb21ld2hl
cmUgdG8ganVtcCB0byBpZiB0aGVyZSBpcyBhIHJlY3Vyc2l2ZSB0YWlsLWNhbGwgdGhhdCBwb2lu
dHMgdG8gdGhpcyBmdW5jdGlvbi4KLSAgICBtX2NvZGVCbG9jay0+YWRkSnVtcFRhcmdldChpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotICAgIC8vIFRoaXMgZGlzYWJsZXMgcGVlcGhvbGUgb3B0aW1p
emF0aW9ucyB3aGVuIGFuIGluc3RydWN0aW9uIGlzIGEganVtcCB0YXJnZXQKLSAgICBtX2xhc3RP
cGNvZGVJRCA9IG9wX2VuZDsKKyAgICBpZiAoTElLRUxZKE9wdGlvbnM6Om9wdGltaXplUmVjdXJz
aXZlVGFpbENhbGxzKCkpKSB7CisgICAgICAgIC8vIFdlIG11c3QgYWRkIHRoZSBlbmQgb2Ygb3Bf
ZW50ZXIgYXMgYSBwb3RlbnRpYWwganVtcCB0YXJnZXQsIGJlY2F1c2UgdGhlIGJ5dGVjb2RlIHBh
cnNlciBtYXkgZGVjaWRlIHRvIHNwbGl0IGl0cyBiYXNpYyBibG9jaworICAgICAgICAvLyB0byBo
YXZlIHNvbWV3aGVyZSB0byBqdW1wIHRvIGlmIHRoZXJlIGlzIGEgcmVjdXJzaXZlIHRhaWwtY2Fs
bCB0aGF0IHBvaW50cyB0byB0aGlzIGZ1bmN0aW9uLgorICAgICAgICBtX2NvZGVCbG9jay0+YWRk
SnVtcFRhcmdldChpbnN0cnVjdGlvbnMoKS5zaXplKCkpOworICAgICAgICAvLyBUaGlzIGRpc2Fi
bGVzIHBlZXBob2xlIG9wdGltaXphdGlvbnMgd2hlbiBhbiBpbnN0cnVjdGlvbiBpcyBhIGp1bXAg
dGFyZ2V0CisgICAgICAgIG1fbGFzdE9wY29kZUlEID0gb3BfZW5kOworICAgIH0KIH0KIAogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdExvb3BIaW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMjliZWZlMGY5OGZhZjhmMDJk
MTg2NjRlYTQ5OWZiYzhlODIzZmY1OC4uMGRmNWNkZTAzNGU1MmQwMzVkNDk3OTg3YzZiZjk0OWEz
MTU3YTc4NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKQEAgLTE0MjIsNiArMTQyMiw5IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmVtaXRB
cmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJCiAK
IGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZVJlY3Vyc2l2ZVRhaWxDYWxsKE5vZGUqIGNhbGxU
YXJnZXROb2RlLCBjb25zdCBDYWxsTGlua1N0YXR1cyYgY2FsbExpbmtTdGF0dXMsIGludCByZWdp
c3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKQogeworICAgIGlmIChVTkxJS0VMWSghT3B0aW9uczo6b3B0aW1pemVS
ZWN1cnNpdmVUYWlsQ2FsbHMoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIC8vIEZJ
WE1FOiBXZSBjdXJyZW50bHkgb25seSBkbyB0aGlzIG9wdGltaXNhdGlvbiBpbiB0aGUgc2ltcGxl
LCBub24tcG9seW1vcnBoaWMgY2FzZS4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc4MzkwCiAgICAgaWYgKGNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNs
b3dQYXRoKCkgfHwgY2FsbExpbmtTdGF0dXMuc2l6ZSgpICE9IDEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggOGM3OGU3MjI5ZjE2M2JmYWFhNWVjOTBjMzc4N2Q3
N2Y4ZjcxNmU5My4uNzhlNzdhZDE4NjRjOGZhMDA3Mzg3YzNmNTBjOTM5MjEyNWY3MTQ5MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaApAQCAtMTQ5LDYgKzE0OSw3IEBA
IGNvbnN0ZXhwciBib29sIGVuYWJsZUFzeW5jSXRlcmF0aW9uID0gZmFsc2U7CiAgICAgXAogICAg
IHYoYm9vbCwgdXNlRnVuY3Rpb25Eb3RBcmd1bWVudHMsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikg
XAogICAgIHYoYm9vbCwgdXNlVGFpbENhbGxzLCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAg
ICB2KGJvb2wsIG9wdGltaXplUmVjdXJzaXZlVGFpbENhbGxzLCB0cnVlLCBOb3JtYWwsIG51bGxw
dHIpIFwKICAgICB2KGJvb2wsIGFsd2F5c1VzZVNoYWRvd0NoaWNrZW4sIGZhbHNlLCBOb3JtYWws
IG51bGxwdHIpIFwKICAgICB2KHVuc2lnbmVkLCBzaGFkb3dDaGlja2VuTG9nU2l6ZSwgMTAwMCwg
Tm9ybWFsLCBudWxscHRyKSBcCiAgICAgdih1bnNpZ25lZCwgc2hhZG93Q2hpY2tlbk1heFRhaWxE
ZWxldGVkRnJhbWVzU2l6ZSwgMTI4LCBOb3JtYWwsIG51bGxwdHIpIFwK
</data>

          </attachment>
      

    </bug>

</bugzilla>