<?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>73875</bug_id>
          
          <creation_ts>2011-12-05 16:15:57 -0800</creation_ts>
          <short_desc>Add 8 bit paths to global object functions</short_desc>
          <delta_ts>2011-12-06 14:43:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>73950</dependson>
          <blocked>73236</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515483</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-05 16:15:57 -0800</bug_when>
    <thetext>The functions decode(), parseInt(), parseFloat(), globalFuncEscape() and globalFuncUnescape() in JSGlobalObjectFunctions need 8 bit optimized paths.

These changes will benefit Kraken stanford-crypto-ccm and stanford-crypto-pbkdf2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515541</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-05 17:37:43 -0800</bug_when>
    <thetext>stanford-crypto-sha256-iterative also would benefit from this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515549</commentid>
    <comment_count>2</comment_count>
      <attachid>117965</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-05 17:45:38 -0800</bug_when>
    <thetext>Created attachment 117965
Patch

Results of proposed patch:

Generating benchmark report at Kraken_20111205_1735_benchReport.txt

Benchmark report for Kraken on msaboff-pro.apple.com (MacPro5,1).

VMs tested:
&quot;Conf#1&quot; at /Volumes/Data/src/webkit.baseline2/WebKitBuild/Release/jsc (r102016)
&quot;Conf#2&quot; at /Volumes/Data/src/webkit/WebKitBuild/Release/jsc (r102016)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between
sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific
preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95%
confidence intervals in milliseconds.

                                           Conf#1                  Conf#2                                     

ai-astar                             811.5160+-13.4857   ?   819.9420+-10.8933      ? might be 1.0104x slower
audio-beat-detection                 202.3366+-0.5953    !   203.8729+-0.6924       ! definitely 1.0076x slower
audio-dft                            259.9179+-2.1640    ?   260.1479+-2.4387       ?
audio-fft                            131.3159+-0.2710        131.1627+-0.1474       
audio-oscillator                     282.1622+-5.3042        277.9279+-5.2296         might be 1.0152x faster
imaging-darkroom                     337.4726+-6.2865        331.4176+-4.3442         might be 1.0183x faster
imaging-desaturate                   239.1415+-0.2812    ^   238.7468+-0.1038       ^ definitely 1.0017x faster
imaging-gaussian-blur                609.6771+-0.3478    ?   610.2160+-0.3388       ?
json-parse-financial                  71.8287+-0.2332         71.6736+-0.3560       
json-stringify-tinderbox              81.8360+-0.1419    ?    81.8690+-0.1723       ?
stanford-crypto-aes                  118.8075+-0.7028    ?   118.8253+-0.4006       ?
stanford-crypto-ccm                  118.0467+-0.7520    ^   116.1189+-0.9503       ^ definitely 1.0166x faster
stanford-crypto-pbkdf2               232.7204+-1.0608    ?   233.9356+-1.3221       ?
stanford-crypto-sha256-iterative      96.7228+-0.1396    ^    94.3186+-0.3950       ^ definitely 1.0255x faster

&lt;arithmetic&gt; *                       256.6787+-1.0148        256.4411+-0.9486       
&lt;geometric&gt;                          198.1845+-0.4079        197.4195+-0.5044       
&lt;harmonic&gt;                           159.7440+-0.2318    ^   158.8841+-0.3157       ^ definitely 1.0054x faster

No change for stanford-crypto-pbkdf2 even though it uses the tuned code paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515958</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-06 09:21:25 -0800</bug_when>
    <thetext>Committed r102146: &lt;http://trac.webkit.org/changeset/102146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516094</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-06 11:38:08 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Committed r102146: &lt;http://trac.webkit.org/changeset/102146&gt;

It broke fast/js/encode-URI-test.html on SL, GTK, Qt:

--- /Volumes/Data/slave/snowleopard-intel-release-tests/build/layout-test-results/fast/js/encode-URI-test-expected.txt 
+++ /Volumes/Data/slave/snowleopard-intel-release-tests/build/layout-test-results/fast/js/encode-URI-test-actual.txt 
@@ -1,1 +1,3 @@
-Testing complete. No failures.
+called unescape on &quot;%uxxxx&quot; and got &quot;uxxxx&quot; instead of &quot;%uxxxx&quot;
+
+Testing complete. 1 tests failed.

Could you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516096</commentid>
    <comment_count>5</comment_count>
      <attachid>117965</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-06 11:38:27 -0800</bug_when>
    <thetext>Comment on attachment 117965
Patch

remove r+ from landed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516099</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-06 11:41:00 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Committed r102146: &lt;http://trac.webkit.org/changeset/102146&gt;
&gt; 
&gt; It broke fast/js/encode-URI-test.html on SL, GTK, Qt:
&gt; 
&gt; --- /Volumes/Data/slave/snowleopard-intel-release-tests/build/layout-test-results/fast/js/encode-URI-test-expected.txt 
&gt; +++ /Volumes/Data/slave/snowleopard-intel-release-tests/build/layout-test-results/fast/js/encode-URI-test-actual.txt 
&gt; @@ -1,1 +1,3 @@
&gt; -Testing complete. No failures.
&gt; +called unescape on &quot;%uxxxx&quot; and got &quot;uxxxx&quot; instead of &quot;%uxxxx&quot;
&gt; +
&gt; +Testing complete. 1 tests failed.
&gt; 
&gt; Could you check it, please?

I&apos;ll look into this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516229</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-06 14:02:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Committed r102146: &lt;http://trac.webkit.org/changeset/102146&gt;
&gt; 
&gt; It broke fast/js/encode-URI-test.html on SL, GTK, Qt:
&gt; 
&gt; --- /Volumes/Data/slave/snowleopard-intel-release-tests/build/layout-test-results/fast/js/encode-URI-test-expected.txt 
&gt; +++ /Volumes/Data/slave/snowleopard-intel-release-tests/build/layout-test-results/fast/js/encode-URI-test-actual.txt 
&gt; @@ -1,1 +1,3 @@
&gt; -Testing complete. No failures.
&gt; +called unescape on &quot;%uxxxx&quot; and got &quot;uxxxx&quot; instead of &quot;%uxxxx&quot;
&gt; +
&gt; +Testing complete. 1 tests failed.
&gt; 
&gt; Could you check it, please?

Tracked in https://bugs.webkit.org/show_bug.cgi?id=73950</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516269</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2011-12-06 14:43:56 -0800</bug_when>
    <thetext>Closed due to the closing of the related bug https://bugs.webkit.org/show_bug.cgi?id=73950 that tracked the test failure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117965</attachid>
            <date>2011-12-05 17:45:38 -0800</date>
            <delta_ts>2011-12-06 11:38:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>73875.patch</filename>
            <type>text/plain</type>
            <size>11420</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyMDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDExLTEyLTA1ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIEFkZCA4IGJpdCBwYXRocyB0byBnbG9iYWwgb2JqZWN0IGZ1bmN0aW9ucworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4NzUKKworICAgICAgICBB
ZGRlZCA4IGJpdCBwYXRocyBmb3IgY29udmVyaW9ucyBtZXRob2RzLgorCisgICAgICAgIFRoaXMg
aXMgd29ydGggMS41JSBvbiBrcmFrZW4gYXVkaW8tb3NjaWxsYXRvciwKKyAgICAgICAgMS42JSBv
biBzdGFuZm9yZC1jcnlwdG8tY2NtIGFuZCAyLjUlIG9uCisgICAgICAgIHN0YW5mb3JkLWNyeXB0
by1zaGEyNTYtaXRlcmF0aXZlLiAgU2VlIGJ1ZyBmb3IKKyAgICAgICAgYSBmdWxsIHJlcG9ydC4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHJ1bnRp
bWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpkZWNvZGUpOiBT
cGxpdCBpbnRvIGEgdGVtcGxhdGVkIGhlbHBlci4KKyAgICAgICAgKEpTQzo6cGFyc2VJbnQpOiBT
cGxpdCBpbnRvIGEgdGVtcGxhdGVkIGhlbHBlci4KKyAgICAgICAgKEpTQzo6cGFyc2VGbG9hdCk6
IEFkZGVkIGFuIDggYml0IHBhdGgKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0VzY2FwZSk6IEFk
ZGVkIDggYml0IHBhdGgKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1VuZXNjYXBlKTogQWRkZWQg
OCBiaXQgcGF0aAorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmg6CisgICAgICAg
IChKU0M6OkpTU3RyaW5nQnVpbGRlcjo6YXBwZW5kKTogTmV3IGFwcGVuZCBmb3IgTENoYXIKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg6CisgICAgICAgIChXVEY6OlN0cmluZ0J1
aWxkZXI6OmFwcGVuZCk6IE5ldyBhcHBlbmQgZm9yIExDaGFyCisKIDIwMTEtMTItMDUgIERhcmlu
IEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgSlNDbGFzc1JlZiB0
byB1c2UgSGFzaE1hcDxPd25QdHI+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCShyZXZpc2lvbiAx
MDIwMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDMwICs3MSwyOSBAQCBzdGF0aWMgSlNW
YWx1ZSBlbmNvZGUoRXhlY1N0YXRlKiBleGVjLCBjCiAgICAgcmV0dXJuIGJ1aWxkZXIuYnVpbGQo
ZXhlYyk7CiB9CiAKLXN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IGNoYXIqIGRvTm90VW5lc2NhcGUsIGJvb2wgc3RyaWN0KQordGVtcGxhdGUgPHR5cGVuYW1lIENo
YXJUeXBlPgorQUxXQVlTX0lOTElORQorc3RhdGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIGludCBsZW5ndGgsIGNvbnN0IGNoYXIq
IGRvTm90VW5lc2NhcGUsIGJvb2wgc3RyaWN0KQogewogICAgIEpTU3RyaW5nQnVpbGRlciBidWls
ZGVyOwotICAgIFVTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7
CiAgICAgaW50IGsgPSAwOwotICAgIGludCBsZW4gPSBzdHIubGVuZ3RoKCk7Ci0gICAgY29uc3Qg
VUNoYXIqIGQgPSBzdHIuY2hhcmFjdGVycygpOwogICAgIFVDaGFyIHUgPSAwOwotICAgIHdoaWxl
IChrIDwgbGVuKSB7Ci0gICAgICAgIGNvbnN0IFVDaGFyKiBwID0gZCArIGs7Ci0gICAgICAgIFVD
aGFyIGMgPSAqcDsKKyAgICB3aGlsZSAoayA8IGxlbmd0aCkgeworICAgICAgICBjb25zdCBDaGFy
VHlwZSogcCA9IGNoYXJhY3RlcnMgKyBrOworICAgICAgICBDaGFyVHlwZSBjID0gKnA7CiAgICAg
ICAgIGlmIChjID09ICclJykgewogICAgICAgICAgICAgaW50IGNoYXJMZW4gPSAwOwotICAgICAg
ICAgICAgaWYgKGsgPD0gbGVuIC0gMyAmJiBpc0FTQ0lJSGV4RGlnaXQocFsxXSkgJiYgaXNBU0NJ
SUhleERpZ2l0KHBbMl0pKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgY2hhciBiMCA9IExleGVy
PFVDaGFyPjo6Y29udmVydEhleChwWzFdLCBwWzJdKTsKKyAgICAgICAgICAgIGlmIChrIDw9IGxl
bmd0aCAtIDMgJiYgaXNBU0NJSUhleERpZ2l0KHBbMV0pICYmIGlzQVNDSUlIZXhEaWdpdChwWzJd
KSkgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgYjAgPSBMZXhlcjxDaGFyVHlwZT46OmNv
bnZlcnRIZXgocFsxXSwgcFsyXSk7CiAgICAgICAgICAgICAgICAgY29uc3QgaW50IHNlcXVlbmNl
TGVuID0gVVRGOFNlcXVlbmNlTGVuZ3RoKGIwKTsKLSAgICAgICAgICAgICAgICBpZiAoc2VxdWVu
Y2VMZW4gIT0gMCAmJiBrIDw9IGxlbiAtIHNlcXVlbmNlTGVuICogMykgeworICAgICAgICAgICAg
ICAgIGlmICghc2VxdWVuY2VMZW4gJiYgayA8PSBsZW5ndGggLSBzZXF1ZW5jZUxlbiAqIDMpIHsK
ICAgICAgICAgICAgICAgICAgICAgY2hhckxlbiA9IHNlcXVlbmNlTGVuICogMzsKICAgICAgICAg
ICAgICAgICAgICAgY2hhciBzZXF1ZW5jZVs1XTsKICAgICAgICAgICAgICAgICAgICAgc2VxdWVu
Y2VbMF0gPSBiMDsKICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzZXF1
ZW5jZUxlbjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogcSA9
IHAgKyBpICogMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENoYXJUeXBlKiBxID0g
cCArIGkgKiAzOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHFbMF0gPT0gJyUnICYmIGlz
QVNDSUlIZXhEaWdpdChxWzFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQocVsyXSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VxdWVuY2VbaV0gPSBMZXhlcjxVQ2hhcj46OmNvbnZlcnRIZXgo
cVsxXSwgcVsyXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVuY2VbaV0gPSBM
ZXhlcjxDaGFyVHlwZT46OmNvbnZlcnRIZXgocVsxXSwgcVsyXSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyTGVuID0gMDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExOSw3ICsxMTgsNyBAQCBz
dGF0aWMgSlNWYWx1ZSBkZWNvZGUoRXhlY1N0YXRlKiBleGVjLCBjCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVVSSUVycm9yKGV4ZWMsICJVUkkgZXJy
b3IiKSk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBkb24ndCB1
c2UgInN0cmljdCIgbW9kZSBpcyB0aGUgInVuZXNjYXBlIiBmdW5jdGlvbi4KICAgICAgICAgICAg
ICAgICAvLyBGb3IgdGhhdCwgaXQncyBnb29kIHRvIHN1cHBvcnQgdGhlIHdvbmt5ICIldSIgc3lu
dGF4IGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCi0gICAgICAgICAgICAgICAgaWYgKGsg
PD0gbGVuIC0gNiAmJiBwWzFdID09ICd1JworICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0
aCAtIDYgJiYgcFsxXSA9PSAndScKICAgICAgICAgICAgICAgICAgICAgICAgICYmIGlzQVNDSUlI
ZXhEaWdpdChwWzJdKSAmJiBpc0FTQ0lJSGV4RGlnaXQocFszXSkKICAgICAgICAgICAgICAgICAg
ICAgICAgICYmIGlzQVNDSUlIZXhEaWdpdChwWzRdKSAmJiBpc0FTQ0lJSGV4RGlnaXQocFs1XSkp
IHsKICAgICAgICAgICAgICAgICAgICAgY2hhckxlbiA9IDY7CkBAIC0xMjcsOCArMTI2LDEyIEBA
IHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVjU3RhdGUqIGV4ZWMsIGMKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY2hhckxlbiAmJiAodSA9PSAwIHx8
IHUgPj0gMTI4IHx8ICFzdHJjaHIoZG9Ob3RVbmVzY2FwZSwgdSkpKSB7Ci0gICAgICAgICAgICAg
ICAgYyA9IHU7Ci0gICAgICAgICAgICAgICAgayArPSBjaGFyTGVuIC0gMTsKKyAgICAgICAgICAg
ICAgICBpZiAodSA8IDI1NikKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Rh
dGljX2Nhc3Q8TENoYXI+KHUpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKHUpOworICAgICAgICAgICAgICAgIGsgKz0gY2hhckxlbjsK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBrKys7CkBAIC0xMzcsNiArMTQwLDE2IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShFeGVj
U3RhdGUqIGV4ZWMsIGMKICAgICByZXR1cm4gYnVpbGRlci5idWlsZChleGVjKTsKIH0KIAorc3Rh
dGljIEpTVmFsdWUgZGVjb2RlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogZG9Ob3RVbmVz
Y2FwZSwgYm9vbCBzdHJpY3QpCit7CisgICAgSlNTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAg
VVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKTsKKyAgICAKKyAg
ICBpZiAoc3RyLmlzOEJpdCgpKQorICAgICAgICByZXR1cm4gZGVjb2RlKGV4ZWMsIHN0ci5jaGFy
YWN0ZXJzOCgpLCBzdHIubGVuZ3RoKCksIGRvTm90VW5lc2NhcGUsIHN0cmljdCk7CisgICAgcmV0
dXJuIGRlY29kZShleGVjLCBzdHIuY2hhcmFjdGVyczE2KCksIHN0ci5sZW5ndGgoKSwgZG9Ob3RV
bmVzY2FwZSwgc3RyaWN0KTsKK30KKwogYm9vbCBpc1N0cldoaXRlU3BhY2UoVUNoYXIgYykKIHsK
ICAgICBzd2l0Y2ggKGMpIHsKQEAgLTIxNywxMCArMjMwLDExIEBAIGRvdWJsZSBwYXJzZUludE92
ZXJmbG93KGNvbnN0IFVDaGFyKiBzLCAKICAgICByZXR1cm4gbnVtYmVyOwogfQogCi1zdGF0aWMg
ZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGludCByYWRpeCkKK3RlbXBsYXRlIDx0
eXBlbmFtZSBDaGFyVHlwZT4KK0FMV0FZU19JTkxJTkUKK3N0YXRpYyBkb3VibGUgcGFyc2VJbnQo
Y29uc3QgVVN0cmluZyYgcywgY29uc3QgQ2hhclR5cGUqIGRhdGEsIGludCByYWRpeCkKIHsKICAg
ICBpbnQgbGVuZ3RoID0gcy5sZW5ndGgoKTsKLSAgICBjb25zdCBVQ2hhciogZGF0YSA9IHMuY2hh
cmFjdGVycygpOwogICAgIGludCBwID0gMDsKIAogICAgIHdoaWxlIChwIDwgbGVuZ3RoICYmIGlz
U3RyV2hpdGVTcGFjZShkYXRhW3BdKSkKQEAgLTI3NSw2ICsyODksMTMgQEAgc3RhdGljIGRvdWJs
ZSBwYXJzZUludChjb25zdCBVU3RyaW5nJiBzLAogICAgIHJldHVybiBzaWduICogbnVtYmVyOwog
fQogCitzdGF0aWMgZG91YmxlIHBhcnNlSW50KGNvbnN0IFVTdHJpbmcmIHMsIGludCByYWRpeCkK
K3sKKyAgICBpZiAocy5pczhCaXQoKSkKKyAgICAgICAgcmV0dXJuIHBhcnNlSW50KHMsIHMuY2hh
cmFjdGVyczgoKSwgcmFkaXgpOworICAgIHJldHVybiBwYXJzZUludChzLCBzLmNoYXJhY3RlcnMx
NigpLCByYWRpeCk7Cit9CisKIHN0YXRpYyBjb25zdCBpbnQgU2l6ZU9mSW5maW5pdHkgPSA4Owog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+CkBAIC00MjYsNyArNDQ3LDI0IEBAIHN0YXRp
YyBkb3VibGUgcGFyc2VGbG9hdChjb25zdCBVU3RyaW5nJiAKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCk7CiAgICAgfQogCi0gICAgY29uc3Qg
VUNoYXIqIGRhdGEgPSBzLmNoYXJhY3RlcnMoKTsKKyAgICBpZiAocy5pczhCaXQoKSkgeworICAg
ICAgICBjb25zdCBMQ2hhciogZGF0YSA9IHMuY2hhcmFjdGVyczgoKTsKKyAgICAgICAgY29uc3Qg
TENoYXIqIGVuZCA9IGRhdGEgKyBzaXplOworCisgICAgICAgIC8vIFNraXAgbGVhZGluZyB3aGl0
ZSBzcGFjZS4KKyAgICAgICAgZm9yICg7IGRhdGEgPCBlbmQ7ICsrZGF0YSkgeworICAgICAgICAg
ICAgaWYgKCFpc1N0cldoaXRlU3BhY2UoKmRhdGEpKQorICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gRW1wdHkgc3RyaW5nLgorICAgICAgICBpZiAoZGF0YSA9
PSBlbmQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpx
dWlldF9OYU4oKTsKKworICAgICAgICByZXR1cm4ganNTdHJEZWNpbWFsTGl0ZXJhbChkYXRhLCBl
bmQpOworICAgIH0KKworICAgIGNvbnN0IFVDaGFyKiBkYXRhID0gcy5jaGFyYWN0ZXJzMTYoKTsK
ICAgICBjb25zdCBVQ2hhciogZW5kID0gZGF0YSArIHNpemU7CiAKICAgICAvLyBTa2lwIGxlYWRp
bmcgd2hpdGUgc3BhY2UuCkBAIC01NjQsNyArNjAyLDIzIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2xvYmFsRnVuY0UKIAogICAgIEpTU3RyaW5nQnVpbGRlciBidWlsZGVyOwogICAg
IFVTdHJpbmcgc3RyID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyk7Ci0gICAgY29u
c3QgVUNoYXIqIGMgPSBzdHIuY2hhcmFjdGVycygpOworICAgIGlmIChzdHIuaXM4Qml0KCkpIHsK
KyAgICAgICAgY29uc3QgTENoYXIqIGMgPSBzdHIuY2hhcmFjdGVyczgoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBrID0gMDsgayA8IHN0ci5sZW5ndGgoKTsgaysrLCBjKyspIHsKKyAgICAgICAg
ICAgIGludCB1ID0gY1swXTsKKyAgICAgICAgICAgIGlmICh1ICYmIHN0cmNocihkb19ub3RfZXNj
YXBlLCBzdGF0aWNfY2FzdDxjaGFyPih1KSkpCisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBl
bmQoYywgMSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjaGFyIHRtcFs0
XTsKKyAgICAgICAgICAgICAgICBzbnByaW50Zih0bXAsIHNpemVvZih0bXApLCAiJSUlMDJYIiwg
dSk7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQodG1wKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYnVpbGRlci5idWls
ZChleGVjKSk7ICAgICAgICAKKyAgICB9CisKKyAgICBjb25zdCBVQ2hhciogYyA9IHN0ci5jaGFy
YWN0ZXJzMTYoKTsKICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgc3RyLmxlbmd0aCgpOyBr
KyssIGMrKykgewogICAgICAgICBpbnQgdSA9IGNbMF07CiAgICAgICAgIGlmICh1ID4gMjU1KSB7
CkBAIC01ODksMjIgKzY0Myw0NCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2Jh
bEZ1bmNVCiAgICAgVVN0cmluZyBzdHIgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVj
KTsKICAgICBpbnQgayA9IDA7CiAgICAgaW50IGxlbiA9IHN0ci5sZW5ndGgoKTsKLSAgICB3aGls
ZSAoayA8IGxlbikgewotICAgICAgICBjb25zdCBVQ2hhciogYyA9IHN0ci5jaGFyYWN0ZXJzKCkg
KyBrOwotICAgICAgICBVQ2hhciB1OwotICAgICAgICBpZiAoY1swXSA9PSAnJScgJiYgayA8PSBs
ZW4gLSA2ICYmIGNbMV0gPT0gJ3UnKSB7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSUhleERpZ2l0
KGNbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChjWzNdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoY1s0XSkg
JiYgaXNBU0NJSUhleERpZ2l0KGNbNV0pKSB7Ci0gICAgICAgICAgICAgICAgdSA9IExleGVyPFVD
aGFyPjo6Y29udmVydFVuaWNvZGUoY1syXSwgY1szXSwgY1s0XSwgY1s1XSk7CisgICAgCisgICAg
aWYgKHN0ci5pczhCaXQoKSkgeworICAgICAgICBjb25zdCBMQ2hhciogY2hhcmFjdGVycyA9IHN0
ci5jaGFyYWN0ZXJzOCgpOworCisgICAgICAgIHdoaWxlIChrIDwgbGVuKSB7CisgICAgICAgICAg
ICBjb25zdCBMQ2hhciogYyA9IGNoYXJhY3RlcnMgKyBrOworICAgICAgICAgICAgaWYgKGNbMF0g
PT0gJyUnICYmIGsgPD0gbGVuIC0gNiAmJiBjWzFdID09ICd1JykgeworICAgICAgICAgICAgICAg
IGlmIChpc0FTQ0lJSGV4RGlnaXQoY1syXSkgJiYgaXNBU0NJSUhleERpZ2l0KGNbM10pICYmIGlz
QVNDSUlIZXhEaWdpdChjWzRdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoY1s1XSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoTGV4ZXI8VUNoYXI+Ojpjb252ZXJ0VW5pY29kZShj
WzJdLCBjWzNdLCBjWzRdLCBjWzVdKSk7CisgICAgICAgICAgICAgICAgICAgIGsgKz0gNTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNbMF0gPT0gJyUnICYmIGsg
PD0gbGVuIC0gMyAmJiBpc0FTQ0lJSGV4RGlnaXQoY1sxXSkgJiYgaXNBU0NJSUhleERpZ2l0KGNb
Ml0pKSB7CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoTGV4ZXI8TENoYXI+Ojpjb252
ZXJ0SGV4KGNbMV0sIGNbMl0pKTsKKyAgICAgICAgICAgICAgICBrICs9IDI7CisgICAgICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgqYyk7CisgICAgICAgICAg
ICBrKys7CisgICAgICAgIH0gICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIGNvbnN0IFVD
aGFyKiBjaGFyYWN0ZXJzID0gc3RyLmNoYXJhY3RlcnMxNigpOworCisgICAgICAgIHdoaWxlIChr
IDwgbGVuKSB7CisgICAgICAgICAgICBjb25zdCBVQ2hhciogYyA9IGNoYXJhY3RlcnMgKyBrOwor
ICAgICAgICAgICAgVUNoYXIgdTsKKyAgICAgICAgICAgIGlmIChjWzBdID09ICclJyAmJiBrIDw9
IGxlbiAtIDYgJiYgY1sxXSA9PSAndScpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBU0NJSUhl
eERpZ2l0KGNbMl0pICYmIGlzQVNDSUlIZXhEaWdpdChjWzNdKSAmJiBpc0FTQ0lJSGV4RGlnaXQo
Y1s0XSkgJiYgaXNBU0NJSUhleERpZ2l0KGNbNV0pKSB7CisgICAgICAgICAgICAgICAgICAgIHUg
PSBMZXhlcjxVQ2hhcj46OmNvbnZlcnRVbmljb2RlKGNbMl0sIGNbM10sIGNbNF0sIGNbNV0pOwor
ICAgICAgICAgICAgICAgICAgICBjID0gJnU7CisgICAgICAgICAgICAgICAgICAgIGsgKz0gNTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNbMF0gPT0gJyUnICYm
IGsgPD0gbGVuIC0gMyAmJiBpc0FTQ0lJSGV4RGlnaXQoY1sxXSkgJiYgaXNBU0NJSUhleERpZ2l0
KGNbMl0pKSB7CisgICAgICAgICAgICAgICAgdSA9IFVDaGFyKExleGVyPFVDaGFyPjo6Y29udmVy
dEhleChjWzFdLCBjWzJdKSk7CiAgICAgICAgICAgICAgICAgYyA9ICZ1OwotICAgICAgICAgICAg
ICAgIGsgKz0gNTsKKyAgICAgICAgICAgICAgICBrICs9IDI7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgIH0gZWxzZSBpZiAoY1swXSA9PSAnJScgJiYgayA8PSBsZW4gLSAzICYmIGlzQVNDSUlIZXhE
aWdpdChjWzFdKSAmJiBpc0FTQ0lJSGV4RGlnaXQoY1syXSkpIHsKLSAgICAgICAgICAgIHUgPSBV
Q2hhcihMZXhlcjxVQ2hhcj46OmNvbnZlcnRIZXgoY1sxXSwgY1syXSkpOwotICAgICAgICAgICAg
YyA9ICZ1OwotICAgICAgICAgICAgayArPSAyOworICAgICAgICAgICAgaysrOworICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoKmMpOwogICAgICAgICB9Ci0gICAgICAgIGsrKzsKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoKmMpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcoZXhlYywgYnVpbGRlci50b1VTdHJpbmcoKSkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdCdWlsZGVyLmgJKHJldmlzaW9uIDEwMjAx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nQnVpbGRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICB2b2lkIGFwcGVuZChjb25zdCBMQ2hhciogc3RyLCBzaXplX3QgbGVuKQorICAgIHsK
KyAgICAgICAgaWYgKG1faXM4Qml0KSB7CisgICAgICAgICAgICBtX29rYXkgJj0gYnVmZmVyOC50
cnlBcHBlbmQoc3RyLCBsZW4pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIG1fb2theSAmPSBidWZmZXI4LnRyeVJlc2VydmVDYXBhY2l0eShidWZmZXIxNi5zaXplKCkg
KyBsZW4pOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAg
ICAgICAgICBVQ2hhciB1ID0gc3RyW2ldOworICAgICAgICAgICAgbV9va2F5ICY9IGJ1ZmZlcjE2
LnRyeUFwcGVuZCgmdSwgMSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgdm9pZCBhcHBl
bmQoY29uc3QgVUNoYXIqIHN0ciwgc2l6ZV90IGxlbikKICAgICB7CiAgICAgICAgIGlmIChtX2lz
OEJpdCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdCdWlsZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaAkocmV2aXNpb24gMTAyMDE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsMTcgQEAgcHVi
bGljOgogICAgICAgICAgICAgYXBwZW5kKCZjLCAxKTsKICAgICB9CiAKKyAgICB2b2lkIGFwcGVu
ZChMQ2hhciBjKQorICAgIHsKKyAgICAgICAgaWYgKG1fYnVmZmVyICYmIG1fbGVuZ3RoIDwgbV9i
dWZmZXItPmxlbmd0aCgpICYmIG1fc3RyaW5nLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBpZiAo
bV9pczhCaXQpCisgICAgICAgICAgICAgICAgbV9idWZmZXJDaGFyYWN0ZXJzOFttX2xlbmd0aCsr
XSA9IGM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbV9idWZmZXJDaGFyYWN0
ZXJzMTZbbV9sZW5ndGgrK10gPSBjOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGFwcGVu
ZCgmYywgMSk7CisgICAgfQorICAgIAogICAgIHZvaWQgYXBwZW5kKGNoYXIgYykKICAgICB7CiAg
ICAgICAgIGlmIChtX2J1ZmZlciAmJiBtX2xlbmd0aCA8IG1fYnVmZmVyLT5sZW5ndGgoKSAmJiBt
X3N0cmluZy5pc051bGwoKSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>