<?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>73181</bug_id>
          
          <creation_ts>2011-11-27 18:32:06 -0800</creation_ts>
          <short_desc>GetById should not always speculate cell</short_desc>
          <delta_ts>2011-11-28 15:52:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509533</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-27 18:32:06 -0800</bug_when>
    <thetext>If the base of a GetById has a non-cell prediction, then the DFG should not try to speculate cell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509534</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-27 18:32:51 -0800</bug_when>
    <thetext>Performance of a first-cut implementation of this...


Benchmark report for SunSpider, V8, and Kraken on nitroflex.local (MacBookPro8,2).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r101201)
&quot;NoGetMethod&quot; at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r101201)
&quot;PrimGetBase&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r101201)

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.

                                            TipOfTree              NoGetMethod             PrimGetBase          PrimGetBase v. TipOfTree 
SunSpider:
   3d-cube                                7.0691+-0.1267    ?     7.0784+-0.2045          7.0039+-0.1187       
   3d-morph                               7.6568+-0.1297    ?     7.8721+-0.1176    ?     8.1907+-0.6314       ? might be 1.0697x slower
   3d-raytrace                            7.2227+-0.2082    ?     7.2419+-0.1003    ?     7.3524+-0.2183       ? might be 1.0180x slower
   access-binary-trees                    1.5380+-0.0657    ?     1.5739+-0.0693          1.5060+-0.0346         might be 1.0212x faster
   access-fannkuch                        6.3594+-0.1295          6.2829+-0.0979    ?     6.2998+-0.1182       
   access-nbody                           3.5279+-0.1152          3.5161+-0.0730          3.4945+-0.0643       
   access-nsieve                          2.5946+-0.0572          2.5348+-0.0358    ?     2.6063+-0.0493       ?
   bitops-3bit-bits-in-byte               1.2410+-0.0187    ?     1.2566+-0.0210    ?     1.2926+-0.0251       ! definitely 1.0416x slower
   bitops-bits-in-byte                    2.4381+-0.0789          2.4043+-0.0723    ?     2.4046+-0.0458         might be 1.0139x faster
   bitops-bitwise-and                     3.4144+-0.0557    ?     3.5170+-0.0546          3.4899+-0.1262       ? might be 1.0221x slower
   bitops-nsieve-bits                     5.4014+-0.0949          5.3504+-0.0593    ?     5.3838+-0.0737       
   controlflow-recursive                  2.0974+-0.0426    !     2.2017+-0.0562    ^     2.0681+-0.0326         might be 1.0142x faster
   crypto-aes                             7.1630+-0.1736          7.1521+-0.1292    ?     7.3224+-0.2781       ? might be 1.0222x slower
   crypto-md5                             2.4639+-0.0589    ?     2.4699+-0.0577          2.4066+-0.0665         might be 1.0238x faster
   crypto-sha1                            2.0894+-0.0543    ?     2.1261+-0.0655          2.0762+-0.0607       
   date-format-tofte                     10.3284+-0.3054         10.0767+-0.2380    ?    10.2680+-0.1504       
   date-format-xparb                     10.1959+-0.2049         10.0255+-0.4225          9.5804+-0.2663       ^ definitely 1.0642x faster
   math-cordic                            6.3103+-0.0606    ?     6.3779+-0.1325    ?     6.4144+-0.0896       ? might be 1.0165x slower
   math-partial-sums                      7.5439+-0.1266    ?     7.5619+-0.1212    ?     7.5857+-0.0965       ?
   math-spectral-norm                     2.3785+-0.0376          2.3741+-0.0454    ?     2.4332+-0.0667       ? might be 1.0230x slower
   regexp-dna                            11.3714+-0.1305         11.1018+-0.1760    ?    11.1192+-0.1735         might be 1.0227x faster
   string-base64                          3.8510+-0.0799    !     4.0801+-0.1467          3.9845+-0.1926       ? might be 1.0347x slower
   string-fasta                           6.6672+-0.1233    ?     6.8424+-0.1295    ^     6.6009+-0.0911         might be 1.0101x faster
   string-tagcloud                       11.4471+-0.2604         11.3699+-0.2749    ?    11.5158+-0.2730       ?
   string-unpack-code                    20.4049+-0.2379         20.2750+-0.3279    ^    19.1545+-0.3629       ^ definitely 1.0653x faster
   string-validate-input                  5.6009+-0.1562          5.3804+-0.0840    ?     5.3993+-0.0788         might be 1.0373x faster

   &lt;arithmetic&gt; *                         6.0914+-0.0231          6.0786+-0.0277          6.0367+-0.0473         might be 1.0091x faster
   &lt;geometric&gt;                            4.8508+-0.0164    ?     4.8652+-0.0272          4.8402+-0.0335         might be 1.0022x faster
   &lt;harmonic&gt;                             3.8184+-0.0232    ?     3.8493+-0.0315          3.8244+-0.0329       ? might be 1.0016x slower

                                            TipOfTree              NoGetMethod             PrimGetBase          PrimGetBase v. TipOfTree 
V8:
   crypto                                71.8362+-0.5343         71.2114+-0.2922    ?    71.4099+-0.4659       
   deltablue                            151.6392+-0.2754    ?   152.3053+-1.4860        152.2227+-1.8172       ?
   earley-boyer                          84.8051+-0.7669    ?    85.7523+-1.3221         85.0645+-0.8124       ?
   raytrace                              57.1427+-0.3630         56.8494+-0.7540         56.5672+-0.2806         might be 1.0102x faster
   regexp                               106.9854+-1.4281    ^   104.5819+-0.3292    ?   105.8538+-1.2369         might be 1.0107x faster
   richards                             119.7416+-0.5223        119.1687+-1.0246        118.3620+-1.0183         might be 1.0117x faster
   splay                                 73.0298+-1.0843         72.9875+-0.8546    ?    73.4269+-1.0974       ?

   &lt;arithmetic&gt;                          95.0257+-0.4054         94.6938+-0.4626    ?    94.7010+-0.2889         might be 1.0034x faster
   &lt;geometric&gt; *                         90.4063+-0.4310         90.0630+-0.4526    ?    90.0676+-0.2052         might be 1.0038x faster
   &lt;harmonic&gt;                            86.1961+-0.4327         85.8578+-0.4659         85.8489+-0.1909         might be 1.0040x faster

                                            TipOfTree              NoGetMethod             PrimGetBase          PrimGetBase v. TipOfTree 
Kraken:
   ai-astar                             494.8361+-3.1003    !   506.5466+-5.5824        502.8015+-7.0040       ? might be 1.0161x slower
   audio-beat-detection                 191.6589+-1.3843    ?   192.4531+-1.4820        191.2700+-0.6588       
   audio-dft                            272.7450+-3.7373        270.6687+-3.4628        268.3448+-2.1280         might be 1.0164x faster
   audio-fft                            125.8069+-0.7335    ?   126.0233+-0.7829    ?   126.2987+-0.8372       ?
   audio-oscillator                     251.6630+-3.1343    ?   252.7015+-3.5474        250.4863+-3.4858       
   imaging-darkroom                     306.7657+-5.6887        305.4661+-5.0127        303.7196+-4.0188         might be 1.0100x faster
   imaging-desaturate                   216.8601+-0.1732    !   218.8045+-1.4783        217.2796+-0.6431       ?
   imaging-gaussian-blur                561.0322+-3.8542        557.4898+-1.4044    ?   557.6545+-1.3581       
   json-parse-financial                  59.1528+-0.3669    ?    59.4811+-0.8032    ?    60.0628+-0.3790       ! definitely 1.0154x slower
   json-stringify-tinderbox              73.9959+-0.2743    !    75.9709+-0.6997         75.7469+-0.6275       ! definitely 1.0237x slower
   stanford-crypto-aes                   99.9355+-1.4815         99.4928+-0.4427    ^    98.0790+-0.2588       ^ definitely 1.0189x faster
   stanford-crypto-ccm                  102.9918+-0.9619    ?   103.3399+-0.9962        102.8367+-1.1936       
   stanford-crypto-pbkdf2               197.0331+-2.0990        196.9505+-6.7814        191.6590+-1.5363       ^ definitely 1.0280x faster
   stanford-crypto-sha256-iterative      85.9614+-1.3346         84.7761+-0.2501         84.7181+-0.7271         might be 1.0147x faster

   &lt;arithmetic&gt; *                       217.1742+-0.5951    ?   217.8689+-0.9613        216.4970+-0.5790         might be 1.0031x faster
   &lt;geometric&gt;                          173.9818+-0.3463    ?   174.4767+-0.6808        173.4797+-0.3852         might be 1.0029x faster
   &lt;harmonic&gt;                           140.9202+-0.2713    ?   141.4127+-0.4377        140.9196+-0.3761         might be 1.0000x faster

                                            TipOfTree              NoGetMethod             PrimGetBase          PrimGetBase v. TipOfTree 
All benchmarks:
   &lt;arithmetic&gt;                          82.2127+-0.2002    ?    82.3631+-0.2980         81.9323+-0.1981         might be 1.0034x faster
   &lt;geometric&gt;                           21.7829+-0.0523    ?    21.8246+-0.0761         21.7256+-0.0956         might be 1.0026x faster
   &lt;harmonic&gt;                             6.7241+-0.0399    ?     6.7773+-0.0539          6.7342+-0.0566       ? might be 1.0015x slower

                                            TipOfTree              NoGetMethod             PrimGetBase          PrimGetBase v. TipOfTree 
Geomean of preferred means:
   &lt;scaled-result&gt;                       49.2687+-0.1282         49.2238+-0.1311         49.0079+-0.1674         might be 1.0053x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510241</commentid>
    <comment_count>2</comment_count>
      <attachid>116834</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-28 15:07:54 -0800</bug_when>
    <thetext>Created attachment 116834
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510255</commentid>
    <comment_count>3</comment_count>
      <attachid>116834</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-28 15:13:55 -0800</bug_when>
    <thetext>Comment on attachment 116834
the patch

r=gavin</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510283</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-28 15:47:13 -0800</bug_when>
    <thetext>Did some more testing.  On three machines, two say it&apos;s a 1% speed-up on SunSpider.  All agree that it&apos;s never a suite-wide slow-down.


[pizlo@nitroflex bencher] ./bencher TipOfTree:/Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc PrimGetBase:/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc --remote bigmac,oldmac --local
Packaging VM builds for remote hosts...
Sending VM builds to bigmac...
Running on bigmac...
376/376                                                          
Generating benchmark report at TipOfTree_PrimGetBase_SunSpiderV8Kraken_20111128_1539_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on bigmac.local (MacPro5,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r101284)
&quot;PrimGetBase&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r101284)

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.

                                            TipOfTree              PrimGetBase                                   
SunSpider:
   3d-cube                                7.4780+-0.0338    ?     7.5631+-0.0704       ? might be 1.0114x slower
   3d-morph                               8.3794+-0.0263    ?     8.3862+-0.0493       ?
   3d-raytrace                            7.6756+-0.0646          7.6697+-0.0663       
   access-binary-trees                    1.6025+-0.0061    ?     1.6184+-0.0187       ?
   access-fannkuch                        7.5638+-0.0144    ?     7.5961+-0.0677       ?
   access-nbody                           4.1779+-0.0059          4.1712+-0.0066       
   access-nsieve                          3.1806+-0.0610          3.1654+-0.0511       
   bitops-3bit-bits-in-byte               1.2576+-0.0146          1.2559+-0.0167       
   bitops-bits-in-byte                    4.9101+-0.0101    ?     4.9144+-0.0091       ?
   bitops-bitwise-and                     3.2889+-0.0062    ?     3.3027+-0.0281       ?
   bitops-nsieve-bits                     5.6385+-0.0340    ?     5.6838+-0.0307       ?
   controlflow-recursive                  2.2882+-0.0148    ?     2.3068+-0.0246       ?
   crypto-aes                             7.3165+-0.1264          7.1837+-0.0298         might be 1.0185x faster
   crypto-md5                             2.4968+-0.0163          2.4851+-0.0112       
   crypto-sha1                            2.1852+-0.0202          2.1704+-0.0242       
   date-format-tofte                     10.9162+-0.1806         10.7168+-0.0490         might be 1.0186x faster
   date-format-xparb                     10.2837+-0.0786    ?    10.3161+-0.0585       ?
   math-cordic                            7.1304+-0.0171          7.1299+-0.0141       
   math-partial-sums                     10.4567+-0.0166    ?    10.4760+-0.0163       ?
   math-spectral-norm                     2.6032+-0.0138    ?     2.6356+-0.0355       ? might be 1.0124x slower
   regexp-dna                            12.9907+-0.0619         12.9844+-0.0567       
   string-base64                          3.9341+-0.0113    ?     3.9393+-0.0328       ?
   string-fasta                           7.2805+-0.0250    ?     7.3061+-0.0279       ?
   string-tagcloud                       12.6944+-0.2381    ^    12.3246+-0.0397       ^ definitely 1.0300x faster
   string-unpack-code                    22.5829+-0.2149    ^    20.8383+-0.0729       ^ definitely 1.0837x faster
   string-validate-input                  5.6676+-0.0639          5.6334+-0.0458       

   &lt;arithmetic&gt; *                         6.7685+-0.0245    ^     6.6836+-0.0216       ^ definitely 1.0127x faster
   &lt;geometric&gt;                            5.3929+-0.0205          5.3716+-0.0208         might be 1.0040x faster
   &lt;harmonic&gt;                             4.2050+-0.0187    ?     4.2057+-0.0212       ? might be 1.0002x slower

                                            TipOfTree              PrimGetBase                                   
V8:
   crypto                                77.5226+-0.2322    ?    77.9864+-0.9023       ?
   deltablue                            169.7851+-1.7646        169.6010+-0.4459       
   earley-boyer                         105.1151+-0.6689        104.2461+-0.9092       
   raytrace                              63.5504+-0.5358         63.3546+-0.7003       
   regexp                               123.2564+-0.3934    ?   124.0168+-0.4199       ?
   richards                             139.0477+-0.8965    ?   139.6537+-0.9692       ?
   splay                                 91.6804+-1.2889         91.2435+-0.5677       

   &lt;arithmetic&gt;                         109.9939+-0.4302    ?   110.0146+-0.3116       ? might be 1.0002x slower
   &lt;geometric&gt; *                        104.7188+-0.3804        104.7077+-0.3762         might be 1.0001x faster
   &lt;harmonic&gt;                            99.6309+-0.3553         99.5902+-0.4561         might be 1.0004x faster

                                            TipOfTree              PrimGetBase                                   
Kraken:
   ai-astar                             810.4444+-13.1403       809.6979+-12.7046      
   audio-beat-detection                 205.1040+-0.8461    ?   205.4453+-1.0497       ?
   audio-dft                            263.3491+-2.0901        263.0357+-2.4775       
   audio-fft                            134.2887+-1.1583        134.0898+-1.0666       
   audio-oscillator                     280.5459+-5.7741        279.1194+-5.6857       
   imaging-darkroom                     336.7036+-6.4946        335.1863+-5.8131       
   imaging-desaturate                   239.1597+-0.4294    ?   239.4964+-0.8094       ?
   imaging-gaussian-blur                620.8288+-0.3080        620.7478+-0.2371       
   json-parse-financial                  72.8266+-0.3181    ?    73.2295+-0.2992       ?
   json-stringify-tinderbox              86.2131+-0.4738         86.0411+-0.1989       
   stanford-crypto-aes                  118.8909+-0.6087    ?   119.0576+-0.7136       ?
   stanford-crypto-ccm                  117.4354+-0.8587    ?   117.9361+-0.9807       ?
   stanford-crypto-pbkdf2               231.5623+-0.5704        231.2513+-1.7567       
   stanford-crypto-sha256-iterative      97.0698+-0.6541         96.9024+-0.1677       

   &lt;arithmetic&gt; *                       258.1730+-1.0446        257.9455+-1.0910         might be 1.0009x faster
   &lt;geometric&gt;                          199.8580+-0.4996        199.7999+-0.5660         might be 1.0003x faster
   &lt;harmonic&gt;                           161.7211+-0.3350    ?   161.8019+-0.3445       ? might be 1.0005x slower

                                            TipOfTree              PrimGetBase                                   
All benchmarks:
   &lt;arithmetic&gt;                          97.0289+-0.3198         96.9173+-0.3483         might be 1.0012x faster
   &lt;geometric&gt;                           24.6045+-0.0696         24.5480+-0.0758         might be 1.0023x faster
   &lt;harmonic&gt;                             7.4134+-0.0324    ?     7.4145+-0.0368       ? might be 1.0002x slower

                                            TipOfTree              PrimGetBase                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                       56.7725+-0.1377         56.5157+-0.1617         might be 1.0045x faster

Sending VM builds to oldmac...
Running on oldmac...
376/376                                                          
Generating benchmark report at TipOfTree_PrimGetBase_SunSpiderV8Kraken_20111128_1543_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on oldmac.local (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r101284)
&quot;PrimGetBase&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r101284)

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.

                                            TipOfTree              PrimGetBase                                   
SunSpider:
   3d-cube                                9.0066+-0.0477    ?     9.0121+-0.0599       ?
   3d-morph                              10.2638+-0.1520         10.1205+-0.0431         might be 1.0142x faster
   3d-raytrace                            9.1961+-0.0779    ?     9.2441+-0.0808       ?
   access-binary-trees                    1.9105+-0.0048          1.9052+-0.0077       
   access-fannkuch                        9.1503+-0.0190    ?     9.2546+-0.1284       ? might be 1.0114x slower
   access-nbody                           5.0455+-0.0124    ?     5.0459+-0.0167       ?
   access-nsieve                          3.7153+-0.0082    ?     3.7156+-0.0059       ?
   bitops-3bit-bits-in-byte               1.4890+-0.0093          1.4869+-0.0051       
   bitops-bits-in-byte                    5.9610+-0.0352          5.9280+-0.0149       
   bitops-bitwise-and                     3.9673+-0.0049    ?     3.9674+-0.0049       ?
   bitops-nsieve-bits                     6.9107+-0.1347          6.8730+-0.0693       
   controlflow-recursive                  2.7627+-0.0211    ?     2.7736+-0.0343       ?
   crypto-aes                             8.7018+-0.0575          8.6662+-0.0710       
   crypto-md5                             2.9923+-0.0209          2.9710+-0.0133       
   crypto-sha1                            2.6121+-0.0267          2.5949+-0.0201       
   date-format-tofte                     13.1067+-0.0938    ?    13.1965+-0.1883       ?
   date-format-xparb                     12.7721+-0.1489    ?    12.7738+-0.1099       ?
   math-cordic                            8.6052+-0.0188    ?     8.6407+-0.0344       ?
   math-partial-sums                     12.6441+-0.0302         12.6343+-0.0174       
   math-spectral-norm                     3.1234+-0.0074    ?     3.1282+-0.0088       ?
   regexp-dna                            15.6127+-0.1023    ?    15.7199+-0.0777       ?
   string-base64                          4.7357+-0.0323    ?     4.7482+-0.0351       ?
   string-fasta                           8.8043+-0.0128    ?     8.8276+-0.0135       ?
   string-tagcloud                       15.0680+-0.1302    ^    14.8620+-0.0553       ^ definitely 1.0139x faster
   string-unpack-code                    27.7005+-0.1855    ^    25.7607+-0.0791       ^ definitely 1.0753x faster
   string-validate-input                  6.8233+-0.0647          6.7523+-0.0623         might be 1.0105x faster

   &lt;arithmetic&gt; *                         8.1800+-0.0240    ^     8.1001+-0.0306       ^ definitely 1.0099x faster
   &lt;geometric&gt;                            6.4953+-0.0198          6.4708+-0.0228         might be 1.0038x faster
   &lt;harmonic&gt;                             5.0431+-0.0169          5.0333+-0.0162         might be 1.0019x faster

                                            TipOfTree              PrimGetBase                                   
V8:
   crypto                                93.6356+-0.1878         93.5075+-0.3641       
   deltablue                            205.0982+-2.4375    ?   206.2358+-1.6268       ?
   earley-boyer                         125.9509+-0.8903    ?   126.0171+-0.8782       ?
   raytrace                              76.0511+-0.5249         75.8008+-0.6860       
   regexp                               147.8428+-0.3353    ?   148.2622+-0.4273       ?
   richards                             168.5417+-1.7057        167.7990+-0.8774       
   splay                                108.0922+-1.1576    ?   108.5410+-1.7636       ?

   &lt;arithmetic&gt;                         132.1732+-0.5308    ?   132.3091+-0.4720       ? might be 1.0010x slower
   &lt;geometric&gt; *                        125.6786+-0.4562    ?   125.7489+-0.4773       ? might be 1.0006x slower
   &lt;harmonic&gt;                           119.4567+-0.4400    ?   119.4615+-0.5149       ? might be 1.0000x slower

                                            TipOfTree              PrimGetBase                                   
Kraken:
   ai-astar                             897.5581+-0.4232    ?   897.7406+-0.4645       ?
   audio-beat-detection                 249.8704+-1.1648        249.5691+-0.9221       
   audio-dft                            315.1016+-2.9135    ?   316.5375+-5.3376       ?
   audio-fft                            162.8627+-1.1459        161.9474+-0.1085       
   audio-oscillator                     343.4602+-6.8557        340.6483+-7.0170       
   imaging-darkroom                     405.4188+-6.5577    ?   410.1651+-7.7088       ? might be 1.0117x slower
   imaging-desaturate                   288.1475+-0.0680    ?   288.1888+-0.0936       ?
   imaging-gaussian-blur                750.9272+-0.2813    ?   753.0340+-3.8911       ?
   json-parse-financial                  88.3435+-0.2050    ?    89.3216+-1.0965       ? might be 1.0111x slower
   json-stringify-tinderbox             103.3917+-0.2686    !   104.4470+-0.5087       ! definitely 1.0102x slower
   stanford-crypto-aes                  143.2825+-0.3786        143.0949+-0.5344       
   stanford-crypto-ccm                  140.4347+-0.9444    ?   140.8037+-1.1101       ?
   stanford-crypto-pbkdf2               280.6541+-2.3518    ?   282.4666+-2.4946       ?
   stanford-crypto-sha256-iterative     117.7556+-0.2287        117.2969+-0.2862       

   &lt;arithmetic&gt; *                       306.2292+-0.6652    ?   306.8044+-1.0606       ? might be 1.0019x slower
   &lt;geometric&gt;                          240.0051+-0.5082    ?   240.5002+-0.7923       ? might be 1.0021x slower
   &lt;harmonic&gt;                           195.0847+-0.3216    ?   195.6304+-0.6321       ? might be 1.0028x slower

                                            TipOfTree              PrimGetBase                                   
All benchmarks:
   &lt;arithmetic&gt;                         115.4277+-0.2161    ?   115.5751+-0.3661       ? might be 1.0013x slower
   &lt;geometric&gt;                           29.5924+-0.0666         29.5511+-0.0851         might be 1.0014x faster
   &lt;harmonic&gt;                             8.8915+-0.0293          8.8751+-0.0282         might be 1.0018x faster

                                            TipOfTree              PrimGetBase                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                       68.0276+-0.1328         67.8604+-0.1874         might be 1.0025x faster

Running locally...
376/376                                                          
Generating benchmark report at TipOfTree_PrimGetBase_SunSpiderV8Kraken_20111128_1545_benchReport.txt

Benchmark report for SunSpider, V8, and Kraken on nitroflex.local (MacBookPro8,2).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r101284)
&quot;PrimGetBase&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r101284)

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.

                                            TipOfTree              PrimGetBase                                   
SunSpider:
   3d-cube                                7.1575+-0.2354          7.0259+-0.1505         might be 1.0187x faster
   3d-morph                               7.7520+-0.1157          7.6741+-0.1134         might be 1.0102x faster
   3d-raytrace                            7.2676+-0.1825          7.2460+-0.1797       
   access-binary-trees                    1.4984+-0.0355    ?     1.5297+-0.0242       ? might be 1.0209x slower
   access-fannkuch                        6.4619+-0.0754          6.3424+-0.0660         might be 1.0188x faster
   access-nbody                           3.5086+-0.1024    ?     3.5466+-0.0891       ? might be 1.0108x slower
   access-nsieve                          2.5459+-0.0602    ?     2.6406+-0.1078       ? might be 1.0372x slower
   bitops-3bit-bits-in-byte               1.2702+-0.0136          1.2641+-0.0285       
   bitops-bits-in-byte                    2.4118+-0.0716          2.3517+-0.0529         might be 1.0256x faster
   bitops-bitwise-and                     3.3894+-0.0471    ?     3.4552+-0.0794       ? might be 1.0194x slower
   bitops-nsieve-bits                     5.4325+-0.0844          5.3813+-0.0660       
   controlflow-recursive                  2.0755+-0.0348    ?     2.1106+-0.0465       ? might be 1.0169x slower
   crypto-aes                             7.0370+-0.1188    ?     7.1524+-0.1332       ? might be 1.0164x slower
   crypto-md5                             2.4499+-0.1045          2.3751+-0.0625         might be 1.0315x faster
   crypto-sha1                            2.1846+-0.0960          2.0737+-0.0642         might be 1.0534x faster
   date-format-tofte                     10.4930+-0.2104         10.3721+-0.2436         might be 1.0117x faster
   date-format-xparb                      9.9807+-0.1289          9.9722+-0.1931       
   math-cordic                            6.4187+-0.1320    ?     6.6768+-0.1320       ? might be 1.0402x slower
   math-partial-sums                      7.7358+-0.2155          7.5927+-0.1210         might be 1.0189x faster
   math-spectral-norm                     2.3983+-0.0515          2.3510+-0.0458         might be 1.0201x faster
   regexp-dna                            11.0343+-0.1563    ?    11.3721+-0.2315       ? might be 1.0306x slower
   string-base64                          3.9461+-0.0869          3.8731+-0.1100         might be 1.0188x faster
   string-fasta                           6.8034+-0.1689          6.7259+-0.1369         might be 1.0115x faster
   string-tagcloud                       11.2997+-0.1995    ?    11.3845+-0.3282       ?
   string-unpack-code                    20.3005+-0.1728    ^    19.2393+-0.3765       ^ definitely 1.0552x faster
   string-validate-input                  5.5259+-0.1239    ?     5.5339+-0.2025       ?

   &lt;arithmetic&gt; *                         6.0915+-0.0278          6.0486+-0.0246         might be 1.0071x faster
   &lt;geometric&gt;                            4.8592+-0.0148          4.8389+-0.0195         might be 1.0042x faster
   &lt;harmonic&gt;                             3.8274+-0.0250          3.8133+-0.0219         might be 1.0037x faster

                                            TipOfTree              PrimGetBase                                   
V8:
   crypto                                71.8634+-0.6151    ?    71.9204+-0.4422       ?
   deltablue                            152.7037+-1.6896        150.7131+-1.2730         might be 1.0132x faster
   earley-boyer                          86.2757+-1.0717         85.8455+-1.0990       
   raytrace                              58.1938+-0.8018         58.1324+-0.7145       
   regexp                               105.8389+-1.5551        105.7282+-0.5079       
   richards                             118.7512+-0.4150        118.6073+-0.3495       
   splay                                 74.8425+-0.9998         74.6712+-0.7341       

   &lt;arithmetic&gt;                          95.4956+-0.3730         95.0883+-0.2553         might be 1.0043x faster
   &lt;geometric&gt; *                         91.0251+-0.2901         90.7330+-0.2765         might be 1.0032x faster
   &lt;harmonic&gt;                            86.9640+-0.2730         86.7571+-0.3269         might be 1.0024x faster

                                            TipOfTree              PrimGetBase                                   
Kraken:
   ai-astar                             499.1011+-3.2941    ?   507.9335+-6.0009       ? might be 1.0177x slower
   audio-beat-detection                 194.4367+-1.8181        192.0391+-0.6806         might be 1.0125x faster
   audio-dft                            274.8032+-2.4003        274.7899+-2.5654       
   audio-fft                            127.4657+-1.2184        126.9612+-0.8764       
   audio-oscillator                     253.4097+-3.7310        253.1290+-3.5523       
   imaging-darkroom                     308.0198+-4.0310        307.1233+-4.2552       
   imaging-desaturate                   220.3319+-1.4803        219.7745+-1.8169       
   imaging-gaussian-blur                562.6962+-2.3110    ?   564.9762+-5.5238       ?
   json-parse-financial                  58.7835+-0.1501    !    59.9569+-0.5711       ! definitely 1.0200x slower
   json-stringify-tinderbox              74.6116+-0.2465    ?    74.7934+-0.3159       ?
   stanford-crypto-aes                  100.2818+-0.9061    ?   100.2845+-0.3721       ?
   stanford-crypto-ccm                  103.2332+-0.7825        102.9859+-0.7070       
   stanford-crypto-pbkdf2               193.2819+-2.3420        192.4260+-0.5078       
   stanford-crypto-sha256-iterative      84.7929+-0.2269    ?    85.2704+-0.3352       ?

   &lt;arithmetic&gt; *                       218.2321+-0.5294    ?   218.7460+-0.6582       ? might be 1.0024x slower
   &lt;geometric&gt;                          174.5910+-0.4056    ?   174.8366+-0.4773       ? might be 1.0014x slower
   &lt;harmonic&gt;                           141.1413+-0.2883    ?   141.5817+-0.4700       ? might be 1.0031x slower

                                            TipOfTree              PrimGetBase                                   
All benchmarks:
   &lt;arithmetic&gt;                          82.5978+-0.1791    ?    82.6665+-0.2077       ? might be 1.0008x slower
   &lt;geometric&gt;                           21.8487+-0.0447         21.7968+-0.0589         might be 1.0024x faster
   &lt;harmonic&gt;                             6.7404+-0.0431          6.7164+-0.0379         might be 1.0036x faster

                                            TipOfTree              PrimGetBase                                   
Geomean of preferred means:
   &lt;scaled-result&gt;                       49.4611+-0.0927         49.3305+-0.0818         might be 1.0026x faster

[pizlo@nitroflex bencher]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510286</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-28 15:52:12 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/101298</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510287</commentid>
    <comment_count>6</comment_count>
      <attachid>116834</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-28 15:52:23 -0800</bug_when>
    <thetext>Comment on attachment 116834
the patch

Clearing flags.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116834</attachid>
            <date>2011-11-28 15:07:54 -0800</date>
            <delta_ts>2011-11-28 15:52:23 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>primitivegetbyid_patch_1.diff</filename>
            <type>text/plain</type>
            <size>19464</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAxMjg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDExLTExLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3QgZW1pdCBHZXRNZXRob2Qgbm9kZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxNzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2VzIGFsbCBpbnN0YW5jZXMg
b2YgdGhlIEdldE1ldGhvZCBub2RlIHdpdGggR2V0QnlJZC4gVGhpcyBhcHBlYXJzIHRvCisgICAg
ICAgIGJlIGEgc2xpZ2h0IHdpbiBvbiBWOC4gVGhpcyBwYXRjaCBsZWF2ZXMgR2V0TWV0aG9kIHN1
cHBvcnQgaW4gdGhlIGNvZGUtYmFzZSwKKyAgICAgICAgbWFraW5nIHRoaXMgZGVjaXNpb24gZWFz
eSB0byByZXZlcnNlLCBmb3Igbm93LgorCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisK
IDIwMTEtMTEtMjggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBF
aXRoZXIgcmVtb3ZlIHRoZSBHZXRNZXRob2Qgbm9kZSBmcm9tIHRoZSBERkcgYmFja2VuZCwgb3Ig
ZmluZCBhIHVzZSBmb3IgaXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTAxMjg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYzLDcg
KzU2Myw4IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm8KICAgICAg
ICAgICAgIG1faXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdENlbGwpOworICAg
ICAgICBpZiAoaXNDZWxsUHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rp
b24oKSkpCisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0
Q2VsbCk7CiAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1cmVzKG5vZGVJbmRleCk7CiAgICAgICAgIGZv
ck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDEyODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBACiAgICAgKTsKICNkZWZpbmUgRlVOQ1RJT05fV1JBUFBF
Ul9XSVRIX1JFVFVSTl9BRERSRVNTX0UoZnVuY3Rpb24pICAgIEZVTkNUSU9OX1dSQVBQRVJfV0lU
SF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgcnNpKQogI2RlZmluZSBGVU5DVElPTl9XUkFQUEVS
X1dJVEhfUkVUVVJOX0FERFJFU1NfRUNJKGZ1bmN0aW9uKSAgRlVOQ1RJT05fV1JBUFBFUl9XSVRI
X1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9uLCByY3gpCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJf
V0lUSF9SRVRVUk5fQUREUkVTU19FSkkoZnVuY3Rpb24pICBGVU5DVElPTl9XUkFQUEVSX1dJVEhf
UkVUVVJOX0FERFJFU1MoZnVuY3Rpb24sIHJjeCkKICNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9X
SVRIX1JFVFVSTl9BRERSRVNTX0VKQ0koZnVuY3Rpb24pIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9S
RVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgcjgpCiAKICNlbGlmIENQVShYODYpCkBAIC02Miw2ICs2
Myw3IEBACiAgICAgKTsKICNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERS
RVNTX0UoZnVuY3Rpb24pICAgIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhm
dW5jdGlvbiwgOCkKICNkZWZpbmUgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VDSShmdW5jdGlvbikgIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5j
dGlvbiwgMTYpCisjZGVmaW5lIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19F
SkkoZnVuY3Rpb24pICBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVuY3Rp
b24sIDIwKQogI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpD
SShmdW5jdGlvbikgRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTKGZ1bmN0aW9u
LCAyNCkKIAogI2VsaWYgQ09NUElMRVIoR0NDKSAmJiBDUFUoQVJNX1RIVU1CMikKQEAgLTkyLDYg
Kzk0LDE5IEBACiAgICAgICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGZ1bmN0aW9u
KSAiV2l0aFJldHVybkFkZHJlc3MiICJcbiIgXAogICAgICk7CiAKKyNkZWZpbmUgRlVOQ1RJT05f
V1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShmdW5jdGlvbikgXAorICAgIGFzbSAoIFwK
KyAgICAiLnRleHQiICJcbiIgXAorICAgICIuYWxpZ24gMiIgIlxuIiBcCisgICAgIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoZnVuY3Rpb24pICJcbiIgXAorICAgIEhJREVfU1lNQk9MKGZ1bmN0aW9u
KSAiXG4iIFwKKyAgICAiLnRodW1iIiAiXG4iIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBUSFVNQl9G
VU5DX1BBUkFNKGZ1bmN0aW9uKSAiXG4iIFwKKyAgICBTWU1CT0xfU1RSSU5HKGZ1bmN0aW9uKSAi
OiIgIlxuIiBcCisgICAgICAgICJzdHIgbHIsIFtzcCwgIzBdIiAiXG4iIFwKKyAgICAgICAgImIg
IiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZnVuY3Rpb24pICJXaXRoUmV0dXJuQWRkcmVzcyIg
IlxuIiBcCisgICAgKTsKKwogI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FE
RFJFU1NfRUpDSShmdW5jdGlvbikgXAogICAgIGFzbSAoIFwKICAgICAiLnRleHQiICJcbiIgXApA
QCAtMTE1LDYgKzEzMCwxMCBAQCBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1Nf
RShmCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGZ1bmN0aW9uIyNXaXRoUmV0dXJuQWRk
cmVzcyhFeGVjU3RhdGUqLCBKU0NlbGwqLCBJZGVudGlmaWVyKiwgUmV0dXJuQWRkcmVzc1B0cik7
IFwKIEZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQUREUkVTU19FQ0koZnVuY3Rpb24pCiAK
KyNkZWZpbmUgSl9GVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKGZ1bmN0
aW9uKSBcCitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGZ1bmN0aW9uIyNXaXRoUmV0dXJu
QWRkcmVzcyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSWRlbnRpZmllciosIFJldHVybkFk
ZHJlc3NQdHIpOyBcCitGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUpJKGZ1
bmN0aW9uKQorCiAjZGVmaW5lIFZfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNT
X0VKQ0koZnVuY3Rpb24pIFwKIHZvaWQgREZHX09QRVJBVElPTiBmdW5jdGlvbiMjV2l0aFJldHVy
bkFkZHJlc3MoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIq
LCBSZXR1cm5BZGRyZXNzUHRyKTsgXAogRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERS
RVNTX0VKQ0koZnVuY3Rpb24pCkBAIC0zMTIsMTcgKzMzMSwxNyBAQCBFbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKGJhc2UpLmdldChleGVjLCBpZGVudCkpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIElk
ZW50aWZpZXIqIHByb3BlcnR5TmFtZSkKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIElkZW50
aWZpZXIqIHByb3BlcnR5TmFtZSkKIHsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZShiYXNlKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldChleGVjLCAqcHJvcGVydHlOYW1lLCBzbG90KSk7CiB9CiAKLUpfRlVOQ1RJT05fV1JB
UFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KTsK
LUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxkTGlzdFdp
dGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBJZGVudGlmaWVy
KiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0pfRlVOQ1RJ
T05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlkQnVpbGRM
aXN0KTsKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEJ1aWxk
TGlzdFdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFz
ZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCiB7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUoYmFzZSk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgKnByb3BlcnR5
TmFtZSwgc2xvdCk7CiAKQEAgLTMzMiwxMCArMzUxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CiB9CiAKLUpfRlVOQ1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VDSShvcGVyYXRp
b25HZXRCeUlkUHJvdG9CdWlsZExpc3QpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeUlkUHJvdG9CdWlsZExpc3RXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogYmFzZSwgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCitKX0ZVTkNUSU9OX1dSQVBQRVJfV0lUSF9SRVRVUk5fQURE
UkVTU19FSkkob3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0KTsKK0VuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0V2l0aFJldHVybkFk
ZHJlc3MoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBJZGVudGlmaWVyKiBw
cm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKIHsKLSAgICBKU1Zh
bHVlIGJhc2VWYWx1ZShiYXNlKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShiYXNlKTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCAqcHJvcGVydHlOYW1lLCBzbG90KTsKIApA
QCAtMzQ1LDEwICszNjQsMTAgQEAgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25HZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAotSl9GVU5DVElP
Tl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1NfRUNJKG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZSk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6
ZVdpdGhSZXR1cm5BZGRyZXNzKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCBJZGVudGlm
aWVyKiBwcm9wZXJ0eU5hbWUsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK0pfRlVO
Q1RJT05fV1JBUFBFUl9XSVRIX1JFVFVSTl9BRERSRVNTX0VKSShvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUpOworRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0
aW1pemVXaXRoUmV0dXJuQWRkcmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQogewotICAgIEpTVmFsdWUgYmFzZVZhbHVlKGJhc2UpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOwogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsICpwcm9wZXJ0
eU5hbWUsIHNsb3QpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmgJKHJldmlzaW9uIDEwMTI4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3Miw3IEBAIHR5cGVk
ZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAoKkoKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VKKShFeGVjU3RhdGUqLCBFbmNvZGVk
SlNWYWx1ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09w
ZXJhdGlvbl9FSlApKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCB2b2lkKik7CiB0eXBlZGVm
IEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FQ0kpKEV4ZWNT
dGF0ZSosIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKK3R5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiAoKkpfREZHT3BlcmF0aW9uX0VKSSkoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFs
dWUsIElkZW50aWZpZXIqKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiAo
KkpfREZHT3BlcmF0aW9uX0VQKShFeGVjU3RhdGUqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FUFApKEV4ZWNTdGF0ZSosIHZv
aWQqLCB2b2lkKik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RG
R09wZXJhdGlvbl9FR0kpKEV4ZWNTdGF0ZSosIEdsb2JhbFJlc29sdmVJbmZvKiwgSWRlbnRpZmll
ciopOwpAQCAtOTksMTAgKzEwMCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblZhCiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRk
Tm90TnVtYmVyKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRPcDIpOwogRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFByb3BlcnR5KTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlWYWxDZWxsKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRQcm9wZXJ0eSk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEJ5SWQoRXhlY1N0YXRlKiwgSlNDZWxsKiwgSWRlbnRpZmllciopOwotRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEpT
Q2VsbCosIElkZW50aWZpZXIqKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlJZFByb3RvQnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIElkZW50aWZpZXIq
KTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKK0VuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSWRl
bnRpZmllciopOworRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
QnVpbGRMaXN0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBJZGVudGlmaWVyKik7CitFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRQcm90b0J1aWxkTGlzdChF
eGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSWRlbnRpZmllciopOworRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2Rl
ZEpTVmFsdWUsIElkZW50aWZpZXIqKTsKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0TWV0aG9kT3B0aW1pemUoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIElkZW50
aWZpZXIqKTsKIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZShF
eGVjU3RhdGUqLCBJZGVudGlmaWVyKik7CiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvblJlc29sdmVCYXNlKEV4ZWNTdGF0ZSosIElkZW50aWZpZXIqKTsKIEVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uUmVzb2x2ZUJhc2VTdHJpY3RQdXQoRXhlY1N0YXRl
KiwgSWRlbnRpZmllciopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMDEyODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MzksNyArODM5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3Vs
YXRpdmVCYXNpYwogICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSLCBtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAot
SklUQ29tcGlsZXI6OkNhbGwgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoR1BSUmVnIGJh
c2VQYXlsb2FkR1BSLCBHUFJSZWcgcmVzdWx0VGFnR1BSLCBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0KQorSklUQ29tcGlsZXI6OkNhbGwgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoR1BSUmVnIGJhc2VUYWdHUFJPck5vbmUsIEdQUlJlZyBiYXNlUGF5
bG9hZEdQUiwgR1BSUmVnIHJlc3VsdFRhZ0dQUiwgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIsIEdQ
UlJlZyBzY3JhdGNoR1BSLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCBKSVRDb21waWxlcjo6
SnVtcCBzbG93UGF0aFRhcmdldCkKIHsKICAgICBtX2ppdC5iZWdpblVuaW50ZXJydXB0ZWRTZXF1
ZW5jZSgpOwogICAgIEpJVENvbXBpbGVyOjpEYXRhTGFiZWxQdHIgc3RydWN0dXJlVG9Db21wYXJl
OwpAQCAtODYwLDcgKzg2MCwxMSBAQCBKSVRDb21waWxlcjo6Q2FsbCBTcGVjdWxhdGl2ZUpJVDo6
Y2FjaGVkCiAgICAgSklUQ29tcGlsZXI6OkxhYmVsIHNsb3dDYXNlID0gbV9qaXQubGFiZWwoKTsK
IAogICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUik7Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwgZnVuY3Rpb25DYWxsID0gY2FsbE9wZXJhdGlv
bihvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiwgYmFzZVBheWxvYWRHUFIsIGlkZW50aWZpZXIoaWRlbnRpZmllck51bWJlcikpOworICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGZ1bmN0aW9uQ2FsbDsKKyAgICBpZiAoYmFzZVRhZ0dQUk9yTm9uZSA9
PSBJbnZhbGlkR1BSUmVnKQorICAgICAgICBmdW5jdGlvbkNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBK
U1ZhbHVlOjpDZWxsVGFnLCBiYXNlUGF5bG9hZEdQUiwgaWRlbnRpZmllcihpZGVudGlmaWVyTnVt
YmVyKSk7CisgICAgZWxzZQorICAgICAgICBmdW5jdGlvbkNhbGwgPSBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBi
YXNlVGFnR1BST3JOb25lLCBiYXNlUGF5bG9hZEdQUiwgaWRlbnRpZmllcihpZGVudGlmaWVyTnVt
YmVyKSk7CiAgICAgc2lsZW50RmlsbEFsbFJlZ2lzdGVycyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBh
eWxvYWRHUFIpOwogICAgIAogICAgIGRvbmUubGluaygmbV9qaXQpOwpAQCAtMzI5OSwyNCArMzMw
Myw1MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGlzQ2VsbFByZWRp
Y3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcywgYmFzZSk7CisgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BS
UmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQ
UiA9IHJlc3VsdFRhZy5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BS
ID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocmVzdWx0VGFnR1BSID09IGJhc2VHUFIpCisg
ICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdFBheWxvYWRHUFI7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgc2NyYXRjaEdQUiA9IHJlc3VsdFRhZ0dQUjsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgYmFzZS51c2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgY2FjaGVkR2V0QnlJZChJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRUYWdHUFIsIHJl
c3VsdFBheWxvYWRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEpTVmFs
dWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHRUYWcodGhpcywgYmFzZSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXls
b2FkKHRoaXMpOwogICAgICAgICAKLSAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OworICAgICAgICBHUFJSZWcgYmFzZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgIEdQ
UlJlZyBiYXNlUGF5bG9hZEdQUiA9IGJhc2UucGF5bG9hZEdQUigpOwogICAgICAgICBHUFJSZWcg
cmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0UGF5
bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BS
OwotICAgICAgICAKLSAgICAgICAgaWYgKHJlc3VsdFRhZ0dQUiA9PSBiYXNlR1BSKQorCisgICAg
ICAgIGlmIChyZXN1bHRUYWdHUFIgPT0gYmFzZVBheWxvYWRHUFIpCiAgICAgICAgICAgICBzY3Jh
dGNoR1BSID0gcmVzdWx0UGF5bG9hZEdQUjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc2Ny
YXRjaEdQUiA9IHJlc3VsdFRhZ0dQUjsKICAgICAgICAgCiAgICAgICAgIGJhc2UudXNlKCk7Ci0K
LSAgICAgICAgY2FjaGVkR2V0QnlJZChiYXNlR1BSLCByZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxv
YWRHUFIsIHNjcmF0Y2hHUFIsIG5vZGUuaWRlbnRpZmllck51bWJlcigpKTsKLQorICAgICAgICAK
KyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgYmFzZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKTsKKyAgICAgICAgCisgICAgICAgIGNhY2hlZEdldEJ5SWQoYmFzZVRhZ0dQUiwgYmFzZVBh
eWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgc2NyYXRjaEdQUiwgbm9k
ZS5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwpOworICAgICAgICAKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG1fY29tcGlsZUluZGV4LCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHJldmlzaW9uIDEwMTI4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNDgsNyArMzI0OCwyOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgaWYgKGlzQ2VsbFByZWRpY3Rpb24oYXQo
bm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgeworICAgICAgICAgICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHQodGhpcywgYmFzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJl
ZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUjsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgaWYgKHJlc3VsdEdQUiA9PSBiYXNlR1BSKQorICAgICAgICAgICAgICAg
IHNjcmF0Y2hHUFIgPSB0cnlBbGxvY2F0ZSgpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHNjcmF0Y2hHUFIgPSByZXN1bHRHUFI7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGJhc2UudXNlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQoYmFz
ZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBp
bGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIGJhc2Up
OwogICAgICAgICAKICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwpAQCAtMzI2
MSwxMCArMzI4MiwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgICAgICBzY3JhdGNoR1BSID0gcmVzdWx0R1BSOwogICAgICAgICAKICAgICAgICAg
YmFzZS51c2UoKTsKLQotICAgICAgICBjYWNoZWRHZXRCeUlkKGJhc2VHUFIsIHJlc3VsdEdQUiwg
c2NyYXRjaEdQUiwgbm9kZS5pZGVudGlmaWVyTnVtYmVyKCkpOwotCisgICAgICAgIAorICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21w
aWxlcjo6Tm9uWmVybywgYmFzZUdQUiwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKKyAgICAg
ICAgCisgICAgICAgIGNhY2hlZEdldEJ5SWQoYmFzZUdQUiwgcmVzdWx0R1BSLCBzY3JhdGNoR1BS
LCBub2RlLmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCk7CisgICAgICAgIAogICAgICAgICBq
c1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CisgICAgICAgIAogICAgICAgICBicmVhazsKICAgICB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9u
IDEwMTI4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAkod29ya2luZyBjb3B5KQpAQCAtODcxLDcgKzg3MSw3IEBAIHByaXZhdGU6CiAgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FjaGVkR2V0QnlJZChHUFJSZWcgYmFzZUdQUiwgR1BSUmVnIHJlc3VsdEdQ
UiwgR1BSUmVnIHNjcmF0Y2hHUFIsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIsIEpJVENvbXBp
bGVyOjpKdW1wIHNsb3dQYXRoVGFyZ2V0ID0gSklUQ29tcGlsZXI6Okp1bXAoKSk7CiAgICAgdm9p
ZCBjYWNoZWRQdXRCeUlkKEdQUlJlZyBiYXNlLCBHUFJSZWcgdmFsdWUsIE5vZGVJbmRleCB2YWx1
ZUluZGV4LCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwgUHV0
S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxlcjo6SnVt
cCgpKTsKICNlbGlmIFVTRShKU1ZBTFVFMzJfNjQpCi0gICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fj
aGVkR2V0QnlJZChHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdHUFIsIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21waWxl
cjo6SnVtcCgpKTsKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWNoZWRHZXRCeUlkKEdQUlJlZyBi
YXNlVGFnR1BST3JOb25lLCBHUFJSZWcgYmFzZVBheWxvYWRHUFIsIEdQUlJlZyByZXN1bHRUYWdH
UFIsIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSLCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRD
b21waWxlcjo6SnVtcCgpKTsKICAgICB2b2lkIGNhY2hlZFB1dEJ5SWQoR1BSUmVnIGJhc2VQYXls
b2FkR1BSLCBHUFJSZWcgdmFsdWVUYWdHUFIsIEdQUlJlZyB2YWx1ZVBheWxvYWRHUFIsIE5vZGVJ
bmRleCB2YWx1ZUluZGV4LCBHUFJSZWcgc2NyYXRjaEdQUiwgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciwgUHV0S2luZCwgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGhUYXJnZXQgPSBKSVRDb21w
aWxlcjo6SnVtcCgpKTsKICNlbmRpZgogCkBAIC0xMTUwLDYgKzExNTAsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzMpOwogICAgIH0KIAorICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW0zMiBhcmcyLCBUcnVzdGVkSW1tUHRyIGFyZzMpCisgICAgeworICAgICAgICByZXNldENhbGxB
cmd1bWVudHMoKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyKTsKKyAgICAgICAgYWRkQ2FsbEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxs
QXJndW1lbnQoYXJnMik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmczKTsKKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAg
ICAgICAgcmVzZXRDYWxsQXJndW1lbnRzKCk7CkBAIC0xNDIzLDYgKzE0MzIsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMpCisgICAgeworICAgICAgICBtX2ppdC5tb3ZlKGFyZzEsIEdQUkluZm86
OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1faml0Lm1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1l
bnRHUFIyKTsKKyAgICAgICAgbV9qaXQubW92ZShhcmczLCBHUFJJbmZvOjphcmd1bWVudEdQUjMp
OworICAgICAgICBtX2ppdC5tb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjApOworICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1t
UHRyIGFyZzMpCiAgICAgewogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7
CkBAIC0xNTI3LDYgKzE1NDQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdP
cGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIElkZW50
aWZpZXIqIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsK
KyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlv
bl9FSkEgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CiAgICAgewogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7
CkBAIC0xNjg1LDYgKzE3MDcsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOwogICAgICAgICBy
ZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJl
c3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNh
bGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpJIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRh
ZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxv
YWQsIElkZW50aWZpZXIqIGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMVBheWxvYWQsIGFyZzFUYWcsIFRydXN0ZWRJbW1QdHIoaWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJl
c3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQorICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRUpJIG9wZXJhdGlv
biwgR1BSUmVnIHJlc3VsdFRhZywgR1BSUmVnIHJlc3VsdFBheWxvYWQsIGludDMyX3QgYXJnMVRh
ZywgR1BSUmVnIGFyZzFQYXlsb2FkLCBJZGVudGlmaWVyKiBpZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzFQYXlsb2FkLCBUcnVzdGVkSW1t
MzIoYXJnMVRhZyksIFRydXN0ZWRJbW1QdHIoaWRlbnRpZmllcikpOworICAgICAgICByZXR1cm4g
YXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBh
eWxvYWQsIHJlc3VsdFRhZyk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oSl9ERkdPcGVyYXRpb25fRUpBIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdFRhZywgR1BS
UmVnIHJlc3VsdFBheWxvYWQsIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcgYXJnMVBheWxvYWQsIEdQ
UlJlZyBhcmcyKQogICAgIHsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzFQYXlsb2FkLCBhcmcxVGFnLCBhcmcyKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>