<?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>81805</bug_id>
          
          <creation_ts>2012-03-21 11:16:39 -0700</creation_ts>
          <short_desc>DFG::compileValueToInt32 Sometime Generates GPR to FPR reg back to GPR</short_desc>
          <delta_ts>2012-03-24 12:11:18 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>584388</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-03-21 11:16:39 -0700</bug_when>
    <thetext>SpeculativeJIT::compileValueToInt32() will generate code that converts an integer value to a FP value back to an int value when the source operand is already a JSValue.

This code can be restructured to check the format of the operand before blindly asking for a double operand which will quietly convert the JSValue to a double register.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584408</commentid>
    <comment_count>1</comment_count>
      <attachid>133081</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-03-21 11:33:12 -0700</bug_when>
    <thetext>Created attachment 133081
Draft Patch - No 32_64 work

Patch for review with 64 bit work.

This improves several SunSpider and Kraken benchmarks.


Benchmark report for SunSpider, V8, and Kraken on msaboff-pro (MacPro5,1).

VMs tested:
&quot;Baseline&quot; at /Volumes/Data/src/webkit.baseline/WebKitBuild/Release/jsc (r111579)
&quot;DirectToInt&quot; at /Volumes/Data/src/webkit/WebKitBuild/Release/jsc (r111579)

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.

                                             Baseline              DirectToInt                                   
SunSpider:
   3d-cube                                7.2786+-0.0544    ?     7.2893+-0.0661       ?
   3d-morph                               7.3513+-0.0567          7.3068+-0.0414       
   3d-raytrace                            9.3693+-0.0710          9.3604+-0.0705       
   access-binary-trees                    1.7592+-0.0373          1.7495+-0.0209       
   access-fannkuch                        7.6170+-0.0372          7.5977+-0.0210       
   access-nbody                           3.8707+-0.0187          3.8516+-0.0117       
   access-nsieve                          3.5423+-0.0335    ?     3.5511+-0.0328       ?
   bitops-3bit-bits-in-byte               1.3404+-0.0143          1.3399+-0.0125       
   bitops-bits-in-byte                    5.4447+-0.0462          5.4287+-0.0352       
   bitops-bitwise-and                     3.3502+-0.0189          3.3345+-0.0163       
   bitops-nsieve-bits                     3.6733+-0.0285    ^     3.2235+-0.0229       ^ definitely 1.1395x faster
   controlflow-recursive                  2.3282+-0.0292    ?     2.3446+-0.0372       ?
   crypto-aes                             7.7984+-0.0881          7.7708+-0.0785       
   crypto-md5                             3.2133+-0.0129    ?     3.2383+-0.0436       ?
   crypto-sha1                            2.5430+-0.0371          2.5164+-0.0290         might be 1.0106x faster
   date-format-tofte                     11.3623+-0.2336    ^    10.8698+-0.1175       ^ definitely 1.0453x faster
   date-format-xparb                     10.7303+-0.3135         10.4070+-0.1848         might be 1.0311x faster
   math-cordic                            4.0551+-0.0201          4.0387+-0.0119       
   math-partial-sums                      8.7762+-0.0245    ?     8.8244+-0.0367       ?
   math-spectral-norm                     2.7284+-0.0217          2.7130+-0.0056       
   regexp-dna                            10.3735+-0.3020    ^     9.8641+-0.0927       ^ definitely 1.0517x faster
   string-base64                          4.5375+-0.0277    ^     4.4934+-0.0162       ^ definitely 1.0098x faster
   string-fasta                           7.1314+-0.0520    ?     7.1377+-0.0416       ?
   string-tagcloud                       12.8483+-0.0639    ?    12.9168+-0.1127       ?
   string-unpack-code                    22.4526+-0.5192         21.8236+-0.1268         might be 1.0288x faster
   string-validate-input                  6.5903+-0.3045    ^     6.1881+-0.0692       ^ definitely 1.0650x faster

   &lt;arithmetic&gt; *                         6.6179+-0.0241    ^     6.5069+-0.0165       ^ definitely 1.0171x faster
   &lt;geometric&gt;                            5.3628+-0.0170    ^     5.2863+-0.0140       ^ definitely 1.0145x faster
   &lt;harmonic&gt;                             4.3154+-0.0189    ^     4.2659+-0.0157       ^ definitely 1.0116x faster

                                             Baseline              DirectToInt                                   
V8:
   crypto                                75.4345+-0.1879         75.4171+-0.2407       
   deltablue                            158.7217+-1.0601        157.1792+-0.9181       
   earley-boyer                          98.0935+-2.5741         98.0639+-2.2742       
   raytrace                              56.4682+-0.2416         56.1317+-0.2425       
   regexp                               101.3459+-0.2197    !   102.2162+-0.6182       ! definitely 1.0086x slower
   richards                             143.8106+-0.9807        143.2084+-0.9522       
   splay                                 61.2865+-1.1657         60.8484+-0.7583       

   &lt;arithmetic&gt;                          99.3087+-0.4707         99.0093+-0.4319         might be 1.0030x faster
   &lt;geometric&gt; *                         92.7781+-0.4433         92.5298+-0.4058         might be 1.0027x faster
   &lt;harmonic&gt;                            86.8219+-0.4214         86.5768+-0.3587         might be 1.0028x faster

                                             Baseline              DirectToInt                                   
Kraken:
   ai-astar                             831.1022+-3.9854    ^   799.9239+-11.1972      ^ definitely 1.0390x faster
   audio-beat-detection                 195.6483+-1.9955        194.7191+-0.4076       
   audio-dft                            285.8591+-2.2126        284.9669+-2.0853       
   audio-fft                            119.4775+-0.2170    ?   119.5792+-0.1905       ?
   audio-oscillator                     304.8577+-2.3525        304.6109+-2.0223       
   imaging-darkroom                     295.9842+-6.8677        295.4626+-7.4871       
   imaging-desaturate                   236.2551+-0.2371    ?   236.5313+-0.4194       ?
   imaging-gaussian-blur                456.7690+-1.6551        456.0693+-1.0253       
   json-parse-financial                  64.6038+-0.3371    ^    64.0770+-0.1706       ^ definitely 1.0082x faster
   json-stringify-tinderbox              78.5745+-0.2858    ^    77.8383+-0.1922       ^ definitely 1.0095x faster
   stanford-crypto-aes                   86.7475+-0.3436    ^    83.3839+-0.3132       ^ definitely 1.0403x faster
   stanford-crypto-ccm                   77.9236+-0.9315         77.0288+-0.5462         might be 1.0116x faster
   stanford-crypto-pbkdf2               192.9524+-0.6025    ^   190.7468+-0.7171       ^ definitely 1.0116x faster
   stanford-crypto-sha256-iterative      91.6525+-0.4246    ^    89.3379+-0.1357       ^ definitely 1.0259x faster

   &lt;arithmetic&gt; *                       237.0291+-0.6198    ^   233.8769+-1.0040       ^ definitely 1.0135x faster
   &lt;geometric&gt;                          178.2848+-0.4278    ^   176.3345+-0.4250       ^ definitely 1.0111x faster
   &lt;harmonic&gt;                           140.0909+-0.3096    ^   138.3153+-0.2273       ^ definitely 1.0128x faster

                                             Baseline              DirectToInt                                   
All benchmarks:
   &lt;arithmetic&gt;                          89.0560+-0.2244    ^    88.0111+-0.3551       ^ definitely 1.0119x faster
   &lt;geometric&gt;                           23.2840+-0.0511    ^    23.0150+-0.0560       ^ definitely 1.0117x faster
   &lt;harmonic&gt;                             7.5739+-0.0324    ^     7.4877+-0.0271       ^ definitely 1.0115x faster

                                             Baseline              DirectToInt                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                       52.6000+-0.1290    ^    52.0251+-0.1701       ^ definitely 1.0111x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584412</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-21 11:35:09 -0700</bug_when>
    <thetext>Attachment 133081 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...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1469:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1503:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 2 in 4 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>584418</commentid>
    <comment_count>3</comment_count>
      <attachid>133081</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-21 11:37:42 -0700</bug_when>
    <thetext>Comment on attachment 133081
Draft Patch - No 32_64 work

Attachment 133081 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12066539</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584422</commentid>
    <comment_count>4</comment_count>
      <attachid>133081</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-21 11:38:07 -0700</bug_when>
    <thetext>Comment on attachment 133081
Draft Patch - No 32_64 work

Attachment 133081 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12086558</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584507</commentid>
    <comment_count>5</comment_count>
      <attachid>133081</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-21 12:38:54 -0700</bug_when>
    <thetext>Comment on attachment 133081
Draft Patch - No 32_64 work

Attachment 133081 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/12086561</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584542</commentid>
    <comment_count>6</comment_count>
      <attachid>133081</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-03-21 13:09:04 -0700</bug_when>
    <thetext>Comment on attachment 133081
Draft Patch - No 32_64 work

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:1443
&gt; +GeneratedOperandType SpeculativeJIT::checkGeneratedType(NodeIndex nodeIndex)

Why does this function live in the 64bit-only file?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584623</commentid>
    <comment_count>7</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-03-21 14:15:24 -0700</bug_when>
    <thetext>Michael, yep - looks like you&apos;re on the right track here to me, cc&apos;ing filip in case he has any input, but looks good.

(In reply to comment #6)
&gt; Why does this function live in the 64bit-only file?

Yes, looks like this could be cross-platform.  This is just a WIP patch for an early pre-review, Michael plans to port this code to 32_64 before landing.

G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584634</commentid>
    <comment_count>8</comment_count>
      <attachid>133081</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-03-21 14:28:22 -0700</bug_when>
    <thetext>Comment on attachment 133081
Draft Patch - No 32_64 work

Looks good to me so far.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586737</commentid>
    <comment_count>9</comment_count>
      <attachid>133559</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-03-23 14:18:44 -0700</bug_when>
    <thetext>Created attachment 133559
Updated patch with 32 bit case added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586742</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-23 14:22:03 -0700</bug_when>
    <thetext>Attachment 133559 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...&quot; exit_code: 1
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1492:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1531:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 2 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>586754</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-03-23 14:27:43 -0700</bug_when>
    <thetext>Committed r111906: &lt;http://trac.webkit.org/changeset/111906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133081</attachid>
            <date>2012-03-21 11:33:12 -0700</date>
            <delta_ts>2012-03-23 14:18:44 -0700</delta_ts>
            <desc>Draft Patch - No 32_64 work</desc>
            <filename>81805-0.patch</filename>
            <type>text/plain</type>
            <size>8152</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExNTgwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEyLTAzLTIxICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIERGRzo6Y29tcGlsZVZhbHVlVG9JbnQzMiBTb21ldGltZSBHZW5lcmF0ZXMgR1BSIHRvIEZQ
UiByZWcgYmFjayB0byBHUFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxODA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZSgpIHRvIGRl
dGVybWluZSB0aGUgY3VycmVudCBmb3JtYXQKKyAgICAgICAgb2YgYW4gb3BlcmFuZC4gIFVzZWQg
dGhhdCBpbmZvcm1hdGlvbiBpbiBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgor
ICAgICAgICB0byBnZW5lcmF0ZSBjb2RlIHRoYXQgd2lsbCB1c2UgaW50ZWdlciBhbmQgSlNWYWx1
ZSB0eXBlcyBpbiBpbnRlZ2VyCisgICAgICAgIGZvcm1hdCBkaXJlY3RseSB3aXRob3V0IGEgY29u
dmVyc2lvbiB0byBkb3VibGUuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMy
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKERGRyk6Cisg
ICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRlRG91
YmxlT3BlcmFuZDo6ZnByKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZSk6
CisgICAgICAgIChERkcpOgorCiAyMDEyLTAzLTIxICBIb2pvbmcgSGFuICA8aG9qb25nLmhhbkBz
YW1zdW5nLmNvbT4KIAogICAgICAgICBGaXggb3V0IG9mIG1lbW9yeSBieSBhbGxvd2luZyBvdmVy
Y29tbWl0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExMTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDAsNiAr
MTQ0MCw2MCBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29sCiAgICAg
cmV0dXJuIEludmFsaWRHUFJSZWc7CiB9CiAKK0dlbmVyYXRlZE9wZXJhbmRUeXBlIFNwZWN1bGF0
aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGUoTm9kZUluZGV4IG5vZGVJbmRleCkKK3sKKyNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAgZGF0YUxvZygiY2hlY2tHZW5lcmF0ZWRUeXBl
QCVkICAgIiwgbm9kZUluZGV4KTsKKyNlbmRpZgorICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5k
ZXgpOworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxS
ZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2
aXJ0dWFsUmVnaXN0ZXJdOworICAgIAorICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgPT0g
RGF0YUZvcm1hdE5vbmUpIHsKKyAgICAgICAgaWYgKG5vZGUuaGFzQ29uc3RhbnQoKSkgeworICAg
ICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlcjsKKworICAgICAgICAgICAgaWYgKGlzTnVt
YmVyQ29uc3RhbnQobm9kZUluZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhdGVk
T3BlcmFuZERvdWJsZTsKKworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAgICByZXR1
cm4gR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUpCisgICAgICAg
ICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZERvdWJsZTsKKyAgICB9CisgICAgCisgICAgc3dp
dGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0Qm9v
bGVhbjogLy8gVGhpcyB0eXBlIG5ldmVyIG9jY3Vycy4KKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0
U3RvcmFnZToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAg
ICAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd247CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZToKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0
SlNDZWxsOgorICAgICAgICBjYXNlIERhdGFGb3JtYXRKUzoKKyAgICAgICAgY2FzZSBEYXRhRm9y
bWF0SlNCb29sZWFuOgorICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRKU1ZhbHVl
OworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgRGF0YUZvcm1hdEpTSW50ZWdlcjoKKyAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0SW50ZWdlcjoKKyAgICAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRP
cGVyYW5kSW50ZWdlcjsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIERhdGFGb3JtYXRKU0Rv
dWJsZToKKyAgICAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgorICAgICAgICAgICAgcmV0dXJu
IEdlbmVyYXRlZE9wZXJhbmREb3VibGU7CisgICAgfQorICAgIAorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd247Cit9CisKKwog
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0RvdWJsZShHUFJSZWcg
dmFsdWUsIEZQUlJlZyByZXN1bHQsIEdQUlJlZyB0bXApCiB7CiAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1
YWwsIHZhbHVlLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDExMTU3OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk5LDE5ICsxNDk5LDYzIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICB9CiAgICAgCiAgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7Ci0gICAgICAgIFNwZWN1bGF0ZURv
dWJsZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBGUFJSZWcgZnByID0gb3AxLmZwcigpOwotICAgICAg
ICBHUFJSZWcgZ3ByID0gcmVzdWx0LmdwcigpOwotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0
cnVuY2F0ZWRUb0ludGVnZXIgPSBtX2ppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnBy
LCBncHIsIEpJVENvbXBpbGVyOjpCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCk7Ci0gICAgICAg
IAotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhncHIpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKHRvSW50MzIsIGdwciwgZnByKTsKLSAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVy
cyhncHIpOwotICAgICAgICAKLSAgICAgICAgdHJ1bmNhdGVkVG9JbnRlZ2VyLmxpbmsoJm1faml0
KTsKLSAgICAgICAgaW50ZWdlclJlc3VsdChncHIsIG1fY29tcGlsZUluZGV4KTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICBzd2l0Y2ggKGNoZWNrR2VuZXJhdGVkVHlwZShub2RlLmNoaWxkMSgp
LmluZGV4KCkpKSB7CisgICAgICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyOiB7
CisgICAgICAgICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3Ax
KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsK
KyAgICAgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5k
ZXgsIG9wMS5mb3JtYXQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgY2FzZSBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlOiB7CisgICAgICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgICAgICAgICBTcGVjdWxh
dGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgICAg
ICBGUFJSZWcgZnByID0gb3AxLmZwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBncHIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgdHJ1bmNhdGVk
VG9JbnRlZ2VyID0gbV9qaXQuYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKGZwciwgZ3ByLCBK
SVRDb21waWxlcjo6QnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKGdwcik7CisgICAgICAg
ICAgICAgICAgY2FsbE9wZXJhdGlvbih0b0ludDMyLCBncHIsIGZwcik7CisgICAgICAgICAgICAg
ICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhncHIpOworICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIHRydW5jYXRlZFRvSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAg
ICAgaW50ZWdlclJlc3VsdChncHIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdlbmVyYXRlZE9wZXJhbmRK
U1ZhbHVlOiB7CisgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKyAg
ICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisK
KyAgICAgICAgICAgICAgICBHUFJSZWcgZ3ByID0gb3AxLmdwcigpOworICAgICAgICAgICAgICAg
IEZQUlRlbXBvcmFyeSB0ZW1wRnByKHRoaXMpOworICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIg
PSB0ZW1wRnByLmZwcigpOworICAgICAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHcHIgPSByZXN1
bHQuZ3ByKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGdwciksIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsK
KyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBGaXJzdCwgaWYgd2UgZ2V0IGhl
cmUgd2UgaGF2ZSBhIGRvdWJsZSBlbmNvZGVkIGFzIGEgSlNWYWx1ZQorICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUoZ3ByLCByZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIHVuYm94RG91Ymxl
KHJlc3VsdEdwciwgZnByKTsKKworICAgICAgICAgICAgICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0
ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgY2FsbE9wZXJhdGlvbih0b0ludDMyLCBy
ZXN1bHRHcHIsIGZwcik7CisgICAgICAgICAgICAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhy
ZXN1bHRHcHIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGNvbnZlcnRlZCA9IG1faml0Lmp1bXAoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIG1faml0
Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgcmVzdWx0R3ByKTsKKyAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgICAgICBjb252ZXJ0ZWQubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIGlu
dGVnZXJSZXN1bHQocmVzdWx0R3ByLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBHZW5lcmF0ZWRPcGVyYW5k
VHlwZVVua25vd246CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKGF0KG5v
ZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTExNTc5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDEwIEBAIHByaXZhdGU6CiAgICAgCiAgICAgTm9kZUlu
ZGV4IG1fbm9kZUluZGV4OwogfTsKLSAgICAKKworCitlbnVtIEdlbmVyYXRlZE9wZXJhbmRUeXBl
IHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0ZWRPcGVyYW5kSW50ZWdlciwg
R2VuZXJhdGVkT3BlcmFuZERvdWJsZSwgR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWV9OworCiAvLyA9
PT0gU3BlY3VsYXRpdmVKSVQgPT09CiAvLwogLy8gVGhlIFNwZWN1bGF0aXZlSklUIGlzIHVzZWQg
dG8gZ2VuZXJhdGUgYSBmYXN0LCBidXQgcG90ZW50aWFsbHkKQEAgLTM2MSw2ICszNjQsNyBAQCBw
dWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoTm9kZUluZGV4KTsKICAgICBH
UFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoTm9kZUluZGV4KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1
bGF0ZUJvb2xlYW4oTm9kZUluZGV4KTsKKyAgICBHZW5lcmF0ZWRPcGVyYW5kVHlwZSBjaGVja0dl
bmVyYXRlZFR5cGUoTm9kZUluZGV4KTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGUoTm9k
ZSYpOwpAQCAtMjQ1OSw3ICsyNDYzLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9pbmRl
eDsKICAgICB9CiAKLSAgICBGUFJSZWcgZnByKCkKKyAgICBGUFJSZWcgZnByKCkgICAgCiAgICAg
ewogICAgICAgICBpZiAobV9mcHJPckludmFsaWQgPT0gSW52YWxpZEZQUlJlZykKICAgICAgICAg
ICAgIG1fZnByT3JJbnZhbGlkID0gbV9qaXQtPmZpbGxTcGVjdWxhdGVEb3VibGUoaW5kZXgoKSk7
Cg==
</data>
<flag name="commit-queue"
          id="136957"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133559</attachid>
            <date>2012-03-23 14:18:44 -0700</date>
            <delta_ts>2012-03-24 12:11:18 -0700</delta_ts>
            <desc>Updated patch with 32 bit case added</desc>
            <filename>81805-1.patch</filename>
            <type>text/plain</type>
            <size>8912</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTExODk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBA
CisyMDEyLTAzLTIzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIERGRzo6Y29tcGlsZVZhbHVlVG9JbnQzMiBTb21ldGltZSBHZW5lcmF0ZXMgR1BSIHRvIEZQ
UiByZWcgYmFjayB0byBHUFIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgxODA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZSgpIHRvIGRl
dGVybWluZSB0aGUgY3VycmVudCBmb3JtYXQKKyAgICAgICAgb2YgYW4gb3BlcmFuZC4gIFVzZWQg
dGhhdCBpbmZvcm1hdGlvbiBpbiBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgor
ICAgICAgICB0byBnZW5lcmF0ZSBjb2RlIHRoYXQgd2lsbCB1c2UgaW50ZWdlciBhbmQgSlNWYWx1
ZSB0eXBlcyBpbiBpbnRlZ2VyCisgICAgICAgIGZvcm1hdCBkaXJlY3RseSB3aXRob3V0IGEgY29u
dmVyc2lvbiB0byBkb3VibGUuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrR2VuZXJhdGVkVHlwZSk6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxl
VmFsdWVUb0ludDMyKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisKIDIwMTItMDMtMjMgIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIERpc2FibGUgQ1NTX1NIQURFUlMg
aW4gQXBwbGUgYnVpbGRzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTExODI1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NjMs
NiArMTQ2Myw1OSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblN0CiAg
ICAgY2VsbFJlc3VsdChzY3JhdGNoUmVnLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAKK0dlbmVyYXRl
ZE9wZXJhbmRUeXBlIFNwZWN1bGF0aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGUoTm9kZUluZGV4
IG5vZGVJbmRleCkKK3sKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAgZGF0YUxv
ZygiY2hlY2tHZW5lcmF0ZWRUeXBlQCVkICAgIiwgbm9kZUluZGV4KTsKKyNlbmRpZgorICAgIE5v
ZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOworICAgIFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVn
aXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOworICAgIEdlbmVyYXRpb25JbmZvJiBpbmZv
ID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOworCisgICAgaWYgKGluZm8ucmVn
aXN0ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0Tm9uZSkgeworICAgICAgICBpZiAobm9kZS5oYXND
b25zdGFudCgpKSB7CisgICAgICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGVJbmRleCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyOworCisgICAg
ICAgICAgICBpZiAoaXNOdW1iZXJDb25zdGFudChub2RlSW5kZXgpKQorICAgICAgICAgICAgICAg
IHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kRG91YmxlOworCisgICAgICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsK
KyAgICAgICAgICAgIHJldHVybiBHZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd247CisgICAgICAg
IH0KKworICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpID09IERhdGFGb3JtYXREb3VibGUp
CisgICAgICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZERvdWJsZTsKKyAgICB9CisKKyAg
ICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgeworICAgICAgICBjYXNlIERhdGFGb3Jt
YXRCb29sZWFuOiAvLyBUaGlzIHR5cGUgbmV2ZXIgb2NjdXJzLgorICAgICAgICBjYXNlIERhdGFG
b3JtYXRTdG9yYWdlOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAgICAg
ICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICAg
ICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRUeXBlVW5rbm93bjsKKworICAgICAgICBjYXNlIERh
dGFGb3JtYXROb25lOgorICAgICAgICBjYXNlIERhdGFGb3JtYXRKU0NlbGw6CisgICAgICAgIGNh
c2UgRGF0YUZvcm1hdEpTOgorICAgICAgICBjYXNlIERhdGFGb3JtYXRKU0Jvb2xlYW46CisgICAg
ICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZEpTVmFsdWU7CisKKyAgICAgICAgY2FzZSBE
YXRhRm9ybWF0SlNJbnRlZ2VyOgorICAgICAgICBjYXNlIERhdGFGb3JtYXRJbnRlZ2VyOgorICAg
ICAgICAgICAgcmV0dXJuIEdlbmVyYXRlZE9wZXJhbmRJbnRlZ2VyOworCisgICAgICAgIGNhc2Ug
RGF0YUZvcm1hdEpTRG91YmxlOgorICAgICAgICBjYXNlIERhdGFGb3JtYXREb3VibGU6CisgICAg
ICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZERvdWJsZTsKKyAgICB9CisKKyAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3du
OworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyKE5vZGUmIG5v
ZGUpCiB7CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIo
KSkgewpAQCAtMTQ3NCwxOSArMTUyNywxMDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVZhbHVlVG9JbnQzMgogICAgIH0KICAgICAKICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKLSAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBv
cDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7Ci0gICAgICAgIEZQUlJlZyBmcHIgPSBvcDEuZnByKCk7Ci0gICAgICAgIEdQUlJlZyBncHIg
PSByZXN1bHQuZ3ByKCk7Ci0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHRydW5jYXRlZFRvSW50
ZWdlciA9IG1faml0LmJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihmcHIsIGdwciwgSklUQ29t
cGlsZXI6OkJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsKTsKLSAgICAgICAgCi0gICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKGdwcik7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24odG9JbnQz
MiwgZ3ByLCBmcHIpOwotICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKGdwcik7Ci0gICAg
ICAgIAotICAgICAgICB0cnVuY2F0ZWRUb0ludGVnZXIubGluaygmbV9qaXQpOwotICAgICAgICBp
bnRlZ2VyUmVzdWx0KGdwciwgbV9jb21waWxlSW5kZXgpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHN3aXRjaCAoY2hlY2tHZW5lcmF0ZWRUeXBlKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkpIHsK
KyAgICAgICAgICAgIGNhc2UgR2VuZXJhdGVkT3BlcmFuZEludGVnZXI6IHsKKyAgICAgICAgICAg
ICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOworICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAg
ICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZvcm1h
dCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBjYXNlIEdlbmVyYXRlZE9wZXJhbmREb3VibGU6IHsKKyAgICAgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgICAgIEZQUlJlZyBmcHIg
PSBvcDEuZnByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIGdwciA9IHJlc3VsdC5ncHIoKTsK
KyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCB0cnVuY2F0ZWRUb0ludGVnZXIgPSBt
X2ppdC5icmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoZnByLCBncHIsIEpJVENvbXBpbGVyOjpC
cmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCk7CisKKyAgICAgICAgICAgICAgICBzaWxlbnRTcGls
bEFsbFJlZ2lzdGVycyhncHIpOworICAgICAgICAgICAgICAgIGNhbGxPcGVyYXRpb24odG9JbnQz
MiwgZ3ByLCBmcHIpOworICAgICAgICAgICAgICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMoZ3By
KTsKKworICAgICAgICAgICAgICAgIHRydW5jYXRlZFRvSW50ZWdlci5saW5rKCZtX2ppdCk7Cisg
ICAgICAgICAgICAgICAgaW50ZWdlclJlc3VsdChncHIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEdlbmVy
YXRlZE9wZXJhbmRKU1ZhbHVlOiB7CisgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKworICAgICAgICAgICAgICAgIEdQUlJlZyBn
cHIgPSBvcDEuZ3ByKCk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdwciA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgdGVtcEZwcih0aGlzKTsKKyAg
ICAgICAgICAgICAgICBGUFJSZWcgZnByID0gdGVtcEZwci5mcHIoKTsKKworICAgICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6QWJvdmVPckVxdWFsLCBncHIsIEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3Rl
cik7CisKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVS
ZWdzKGdwciksIG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsK
KworICAgICAgICAgICAgICAgIC8vIEZpcnN0LCBpZiB3ZSBnZXQgaGVyZSB3ZSBoYXZlIGEgZG91
YmxlIGVuY29kZWQgYXMgYSBKU1ZhbHVlCisgICAgICAgICAgICAgICAgbV9qaXQubW92ZShncHIs
IHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUocmVzdWx0R3ByLCBmcHIp
OworCisgICAgICAgICAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R3ByKTsK
KyAgICAgICAgICAgICAgICBjYWxsT3BlcmF0aW9uKHRvSW50MzIsIHJlc3VsdEdwciwgZnByKTsK
KyAgICAgICAgICAgICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisKKyAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBjb252ZXJ0ZWQgPSBtX2ppdC5qdW1wKCk7
CisKKyAgICAgICAgICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOworICAgICAgICAgICAg
ICAgIG1faml0Lnplcm9FeHRlbmQzMlRvUHRyKGdwciwgcmVzdWx0R3ByKTsKKworICAgICAgICAg
ICAgICAgIGNvbnZlcnRlZC5saW5rKCZtX2ppdCk7CisjZWxzZQorICAgICAgICAgICAgICAgIE5v
ZGUmIGNoaWxkTm9kZSA9IGF0KG5vZGUuY2hpbGQxKCkuaW5kZXgoKSk7CisgICAgICAgICAgICAg
ICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IGNoaWxkTm9kZS52aXJ0dWFsUmVn
aXN0ZXIoKTsKKyAgICAgICAgICAgICAgICBHZW5lcmF0aW9uSW5mbyYgaW5mbyA9IG1fZ2VuZXJh
dGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXTsKKworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKworICAgICAgICAgICAgICAgIEdQUlJlZyBw
YXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcmVz
dWx0R3ByID0gcmVzdWx0LmdwcigpOworCisgICAgICAgICAgICAgICAgaWYgKGluZm8ucmVnaXN0
ZXJGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SlNJbnRlZ2VyKQorICAgICAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKHBheWxvYWRHUFIsIHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIEdQUlJlZyB0YWdHUFIgPSBvcDEudGFnR1BSKCk7CisgICAg
ICAgICAgICAgICAgICAgIEZQUlRlbXBvcmFyeSB0ZW1wRnByKHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICBGUFJSZWcgZnByID0gdGVtcEZwci5mcHIoKTsKKyAgICAgICAgICAgICAgICAgICAg
RlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CisKKyAgICAgICAgICAgICAgICAgICAgSklUQ29t
cGlsZXI6Okp1bXAgaXNJbnRlZ2VyID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVx
dWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpOworCisgICAgICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModGFnR1BS
LCBwYXlsb2FkR1BSKSwgbm9kZS5jaGlsZDEoKS5pbmRleCgpLCBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpM
b3dlc3RUYWcpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgdW5ib3hEb3VibGUodGFnR1BSLCBw
YXlsb2FkR1BSLCBmcHIsIHNjcmF0Y2guZnByKCkpOworCisgICAgICAgICAgICAgICAgICAgIHNp
bGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisgICAgICAgICAgICAgICAgICAgIGNh
bGxPcGVyYXRpb24odG9JbnQzMiwgcmVzdWx0R3ByLCBmcHIpOworICAgICAgICAgICAgICAgICAg
ICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdEdwcik7CisKKyAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgY29udmVydGVkID0gbV9qaXQuanVtcCgpOworCisgICAgICAg
ICAgICAgICAgICAgIGlzSW50ZWdlci5saW5rKCZtX2ppdCk7CisgICAgICAgICAgICAgICAgICAg
IG1faml0Lm1vdmUocGF5bG9hZEdQUiwgcmVzdWx0R3ByKTsKKworICAgICAgICAgICAgICAgICAg
ICBjb252ZXJ0ZWQubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgorICAg
ICAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R3ByLCBtX2NvbXBpbGVJbmRleCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBH
ZW5lcmF0ZWRPcGVyYW5kVHlwZVVua25vd246CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAgICAg
CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJvb2xlYW4oKSkgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAko
cmV2aXNpb24gMTExODI1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDEwIEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgTm9kZUluZGV4IG1fbm9kZUluZGV4OwogfTsKLSAgICAKKworCitlbnVtIEdlbmVy
YXRlZE9wZXJhbmRUeXBlIHsgR2VuZXJhdGVkT3BlcmFuZFR5cGVVbmtub3duLCBHZW5lcmF0ZWRP
cGVyYW5kSW50ZWdlciwgR2VuZXJhdGVkT3BlcmFuZERvdWJsZSwgR2VuZXJhdGVkT3BlcmFuZEpT
VmFsdWV9OworCiAvLyA9PT0gU3BlY3VsYXRpdmVKSVQgPT09CiAvLwogLy8gVGhlIFNwZWN1bGF0
aXZlSklUIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBmYXN0LCBidXQgcG90ZW50aWFsbHkKQEAgLTM2
MSw2ICszNjQsNyBAQCBwdWJsaWM6CiAgICAgRlBSUmVnIGZpbGxTcGVjdWxhdGVEb3VibGUoTm9k
ZUluZGV4KTsKICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUNlbGwoTm9kZUluZGV4KTsKICAgICBH
UFJSZWcgZmlsbFNwZWN1bGF0ZUJvb2xlYW4oTm9kZUluZGV4KTsKKyAgICBHZW5lcmF0ZWRPcGVy
YW5kVHlwZSBjaGVja0dlbmVyYXRlZFR5cGUoTm9kZUluZGV4KTsKIAogcHJpdmF0ZToKICAgICB2
b2lkIGNvbXBpbGUoTm9kZSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>