<?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>67798</bug_id>
          
          <creation_ts>2011-09-08 13:25:49 -0700</creation_ts>
          <short_desc>DFG JIT completely undoes speculative compilation even in the case of a partial static speculation failure</short_desc>
          <delta_ts>2011-09-10 14:22:57 -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="Filip Pizlo">fpizlo</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>464291</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 13:25:49 -0700</bug_when>
    <thetext>The DFG JIT may perform a speculation that contravenes static information.  For example, it may assume that a value must be integer when the code that produces it always produces a cell, and the fact that it produces a cell is proven statically.  In that case, it terminates speculation.  Currently this means undoing speculative compilation for the entire code block, and recompiling the entire code block entirely with the non-speculative JIT.  What it should probably do instead is just jump out of speculative code at the point where the static information contravenes speculation, to ensure that if this scenario happens partially (i.e. in conditional code, which may be a slow path anyway) then the code block will still benefit from speculation when that condition does not arise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464296</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 13:29:42 -0700</bug_when>
    <thetext>This is a work in progress, and isn&apos;t totally stable yet.  It&apos;s also a regression on v8-crypto under static speculation (which is still the default in ToT).



Benchmark report for SunSpider and V8.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;PartialSpecFail&quot; at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. 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.

                                    TipOfTree            PartialSpecFail                                 
SunSpider:
   3d-cube                        7.8561+-0.1646          7.8155+-0.2022       
   3d-morph                       7.8473+-0.1579          7.6001+-0.1902         might be 1.0325x faster
   3d-raytrace                    7.6863+-0.1967          7.6497+-0.2789       
   access-binary-trees            2.2991+-0.0437    ?     2.3556+-0.0766       ? might be 1.0245x slower
   access-fannkuch               12.0374+-0.2866         11.8132+-0.1643         might be 1.0190x faster
   access-nbody                   4.4257+-0.1024          4.3487+-0.0582         might be 1.0177x faster
   access-nsieve                  2.5066+-0.0831    ?     2.5857+-0.0715       ? might be 1.0316x slower
   bitops-3bit-bits-in-byte       1.7548+-0.0479    ?     1.7602+-0.0528       ?
   bitops-bits-in-byte            4.5568+-0.2521    ?     4.6508+-0.2218       ? might be 1.0206x slower
   bitops-bitwise-and             3.7287+-0.0639    ?     3.7565+-0.0750       ?
   bitops-nsieve-bits             5.5253+-0.1456    ?     5.6534+-0.1690       ? might be 1.0232x slower
   controlflow-recursive          2.0740+-0.0461          2.0333+-0.0497         might be 1.0200x faster
   crypto-aes                     6.9185+-0.3649          6.8543+-0.3203       
   crypto-md5                     2.8268+-0.0863    ?     2.8695+-0.1142       ? might be 1.0151x slower
   crypto-sha1                    2.2198+-0.0391    !     2.3437+-0.0718       ! definitely 1.0558x slower
   date-format-tofte             10.4411+-0.3354         10.1745+-0.2410         might be 1.0262x faster
   date-format-xparb              9.1471+-0.2291    ?     9.1878+-0.2066       ?
   math-cordic                    6.4154+-0.1277          6.2871+-0.1184         might be 1.0204x faster
   math-partial-sums              7.9001+-0.1389          7.8879+-0.1401       
   math-spectral-norm             2.5591+-0.0447    ^     2.4600+-0.0321       ^ definitely 1.0403x faster
   regexp-dna                    10.5650+-0.2633    ?    10.5712+-0.1567       ?
   string-base64                  6.0538+-0.1903    ?     6.1351+-0.2088       ? might be 1.0134x slower
   string-fasta                   7.6601+-0.2406    ?     7.6878+-0.1736       ?
   string-tagcloud               12.2444+-0.3531         12.1599+-0.2803       
   string-unpack-code            18.9348+-0.3692    ?    19.0148+-0.3475       ?
   string-validate-input          7.2754+-0.2723          7.2458+-0.2474       

   &lt;arithmetic&gt;                   6.6715+-0.0391          6.6501+-0.0287       
   &lt;geometric&gt;                    5.5415+-0.0294          5.5415+-0.0278       
   &lt;harmonic&gt;                     4.5240+-0.0279    ?     4.5413+-0.0278       ?

                                    TipOfTree            PartialSpecFail                                 
V8:
   crypto                        91.7346+-0.8852    !   100.1585+-0.5619       ! definitely 1.0918x slower
   deltablue                    270.8549+-2.1356        267.9829+-1.3881         might be 1.0107x faster
   earley-boyer                  95.2392+-0.6167    !    97.1235+-0.8832       ! definitely 1.0198x slower
   raytrace                      80.0969+-0.8197         79.2897+-0.3222         might be 1.0102x faster
   regexp                       112.4222+-1.1974        111.2879+-0.7193         might be 1.0102x faster
   richards                     246.1516+-1.8007    ^   240.0536+-0.7336       ^ definitely 1.0254x faster
   splay                        103.9291+-0.3727    ?   104.3902+-1.1212       ?

   &lt;arithmetic&gt;                 142.9183+-0.5466        142.8981+-0.2484       
   &lt;geometric&gt;                  127.4043+-0.3828    !   128.4276+-0.2773       ! definitely 1.0080x slower
   &lt;harmonic&gt;                   116.3446+-0.3055    !   117.9230+-0.2941       ! definitely 1.0136x slower

                                    TipOfTree            PartialSpecFail                                 
All benchmarks:
   &lt;arithmetic&gt;                  35.5724+-0.1334         35.5512+-0.0619       
   &lt;geometric&gt;                   10.7755+-0.0479    ?    10.7938+-0.0442       ?
   &lt;harmonic&gt;                     5.6825+-0.0347    ?     5.7048+-0.0345       ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464352</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 14:15:07 -0700</bug_when>
    <thetext>This now appears stable.  But, it&apos;s a V8 slow-down.



Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;PartialSpecFail&quot; at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. 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.

                                            TipOfTree            PartialSpecFail                                 
SunSpider:
   3d-cube                                7.8790+-0.1847          7.7234+-0.2069         might be 1.0202x faster
   3d-morph                               7.8556+-0.1429    ^     7.4219+-0.1409       ^ definitely 1.0584x faster
   3d-raytrace                            7.5771+-0.2102          7.5468+-0.1384       
   access-binary-trees                    2.2669+-0.0389    ?     2.2928+-0.0555       ? might be 1.0114x slower
   access-fannkuch                       11.9656+-0.2655    ?    11.9976+-0.2837       ?
   access-nbody                           4.3613+-0.1447          4.2937+-0.0866         might be 1.0157x faster
   access-nsieve                          2.4939+-0.0718    ?     2.5792+-0.0601       ? might be 1.0342x slower
   bitops-3bit-bits-in-byte               1.7326+-0.0618    ?     1.8014+-0.0547       ? might be 1.0397x slower
   bitops-bits-in-byte                    4.6134+-0.2415    ^     3.3414+-0.1481       ^ definitely 1.3807x faster
   bitops-bitwise-and                     3.7141+-0.0795          3.6939+-0.0653       
   bitops-nsieve-bits                     5.5147+-0.1153          5.4464+-0.1066         might be 1.0125x faster
   controlflow-recursive                  2.0409+-0.0581    ?     2.0611+-0.0426       ?
   crypto-aes                             6.5953+-0.1324          6.5248+-0.1913         might be 1.0108x faster
   crypto-md5                             2.7708+-0.0604          2.7644+-0.0653       
   crypto-sha1                            2.3058+-0.0905          2.2729+-0.0468         might be 1.0145x faster
   date-format-tofte                     10.5226+-0.3112         10.2755+-0.3134         might be 1.0240x faster
   date-format-xparb                      8.8497+-0.3011    ?     9.0041+-0.2844       ? might be 1.0175x slower
   math-cordic                            6.3786+-0.1561          6.3529+-0.1171       
   math-partial-sums                      7.8715+-0.1752          7.7494+-0.1679         might be 1.0157x faster
   math-spectral-norm                     2.5403+-0.0564    ?     2.5837+-0.1298       ? might be 1.0171x slower
   regexp-dna                            10.5271+-0.1745         10.3552+-0.2115         might be 1.0166x faster
   string-base64                          6.1475+-0.2276          6.0770+-0.2383         might be 1.0116x faster
   string-fasta                           7.7278+-0.2546          7.5394+-0.1755         might be 1.0250x faster
   string-tagcloud                       12.1584+-0.4519    ?    12.2708+-0.3747       ?
   string-unpack-code                    18.6953+-0.4765    ?    19.0792+-0.4617       ? might be 1.0205x slower
   string-validate-input                  7.2421+-0.2037          7.0584+-0.1706         might be 1.0260x faster

   &lt;arithmetic&gt;                           6.6288+-0.0408    ^     6.5426+-0.0404       ^ definitely 1.0132x faster
   &lt;geometric&gt;                            5.5099+-0.0338    ^     5.4210+-0.0341       ^ definitely 1.0164x faster
   &lt;harmonic&gt;                             4.4992+-0.0305          4.4473+-0.0353         might be 1.0117x faster

                                            TipOfTree            PartialSpecFail                                 
V8:
   crypto                                91.0338+-0.5191    !   104.1613+-0.8925       ! definitely 1.1442x slower
   deltablue                            269.7535+-2.7809    ^   265.7885+-0.7118       ^ definitely 1.0149x faster
   earley-boyer                          95.0161+-0.5041    ?    95.5356+-0.5577       ?
   raytrace                              79.1499+-0.5473    ?    79.7137+-0.6612       ?
   regexp                               110.8495+-0.4558    ^   109.2641+-0.3574       ^ definitely 1.0145x faster
   richards                             240.9133+-0.8254        239.4367+-1.6783       
   splay                                103.0647+-0.6429    !   104.4789+-0.7212       ! definitely 1.0137x slower

   &lt;arithmetic&gt;                         141.3972+-0.2966    !   142.6256+-0.4231       ! definitely 1.0087x slower
   &lt;geometric&gt;                          126.1408+-0.1666    !   128.4242+-0.3937       ! definitely 1.0181x slower
   &lt;harmonic&gt;                           115.2637+-0.1753    !   118.0846+-0.4050       ! definitely 1.0245x slower

                                            TipOfTree            PartialSpecFail                                 
Kraken:
   ai-astar                            1108.9297+-5.9845    ?  1123.4756+-12.5830      ? might be 1.0131x slower
   audio-beat-detection                 481.1936+-1.4541    ?   486.0185+-4.7695       ? might be 1.0100x slower
   audio-dft                            426.4858+-4.3795        425.2002+-2.3276       
   audio-fft                            373.8409+-2.1670    ?   374.6652+-0.9116       ?
   audio-oscillator                     384.1150+-2.2719    ?   387.0932+-3.3490       ?
   imaging-darkroom                     537.6787+-3.3081        534.4603+-2.0673       
   imaging-desaturate                   623.8627+-8.2803        615.4398+-4.8321         might be 1.0137x faster
   imaging-gaussian-blur               1738.3217+-5.4653       1729.6538+-4.2880       
   json-parse-financial                  49.1108+-0.5305    ?    49.8053+-0.3037       ? might be 1.0141x slower
   json-stringify-tinderbox              72.4905+-0.6863    ^    69.0171+-0.4305       ^ definitely 1.0503x faster
   stanford-crypto-aes                  145.4706+-1.1861        145.0223+-1.1645       
   stanford-crypto-ccm                  115.7358+-0.3964    ^   113.6545+-0.7748       ^ definitely 1.0183x faster
   stanford-crypto-pbkdf2               338.3754+-1.7782    !   341.7524+-1.4837       ! definitely 1.0100x slower
   stanford-crypto-sha256-iterative     131.3300+-0.4891    !   134.3038+-1.2092       ! definitely 1.0226x slower

   &lt;arithmetic&gt;                         466.2101+-0.8557    ?   466.3973+-1.1839       ?
   &lt;geometric&gt;                          301.2570+-0.3548        300.8576+-0.4784       
   &lt;harmonic&gt;                           186.9324+-0.3719    ^   186.0068+-0.4899       ^ definitely 1.0050x faster

                                            TipOfTree            PartialSpecFail                                 
All benchmarks:
   &lt;arithmetic&gt;                         163.5972+-0.2484    ?   163.7883+-0.3213       ?
   &lt;geometric&gt;                           28.9262+-0.1040         28.7323+-0.1022       
   &lt;harmonic&gt;                             7.9467+-0.0525          7.8585+-0.0613         might be 1.0112x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464385</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 14:39:33 -0700</bug_when>
    <thetext>Looks like this path will work best if it is turned off for static speculation, but turned on for dynamic speculation.  Here&apos;s the performance with it turned off.  Note the noise (38% speed-up on one SunSpider benchmark that gets totally lost in the average).  I&apos;m convinced that it is in fact noise and not real.



Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;PartialSpecFailOff&quot; at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. 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.

                                            TipOfTree           PartialSpecFailOff                               
SunSpider:
   3d-cube                                7.7127+-0.1331    ?     7.8798+-0.2091       ? might be 1.0217x slower
   3d-morph                               7.5139+-0.1326    ?     7.5244+-0.2035       ?
   3d-raytrace                            7.3208+-0.1767    ?     7.5204+-0.2760       ? might be 1.0273x slower
   access-binary-trees                    2.3967+-0.0970          2.2549+-0.0498         might be 1.0629x faster
   access-fannkuch                       11.9275+-0.2377         11.8759+-0.1481       
   access-nbody                           4.2453+-0.0602    ?     4.2470+-0.0751       ?
   access-nsieve                          2.5830+-0.0807          2.4702+-0.0412         might be 1.0457x faster
   bitops-3bit-bits-in-byte               1.7405+-0.0422    ?     1.7923+-0.0560       ? might be 1.0298x slower
   bitops-bits-in-byte                    4.5369+-0.1687    ^     3.2834+-0.0690       ^ definitely 1.3817x faster
   bitops-bitwise-and                     3.6754+-0.0649          3.6354+-0.0616         might be 1.0110x faster
   bitops-nsieve-bits                     5.3928+-0.1547    ?     5.5196+-0.1109       ? might be 1.0235x slower
   controlflow-recursive                  2.0130+-0.0451    ?     2.0507+-0.0368       ? might be 1.0187x slower
   crypto-aes                             6.6134+-0.2576          6.6038+-0.1874       
   crypto-md5                             2.8496+-0.1166    ?     2.9049+-0.1234       ? might be 1.0194x slower
   crypto-sha1                            2.2437+-0.0694    ?     2.3244+-0.0596       ? might be 1.0360x slower
   date-format-tofte                     10.1987+-0.2700    ?    10.2935+-0.2483       ?
   date-format-xparb                      9.0265+-0.2755          8.9221+-0.3400         might be 1.0117x faster
   math-cordic                            6.2957+-0.0972    ?     6.4081+-0.1749       ? might be 1.0179x slower
   math-partial-sums                      7.7582+-0.1480    ?     7.8717+-0.1562       ? might be 1.0146x slower
   math-spectral-norm                     2.5476+-0.0818    ?     2.5812+-0.1030       ? might be 1.0132x slower
   regexp-dna                            10.6437+-0.2123         10.3263+-0.1333         might be 1.0307x faster
   string-base64                          6.1379+-0.2106          6.0649+-0.1760         might be 1.0120x faster
   string-fasta                           7.4621+-0.1615    ?     7.5237+-0.1623       ?
   string-tagcloud                       12.0855+-0.2801    ?    12.3640+-0.3423       ? might be 1.0230x slower
   string-unpack-code                    19.0547+-0.2942    ?    19.1257+-0.4011       ?
   string-validate-input                  7.2033+-0.2369          7.0648+-0.2110         might be 1.0196x faster

   &lt;arithmetic&gt;                           6.5838+-0.0390          6.5551+-0.0416       
   &lt;geometric&gt;                            5.4789+-0.0256          5.4260+-0.0289       
   &lt;harmonic&gt;                             4.4947+-0.0220          4.4438+-0.0304         might be 1.0114x faster

                                            TipOfTree           PartialSpecFailOff                               
V8:
   crypto                                90.9512+-0.7022    ^    86.9512+-0.4698       ^ definitely 1.0460x faster
   deltablue                            264.5347+-0.9710    ?   267.4549+-2.0893       ? might be 1.0110x slower
   earley-boyer                          93.9388+-0.3832         93.3699+-0.2572       
   raytrace                              78.7379+-0.7401         77.6151+-0.4294         might be 1.0145x faster
   regexp                               110.2534+-0.8725    ?   111.8147+-1.1356       ? might be 1.0142x slower
   richards                             237.0448+-1.9937    ?   240.2445+-1.7043       ? might be 1.0135x slower
   splay                                102.7832+-0.4053    ?   103.1920+-1.1310       ?

   &lt;arithmetic&gt;                         139.7491+-0.4324    ?   140.0917+-0.4421       ?
   &lt;geometric&gt;                          125.0396+-0.3620        124.6279+-0.3570       
   &lt;harmonic&gt;                           114.4838+-0.3624    ^   113.5691+-0.3540       ^ definitely 1.0081x faster

                                            TipOfTree           PartialSpecFailOff                               
Kraken:
   ai-astar                            1111.5817+-10.0950      1100.4044+-7.0387         might be 1.0102x faster
   audio-beat-detection                 484.9305+-3.8803        479.5919+-2.9518         might be 1.0111x faster
   audio-dft                            423.4744+-4.5484        420.9447+-2.8184       
   audio-fft                            377.1075+-2.9333        374.8421+-2.5561       
   audio-oscillator                     381.5580+-2.0830        380.4500+-2.6626       
   imaging-darkroom                     540.4795+-3.7662    ^   531.7605+-2.5730       ^ definitely 1.0164x faster
   imaging-desaturate                   616.7875+-7.1272    ?   617.7079+-7.1100       ?
   imaging-gaussian-blur               1732.4610+-3.6755    ?  1739.1962+-16.1256      ?
   json-parse-financial                  49.6394+-0.4810         49.6081+-0.2538       
   json-stringify-tinderbox              68.6684+-0.7766    ?    68.9953+-0.7159       ?
   stanford-crypto-aes                  146.0314+-3.3339        144.2934+-1.3057         might be 1.0120x faster
   stanford-crypto-ccm                  112.5396+-0.6479    ?   113.2355+-0.9298       ?
   stanford-crypto-pbkdf2               339.8969+-3.1305        339.6628+-2.0729       
   stanford-crypto-sha256-iterative     132.6277+-1.3897        132.0876+-1.3444       

   &lt;arithmetic&gt;                         465.5560+-0.7448        463.7700+-1.9575       
   &lt;geometric&gt;                          299.9983+-0.5828        298.8703+-0.7334       
   &lt;harmonic&gt;                           185.2166+-0.6885        184.9963+-0.6590       

                                            TipOfTree           PartialSpecFailOff                               
All benchmarks:
   &lt;arithmetic&gt;                         163.1321+-0.2674        162.6352+-0.5690       
   &lt;geometric&gt;                           28.7626+-0.0819    ^    28.5624+-0.0863       ^ definitely 1.0070x faster
   &lt;harmonic&gt;                             7.9373+-0.0381          7.8488+-0.0527         might be 1.0113x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464404</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 15:00:16 -0700</bug_when>
    <thetext>Doing this with dynamic optimization enabled appears to reveal a case in v8-crypto where we&apos;re speculating incorrectly.  My opinion is that we should commit this anyway, since (1) dynamic optimization is turned off by default and (2) we should make v8-crypto speculate correctly all the time instead of relying on the non-speculative path to save us.



Benchmark report for SunSpider, V8, and Kraken.

VMs tested:
&quot;TipOfTreeDyn&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc
&quot;PartialSpecFail&quot; at /Volumes/Data/pizlo/octonary/OpenSource/WebKitBuild/Release/jsc

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. 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.

                                           TipOfTreeDyn          PartialSpecFail                                 
SunSpider:
   3d-cube                               12.4085+-0.3516         12.2519+-0.2947         might be 1.0128x faster
   3d-morph                               7.8265+-0.1363    ?     7.9644+-0.1721       ? might be 1.0176x slower
   3d-raytrace                            8.1677+-0.2721    ?     8.5670+-0.1768       ? might be 1.0489x slower
   access-binary-trees                    2.4106+-0.0321    ?     2.4442+-0.0792       ? might be 1.0139x slower
   access-fannkuch                       12.7431+-0.2813    ?    12.7705+-0.1946       ?
   access-nbody                           4.2390+-0.0476    !     4.4125+-0.1213       ! definitely 1.0409x slower
   access-nsieve                          2.7531+-0.0640          2.7184+-0.0627         might be 1.0127x faster
   bitops-3bit-bits-in-byte               1.8846+-0.0544    ?     2.0364+-0.1052       ? might be 1.0805x slower
   bitops-bits-in-byte                    5.2725+-0.2678          5.1915+-0.4005         might be 1.0156x faster
   bitops-bitwise-and                     4.1097+-0.1246          3.9832+-0.1009         might be 1.0318x faster
   bitops-nsieve-bits                     5.8795+-0.1013    ?     6.0344+-0.2063       ? might be 1.0263x slower
   controlflow-recursive                  2.0543+-0.0607          2.0061+-0.0400         might be 1.0240x faster
   crypto-aes                             7.9677+-0.2851          7.9440+-0.3411       
   crypto-md5                             2.9693+-0.0756    ?     3.1021+-0.1297       ? might be 1.0447x slower
   crypto-sha1                            2.4788+-0.0803    ?     2.4853+-0.0725       ?
   date-format-tofte                     10.6320+-0.2625    ?    10.6375+-0.2228       ?
   date-format-xparb                      9.2417+-0.2094    ?     9.4102+-0.2722       ? might be 1.0182x slower
   math-cordic                            6.7555+-0.1049    ?     6.7855+-0.0993       ?
   math-partial-sums                      7.7144+-0.1615          7.5565+-0.1082         might be 1.0209x faster
   math-spectral-norm                     2.6691+-0.0684          2.6070+-0.0618         might be 1.0238x faster
   regexp-dna                            10.4582+-0.2742    ?    10.4726+-0.2079       ?
   string-base64                          6.3856+-0.1344    ?     6.4854+-0.1409       ? might be 1.0156x slower
   string-fasta                           7.2776+-0.1751    ?     7.4598+-0.2319       ? might be 1.0250x slower
   string-tagcloud                       12.5675+-0.5429    ?    12.6614+-0.3102       ?
   string-unpack-code                    19.5392+-0.6266         19.5243+-0.5633       
   string-validate-input                  6.8255+-0.1597    ?     7.2243+-0.2755       ? might be 1.0584x slower

   &lt;arithmetic&gt;                           7.0474+-0.0485    ?     7.1052+-0.0365       ?
   &lt;geometric&gt;                            5.8534+-0.0323    ?     5.9095+-0.0296       ?
   &lt;harmonic&gt;                             4.7800+-0.0298    ?     4.8287+-0.0358       ? might be 1.0102x slower

                                           TipOfTreeDyn          PartialSpecFail                                 
V8:
   crypto                                82.4555+-0.3792    !    87.4537+-0.6151       ! definitely 1.0606x slower
   deltablue                            263.4640+-2.7763        261.5359+-2.0604       
   earley-boyer                         101.3340+-0.3097        100.8797+-0.3992       
   raytrace                              82.1846+-0.3536         81.5247+-0.8216       
   regexp                               111.7920+-0.7306        110.9027+-0.5673       
   richards                             218.6683+-0.6105    ?   219.1288+-1.2508       ?
   splay                                106.2067+-0.5304        105.4638+-0.5139       

   &lt;arithmetic&gt;                         138.0150+-0.5447    ?   138.1270+-0.3684       ?
   &lt;geometric&gt;                          124.7283+-0.4012    ?   125.1911+-0.2985       ?
   &lt;harmonic&gt;                           114.9504+-0.3416    !   115.6934+-0.3325       ! definitely 1.0065x slower

                                           TipOfTreeDyn          PartialSpecFail                                 
Kraken:
   ai-astar                            1138.4605+-9.4245    ?  1143.6393+-8.0190       ?
   audio-beat-detection                 514.7744+-2.1217    ?   514.9893+-2.7075       ?
   audio-dft                            470.3802+-3.7706    ?   477.4101+-6.7100       ? might be 1.0149x slower
   audio-fft                            395.4076+-4.8793    ?   401.4950+-2.7998       ? might be 1.0154x slower
   audio-oscillator                     351.5889+-2.0485        348.8424+-1.1604       
   imaging-darkroom                     539.0097+-7.2727        533.6361+-1.2733         might be 1.0101x faster
   imaging-desaturate                   596.2434+-1.6842    ?   597.0473+-2.0741       ?
   imaging-gaussian-blur               2301.8736+-20.0258   ?  2303.2791+-14.8414      ?
   json-parse-financial                  50.6473+-0.3132         50.1082+-0.3485         might be 1.0108x faster
   json-stringify-tinderbox              69.7147+-0.5663    ?    70.0110+-0.6125       ?
   stanford-crypto-aes                  162.4962+-0.6509    !   166.2443+-2.4364       ! definitely 1.0231x slower
   stanford-crypto-ccm                  123.4177+-0.5429    ?   124.6134+-1.4519       ?
   stanford-crypto-pbkdf2               364.9508+-2.1027    ^   358.8682+-2.5451       ^ definitely 1.0169x faster
   stanford-crypto-sha256-iterative     139.6700+-0.4417        138.4910+-1.0300       

   &lt;arithmetic&gt;                         515.6168+-2.0708    ?   516.3339+-1.2586       ?
   &lt;geometric&gt;                          316.7307+-0.7793    ?   317.1747+-0.6087       ?
   &lt;harmonic&gt;                           193.0029+-0.5715        192.9705+-0.6043       

                                           TipOfTreeDyn          PartialSpecFail                                 
All benchmarks:
   &lt;arithmetic&gt;                         178.0419+-0.5977    ?   178.3043+-0.3970       ?
   &lt;geometric&gt;                           30.3089+-0.0897    !    30.4989+-0.0852       ! definitely 1.0063x slower
   &lt;harmonic&gt;                             8.4339+-0.0515    ?     8.5184+-0.0617       ? might be 1.0100x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464424</commentid>
    <comment_count>5</comment_count>
      <attachid>106799</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-08 15:12:20 -0700</bug_when>
    <thetext>Created attachment 106799
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465064</commentid>
    <comment_count>6</comment_count>
      <attachid>106799</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-09 15:36:23 -0700</bug_when>
    <thetext>Comment on attachment 106799
the patch

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

r=me

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1387
&gt; +        m_compileIndex = block.begin;
&gt; +        m_compileOkay = true;
&gt; +        clearGenerationInfo();

It confused me that a block could sometimes assume that generation info was in an empty state, and sometimes not. Would be nice to clean this up in future, possibly by giving each block its own generation info, or maybe just by calling clearGenerationInfo() unconditionally at the head of SpeculativeJIT::compile, if that&apos;s not too expensive.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:229
&gt; +        // under static speculation, it&apos;s more profitable to give up entirely at this

Capital &apos;U&apos;, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465066</commentid>
    <comment_count>7</comment_count>
      <attachid>106799</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-09 15:36:52 -0700</bug_when>
    <thetext>Comment on attachment 106799
the patch

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

I think the mechanism implemented in this patch (reintroducing a dynamic bail to non-spec on terminateSpeculation) should be completely orthogonal to the DYNAMIC_OPTIMIZATION - we should be able to configure the two separately? - if so, it may make sense to land this under a separate #ifdef.  I&apos;d suggest changing the ENABLE(DYNAMIC_OPTIMIZATION) tests into the code to something like ENABLE(DYNAMIC_TERMINATE_SPECULATIVE_JIT), &amp; then &quot;#define ENABLE_DYNAMIC_TERMINATE_SPECULATIVE_JIT ENABLE_DYNAMIC_OPTIMIZATION&quot; in Platform.h.

r+ with at least a fix to DFG_DEBUG_VERBOSE.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:223
&gt; +#if DFG_DEBUG_VERBOSE

This debug printf should be moved outside of the outer ifdef, such that it is printed for both ENABLE(DYNAMIC_OPTIMIZATION) &amp; !ENABLE(DYNAMIC_OPTIMIZATION).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465067</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-09 15:41:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 106799 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106799&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1387
&gt; &gt; +        m_compileIndex = block.begin;
&gt; &gt; +        m_compileOkay = true;
&gt; &gt; +        clearGenerationInfo();
&gt; 
&gt; It confused me that a block could sometimes assume that generation info was in an empty state, and sometimes not. Would be nice to clean this up in future, possibly by giving each block its own generation info, or maybe just by calling clearGenerationInfo() unconditionally at the head of SpeculativeJIT::compile, if that&apos;s not too expensive.

One way to ensure that the generation info is already clear at the head of compile(BasicBlock&amp;) may be to call clearGenerationInfo() from terminateSpeculativeExecution(), then we may be able to assert in all cases that the generation info is already clear at the head of blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465120</commentid>
    <comment_count>9</comment_count>
      <attachid>106944</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-09-09 17:07:10 -0700</bug_when>
    <thetext>Created attachment 106944
the patch - fix review

Will wait for the bots to be happy before I land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465130</commentid>
    <comment_count>10</comment_count>
      <attachid>106944</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-09-09 17:16:37 -0700</bug_when>
    <thetext>Comment on attachment 106944
the patch - fix review

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465327</commentid>
    <comment_count>11</comment_count>
      <attachid>106944</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-10 14:22:52 -0700</bug_when>
    <thetext>Comment on attachment 106944
the patch - fix review

Clearing flags on attachment: 106944

Committed r94914: &lt;http://trac.webkit.org/changeset/94914&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>465328</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-10 14:22:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106799</attachid>
            <date>2011-09-08 15:12:20 -0700</date>
            <delta_ts>2011-09-09 17:07:10 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>partialspecfail_patch_1.diff</filename>
            <type>text/plain</type>
            <size>5892</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ4MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDktMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGNvbXBsZXRlbHkgdW5kb2VzIHNwZWN1bGF0aXZlIGNvbXBpbGF0aW9uIGV2ZW4gaW4g
dGhlIGNhc2Ugb2YKKyAgICAgICAgYSBwYXJ0aWFsIHN0YXRpYyBzcGVjdWxhdGlvbiBmYWlsdXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc5OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyBhIHJlZ3Jlc3Npb24gd2l0aCBzdGF0aWMgc3BlY3VsYXRpb24sIHNvIGl0IGlzIHR1
cm5lZCBvZmYgYnkKKyAgICAgICAgZGVmYXVsdC4gIEJ1dCBpdCBpcyBhIG5lY2Vzc2FyeSBwcmVy
ZXF1aXNpdGUgZm9yIGZ1cnRoZXIgd29yayBvbgorICAgICAgICBkeW5hbWljIHNwZWN1bGF0aW9u
LgorCisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvZGVHZW5lcmF0b3I6OmNsZWFyR2VuZXJhdGlvbkluZm8pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKToKKwogMjAx
MS0wOS0wOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBCdWls
ZCBmaXguCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29k
ZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDk0ODA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQs
MTQgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogCit2b2lkIEpJVENvZGVH
ZW5lcmF0b3I6OmNsZWFyR2VuZXJhdGlvbkluZm8oKQoreworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2dlbmVyYXRpb25JbmZvLnNpemUoKTsgKytpKQorICAgICAgICBtX2dlbmVyYXRp
b25JbmZvW2ldID0gR2VuZXJhdGlvbkluZm8oKTsKKyAgICBtX2dwcnMgPSBSZWdpc3RlckJhbms8
R1BSSW5mbz4oKTsKKyAgICBtX2ZwcnMgPSBSZWdpc3RlckJhbms8RlBSSW5mbz4oKTsKK30KKwog
R1BSUmVnIEpJVENvZGVHZW5lcmF0b3I6OmZpbGxJbnRlZ2VyKE5vZGVJbmRleCBub2RlSW5kZXgs
IERhdGFGb3JtYXQmIHJldHVybkZvcm1hdCkKIHsKICAgICBOb2RlJiBub2RlID0gbV9qaXQuZ3Jh
cGgoKVtub2RlSW5kZXhdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdKSVRDb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDk0ODA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2
ICsyMDIsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICwgbV9ibG9ja0hlYWRzKGppdC5ncmFwaCgp
Lm1fYmxvY2tzLnNpemUoKSkKICAgICB7CiAgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXJHZW5l
cmF0aW9uSW5mbygpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCB3aGVuIGdlbmVy
YXRpbmcgJ3VuZXhwZWN0ZWQnCiAgICAgLy8gY2FsbHMgb3V0IGZyb20gSklUIGNvZGUgdG8gQysr
IGhlbHBlciByb3V0aW5lcyAtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gOTQ4MDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzks
MTkgKzM5LDIxIEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUludEkKIAog
ICAgIHN3aXRjaCAoaW5mby5yZWdpc3RlckZvcm1hdCgpKSB7CiAgICAgY2FzZSBEYXRhRm9ybWF0
Tm9uZTogeworICAgICAgICBpZiAobm9kZS5pc0NvbnN0YW50KCkgJiYgIWlzSW50MzJDb25zdGFu
dChub2RlSW5kZXgpKSB7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bigpOworICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludGVnZXI7CisgICAg
ICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
R1BSUmVnIGdwciA9IGFsbG9jYXRlKCk7CiAKICAgICAgICAgaWYgKG5vZGUuaXNDb25zdGFudCgp
KSB7CiAgICAgICAgICAgICBtX2dwcnMucmV0YWluKGdwciwgdmlydHVhbFJlZ2lzdGVyLCBTcGls
bE9yZGVyQ29uc3RhbnQpOwotICAgICAgICAgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlSW5k
ZXgpKSB7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6SW1tMzIo
dmFsdWVPZkludDMyQ29uc3RhbnQobm9kZUluZGV4KSksIGdwcik7Ci0gICAgICAgICAgICAgICAg
aW5mby5maWxsSW50ZWdlcihncHIpOwotICAgICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERh
dGFGb3JtYXRJbnRlZ2VyOwotICAgICAgICAgICAgICAgIHJldHVybiBncHI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbigpOworICAgICAg
ICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGVJ
bmRleCkpLCBncHIpOworICAgICAgICAgICAgaW5mby5maWxsSW50ZWdlcihncHIpOwogICAgICAg
ICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludGVnZXI7Ci0gICAgICAgICAgICByZXR1
cm4gYWxsb2NhdGUoKTsKKyAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0ID0gaW5mby5zcGlsbEZvcm1hdCgp
OwogICAgICAgICAgICAgQVNTRVJUKHNwaWxsRm9ybWF0ICYgRGF0YUZvcm1hdEpTKTsKQEAgLTEz
NzQsNyArMTM3NiwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFzaWNCbG9jayYgYmxvY2spCiB7Ci0g
ICAgQVNTRVJUKG1fY29tcGlsZUluZGV4ID09IGJsb2NrLmJlZ2luKTsKKyNpZiAhRU5BQkxFKERZ
TkFNSUNfT1BUSU1JWkFUSU9OKQorICAgIEFTU0VSVChtX2NvbXBpbGVPa2F5KTsKKyNlbmRpZgor
ICAgIGlmIChtX2NvbXBpbGVPa2F5KQorICAgICAgICBBU1NFUlQobV9jb21waWxlSW5kZXggPT0g
YmxvY2suYmVnaW4pOworICAgIGVsc2UgeworICAgICAgICBtX2NvbXBpbGVJbmRleCA9IGJsb2Nr
LmJlZ2luOworICAgICAgICBtX2NvbXBpbGVPa2F5ID0gdHJ1ZTsKKyAgICAgICAgY2xlYXJHZW5l
cmF0aW9uSW5mbygpOworICAgIH0KICAgICBtX2Jsb2NrSGVhZHNbbV9ibG9ja10gPSBtX2ppdC5s
YWJlbCgpOwogI2lmIERGR19KSVRfQlJFQUtfT05fRVZFUllfQkxPQ0sKICAgICBtX2ppdC5icmVh
a3BvaW50KCk7CkBAIC0xMzg0LDcgKzEzOTUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKEJhc2ljQmxvY2smCiAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2ppdC5ncmFwaCgpW21fY29t
cGlsZUluZGV4XTsKICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLQorICAgICAgICAKICNpZiBERkdfREVCVUdfVkVSQk9TRQogICAgICAg
ICBmcHJpbnRmKHN0ZGVyciwgIlNwZWN1bGF0aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgYXQg
SklUIG9mZnNldCAweCV4ICAgIiwgKGludCltX2NvbXBpbGVJbmRleCwgbV9qaXQuZGVidWdPZmZz
ZXQoKSk7CiAjZW5kaWYKQEAgLTE0NDUsOCArMTQ1NiwxMCBAQCBib29sIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKCkKICAgICBBU1NFUlQoIW1fY29tcGlsZUluZGV4KTsKICAgICBmb3IgKG1fYmxv
Y2sgPSAwOyBtX2Jsb2NrIDwgbV9qaXQuZ3JhcGgoKS5tX2Jsb2Nrcy5zaXplKCk7ICsrbV9ibG9j
aykgewogICAgICAgICBjb21waWxlKCptX2ppdC5ncmFwaCgpLm1fYmxvY2tzW21fYmxvY2tdKTsK
KyNpZiAhRU5BQkxFKERZTkFNSUNfT1BUSU1JWkFUSU9OKQogICAgICAgICBpZiAoIW1fY29tcGls
ZU9rYXkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKICAgICB9CiAgICAgbGlu
a0JyYW5jaGVzKCk7CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiA5NDgwNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjE3LDcgKzIxNywxOSBAQCBwcml2YXRlOgogICAgIC8vIENhbGxlZCB3aGVuIHdlIHN0YXRp
Y2FsbHkgZGV0ZXJtaW5lIHRoYXQgYSBzcGVjdWxhdGlvbiB3aWxsIGZhaWwuCiAgICAgdm9pZCB0
ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbigpCiAgICAgeworI2lmIEVOQUJMRShEWU5BTUlD
X09QVElNSVpBVElPTikKKyAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQorICAgICAgICAgICAg
cmV0dXJuOworI2lmIERGR19ERUJVR19WRVJCT1NFCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
U3BlY3VsYXRpdmVKSVQgd2FzIHRlcm1pbmF0ZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKG1faml0Lmp1bXAoKSk7CisgICAgICAgIG1fY29tcGlsZU9rYXkgPSBmYWxz
ZTsKKyNlbHNlCisgICAgICAgIC8vIHVuZGVyIHN0YXRpYyBzcGVjdWxhdGlvbiwgaXQncyBtb3Jl
IHByb2ZpdGFibGUgdG8gZ2l2ZSB1cCBlbnRpcmVseSBhdCB0aGlzCisgICAgICAgIC8vIHBvaW50
LgogICAgICAgICBtX2NvbXBpbGVPa2F5ID0gZmFsc2U7CisjZW5kaWYKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTxib29sIHN0cmljdD4K
</data>
<flag name="review"
          id="103315"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106944</attachid>
            <date>2011-09-09 17:07:10 -0700</date>
            <delta_ts>2011-09-10 14:22:52 -0700</delta_ts>
            <desc>the patch - fix review</desc>
            <filename>partialspecfail_patch_2.diff</filename>
            <type>text/plain</type>
            <size>7587</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTQ4ODkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTEtMDktMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBE
RkcgSklUIGNvbXBsZXRlbHkgdW5kb2VzIHNwZWN1bGF0aXZlIGNvbXBpbGF0aW9uIGV2ZW4gaW4g
dGhlIGNhc2Ugb2YKKyAgICAgICAgYSBwYXJ0aWFsIHN0YXRpYyBzcGVjdWxhdGlvbiBmYWlsdXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Nzc5OAor
CisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyBhIHJlZ3Jlc3Npb24gd2l0aCBzdGF0aWMgc3BlY3VsYXRpb24sIHNvIGl0IGlzIHR1
cm5lZCBvZmYgYnkKKyAgICAgICAgZGVmYXVsdC4gIEJ1dCBpdCBpcyBhIG5lY2Vzc2FyeSBwcmVy
ZXF1aXNpdGUgZm9yIGZ1cnRoZXIgd29yayBvbgorICAgICAgICBkeW5hbWljIHNwZWN1bGF0aW9u
LgorCisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkpJVENvZGVHZW5lcmF0b3I6OmNsZWFyR2VuZXJhdGlvbkluZm8pOgorICAgICAgICAq
IGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0
ZUludEludGVybmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OnRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKToKKwogMjAx
MS0wOS0wOSAgTWFyayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVuemlwIGluaXRpYWxpemF0aW9uIGxpc3RzIGFuZCBjb25zdHJ1Y3RvcnMgaW4gSlNDZWxs
IGhpZXJhcmNoeSAoNS83KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRD
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0pJVENvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiA5NDg4OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDE0IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAordm9p
ZCBKSVRDb2RlR2VuZXJhdG9yOjpjbGVhckdlbmVyYXRpb25JbmZvKCkKK3sKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9nZW5lcmF0aW9uSW5mby5zaXplKCk7ICsraSkKKyAgICAgICAg
bV9nZW5lcmF0aW9uSW5mb1tpXSA9IEdlbmVyYXRpb25JbmZvKCk7CisgICAgbV9ncHJzID0gUmVn
aXN0ZXJCYW5rPEdQUkluZm8+KCk7CisgICAgbV9mcHJzID0gUmVnaXN0ZXJCYW5rPEZQUkluZm8+
KCk7Cit9CisKIEdQUlJlZyBKSVRDb2RlR2VuZXJhdG9yOjpmaWxsSW50ZWdlcihOb2RlSW5kZXgg
bm9kZUluZGV4LCBEYXRhRm9ybWF0JiByZXR1cm5Gb3JtYXQpCiB7CiAgICAgTm9kZSYgbm9kZSA9
IG1faml0LmdyYXBoKClbbm9kZUluZGV4XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA5NDg4OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDIsNiArMjAyLDggQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1fYmxvY2tIZWFkcyhq
aXQuZ3JhcGgoKS5tX2Jsb2Nrcy5zaXplKCkpCiAgICAgewogICAgIH0KKyAgICAKKyAgICB2b2lk
IGNsZWFyR2VuZXJhdGlvbkluZm8oKTsKIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHVzZWQg
d2hlbiBnZW5lcmF0aW5nICd1bmV4cGVjdGVkJwogICAgIC8vIGNhbGxzIG91dCBmcm9tIEpJVCBj
b2RlIHRvIEMrKyBoZWxwZXIgcm91dGluZXMgLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDk0ODg5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg1
MSwxMCArODUxLDYgQEAgdm9pZCBKSVRDb21waWxlcjo6Y29tcGlsZUJvZHkoKQogICAgICAgICAv
LyBMaW5rIHRoZSBiYWlsLW91dHMgZnJvbSB0aGUgc3BlY3VsYXRpdmUgcGF0aCB0byB0aGUgY29y
cmVzcG9uZGluZyBlbnRyeSBwb2ludHMgaW50byB0aGUgbm9uLXNwZWN1bGF0aXZlIG9uZS4KICAg
ICAgICAgbGlua1NwZWN1bGF0aW9uQ2hlY2tzKHNwZWN1bGF0aXZlLCBub25TcGVjdWxhdGl2ZSk7
CiAgICAgfSBlbHNlIHsKLSNpZiBERkdfREVCVUdfVkVSQk9TRQotICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlNwZWN1bGF0aXZlSklUIHdhcyB0ZXJtaW5hdGVkLlxuIik7Ci0jZW5kaWYKLQogICAg
ICAgICAvLyBJZiBjb21waWxhdGlvbiB0aHJvdWdoIHRoZSBTcGVjdWxhdGl2ZUpJVCBmYWlsZWQs
IHRocm93IGF3YXkgdGhlIGNvZGUgd2UgZ2VuZXJhdGVkLgogICAgICAgICBtX2NhbGxzLmNsZWFy
KCk7CiAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3Nlcy5jbGVhcigpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDk0
ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDE5ICszOSwyMSBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVJbnRJCiAKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkg
ewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKKyAgICAgICAgaWYgKG5vZGUuaXNDb25zdGFu
dCgpICYmICFpc0ludDMyQ29uc3RhbnQobm9kZUluZGV4KSkgeworICAgICAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oKTsKKyAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERh
dGFGb3JtYXRJbnRlZ2VyOworICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCiAgICAgICAg
IGlmIChub2RlLmlzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgbV9ncHJzLnJldGFpbihncHIs
IHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlckNvbnN0YW50KTsKLSAgICAgICAgICAgIGlmIChp
c0ludDMyQ29uc3RhbnQobm9kZUluZGV4KSkgewotICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
TWFjcm9Bc3NlbWJsZXI6OkltbTMyKHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGVJbmRleCkpLCBn
cHIpOwotICAgICAgICAgICAgICAgIGluZm8uZmlsbEludGVnZXIoZ3ByKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50ZWdlcjsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZ3ByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oKTsKKyAgICAgICAgICAgIEFTU0VSVChpc0ludDMyQ29uc3RhbnQobm9kZUlu
ZGV4KSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW0zMih2YWx1
ZU9mSW50MzJDb25zdGFudChub2RlSW5kZXgpKSwgZ3ByKTsKKyAgICAgICAgICAgIGluZm8uZmls
bEludGVnZXIoZ3ByKTsKICAgICAgICAgICAgIHJldHVybkZvcm1hdCA9IERhdGFGb3JtYXRJbnRl
Z2VyOwotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CisgICAgICAgICAgICByZXR1cm4g
Z3ByOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgRGF0YUZvcm1hdCBzcGlsbEZvcm1h
dCA9IGluZm8uc3BpbGxGb3JtYXQoKTsKICAgICAgICAgICAgIEFTU0VSVChzcGlsbEZvcm1hdCAm
IERhdGFGb3JtYXRKUyk7CkBAIC0xMzc0LDYgKzEzNzYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoQmFz
aWNCbG9jayYgYmxvY2spCiB7CisgICAgQVNTRVJUKG1fY29tcGlsZU9rYXkpOwogICAgIEFTU0VS
VChtX2NvbXBpbGVJbmRleCA9PSBibG9jay5iZWdpbik7CiAgICAgbV9ibG9ja0hlYWRzW21fYmxv
Y2tdID0gbV9qaXQubGFiZWwoKTsKICNpZiBERkdfSklUX0JSRUFLX09OX0VWRVJZX0JMT0NLCkBA
IC0xMzg0LDcgKzEzODcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxv
Y2smCiAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2ppdC5ncmFwaCgpW21fY29tcGlsZUluZGV4XTsK
ICAgICAgICAgaWYgKCFub2RlLnNob3VsZEdlbmVyYXRlKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLQorICAgICAgICAKICNpZiBERkdfREVCVUdfVkVSQk9TRQogICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlNwZWN1bGF0aXZlSklUIGdlbmVyYXRpbmcgTm9kZSBAJWQgYXQgSklUIG9mZnNldCAw
eCV4ICAgIiwgKGludCltX2NvbXBpbGVJbmRleCwgbV9qaXQuZGVidWdPZmZzZXQoKSk7CiAjZW5k
aWYKQEAgLTEzOTMsOCArMTM5NiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJh
c2ljQmxvY2smCiAjZW5kaWYKICAgICAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgICAgICBj
b21waWxlKG5vZGUpOwotICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgIGlmICgh
bV9jb21waWxlT2theSkgeworI2lmIEVOQUJMRShEWU5BTUlDX1RFUk1JTkFURV9TUEVDVUxBVElP
TikKKyAgICAgICAgICAgIG1fY29tcGlsZU9rYXkgPSB0cnVlOworICAgICAgICAgICAgbV9jb21w
aWxlSW5kZXggPSBibG9jay5lbmQ7CisgICAgICAgICAgICBjbGVhckdlbmVyYXRpb25JbmZvKCk7
CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogI2lmIERGR19ERUJVR19W
RVJCT1NFCiAgICAgICAgIGlmIChub2RlLmhhc1Jlc3VsdCgpKQogICAgICAgICAgICAgZnByaW50
ZihzdGRlcnIsICItPiAlc1xuIiwgZGF0YUZvcm1hdFRvU3RyaW5nKG1fZ2VuZXJhdGlvbkluZm9b
bm9kZS52aXJ0dWFsUmVnaXN0ZXIoKV0ucmVnaXN0ZXJGb3JtYXQoKSkpOwpAQCAtMTQ0NSw4ICsx
NDU0LDEwIEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoKQogICAgIEFTU0VSVCghbV9j
b21waWxlSW5kZXgpOwogICAgIGZvciAobV9ibG9jayA9IDA7IG1fYmxvY2sgPCBtX2ppdC5ncmFw
aCgpLm1fYmxvY2tzLnNpemUoKTsgKyttX2Jsb2NrKSB7CiAgICAgICAgIGNvbXBpbGUoKm1faml0
LmdyYXBoKCkubV9ibG9ja3NbbV9ibG9ja10pOworI2lmICFFTkFCTEUoRFlOQU1JQ19PUFRJTUla
QVRJT04pCiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogICAgIH0KICAgICBsaW5rQnJhbmNoZXMoKTsKICAgICByZXR1cm4gdHJ1
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgJKHJldmlzaW9uIDk0ODg5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNyArMjE3LDE5IEBAIHByaXZhdGU6
CiAgICAgLy8gQ2FsbGVkIHdoZW4gd2Ugc3RhdGljYWxseSBkZXRlcm1pbmUgdGhhdCBhIHNwZWN1
bGF0aW9uIHdpbGwgZmFpbC4KICAgICB2b2lkIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9u
KCkKICAgICB7CisjaWYgREZHX0RFQlVHX1ZFUkJPU0UKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJTcGVjdWxhdGl2ZUpJVCB3YXMgdGVybWluYXRlZC5cbiIpOworI2VuZGlmCisjaWYgRU5BQkxF
KERZTkFNSUNfVEVSTUlOQVRFX1NQRUNVTEFUSU9OKQorICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQu
anVtcCgpKTsKKyAgICAgICAgbV9jb21waWxlT2theSA9IGZhbHNlOworI2Vsc2UKKyAgICAgICAg
Ly8gVW5kZXIgc3RhdGljIHNwZWN1bGF0aW9uLCBpdCdzIG1vcmUgcHJvZml0YWJsZSB0byBnaXZl
IHVwIGVudGlyZWx5IGF0IHRoaXMKKyAgICAgICAgLy8gcG9pbnQuCiAgICAgICAgIG1fY29tcGls
ZU9rYXkgPSBmYWxzZTsKKyNlbmRpZgogICAgIH0KIAogICAgIHRlbXBsYXRlPGJvb2wgc3RyaWN0
PgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gOTQ4ODkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk2OSw2ICs5NjksMTAgQEAKICNkZWZpbmUgRU5BQkxFX0RZTkFNSUNfT1BUSU1JWkFUSU9O
IEVOQUJMRV9USUVSRURfQ09NUElMQVRJT04KICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxF
X0RZTkFNSUNfVEVSTUlOQVRFX1NQRUNVTEFUSU9OKQorI2RlZmluZSBFTkFCTEVfRFlOQU1JQ19U
RVJNSU5BVEVfU1BFQ1VMQVRJT04gRU5BQkxFX0RZTkFNSUNfT1BUSU1JWkFUSU9OCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9WRVJCT1NFX1ZBTFVFX1BST0ZJTEUpICYmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKICNkZWZpbmUgRU5BQkxFX1ZFUkJPU0VfVkFMVUVfUFJPRklMRSAwCiAj
ZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>