<?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>148559</bug_id>
          
          <creation_ts>2015-08-27 21:57:57 -0700</creation_ts>
          <short_desc>Add noDFG() to jsc to prevent DFG compilation of a specified function</short_desc>
          <delta_ts>2015-08-27 23:02:06 -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 Local 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121572</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-27 21:57:57 -0700</bug_when>
    <thetext>Just like noInline() allows us to prevent inlining of a function, noOptimize() allows us to prevent optimization of a function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121574</commentid>
    <comment_count>1</comment_count>
      <attachid>260120</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-27 22:03:57 -0700</bug_when>
    <thetext>Created attachment 260120
the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121590</commentid>
    <comment_count>2</comment_count>
      <attachid>260120</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-27 22:27:26 -0700</bug_when>
    <thetext>Comment on attachment 260120
the fix.

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

&gt; Source/JavaScriptCore/jsc.cpp:635
&gt; +        addFunction(vm, &quot;noOptimize&quot;, functionNeverOptimizeFunction, 1);

Let&apos;s call this noDFG and functionNoDFG. &quot;noOptimize&quot; implies no baseline JIT, which is not the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121592</commentid>
    <comment_count>3</comment_count>
      <attachid>260120</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-27 22:28:21 -0700</bug_when>
    <thetext>Comment on attachment 260120
the fix.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121593</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-27 22:30:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 260120 [details]
&gt; the fix.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260120&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jsc.cpp:635
&gt; &gt; +        addFunction(vm, &quot;noOptimize&quot;, functionNeverOptimizeFunction, 1);
&gt; 
&gt; Let&apos;s call this noDFG and functionNoDFG. &quot;noOptimize&quot; implies no baseline
&gt; JIT, which is not the case.

I also like the name &quot;dontDFGCompile&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121595</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-27 22:35:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 260120 [details]
&gt; the fix.
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=260120&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/jsc.cpp:635
&gt; &gt; +        addFunction(vm, &quot;noOptimize&quot;, functionNeverOptimizeFunction, 1);
&gt; 
&gt; Let&apos;s call this noDFG and functionNoDFG. &quot;noOptimize&quot; implies no baseline
&gt; JIT, which is not the case.

I think fpizlo has always used the term “optimize” (in our code base) to mean DFG and higher, and precludes baseline.  For example, in JITCode.h, he distinguished between isOptimizingJIT() and isBaselineCode().  And he suggested the term “noOptimize” when he asked me to implement this.

But sure, I’ll change it to noDFG().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121598</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-27 22:45:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; But sure, I’ll change it to noDFG().

I just realized that you meant for me to only change the function in jsc.cpp and not elsewhere in the patch.  Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121606</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-08-27 23:02:06 -0700</bug_when>
    <thetext>Thanks for the reviews.  I opted to go with noDFG() instead of dontDFGCompile() because noDFG() is shorter and adequately conveys the purpose.

Landed in r189086: &lt;http://trac.webkit.org/r189086&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260120</attachid>
            <date>2015-08-27 22:03:57 -0700</date>
            <delta_ts>2015-08-27 22:27:26 -0700</delta_ts>
            <desc>the fix.</desc>
            <filename>bug-148559.patch</filename>
            <type>text/plain</type>
            <size>10576</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg5MDg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE1LTA4LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgbm9PcHRpbWl6ZSgpIHRvIGpzYyB0byBwcmV2ZW50IG9wdGltaXphdGlvbiBvZiBhIHNwZWNp
ZmllZCBmdW5jdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0ODU1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHA6CisgICAgICAgIChKU0M6OnNldE5l
dmVySW5saW5lKToKKyAgICAgICAgKEpTQzo6c2V0TmV2ZXJPcHRpbWl6ZSk6CisgICAgICAgICog
QVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFzc3VtaW5nSklUVHlwZSk6CisgICAg
ICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRD
b21waWxlRXZhbCk6CisgICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlUHJvZ3JhbSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6bWlnaHRDb21waWxlRnVuY3Rpb25Gb3JDYWxsKToKKyAgICAgICAg
KEpTQzo6REZHOjptaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdCk6CisgICAgICAgIChK
U0M6OkRGRzo6bWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwpOgorICAgICAgICAqIGpzYy5jcHA6
CisgICAgICAgIChHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0
aW9uTmV2ZXJJbmxpbmVGdW5jdGlvbik6CisgICAgICAgIChmdW5jdGlvbk5ldmVyT3B0aW1pemVG
dW5jdGlvbik6CisgICAgICAgIChmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRh
YmxlOjplY21hTW9kZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnNldE5ldmVy
SW5saW5lKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6c2V0TmV2ZXJPcHRpbWl6
ZSk6CisgICAgICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6OnNldERpZFRyeVRvRW50ZXJJbkxv
b3ApOgorICAgICAgICAoSlNDOjpTY3JpcHRFeGVjdXRhYmxlOjpuZXZlcklubGluZSk6CisgICAg
ICAgIChKU0M6OlNjcmlwdEV4ZWN1dGFibGU6Om5ldmVyT3B0aW1pemUpOgorICAgICAgICAoSlND
OjpTY3JpcHRFeGVjdXRhYmxlOjpkaWRUcnlUb0VudGVySW5Mb29wKToKKyAgICAgICAgKEpTQzo6
U2NyaXB0RXhlY3V0YWJsZTo6aXNJbmxpbmluZ0NhbmRpZGF0ZSk6CisgICAgICAgIChKU0M6OlNj
cmlwdEV4ZWN1dGFibGU6OmlzT2tUb09wdGltaXplKToKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhl
Y3V0YWJsZTo6YWRkcmVzc09mRGlkVHJ5VG9FbnRlckluTG9vcCk6CisgICAgICAgICogcnVudGlt
ZS9UZXN0UnVubmVyVXRpbHMuY3BwOgorICAgICAgICAoSlNDOjpzZXROZXZlcklubGluZSk6Cisg
ICAgICAgIChKU0M6OnNldE5ldmVyT3B0aW1pemUpOgorICAgICAgICAoSlNDOjpvcHRpbWl6ZU5l
eHRJbnZvY2F0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5oOgorCiAy
MDE1LTA4LTI3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTg5MDc5LgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAJKHJldmlzaW9uIDE4OTA4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzMsNiArNDczLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuYwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25SZWFkbGluZShFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24oRXhlY1N0
YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldmVy
T3B0aW1pemVGdW5jdGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdDb21w
aWxlcyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50KEV4ZWNTdGF0ZSopOwpAQCAtNjMxLDYgKzYz
Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJwcmVjaXNlVGltZSIs
IGZ1bmN0aW9uUHJlY2lzZVRpbWUsIDApOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm5ldmVy
SW5saW5lRnVuY3Rpb24iLCBmdW5jdGlvbk5ldmVySW5saW5lRnVuY3Rpb24sIDEpOwogICAgICAg
ICBhZGRGdW5jdGlvbih2bSwgIm5vSW5saW5lIiwgZnVuY3Rpb25OZXZlcklubGluZUZ1bmN0aW9u
LCAxKTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJub09wdGltaXplIiwgZnVuY3Rpb25OZXZl
ck9wdGltaXplRnVuY3Rpb24sIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9m
REZHQ29tcGlsZXMiLCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMsIDEpOwogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgIm9wdGltaXplTmV4dEludm9jYXRpb24iLCBmdW5jdGlvbk9wdGltaXpl
TmV4dEludm9jYXRpb24sIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudCIsIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50LCAxKTsKQEAg
LTExNzksNiArMTE4MSwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9u
TmV2CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzZXROZXZlcklubGluZShleGVjKSk7CiB9
CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXZlck9wdGltaXplRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0
TmV2ZXJPcHRpbWl6ZShleGVjKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
ZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9wdGltaXplTmV4dEludm9jYXRpb24oZXhlYykpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NUZXN0UnVubmVyVXRpbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmNw
cAkocmV2aXNpb24gMTg5MDgzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NUZXN0
UnVubmVyVXRpbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw1ICs0NiwxMiBAQCBKU1ZhbHVl
UmVmIHNldE5ldmVySW5saW5lKEpTQ29udGV4dFJlZiBjCiAgICAgcmV0dXJuIHRvUmVmKGV4ZWMs
IHNldE5ldmVySW5saW5lKHRvSlMoZXhlYywgdGhlRnVuY3Rpb25WYWx1ZVJlZikpKTsKIH0KIAor
SlNWYWx1ZVJlZiBzZXROZXZlck9wdGltaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVl
UmVmIHRoZUZ1bmN0aW9uVmFsdWVSZWYpCit7CisgICAgRXhlY1N0YXRlKiBleGVjPSB0b0pTKGNv
bnRleHQpOworICAgIEpTTG9ja0hvbGRlciBob2xkZXIoZXhlYyk7CisgICAgcmV0dXJuIHRvUmVm
KGV4ZWMsIHNldE5ldmVyT3B0aW1pemUodG9KUyhleGVjLCB0aGVGdW5jdGlvblZhbHVlUmVmKSkp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NUZXN0UnVubmVyVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5oCShyZXZpc2lvbiAxODkwODMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBKU19FWFBPUlRfUFJJVkFURSBK
U1ZhbHVlUmVmIG51bWJlck9mREZHQ29tcGlsZXMoSlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIHRo
ZUZ1bmN0aW9uKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWVSZWYgc2V0TmV2ZXJJbmxpbmUo
SlNDb250ZXh0UmVmLCBKU1ZhbHVlUmVmIHRoZUZ1bmN0aW9uKTsKK0pTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWVSZWYgc2V0TmV2ZXJPcHRpbWl6ZShKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdGhl
RnVuY3Rpb24pOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE4OTA4MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTcsNiArMTU3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUo
UHJpbgogICAgICAgICBvdXQucHJpbnQoIiAoU2hvdWxkQWx3YXlzQmVJbmxpbmVkKSIpOwogICAg
IGlmIChvd25lckV4ZWN1dGFibGUoKS0+bmV2ZXJJbmxpbmUoKSkKICAgICAgICAgb3V0LnByaW50
KCIgKE5ldmVySW5saW5lKSIpOworICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+bmV2ZXJPcHRp
bWl6ZSgpKQorICAgICAgICBvdXQucHJpbnQoIiAoTmV2ZXJPcHRpbWl6ZSkiKTsKICAgICBpZiAo
b3duZXJFeGVjdXRhYmxlKCktPmRpZFRyeVRvRW50ZXJJbkxvb3AoKSkKICAgICAgICAgb3V0LnBy
aW50KCIgKERpZFRyeVRvRW50ZXJJbkxvb3ApIik7CiAgICAgaWYgKG93bmVyRXhlY3V0YWJsZSgp
LT5pc1N0cmljdE1vZGUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE4OTA4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMjIgKzUw
LDI2IEBAIGJvb2wgaXNTdXBwb3J0ZWRGb3JJbmxpbmluZyhDb2RlQmxvY2sqIGMKIGJvb2wgbWln
aHRDb21waWxlRXZhbChDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKICAgICByZXR1cm4gaXNTdXBw
b3J0ZWQoKQotICAgICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRp
b25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpOworICAg
ICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVt
T3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCisgICAgICAgICYmIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzT2tUb09wdGltaXplKCk7CiB9CiBib29sIG1pZ2h0
Q29tcGlsZVByb2dyYW0oQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgcmV0dXJuIGlzU3Vw
cG9ydGVkKCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0
aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKTsKKyAg
ICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11
bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAgICAgICAmJiBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOwogfQogYm9vbCBtaWdo
dENvbXBpbGVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7CiAgICAgcmV0
dXJuIGlzU3VwcG9ydGVkKCkKLSAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50
KCkgPD0gT3B0aW9uczo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291
bnQoKTsKKyAgICAgICAgJiYgY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkgPD0gT3B0aW9u
czo6bWF4aW11bU9wdGltaXphdGlvbkNhbmRpZGF0ZUluc3RydWN0aW9uQ291bnQoKQorICAgICAg
ICAmJiBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5pc09rVG9PcHRpbWl6ZSgpOwogfQog
Ym9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqIGNvZGVCbG9j
aykKIHsKICAgICByZXR1cm4gaXNTdXBwb3J0ZWQoKQotICAgICAgICAmJiBjb2RlQmxvY2stPmlu
c3RydWN0aW9uQ291bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRl
SW5zdHJ1Y3Rpb25Db3VudCgpOworICAgICAgICAmJiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291
bnQoKSA8PSBPcHRpb25zOjptYXhpbXVtT3B0aW1pemF0aW9uQ2FuZGlkYXRlSW5zdHJ1Y3Rpb25D
b3VudCgpCisgICAgICAgICYmIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmlzT2tUb09w
dGltaXplKCk7CiB9CiAKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNhbGwoQ29kZUJsb2Nr
KiBjb2RlQmxvY2spCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCShyZXZpc2lvbiAxODkwODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3NCwxMCArMzc0LDEzIEBAIHB1Ymxp
YzoKICAgICBFQ01BTW9kZSBlY21hTW9kZSgpIGNvbnN0IHsgcmV0dXJuIGlzU3RyaWN0TW9kZSgp
ID8gU3RyaWN0TW9kZSA6IE5vdFN0cmljdE1vZGU7IH0KICAgICAgICAgCiAgICAgdm9pZCBzZXRO
ZXZlcklubGluZShib29sIHZhbHVlKSB7IG1fbmV2ZXJJbmxpbmUgPSB2YWx1ZTsgfQorICAgIHZv
aWQgc2V0TmV2ZXJPcHRpbWl6ZShib29sIHZhbHVlKSB7IG1fbmV2ZXJPcHRpbWl6ZSA9IHZhbHVl
OyB9CiAgICAgdm9pZCBzZXREaWRUcnlUb0VudGVySW5Mb29wKGJvb2wgdmFsdWUpIHsgbV9kaWRU
cnlUb0VudGVySW5Mb29wID0gdmFsdWU7IH0KICAgICBib29sIG5ldmVySW5saW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9uZXZlcklubGluZTsgfQorICAgIGJvb2wgbmV2ZXJPcHRpbWl6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmV2ZXJPcHRpbWl6ZTsgfQogICAgIGJvb2wgZGlkVHJ5VG9FbnRlckluTG9v
cCgpIGNvbnN0IHsgcmV0dXJuIG1fZGlkVHJ5VG9FbnRlckluTG9vcDsgfQogICAgIGJvb2wgaXNJ
bmxpbmluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuICFuZXZlcklubGluZSgpOyB9CisgICAg
Ym9vbCBpc09rVG9PcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuICFuZXZlck9wdGltaXplKCk7IH0K
ICAgICAKICAgICBib29sKiBhZGRyZXNzT2ZEaWRUcnlUb0VudGVySW5Mb29wKCkgeyByZXR1cm4g
Jm1fZGlkVHJ5VG9FbnRlckluTG9vcDsgfQogCkBAIC00MzEsNiArNDM0LDcgQEAgcHJvdGVjdGVk
OgogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGJvb2wgbV9oYXNDYXB0dXJlZFZh
cmlhYmxlczsKICAgICBib29sIG1fbmV2ZXJJbmxpbmU7CisgICAgYm9vbCBtX25ldmVyT3B0aW1p
emUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kaWRUcnlUb0VudGVySW5Mb29wOwogICAgIGludCBt
X292ZXJyaWRlTGluZU51bWJlcjsKICAgICBpbnQgbV9maXJzdExpbmU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAJKHJldmlz
aW9uIDE4OTA4MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJV
dGlscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDE0IEBAIEpTVmFsdWUgc2V0TmV2
ZXJJbmxpbmUoSlNWYWx1ZSB0aGVGdW5jdGkKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IAorSlNWYWx1ZSBzZXROZXZlck9wdGltaXplKEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSkKK3sK
KyAgICBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZUZv
ckZ1bmN0aW9uKHRoZUZ1bmN0aW9uVmFsdWUpKQorICAgICAgICBleGVjdXRhYmxlLT5zZXROZXZl
ck9wdGltaXplKHRydWUpOworICAgIAorICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCiBK
U1ZhbHVlIG9wdGltaXplTmV4dEludm9jYXRpb24oSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlKQog
ewogI2lmIEVOQUJMRShKSVQpCkBAIC0xMDksNiArMTE3LDEzIEBAIEpTVmFsdWUgc2V0TmV2ZXJJ
bmxpbmUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBzZXROZXZlcklubGluZShleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7CiB9CiAKK0pTVmFsdWUgc2V0TmV2ZXJPcHRpbWl6ZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIHJldHVybiBzZXROZXZlck9wdGltaXplKGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKK30KKwogSlNWYWx1ZSBvcHRpbWl6ZU5leHRJbnZv
Y2F0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGls
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5u
ZXJVdGlscy5oCShyZXZpc2lvbiAxODkwODMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZXN0UnVubmVyVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBA
IEpTX0VYUE9SVF9QUklWQVRFIENvZGVCbG9jayogZ2V0U29tZUJhc2UKIAogSlNfRVhQT1JUX1BS
SVZBVEUgSlNWYWx1ZSBudW1iZXJPZkRGR0NvbXBpbGVzKEpTVmFsdWUgZnVuY3Rpb24pOwogSlNf
RVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXROZXZlcklubGluZShKU1ZhbHVlIGZ1bmN0aW9uKTsK
K0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgc2V0TmV2ZXJPcHRpbWl6ZShKU1ZhbHVlIGZ1bmN0
aW9uKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgb3B0aW1pemVOZXh0SW52b2NhdGlvbihK
U1ZhbHVlIGZ1bmN0aW9uKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBudW1iZXJPZkRG
R0NvbXBpbGVzKEV4ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXROZXZl
cklubGluZShFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgc2V0TmV2ZXJP
cHRpbWl6ZShFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgb3B0aW1pemVO
ZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQg
bnVtYmVyT2ZFeGNlcHRpb25GdXp6Q2hlY2tzKCk7Cg==
</data>
<flag name="review"
          id="285314"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>