<?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>69717</bug_id>
          
          <creation_ts>2011-10-09 01:02:13 -0700</creation_ts>
          <short_desc>Fix value profiling in 32_64 JIT</short_desc>
          <delta_ts>2011-10-09 12:11:50 -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="Yuqiang Xian">yuqiang.xian</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>480670</commentid>
    <comment_count>0</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-09 01:02:13 -0700</bug_when>
    <thetext>Current value profiling for 32_64 JIT is broken and cannot record correct predicated types, which results in many speculation failures in the 32_64 DFG JIT, fallbacks to baseline JIT, and re-optimizations again and again. With this fix 32_64 DFG JIT can demonstrate real performance gains.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480673</commentid>
    <comment_count>1</comment_count>
      <attachid>110292</attachid>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-09 01:12:20 -0700</bug_when>
    <thetext>Created attachment 110292
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480675</commentid>
    <comment_count>2</comment_count>
      <attachid>110292</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 01:29:00 -0700</bug_when>
    <thetext>Comment on attachment 110292
the patch

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

It would be great to see the performance impact, if any, on JSVALUE64 and JSVALUE32_64.

&gt; Source/JavaScriptCore/bytecode/ValueProfile.cpp:64
&gt; +        if (!value) {

Have you made sure that these changes don&apos;t perturb SunSpider, V8, and Kraken performance on JSVALUE64?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480683</commentid>
    <comment_count>3</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-09 02:03:11 -0700</bug_when>
    <thetext>Performance result on Mac 64 - no difference with this change.

Kraken

TEST                         COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:                 -                 4142.9ms +/- 0.2%   4146.3ms +/- 0.4%

=============================================================================

  ai:                        -                  802.3ms +/- 0.1%    802.7ms +/- 0.1%
    astar:                   -                  802.3ms +/- 0.1%    802.7ms +/- 0.1%

  audio:                     ??                1091.6ms +/- 0.3%   1093.9ms +/- 0.8%     not conclusive: might be *1.002x as slow*
    beat-detection:          -                  222.0ms +/- 0.3%    221.3ms +/- 0.2%
    dft:                     ??                 440.9ms +/- 0.1%    445.0ms +/- 1.9%     not conclusive: might be *1.009x as slow*
    fft:                     -                  152.0ms +/- 0.2%    152.0ms +/- 0.0%
    oscillator:              -                  276.7ms +/- 1.2%    275.6ms +/- 0.3%

  imaging:                   ??                1342.4ms +/- 0.8%   1343.9ms +/- 1.1%     not conclusive: might be *1.001x as slow*
    gaussian-blur:           ??                 604.2ms +/- 0.2%    606.8ms +/- 0.6%     not conclusive: might be *1.004x as slow*
    darkroom:                -                  503.3ms +/- 2.1%    502.1ms +/- 2.6%
    desaturate:              -                  234.9ms +/- 0.1%    235.0ms +/- 0.1%

  json:                      1.006x as fast     158.6ms +/- 0.2%    157.7ms +/- 0.3%     significant
    parse-financial:         -                   69.2ms +/- 0.4%     68.9ms +/- 0.3%
    stringify-tinderbox:     1.007x as fast      89.4ms +/- 0.4%     88.8ms +/- 0.5%     significant

  stanford:                  -                  748.0ms +/- 0.6%    748.1ms +/- 0.4%
    crypto-aes:              -                  153.5ms +/- 0.5%    153.0ms +/- 0.5%
    crypto-ccm:              -                  137.7ms +/- 1.1%    137.7ms +/- 1.0%
    crypto-pbkdf2:           ??                 358.0ms +/- 1.1%    358.4ms +/- 0.5%     not conclusive: might be *1.001x as slow*
    crypto-sha256-iterative: ??                  98.8ms +/- 0.5%     99.0ms +/- 0.3%     not conclusive: might be *1.002x as slow*


SunSpider

TEST                   COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:           -                 185.4ms +/- 0.4%   184.6ms +/- 0.4%

=============================================================================

  3d:                  -                  27.1ms +/- 1.5%    26.9ms +/- 2.0%
    cube:              -                  10.0ms +/- 0.0%    10.0ms +/- 0.0%
    morph:             -                   8.0ms +/- 0.0%     8.0ms +/- 0.0%
    raytrace:          -                   9.1ms +/- 4.5%     8.9ms +/- 5.9%

  access:              -                  17.2ms +/- 3.3%    16.7ms +/- 4.5%
    binary-trees:      -                   2.5ms +/- 15.1%     2.5ms +/- 20.2%
    fannkuch:          -                   7.5ms +/- 6.7%     7.1ms +/- 3.2%
    nbody:             -                   4.2ms +/- 10.8%     4.0ms +/- 0.0%
    nsieve:            ??                  3.0ms +/- 0.0%     3.1ms +/- 7.3%     not conclusive: might be *1.033x as slow*

  bitops:              -                  14.3ms +/- 2.4%    14.0ms +/- 0.0%
    3bit-bits-in-byte: -                   1.0ms +/- 0.0%     1.0ms +/- 0.0%
    bits-in-byte:      -                   5.0ms +/- 0.0%     5.0ms +/- 0.0%
    bitwise-and:       -                   3.2ms +/- 9.4%     3.0ms +/- 0.0%
    nsieve-bits:       -                   5.1ms +/- 4.4%     5.0ms +/- 0.0%

  controlflow:         -                   2.0ms +/- 0.0%     2.0ms +/- 0.0%
    recursive:         -                   2.0ms +/- 0.0%     2.0ms +/- 0.0%

  crypto:              -                  12.0ms +/- 0.0%    12.0ms +/- 0.0%
    aes:               -                   7.0ms +/- 0.0%     7.0ms +/- 0.0%
    md5:               -                   3.0ms +/- 0.0%     3.0ms +/- 0.0%
    sha1:              -                   2.0ms +/- 0.0%     2.0ms +/- 0.0%

  date:                -                  22.0ms +/- 0.0%    22.0ms +/- 0.0%
    format-tofte:      -                  12.0ms +/- 0.0%    12.0ms +/- 0.0%
    format-xparb:      -                  10.0ms +/- 0.0%    10.0ms +/- 0.0%

  math:                -                  20.0ms +/- 0.0%    20.0ms +/- 0.0%
    cordic:            -                   7.0ms +/- 0.0%     7.0ms +/- 0.0%
    partial-sums:      -                  10.0ms +/- 0.0%    10.0ms +/- 0.0%
    spectral-norm:     -                   3.0ms +/- 0.0%     3.0ms +/- 0.0%

  regexp:              ??                 12.8ms +/- 2.4%    13.0ms +/- 0.0%     not conclusive: might be *1.016x as slow*
    dna:               ??                 12.8ms +/- 2.4%    13.0ms +/- 0.0%     not conclusive: might be *1.016x as slow*

  string:              -                  58.0ms +/- 0.0%    58.0ms +/- 0.0%
    base64:            -                   6.0ms +/- 0.0%     6.0ms +/- 0.0%
    fasta:             -                   7.0ms +/- 0.0%     7.0ms +/- 0.0%
    tagcloud:          -                  13.0ms +/- 0.0%    13.0ms +/- 0.0%
    unpack-code:       -                  25.0ms +/- 0.0%    25.0ms +/- 0.0%
    validate-input:    -                   7.0ms +/- 0.0%     7.0ms +/- 0.0%


V8

Before

Richards: 5786
DeltaBlue: 4463
Crypto: 13952
RayTrace: 7770
EarleyBoyer: 8285
RegExp: 1741
Splay: 5025
----
Score (version 6): 5730


After

Richards: 5952
DeltaBlue: 4450
Crypto: 13942
RayTrace: 8083
EarleyBoyer: 8240
RegExp: 1738
Splay: 5039
----
Score (version 6): 5779</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480684</commentid>
    <comment_count>4</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-09 02:06:10 -0700</bug_when>
    <thetext>Performance result on Linux IA32 with DFG JIT turned on. Only part of the kraken result is available. There are still some issues with v8 benchmarks.

TEST                     COMPARISON            FROM (ToT)                 TO (Mod)        DETAILS

=============================================================================

** TOTAL **:             1.47x as fast     10246.2ms +/- 0.3%   6970.3ms +/- 0.1%     significant

=============================================================================

  ai:                    2.88x as fast      2270.8ms +/- 0.3%    789.7ms +/- 0.1%     significant
    astar:               2.88x as fast      2270.8ms +/- 0.3%    789.7ms +/- 0.1%     significant

  audio:                 1.071x as fast     2427.6ms +/- 0.6%   2266.4ms +/- 0.2%     significant
    beat-detection:      1.116x as fast      728.1ms +/- 0.5%    652.5ms +/- 0.5%     significant
    dft:                 1.081x as fast      602.8ms +/- 0.8%    557.6ms +/- 0.3%     significant
    fft:                 1.164x as fast      552.6ms +/- 0.5%    474.6ms +/- 0.1%     significant
    oscillator:          *1.069x as slow*    544.1ms +/- 0.8%    581.7ms +/- 0.1%     significant

  imaging:               1.49x as fast      4376.0ms +/- 0.5%   2929.3ms +/- 0.1%     significant
    gaussian-blur:       2.21x as fast      2843.7ms +/- 1.2%   1284.9ms +/- 0.1%     significant
    darkroom:            *1.135x as slow*    634.1ms +/- 1.8%    719.5ms +/- 0.6%     significant
    desaturate:          *1.030x as slow*    898.2ms +/- 0.3%    924.9ms +/- 0.2%     significant

  json:                  -                   215.1ms +/- 0.4%    214.8ms +/- 0.5%
    parse-financial:     1.021x as fast       98.5ms +/- 0.4%     96.5ms +/- 0.5%     significant
    stringify-tinderbox: *1.015x as slow*    116.6ms +/- 0.5%    118.3ms +/- 0.7%     significant

  stanford:              1.24x as fast       956.7ms +/- 0.4%    770.1ms +/- 0.3%     significant
    crypto-aes:          1.105x as fast      189.7ms +/- 1.3%    171.6ms +/- 1.2%     significant
    crypto-pbkdf2:       1.28x as fast       767.0ms +/- 0.4%    598.5ms +/- 0.1%     significant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480685</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 02:14:44 -0700</bug_when>
    <thetext>This looks great!

By the way, you might find it easier to run all of the benchmarks in one go using Tools/Scripts/bencher.  You need two checkouts, which you build separately: one for baseline (no changes), one with your changes.  You also need ruby installed, and the json gem.  And a ~/.bencher file.  When you run bencher the first time, it will tell you how to set this file up.

Then do:

Tools/Scripts/bencher TipOfTree:&lt;path-to-baseline-jsc&gt; MyChanges:&lt;path-to-your-jsc&gt;

Example:

Tools/Scripts/bencher TipOfTree:/Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc CFA:/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc

I find that this makes it a bit faster to run benchmarks.  But the way you ran them is fine, as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480691</commentid>
    <comment_count>6</comment_count>
      <attachid>110292</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 03:18:29 -0700</bug_when>
    <thetext>Comment on attachment 110292
the patch

Clearing flags on attachment: 110292

Committed r97025: &lt;http://trac.webkit.org/changeset/97025&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480692</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-09 03:18:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480711</commentid>
    <comment_count>8</comment_count>
    <who name="Yuqiang Xian">yuqiang.xian</who>
    <bug_when>2011-10-09 07:09:58 -0700</bug_when>
    <thetext>Thanks for your hints, Filip. I will try the approach you suggested next time.

BTW, one thing I think need to clarify is that the performance result of 32-bit DFG I pasted before is for the comparison between DFG w/o and w/ this patch (i.e. both have DFG turned on).

Here&apos;s the comparsion between w/o DFG and w/ DFG after this change, tested on Linux ia32. We still have two cases failed to run (stanford-crypto-ccm produces wrong results and stanford-crypto-sha256-iterative crashes) and under investigations.

TEST                     COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:             1.39x as fast     9678.1ms +/- 0.0%   6970.3ms +/- 0.1%     significant

=============================================================================

  ai:                    2.68x as fast     2114.8ms +/- 0.1%    789.7ms +/- 0.1%     significant
    astar:               2.68x as fast     2114.8ms +/- 0.1%    789.7ms +/- 0.1%     significant

  audio:                 1.037x as fast    2349.3ms +/- 0.1%   2266.4ms +/- 0.2%     significant
    beat-detection:      1.090x as fast     711.5ms +/- 0.3%    652.5ms +/- 0.5%     significant
    dft:                 1.045x as fast     582.5ms +/- 0.4%    557.6ms +/- 0.3%     significant
    fft:                 1.113x as fast     528.4ms +/- 0.2%    474.6ms +/- 0.1%     significant
    oscillator:          *1.104x as slow*   526.9ms +/- 0.1%    581.7ms +/- 0.1%     significant

  imaging:               1.39x as fast     4082.4ms +/- 0.1%   2929.3ms +/- 0.1%     significant
    gaussian-blur:       1.98x as fast     2543.3ms +/- 0.1%   1284.9ms +/- 0.1%     significant
    darkroom:            *1.142x as slow*   630.0ms +/- 0.1%    719.5ms +/- 0.6%     significant
    desaturate:          *1.017x as slow*   909.1ms +/- 0.0%    924.9ms +/- 0.2%     significant

  json:                  *1.013x as slow*   212.0ms +/- 0.4%    214.8ms +/- 0.5%     significant
    parse-financial:     *1.010x as slow*    95.5ms +/- 0.4%     96.5ms +/- 0.5%     significant
    stringify-tinderbox: *1.015x as slow*   116.5ms +/- 0.5%    118.3ms +/- 0.7%     significant

  stanford:              1.194x as fast     919.6ms +/- 0.2%    770.1ms +/- 0.3%     significant
    crypto-aes:          ??                 170.1ms +/- 0.3%    171.6ms +/- 1.2%     not conclusive: might be *1.009x as slow*
    crypto-pbkdf2:       1.25x as fast      749.5ms +/- 0.2%    598.5ms +/- 0.1%     significant</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480730</commentid>
    <comment_count>9</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-10-09 12:11:50 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Thanks for your hints, Filip. I will try the approach you suggested next time.
&gt; 
&gt; BTW, one thing I think need to clarify is that the performance result of 32-bit DFG I pasted before is for the comparison between DFG w/o and w/ this patch (i.e. both have DFG turned on).
&gt; 
&gt; Here&apos;s the comparsion between w/o DFG and w/ DFG after this change, tested on Linux ia32. We still have two cases failed to run (stanford-crypto-ccm produces wrong results and stanford-crypto-sha256-iterative crashes) and under investigations.

Ah!  Thanks for the clarification.

&gt; ** TOTAL **:             1.39x as fast     9678.1ms +/- 0.0%   6970.3ms +/- 0.1%     significant

This is starting to look good!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110292</attachid>
            <date>2011-10-09 01:12:20 -0700</date>
            <delta_ts>2011-10-09 03:18:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>69717.patch</filename>
            <type>text/plain</type>
            <size>8520</size>
            <attacher name="Yuqiang Xian">yuqiang.xian</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTcwMjEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAK
KzIwMTEtMTAtMDkgIFl1cWlhbmcgWGlhbiAgPHl1cWlhbmcueGlhbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgRml4IHZhbHVlIHByb2ZpbGluZyBpbiAzMl82NCBKSVQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY5NzE3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudCB2YWx1ZSBwcm9maWxpbmcgZm9y
IDMyXzY0IEpJVCBpcyBicm9rZW4gYW5kIGNhbm5vdCByZWNvcmQKKyAgICAgICAgY29ycmVjdCBw
cmVkaWNhdGVkIHR5cGVzLCB3aGljaCByZXN1bHRzIGluIG1hbnkgc3BlY3VsYXRpb24gZmFpbHVy
ZXMKKyAgICAgICAgaW4gdGhlIDMyXzY0IERGRyBKSVQsIGZhbGxiYWNrcyB0byBiYXNlbGluZSBK
SVQsIGFuZCByZS1vcHRpbWl6YXRpb25zCisgICAgICAgIGFnYWluIGFuZCBhZ2Fpbi4gCisgICAg
ICAgIFdpdGggdGhpcyBmaXggMzJfNjQgREZHIEpJVCBjYW4gZGVtb25zdHJhdGUgcmVhbCBwZXJm
b3JtYW5jZSBnYWlucy4KKworICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5jcHA6Cisg
ICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6Y29tcHV0ZVN0YXRpc3RpY3MpOgorICAgICAgICAq
IGJ5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OmNs
YXNzSW5mbyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6bnVtYmVyT2ZTYW1wbGVzKToK
KyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjppc0xpdmUpOgorICAgICAgICAoSlNDOjpWYWx1
ZVByb2ZpbGU6Om51bWJlck9mSW50MzJzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlOjpu
dW1iZXJPZkRvdWJsZXMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6Om51bWJlck9mQm9v
bGVhbnMpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGU6OmR1bXApOgorICAgICAgICAgICAg
RW1wdHkgdmFsdWUgY2hlY2sgc2hvdWxkIGJlIHBlcmZvcm1lZCBvbiBkZWNvZGVkIEpTVmFsdWUs
CisgICAgICAgICAgICBhcyBmb3IgMzJfNjQgZW1wdHkgdmFsdWUgaXMgbm90IGlkZW50aWNhbCB0
byBlbmNvZGVkIDAuCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6CisgICAg
ICAgIChKU0M6OkpJVDo6ZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZSk6CisgICAgICAgICogaml0L0pJ
VFN0dWJDYWxsLmg6CisgICAgICAgIChKU0M6OkpJVFN0dWJDYWxsOjpjYWxsV2l0aFZhbHVlUHJv
ZmlsaW5nKToKKyAgICAgICAgICAgIFJlY29yZCB0aGUgcmlnaHQgcHJvZmlsaW5nIHJlc3VsdCBm
b3IgMzJfNjQuCisKIDIwMTEtMTAtMDggIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgc3RhdGljIHZlcnNpb24gb2YgSlNDZWxsOjpnZXRDb25z
dHJ1Y3REYXRhCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9m
aWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFs
dWVQcm9maWxlLmNwcAkocmV2aXNpb24gOTcwMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsOCBA
QCB2b2lkIFZhbHVlUHJvZmlsZTo6Y29tcHV0ZVN0YXRpc3RpY3MoY29uCiB2b2lkIFZhbHVlUHJv
ZmlsZTo6Y29tcHV0ZVN0YXRpc3RpY3MoU3RhdGlzdGljcyYgc3RhdGlzdGljcykgY29uc3QKIHsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAg
ICAgICAgaWYgKCFtX2J1Y2tldHNbaV0pIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOworICAgICAgICBpZiAoIXZhbHVlKSB7CiAgICAgICAg
ICAgICBXZWFrQnVja2V0IHdlYWtCdWNrZXQgPSBtX3dlYWtCdWNrZXRzW2ldOwogICAgICAgICAg
ICAgaWYgKCEhd2Vha0J1Y2tldCkgewogICAgICAgICAgICAgICAgIHN0YXRpc3RpY3Muc2FtcGxl
cysrOwpAQCAtNzIsNyArNzMsNiBAQCB2b2lkIFZhbHVlUHJvZmlsZTo6Y29tcHV0ZVN0YXRpc3Rp
Y3MoU3RhCiAgICAgICAgIAogICAgICAgICBzdGF0aXN0aWNzLnNhbXBsZXMrKzsKICAgICAgICAg
Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRzW2ldKTsK
ICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkKICAgICAgICAgICAgIHN0YXRpc3RpY3MuaW50
MzJzKys7CiAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmlzRG91YmxlKCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCShyZXZpc2lvbiA5NzAx
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsOCArNTUsOCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICAK
ICAgICBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbyh1bnNpZ25lZCBidWNrZXQpIGNvbnN0CiAg
ICAgewotICAgICAgICBpZiAoISFtX2J1Y2tldHNbYnVja2V0XSkgewotICAgICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbYnVja2V0XSk7CisgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRzW2J1Y2tldF0pOworICAg
ICAgICBpZiAoISF2YWx1ZSkgewogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0NlbGwoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5hc0NlbGwo
KS0+c3RydWN0dXJlKCktPmNsYXNzSW5mbygpOwpAQCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgVmFs
dWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkgewotICAgICAg
ICAgICAgaWYgKCEhbV9idWNrZXRzW2ldIHx8ICEhbV93ZWFrQnVja2V0c1tpXSkKKyAgICAgICAg
ICAgIGlmICghIUpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pIHx8ICEhbV93ZWFrQnVja2V0
c1tpXSkKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtODIsNyArODIsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICBi
b29sIGlzTGl2ZSgpIGNvbnN0CiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghIW1fYnVja2V0c1tp
XSB8fCAhIW1fd2Vha0J1Y2tldHNbaV0pCisgICAgICAgICAgICBpZiAoISFKU1ZhbHVlOjpkZWNv
ZGUobV9idWNrZXRzW2ldKSB8fCAhIW1fd2Vha0J1Y2tldHNbaV0pCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtOTksNyAr
OTksNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJl
c3VsdCA9IDA7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tl
dHM7ICsraSkgewotICAgICAgICAgICAgaWYgKCEhbV9idWNrZXRzW2ldICYmIEpTVmFsdWU6OmRl
Y29kZShtX2J1Y2tldHNbaV0pLmlzSW50MzIoKSkKKyAgICAgICAgICAgIGlmIChKU1ZhbHVlOjpk
ZWNvZGUobV9idWNrZXRzW2ldKS5pc0ludDMyKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwOSw3ICsxMDksNyBAQCBz
dHJ1Y3QgVmFsdWVQcm9maWxlIHsKICAgICB7CiAgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkJ1Y2tldHM7ICsraSkg
ewotICAgICAgICAgICAgaWYgKCEhbV9idWNrZXRzW2ldICYmIEpTVmFsdWU6OmRlY29kZShtX2J1
Y2tldHNbaV0pLmlzRG91YmxlKCkpCisgICAgICAgICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKG1f
YnVja2V0c1tpXSkuaXNEb3VibGUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQrKzsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTcwLDcgKzE3MCw3IEBAIHN0cnVjdCBW
YWx1ZVByb2ZpbGUgewogICAgIHsKICAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMDsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsgKytpKSB7Ci0gICAg
ICAgICAgICBpZiAoISFtX2J1Y2tldHNbaV0gJiYgSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tp
XSkuaXNCb29sZWFuKCkpCisgICAgICAgICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0
c1tpXSkuaXNCb29sZWFuKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzOCw3ICsyMzgsOCBAQCBzdHJ1Y3QgVmFsdWVQ
cm9maWxlIHsKICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uVG9TdHJpbmcobV9wcmVkaWN0aW9u
KSwgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24pOwogICAgICAgICBib29sIGZpcnN0ID0g
dHJ1ZTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQnVja2V0czsg
KytpKSB7Ci0gICAgICAgICAgICBpZiAoISFtX2J1Y2tldHNbaV0gfHwgISFtX3dlYWtCdWNrZXRz
W2ldKSB7CisgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVj
a2V0c1tpXSk7CisgICAgICAgICAgICBpZiAoISF2YWx1ZSB8fCAhIW1fd2Vha0J1Y2tldHNbaV0p
IHsKICAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgICAgICAgICAgICAgZnBy
aW50ZihvdXQsICI6ICIpOwogICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwpAQCAt
MjQ2LDggKzI0Nyw4IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGUgewogICAgICAgICAgICAgICAgICAg
ICBmcHJpbnRmKG91dCwgIiwgIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIGlmICghIW1fYnVja2V0c1tpXSkKLSAgICAgICAgICAgICAgICBmcHJpbnRmKG91dCwg
IiVzIiwgSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSkuZGVzY3JpcHRpb24oKSk7CisgICAg
ICAgICAgICBpZiAoISF2YWx1ZSkKKyAgICAgICAgICAgICAgICBmcHJpbnRmKG91dCwgIiVzIiwg
dmFsdWUuZGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmICghIW1f
d2Vha0J1Y2tldHNbaV0pCiAgICAgICAgICAgICAgICAgZnByaW50ZihvdXQsICJEZWFkQ2VsbCIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gOTcwMTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3Myw3
ICs1NzMsMTIgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAg
ICAgICAgICAgICAgICAgICAmJiBhcmd1bWVudFJlZ2lzdGVyID09IC1SZWdpc3RlckZpbGU6OkNh
bGxGcmFtZUhlYWRlclNpemUgLSBtX2NvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKQogICAgICAg
ICAgICAgICAgICAgICBtX2NvZGVCbG9jay0+YWRkVmFsdWVQcm9maWxlKC0xKTsKICAgICAgICAg
ICAgICAgICBlbHNlIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgICAgICBs
b2FkUHRyKEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3VtZW50UmVnaXN0ZXIgKiBzaXpl
b2YoUmVnaXN0ZXIpKSwgcmVnVDApOworI2VsaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAg
ICAgICAgICAgICAgbG9hZDMyKEFkZHJlc3MoY2FsbEZyYW1lUmVnaXN0ZXIsIGFyZ3VtZW50UmVn
aXN0ZXIgKiBzaXplb2YoUmVnaXN0ZXIpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSwgcmVnVDApOworICAgICAgICAgICAgICAgICAgICBsb2FkMzIoQWRkcmVz
cyhjYWxsRnJhbWVSZWdpc3RlciwgYXJndW1lbnRSZWdpc3RlciAqIHNpemVvZihSZWdpc3Rlcikg
KyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMudGFnKSksIHJlZ1QxKTsKKyNlbmRp
ZgogICAgICAgICAgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKEZpcnN0UHJvZmls
aW5nU2l0ZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDk3MDE3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3MSw3ICs0NzEsMTMgQEAgaW5saW5lIHZvaWQgSklUOjplbWl0VmFsdWVQ
cm9maWxpbmdTaXRlKAogICAgICAgICBhZGQzMihJbW0zMigzKSwgYnVja2V0Q291bnRlclJlZ2lz
dGVyKTsKICAgICBhbmQzMihJbW0zMihWYWx1ZVByb2ZpbGU6OmJ1Y2tldEluZGV4TWFzayksIGJ1
Y2tldENvdW50ZXJSZWdpc3Rlcik7CiAgICAgbW92ZShJbW1QdHIodmFsdWVQcm9maWxlLT5tX2J1
Y2tldHMpLCBzY3JhdGNoKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgIHN0b3JlUHRyKHZhbHVl
LCBCYXNlSW5kZXgoc2NyYXRjaCwgYnVja2V0Q291bnRlclJlZ2lzdGVyLCBUaW1lc0VpZ2h0KSk7
CisjZWxpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgIGNvbnN0IFJlZ2lzdGVySUQgdmFsdWVUYWcg
PSByZWdUMTsKKyAgICBzdG9yZTMyKHZhbHVlLCBCYXNlSW5kZXgoc2NyYXRjaCwgYnVja2V0Q291
bnRlclJlZ2lzdGVyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0Jp
dHMucGF5bG9hZCkpKTsKKyAgICBzdG9yZTMyKHZhbHVlVGFnLCBCYXNlSW5kZXgoc2NyYXRjaCwg
YnVja2V0Q291bnRlclJlZ2lzdGVyLCBUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1
ZSwgdS5hc0JpdHMudGFnKSkpOworI2VuZGlmCiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHViQ2FsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YkNhbGwuaAkocmV2aXNpb24gOTcwMTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJDYWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2
ICsyMDUsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KG1fcmV0dXJuVHlwZSA9PSBWYWx1ZSB8fCBtX3JldHVyblR5cGUgPT0gQ2VsbCk7CiAgICAgICAg
ICAgICBKSVQ6OkNhbGwgY2FsbCA9IHRoaXMtPmNhbGwoKTsKKyAgICAgICAgICAgIEFTU0VSVChK
SVQ6OnJldHVyblZhbHVlUmVnaXN0ZXIgPT0gSklUOjpyZWdUMCk7CisgICAgICAgICAgICBpZiAo
bV9yZXR1cm5UeXBlID09IENlbGwpCisgICAgICAgICAgICAgICAgbV9qaXQtPm1vdmUoSklUOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyksIEpJVDo6cmVnVDEpOwogICAgICAgICAgICAg
bV9qaXQtPmVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUoa2luZCk7CiAgICAgICAgICAgICBpZiAobV9y
ZXR1cm5UeXBlID09IFZhbHVlKQogICAgICAgICAgICAgICAgIG1faml0LT5lbWl0U3RvcmUoZHN0
LCBKSVQ6OnJlZ1QxLCBKSVQ6OnJlZ1QwKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>