<?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>115722</bug_id>
          
          <creation_ts>2013-05-07 05:12:08 -0700</creation_ts>
          <short_desc>[sh4] Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT</short_desc>
          <delta_ts>2013-05-07 09:52:38 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Julien Brianceau">jbriance</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>885675</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-05-07 05:12:08 -0700</bug_when>
    <thetext>Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885676</commentid>
    <comment_count>1</comment_count>
      <attachid>200892</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-05-07 05:16:07 -0700</bug_when>
    <thetext>Created attachment 200892
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885677</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 05:17:09 -0700</bug_when>
    <thetext>Attachment 200892 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/assembler/MacroAssemblerSH4.h&apos;, u&apos;Source/JavaScriptCore/assembler/SH4Assembler.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/assembler/SH4Assembler.h:120:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885678</commentid>
    <comment_count>3</comment_count>
      <attachid>200892</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-05-07 05:19:55 -0700</bug_when>
    <thetext>Comment on attachment 200892
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT

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

&gt;&gt; Source/JavaScriptCore/assembler/SH4Assembler.h:120
&gt;&gt; +    MOVW_READ_RMINC_OPCODE = 0x6005,
&gt; 
&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]

All other 100+ entries in this enum are in capital letters, so I think I&apos;ll leave it as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885681</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-05-07 05:30:07 -0700</bug_when>
    <thetext>I didn&apos;t see any regression when testing this patch with:
- Tools/Scripts/run-javascriptcore-tests
- Tools/Scripts/run-fast-jsc


Very little speed improvement according to SunSpider with this patch:
Rev 149664 without patch:
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 13461.8ms +/- 0.3%
--------------------------------------------

  3d:                   2751.5ms +/- 0.2%
    cube:                838.5ms +/- 0.7%
    morph:               500.5ms +/- 0.2%
    raytrace:           1412.5ms +/- 0.4%

  access:               1948.0ms +/- 0.1%
    binary-trees:        136.5ms +/- 0.7%
    fannkuch:           1176.8ms +/- 0.4%
    nbody:               454.8ms +/- 1.2%
    nsieve:              180.0ms +/- 1.8%

  bitops:               1051.8ms +/- 0.5%
    3bit-bits-in-byte:    94.8ms +/- 0.8%
    bits-in-byte:        122.0ms +/- 0.0%
    bitwise-and:         202.8ms +/- 2.7%
    nsieve-bits:         632.3ms +/- 0.8%

  controlflow:           105.5ms +/- 4.5%
    recursive:           105.5ms +/- 4.5%

  crypto:               1236.0ms +/- 0.2%
    aes:                 725.0ms +/- 0.8%
    md5:                 328.3ms +/- 1.0%
    sha1:                182.8ms +/- 0.4%

  date:                 1983.0ms +/- 0.7%
    format-tofte:        927.3ms +/- 0.6%
    format-xparb:       1055.8ms +/- 1.8%

  math:                  988.5ms +/- 2.1%
    cordic:              289.8ms +/- 2.0%
    partial-sums:        395.5ms +/- 1.5%
    spectral-norm:       303.3ms +/- 6.0%

  regexp:                563.3ms +/- 0.1%
    dna:                 563.3ms +/- 0.1%

  string:               2834.3ms +/- 0.8%
    base64:              224.5ms +/- 3.3%
    fasta:               459.0ms +/- 9.8%
    tagcloud:            568.3ms +/- 0.9%
    unpack-code:        1242.5ms +/- 4.2%
    validate-input:      340.0ms +/- 2.5%




Rev 149664 with patch:
============================================
RESULTS (means and 95% confidence intervals)
--------------------------------------------
Total:                 13311.0ms +/- 0.5%
--------------------------------------------

  3d:                   2599.8ms +/- 0.4%
    cube:                834.5ms +/- 0.4%
    morph:               446.3ms +/- 0.9%
    raytrace:           1319.0ms +/- 1.0%

  access:               1957.3ms +/- 0.5%
    binary-trees:        137.3ms +/- 3.7%
    fannkuch:           1180.0ms +/- 1.1%
    nbody:               456.5ms +/- 0.9%
    nsieve:              183.5ms +/- 0.5%

  bitops:               1059.3ms +/- 0.4%
    3bit-bits-in-byte:    94.5ms +/- 1.7%
    bits-in-byte:        121.5ms +/- 0.8%
    bitwise-and:         202.0ms +/- 0.0%
    nsieve-bits:         641.3ms +/- 0.8%

  controlflow:           103.3ms +/- 0.8%
    recursive:           103.3ms +/- 0.8%

  crypto:               1236.3ms +/- 0.9%
    aes:                 739.8ms +/- 1.1%
    md5:                 313.5ms +/- 0.5%
    sha1:                183.0ms +/- 3.0%

  date:                 2020.0ms +/- 1.5%
    format-tofte:        949.0ms +/- 1.6%
    format-xparb:       1071.0ms +/- 3.4%

  math:                  987.0ms +/- 2.7%
    cordic:              293.0ms +/- 2.3%
    partial-sums:        410.8ms +/- 7.9%
    spectral-norm:       283.3ms +/- 0.3%

  regexp:                532.5ms +/- 1.2%
    dna:                 532.5ms +/- 1.2%

  string:               2815.8ms +/- 1.1%
    base64:              213.8ms +/- 2.0%
    fasta:               452.5ms +/- 9.2%
    tagcloud:            588.8ms +/- 3.3%
    unpack-code:        1189.3ms +/- 4.8%
    validate-input:      371.5ms +/- 2.9%</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885747</commentid>
    <comment_count>5</comment_count>
      <attachid>200892</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2013-05-07 08:54:16 -0700</bug_when>
    <thetext>Comment on attachment 200892
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT

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

I had some war moments while reading this, so i&apos;ll hold off on r+ pending replies

&gt; Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1043
&gt; -        m_assembler.loadConstant(address.offset, scr);
&gt; +        m_assembler.loadConstant(address.offset + 8, scr);

wat?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1057
&gt; +        add32(TrustedImm32(address.offset + 8), scr);

again wat?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1170
&gt; -        m_assembler.ensureSpace(m_assembler.maxInstructionSize + 68, sizeof(uint32_t));
&gt; +        m_assembler.ensureSpace(m_assembler.maxInstructionSize + 58, sizeof(uint32_t));

This magic constant scares me, what is it?

&gt;&gt;&gt; Source/JavaScriptCore/assembler/SH4Assembler.h:120
&gt;&gt;&gt; +    MOVW_READ_RMINC_OPCODE = 0x6005,
&gt;&gt; 
&gt;&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
&gt; 
&gt; All other 100+ entries in this enum are in capital letters, so I think I&apos;ll leave it as it is.

I think we just need to modify the style bot to ignore these</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885753</commentid>
    <comment_count>6</comment_count>
      <attachid>200892</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-05-07 09:06:02 -0700</bug_when>
    <thetext>Comment on attachment 200892
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT

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

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1043
&gt;&gt; +        m_assembler.loadConstant(address.offset + 8, scr);
&gt; 
&gt; wat?

Before patch we had something like:
1. load effective address in scr
2. store first part of the double at address scr
3. add 4 to scr
4. store second part of the double at address scr

With patch, I do this as it is in LLINT:
1. load effective address + 8 in scr
2. store the second part of the double at address scr with predecrement of scr (-4)
3. store the first part of the double at address scr with predecrement of scr (-4)

Result is the same but we save one opcode.

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1057
&gt;&gt; +        add32(TrustedImm32(address.offset + 8), scr);
&gt; 
&gt; again wat?

Same idea (and I removed the if, because this case is already checked in add32() function).

&gt;&gt; Source/JavaScriptCore/assembler/MacroAssemblerSH4.h:1170
&gt;&gt; +        m_assembler.ensureSpace(m_assembler.maxInstructionSize + 58, sizeof(uint32_t));
&gt; 
&gt; This magic constant scares me, what is it?

It scares me too :/
From what I understand, it ensures that we&apos;ll have enough contiguous space in the instruction buffer (to be able to do relative short jumps for instance).
I reduced the constant size from 10 because I removed 10 bytes of instructions, but I&apos;m not very proud of this...

&gt;&gt;&gt;&gt; Source/JavaScriptCore/assembler/SH4Assembler.h:120
&gt;&gt;&gt;&gt; +    MOVW_READ_RMINC_OPCODE = 0x6005,
&gt;&gt;&gt; 
&gt;&gt;&gt; enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
&gt;&gt; 
&gt;&gt; All other 100+ entries in this enum are in capital letters, so I think I&apos;ll leave it as it is.
&gt; 
&gt; I think we just need to modify the style bot to ignore these

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885792</commentid>
    <comment_count>7</comment_count>
      <attachid>200892</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 09:52:36 -0700</bug_when>
    <thetext>Comment on attachment 200892
Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT

Clearing flags on attachment: 200892

Committed r149676: &lt;http://trac.webkit.org/changeset/149676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885793</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-07 09:52:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>200892</attachid>
            <date>2013-05-07 05:16:07 -0700</date>
            <delta_ts>2013-05-07 09:52:36 -0700</delta_ts>
            <desc>Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT</desc>
            <filename>bug-115722.patch</filename>
            <type>text/plain</type>
            <size>7095</size>
            <attacher name="Julien Brianceau">jbriance</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ5NjY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDEzLTA1LTA3ICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VhdUBuZHMuY29tPgorCisg
ICAgICAgIFRha2UgYWR2YW50YWdlIG9mIHByZS1kZWNyZW1lbnQgYW5kIHBvc3QtaW5jcmVtZW50
IG9wY29kZXMgZm9yIHNoNCBiYXNlIEpJVC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTExNTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyU0g0Lmg6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyU0g0Ojpsb2FkOFBvc3RJbmMpOgorICAgICAgICAoTWFj
cm9Bc3NlbWJsZXJTSDQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9hZDE2
VW5hbGlnbmVkKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJTSDQ6OmxvYWQxNlBvc3RJ
bmMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6c3RvcmVEb3VibGUpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclNINDo6bG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jk
cyk6CisgICAgICAgICogYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpT
SDRBc3NlbWJsZXI6Om1vdndNZW1SZWdJbik6CisgICAgICAgIChTSDRBc3NlbWJsZXIpOgorICAg
ICAgICAoSlNDOjpTSDRBc3NlbWJsZXI6Om1vdmJNZW1SZWdJbik6CisgICAgICAgIChKU0M6OlNI
NEFzc2VtYmxlcjo6cHJpbnRJbnN0cik6CisKIDIwMTMtMDUtMDcgIE1pa2hhaWwgUG96ZG55YWtv
diAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAgSGFzaFRyYWl0czxS
ZWZQdHI8UD4gPjo6UGVla1R5cGUgc2hvdWxkIGJlIHJhdyBwb2ludGVyIGZvciBiZXR0ZXIgcGVy
Zm9ybWFuY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJTSDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyU0g0LmgJKHJldmlzaW9uIDE0OTY2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpAQCAt
NjA2LDYgKzYwNiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CiAg
ICAgfQogCisgICAgdm9pZCBsb2FkOFBvc3RJbmMoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZiTWVtUmVnSW4oYmFzZSwgZGVz
dCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmV4dHViKGRlc3QsIGRlc3QpOworICAgIH0KKwogICAg
IHZvaWQgbG9hZDhTaWduZWQoQmFzZUluZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CkBAIC03MzYsOCAr
NzQyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mu
b2Zmc2V0KSwgc2NyKTsKIAogICAgICAgICBhZGQzMihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAg
ICAgIGxvYWQ4KHNjciwgc2NyMSk7Ci0gICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigxKSwgc2Ny
KTsKKyAgICAgICAgbG9hZDhQb3N0SW5jKHNjciwgc2NyMSk7CiAgICAgICAgIGxvYWQ4KHNjciwg
ZGVzdCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNobGxJbW04cig4LCBkZXN0KTsKICAgICAgICAg
b3IzMihzY3IxLCBkZXN0KTsKQEAgLTc2Myw2ICs3NjgsMTIgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci5leHR1dyhkZXN0LCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGxvYWQxNlBv
c3RJbmMoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5tb3Z3TWVtUmVnSW4oYmFzZSwgZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmV4dHV3KGRlc3QsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgbG9hZDE2U2lnbmVkKEJhc2VJ
bmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBSZWdpc3RlcklE
IHNjciA9IGNsYWltU2NyYXRjaCgpOwpAQCAtMTAyOSwxMSArMTA0MCwxMCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRk
cmVzcykKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChhZGRyZXNzLm9mZnNldCwgc2NyKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGFkZHJlc3Mub2Zmc2V0ICsgOCwgc2NyKTsK
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbFJlZ1JlZyhhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybSgoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwgc2Ny
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDQsIHNjcik7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLmZtb3ZzV3JpdGVybShzcmMsIHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmZtb3Zz
V3JpdGVybmRlYyhzcmMsIHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmZtb3ZzV3JpdGVybmRl
YygoRlBSZWdpc3RlcklEKShzcmMgKyAxKSwgc2NyKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2go
c2NyKTsKICAgICB9CiAKQEAgLTEwNDQsMTIgKzEwNTQsMTAgQEAgcHVibGljOgogICAgICAgICBt
b3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7CiAgICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJbW0zMihh
ZGRyZXNzLnNjYWxlKSwgc2NyKTsKICAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBzY3IpOwot
ICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAgICBhZGQzMihUcnVzdGVkSW1t
MzIoYWRkcmVzcy5vZmZzZXQpLCBzY3IpOworICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRk
cmVzcy5vZmZzZXQgKyA4KSwgc2NyKTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRl
cm0oKEZQUmVnaXN0ZXJJRCkoc3JjICsgMSksIHNjcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGxJbW04cig0LCBzY3IpOwotICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm0oc3JjLCBz
Y3IpOworICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm5kZWMoc3JjLCBzY3IpOworICAg
ICAgICBtX2Fzc2VtYmxlci5mbW92c1dyaXRlcm5kZWMoKEZQUmVnaXN0ZXJJRCkoc3JjICsgMSks
IHNjcik7CiAKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICB9CkBAIC0xMTU5LDEx
ICsxMTY3LDExIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0KQogICAgICAg
ICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgc2NyKTsKIAotICAgICAg
ICBtX2Fzc2VtYmxlci5lbnN1cmVTcGFjZShtX2Fzc2VtYmxlci5tYXhJbnN0cnVjdGlvblNpemUg
KyA2OCwgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmVuc3VyZVNwYWNl
KG1fYXNzZW1ibGVyLm1heEluc3RydWN0aW9uU2l6ZSArIDU4LCBzaXplb2YodWludDMyX3QpKTsK
ICAgICAgICAgbW92ZShzY3IsIFNINFJlZ2lzdGVyczo6cjApOwotICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRsSW1tOHIoMHgzLCBTSDRSZWdpc3RlcnM6OnIwKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
Y21wRXFJbW1SMCgweDAsIFNINFJlZ2lzdGVyczo6cjApOworICAgICAgICBtX2Fzc2VtYmxlci50
ZXN0bEltbThyKDB4MywgU0g0UmVnaXN0ZXJzOjpyMCk7CiAgICAgICAgIG1fanVtcCA9IEp1bXAo
bV9hc3NlbWJsZXIuam5lKCksIFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpOworCiAgICAgICAgIGlm
IChkZXN0ICE9IFNINFJlZ2lzdGVyczo6cjApCiAgICAgICAgICAgICBtb3ZlKHNjcjEsIFNINFJl
Z2lzdGVyczo6cjApOwogCkBAIC0xMTcxLDI3ICsxMTc5LDIzIEBAIHB1YmxpYzoKICAgICAgICAg
ZW5kLmFwcGVuZChKdW1wKG1fYXNzZW1ibGVyLmJyYSgpLCBTSDRBc3NlbWJsZXI6Okp1bXBOZWFy
KSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBtX2p1bXAubGluayh0aGlz
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYW5kbEltbThyKDB4MSwgU0g0UmVnaXN0ZXJzOjpyMCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1tUjAoMHgwLCBTSDRSZWdpc3RlcnM6OnIwKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIudGVzdGxJbW04cigweDEsIFNINFJlZ2lzdGVyczo6cjApOwog
CiAgICAgICAgIGlmIChkZXN0ICE9IFNINFJlZ2lzdGVyczo6cjApCiAgICAgICAgICAgICBtb3Zl
KHNjcjEsIFNINFJlZ2lzdGVyczo6cjApOwogCiAgICAgICAgIG1fanVtcCA9IEp1bXAobV9hc3Nl
bWJsZXIuam5lKCksIFNINEFzc2VtYmxlcjo6SnVtcE5lYXIpOwotICAgICAgICBsb2FkMTYoc2Ny
LCBzY3IxKTsKLSAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKDIpLCBzY3IpOworICAgICAgICBs
b2FkMTZQb3N0SW5jKHNjciwgc2NyMSk7CiAgICAgICAgIGxvYWQxNihzY3IsIGRlc3QpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5zaGxsSW1tOHIoMTYsIGRlc3QpOwogICAgICAgICBvcjMyKHNjcjEs
IGRlc3QpOwogICAgICAgICBlbmQuYXBwZW5kKEp1bXAobV9hc3NlbWJsZXIuYnJhKCksIFNINEFz
c2VtYmxlcjo6SnVtcE5lYXIpKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAg
IG1fanVtcC5saW5rKHRoaXMpOwotICAgICAgICBsb2FkOChzY3IsIHNjcjEpOwotICAgICAgICBh
ZGQzMihUcnVzdGVkSW1tMzIoMSksIHNjcik7Ci0gICAgICAgIGxvYWQxNihzY3IsIGRlc3QpOwor
ICAgICAgICBsb2FkOFBvc3RJbmMoc2NyLCBzY3IxKTsKKyAgICAgICAgbG9hZDE2UG9zdEluYyhz
Y3IsIGRlc3QpOwogICAgICAgICBtX2Fzc2VtYmxlci5zaGxsSW1tOHIoOCwgZGVzdCk7CiAgICAg
ICAgIG9yMzIoZGVzdCwgc2NyMSk7Ci0gICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMigyKSwgc2Ny
KTsKICAgICAgICAgbG9hZDgoc2NyLCBkZXN0KTsKICAgICAgICAgbV9hc3NlbWJsZXIuc2hsbElt
bThyKDgsIGRlc3QpOwogICAgICAgICBtX2Fzc2VtYmxlci5zaGxsSW1tOHIoMTYsIGRlc3QpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5o
CShyZXZpc2lvbiAxNDk2NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NI
NEFzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAgZW51bSB7CiAg
ICAgTU9WV19XUklURV9STl9PUENPREUgPSAweDIwMDEsCiAgICAgTU9WV19XUklURV9SMFJOX09Q
Q09ERSA9IDB4MDAwNSwKICAgICBNT1ZXX1JFQURfUk1fT1BDT0RFID0gMHg2MDAxLAorICAgIE1P
VldfUkVBRF9STUlOQ19PUENPREUgPSAweDYwMDUsCiAgICAgTU9WV19SRUFEX1IwUk1fT1BDT0RF
ID0gMHgwMDBkLAogICAgIE1PVldfUkVBRF9PRkZSTV9PUENPREUgPSAweDg1MDAsCiAgICAgTU9W
V19SRUFEX09GRlBDX09QQ09ERSA9IDB4OTAwMCwKQEAgLTEwMzgsNiArMTAzOSwxMiBAQCBwdWJs
aWM6CiAgICAgICAgIG9uZVNob3J0T3Aob3BjKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdndNZW1S
ZWdJbihSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgdWlu
dDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAxKE1PVldfUkVBRF9STUlOQ19PUENPREUsIGRzdCwg
YmFzZSk7CisgICAgICAgIG9uZVNob3J0T3Aob3BjKTsKKyAgICB9CisKICAgICB2b2lkIG1vdndQ
Q1JlZyhpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgQVNTRVJUKGJhc2UgPT0gU0g0UmVnaXN0ZXJzOjpwYyk7CkBAIC0xMTMzLDYgKzEx
NDAsMTIgQEAgcHVibGljOgogICAgICAgICBvbmVTaG9ydE9wKG9wYyk7CiAgICAgfQogCisgICAg
dm9pZCBtb3ZiTWVtUmVnSW4oUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB7
CisgICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29kZUdyb3VwMShNT1ZCX1JFQURfUk1JTkNf
T1BDT0RFLCBkc3QsIGJhc2UpOworICAgICAgICBvbmVTaG9ydE9wKG9wYyk7CisgICAgfQorCiAg
ICAgdm9pZCBtb3ZiUmVnTWVtcjAoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgdWludDE2X3Qgb3BjID0gZ2V0T3Bjb2RlR3JvdXAxKE1PVkJfV1JJVEVfUjBS
Tl9PUENPREUsIGRzdCwgc3JjKTsKQEAgLTE5NTgsNiArMTk3MSw5IEBAIHB1YmxpYzoKICAgICAg
ICAgY2FzZSBNT1ZXX1JFQURfUk1fT1BDT0RFOgogICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBN
T1YuVyBAUiVkLCBSJWRcbiI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNT1ZX
X1JFQURfUk1JTkNfT1BDT0RFOgorICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBNT1YuVyBAUiVk
KywgUiVkXG4iOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTU9WV19SRUFEX1Iw
Uk1fT1BDT0RFOgogICAgICAgICAgICAgZm9ybWF0ID0gIiAgICBNT1YuVyBAKFIwLCBSJWQpLCBS
JWRcbiI7CiAgICAgICAgICAgICBicmVhazsK
</data>

          </attachment>
      

    </bug>

</bugzilla>