<?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>144136</bug_id>
          
          <creation_ts>2015-04-23 18:23:31 -0700</creation_ts>
          <short_desc>Better optimize &apos;if&apos; with ternaries conditional tests.</short_desc>
          <delta_ts>2015-05-18 21:46:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>145134</dependson>
    
    <dependson>145137</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="dougc">dtc-llvm</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088127</commentid>
    <comment_count>0</comment_count>
    <who name="dougc">dtc-llvm</who>
    <bug_when>2015-04-23 18:23:31 -0700</bug_when>
    <thetext>For asm.js code it is very important to optimize an &apos;if&apos; statement with a &apos;?&apos; ternaries conditional. Asm.js does not support &amp;&amp; and || and Emscripten has for some time optimized these patterns to &quot;a?b:0&quot; for &quot;a&amp;&amp;b&quot; and &quot;a?1:b&quot; for &quot;a||b&quot;. JSC FTL does not seem to optimize &apos;if (a?b:0)&apos; well and produces much faster code for &apos;if(a &amp;&amp; b)&apos; or &apos;if (a) if(b)&apos; - it almost doubles the run time for the zlib benchmark. This might not be noticed in old asm.js code which did not use these patterns, but the Emscripten &apos;simplifyIfs&apos; optimization has been in use for some time now. There might be some other patterns that could be optimized too. The Odin support might be a good reference, see https://bugzilla.mozilla.org/show_bug.cgi?id=919052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088131</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 18:34:58 -0700</bug_when>
    <thetext>This might be a hole in LLVM&apos;s CFG transforms.  It might also just be a matter of running some LLVM phase that we currently fail to run.

What about the generated machine code for &quot;if (a?b:0)&quot; is better than the code for &quot;if (a &amp;&amp; b)&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088154</commentid>
    <comment_count>2</comment_count>
      <attachid>251528</attachid>
    <who name="dougc">dtc-llvm</who>
    <bug_when>2015-04-23 19:27:31 -0700</bug_when>
    <thetext>Created attachment 251528
Example that runs slowly and uses a ternary conditional.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088156</commentid>
    <comment_count>3</comment_count>
      <attachid>251529</attachid>
    <who name="dougc">dtc-llvm</who>
    <bug_when>2015-04-23 19:38:00 -0700</bug_when>
    <thetext>Created attachment 251529
Example that is competitively fast, and uses the &apos;if () if()&apos; pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088157</commentid>
    <comment_count>4</comment_count>
    <who name="dougc">dtc-llvm</who>
    <bug_when>2015-04-23 19:45:47 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; This might be a hole in LLVM&apos;s CFG transforms.  It might also just be a
&gt; matter of running some LLVM phase that we currently fail to run.
&gt; 
&gt; What about the generated machine code for &quot;if (a?b:0)&quot; is better than the
&gt; code for &quot;if (a &amp;&amp; b)&quot;?

The main loops for the two attached examples:

slow:
      0x7f198a000330: movzbl  %bl, %eax
      0x7f198a000333: movzbl  (%rax,%r15), %ecx
      0x7f198a000338: cmpl    $1, %ecx
      0x7f198a00033b: jne     0x7f198a000370
      0x7f198a00033d: movzbl  1(%rax,%r15), %ecx
      0x7f198a000343: cmpl    $2, %ecx
      0x7f198a000346: jne     0x7f198a000370
      0x7f198a000348: movzbl  2(%rax,%r15), %ecx
      0x7f198a00034e: cmpl    $3, %ecx
      0x7f198a000351: jne     0x7f198a000370
      0x7f198a000353: movzbl  3(%rax,%r15), %eax
      0x7f198a000359: cmpl    $4, %eax
      0x7f198a00035c: sete    %al
      0x7f198a00035f: movzbl  %al, %eax
      0x7f198a000362: jmp     0x7f198a000390
      0x7f198a000364: nopw    %cs:(%rax,%rax)
      0x7f198a000370: movl    $2147483648, 36(%rbp)
      0x7f198a000377: leaq    131779232(%r15), %rax
      0x7f198a00037e: movq    %rbp, %rdi
      0x7f198a000381: movq    %r14, %rsi
      0x7f198a000384: callq   *%rax
      0x7f198a000386: cmpq    $0, -2216120(%r15)
      0x7f198a00038e: jne     0x7f198a0003b6
      0x7f198a000390: testq   %rax, %rax
      0x7f198a000393: cmovnel %r13d, %r12d
      0x7f198a000397: incl    %ebx
      0x7f198a000399: cmpl    $1000000000, %ebx
      0x7f198a00039f: jl      0x7f198a000330

fast:
      0x7f81720002e0: movzbl  %cl, %edi
      0x7f81720002e3: movzbl  (%rdi,%rax), %esi
      0x7f81720002e7: cmpl    $1, %esi
      0x7f81720002ea: jne     0x7f8172000320
      0x7f81720002ec: movzbl  1(%rdi,%rax), %esi
      0x7f81720002f1: cmpl    $2, %esi
      0x7f81720002f4: jne     0x7f8172000320
      0x7f81720002f6: movzbl  2(%rdi,%rax), %esi
      0x7f81720002fb: cmpl    $3, %esi
      0x7f81720002fe: jne     0x7f8172000320
      0x7f8172000300: movzbl  3(%rdi,%rax), %esi
      0x7f8172000305: movl    $1, %edi
      0x7f817200030a: cmpl    $4, %esi
      0x7f817200030d: je      0x7f8172000311
      0x7f817200030f: movl    %edx, %edi
      0x7f8172000311: movl    %edi, %edx
      0x7f8172000313: nopw    %cs:(%rax,%rax)
      0x7f8172000320: incl    %ecx
      0x7f8172000322: cmpl    $1000000000, %ecx
      0x7f8172000328: jl      0x7f81720002e0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088158</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-23 19:48:45 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #1)
&gt; &gt; This might be a hole in LLVM&apos;s CFG transforms.  It might also just be a
&gt; &gt; matter of running some LLVM phase that we currently fail to run.
&gt; &gt; 
&gt; &gt; What about the generated machine code for &quot;if (a?b:0)&quot; is better than the
&gt; &gt; code for &quot;if (a &amp;&amp; b)&quot;?
&gt; 
&gt; The main loops for the two attached examples:
&gt; 
&gt; slow:
&gt;       0x7f198a000330: movzbl  %bl, %eax
&gt;       0x7f198a000333: movzbl  (%rax,%r15), %ecx
&gt;       0x7f198a000338: cmpl    $1, %ecx
&gt;       0x7f198a00033b: jne     0x7f198a000370
&gt;       0x7f198a00033d: movzbl  1(%rax,%r15), %ecx
&gt;       0x7f198a000343: cmpl    $2, %ecx
&gt;       0x7f198a000346: jne     0x7f198a000370
&gt;       0x7f198a000348: movzbl  2(%rax,%r15), %ecx
&gt;       0x7f198a00034e: cmpl    $3, %ecx
&gt;       0x7f198a000351: jne     0x7f198a000370
&gt;       0x7f198a000353: movzbl  3(%rax,%r15), %eax
&gt;       0x7f198a000359: cmpl    $4, %eax
&gt;       0x7f198a00035c: sete    %al
&gt;       0x7f198a00035f: movzbl  %al, %eax

Oh wow, this sequence is really dumb.

&gt;       0x7f198a000362: jmp     0x7f198a000390
&gt;       0x7f198a000364: nopw    %cs:(%rax,%rax)
&gt;       0x7f198a000370: movl    $2147483648, 36(%rbp)
&gt;       0x7f198a000377: leaq    131779232(%r15), %rax
&gt;       0x7f198a00037e: movq    %rbp, %rdi
&gt;       0x7f198a000381: movq    %r14, %rsi
&gt;       0x7f198a000384: callq   *%rax
&gt;       0x7f198a000386: cmpq    $0, -2216120(%r15)
&gt;       0x7f198a00038e: jne     0x7f198a0003b6
&gt;       0x7f198a000390: testq   %rax, %rax
&gt;       0x7f198a000393: cmovnel %r13d, %r12d

Yuck!

&gt;       0x7f198a000397: incl    %ebx
&gt;       0x7f198a000399: cmpl    $1000000000, %ebx
&gt;       0x7f198a00039f: jl      0x7f198a000330
&gt; 
&gt; fast:
&gt;       0x7f81720002e0: movzbl  %cl, %edi
&gt;       0x7f81720002e3: movzbl  (%rdi,%rax), %esi
&gt;       0x7f81720002e7: cmpl    $1, %esi
&gt;       0x7f81720002ea: jne     0x7f8172000320
&gt;       0x7f81720002ec: movzbl  1(%rdi,%rax), %esi
&gt;       0x7f81720002f1: cmpl    $2, %esi
&gt;       0x7f81720002f4: jne     0x7f8172000320
&gt;       0x7f81720002f6: movzbl  2(%rdi,%rax), %esi
&gt;       0x7f81720002fb: cmpl    $3, %esi
&gt;       0x7f81720002fe: jne     0x7f8172000320
&gt;       0x7f8172000300: movzbl  3(%rdi,%rax), %esi
&gt;       0x7f8172000305: movl    $1, %edi
&gt;       0x7f817200030a: cmpl    $4, %esi
&gt;       0x7f817200030d: je      0x7f8172000311
&gt;       0x7f817200030f: movl    %edx, %edi
&gt;       0x7f8172000311: movl    %edi, %edx
&gt;       0x7f8172000313: nopw    %cs:(%rax,%rax)
&gt;       0x7f8172000320: incl    %ecx
&gt;       0x7f8172000322: cmpl    $1000000000, %ecx
&gt;       0x7f8172000328: jl      0x7f81720002e0

Yup, LLVM bug.  Maybe we can work around it - but it seems that this should be fixed in LLVM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088159</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-04-23 19:49:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/20679710&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095653</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-18 12:52:39 -0700</bug_when>
    <thetext>Turns out that this is mostly our fault: https://bugs.webkit.org/show_bug.cgi?id=145134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095803</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-18 20:49:55 -0700</bug_when>
    <thetext>Performance of another fix for this:


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on dethklok (MacBookPro9,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r184521)
&quot;BoolIntSpec&quot; at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r184539)

Collected 6 samples per benchmark/VM, with 6 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                BoolIntSpec                                    
SunSpider:
   3d-cube                                            5.2389+-0.1837     ?      5.4714+-0.4408        ? might be 1.0444x slower
   3d-morph                                           6.1089+-0.5975            5.8389+-0.1237          might be 1.0462x faster
   3d-raytrace                                        6.4608+-0.1467     ?      6.4680+-0.0823        ?
   access-binary-trees                                2.4204+-0.2364            2.3655+-0.0549          might be 1.0232x faster
   access-fannkuch                                    6.1261+-0.1572            6.0500+-0.1923          might be 1.0126x faster
   access-nbody                                       3.1052+-0.4212     ?      3.2356+-0.4077        ? might be 1.0420x slower
   access-nsieve                                      3.3555+-0.5282            3.2128+-0.1790          might be 1.0444x faster
   bitops-3bit-bits-in-byte                           1.6433+-0.1032            1.6060+-0.0977          might be 1.0232x faster
   bitops-bits-in-byte                                3.6718+-0.1296            3.6648+-0.0868        
   bitops-bitwise-and                                 2.1230+-0.0302     ?      2.1626+-0.0855        ? might be 1.0186x slower
   bitops-nsieve-bits                                 3.1461+-0.0335     !      3.5529+-0.3195        ! definitely 1.1293x slower
   controlflow-recursive                              2.4514+-0.1474     ?      2.4689+-0.3936        ?
   crypto-aes                                         4.5749+-0.2214            4.5010+-0.1212          might be 1.0164x faster
   crypto-md5                                         3.0698+-0.2000     ?      3.0929+-0.2151        ?
   crypto-sha1                                        2.7375+-0.1867     ?      2.8903+-0.1615        ? might be 1.0558x slower
   date-format-tofte                                  9.2392+-0.3479     ?      9.3110+-0.2581        ?
   date-format-xparb                                  6.0932+-0.5515            5.7590+-0.1953          might be 1.0580x faster
   math-cordic                                        3.2865+-0.1542     ?      3.3146+-0.2982        ?
   math-partial-sums                                  5.8240+-0.8579            5.3164+-0.1109          might be 1.0955x faster
   math-spectral-norm                                 2.0618+-0.0981            2.0352+-0.0804          might be 1.0131x faster
   regexp-dna                                         7.9430+-1.2237     ?      8.2325+-1.6386        ? might be 1.0365x slower
   string-base64                                      5.0492+-0.9149     ?      5.4366+-1.3402        ? might be 1.0767x slower
   string-fasta                                       6.7699+-0.2967     ?      6.8664+-0.6836        ? might be 1.0143x slower
   string-tagcloud                                    9.3368+-0.3944     ?     10.0180+-0.7678        ? might be 1.0730x slower
   string-unpack-code                                20.7299+-0.2974     ?     21.1888+-1.6278        ? might be 1.0221x slower
   string-validate-input                              5.0249+-0.1496     ?      5.0367+-0.1830        ?

   &lt;arithmetic&gt;                                       5.2920+-0.0449     ?      5.3499+-0.1234        ? might be 1.0109x slower

                                                        TipOfTree                BoolIntSpec                                    
LongSpider:
   3d-cube                                          883.5947+-5.5033     ?    883.8420+-3.9376        ?
   3d-morph                                        1529.9083+-6.9475     ?   1530.6180+-7.9550        ?
   3d-raytrace                                      703.5435+-4.0062     ?    718.2096+-12.0467       ? might be 1.0208x slower
   access-binary-trees                              980.1003+-4.4750          974.0511+-5.6473        
   access-fannkuch                                  328.4927+-7.3536          323.1925+-9.3148          might be 1.0164x faster
   access-nbody                                     618.7614+-3.3187     ?    621.5809+-4.8341        ?
   access-nsieve                                    477.5869+-8.8358     ?    479.1353+-6.8137        ?
   bitops-3bit-bits-in-byte                          44.9959+-1.8042     ?     45.0767+-2.7708        ?
   bitops-bits-in-byte                              102.1683+-4.0563     ?    102.5206+-1.8904        ?
   bitops-nsieve-bits                               419.5336+-2.1987     ?    420.0387+-2.2051        ?
   controlflow-recursive                            492.7110+-10.8540    ?    500.3354+-9.4843        ? might be 1.0155x slower
   crypto-aes                                       702.9667+-5.8767          702.8933+-7.7401        
   crypto-md5                                       527.0466+-5.0799     ^    515.3535+-6.0449        ^ definitely 1.0227x faster
   crypto-sha1                                      595.4303+-2.9168     ?    600.1880+-16.8019       ?
   date-format-tofte                                730.0927+-10.3938    ?    737.5282+-13.4925       ? might be 1.0102x slower
   date-format-xparb                                787.0503+-29.0556    ?    809.3883+-105.7527      ? might be 1.0284x slower
   hash-map                                         172.5697+-2.4911     ?    173.1048+-3.1846        ?
   math-cordic                                      589.3529+-2.5945          588.9273+-5.5894        
   math-partial-sums                                507.9875+-7.6601     ?    508.9173+-11.4319       ?
   math-spectral-norm                               563.3840+-0.7474     ?    563.8230+-2.0377        ?
   string-base64                                    387.0271+-6.7387          385.3475+-3.1476        
   string-fasta                                     429.4744+-5.6273     ?    437.6680+-3.3692        ? might be 1.0191x slower
   string-tagcloud                                  197.0506+-3.4544     ?    203.5125+-5.2484        ? might be 1.0328x slower

   &lt;geometric&gt;                                      449.6215+-1.7404     ?    451.5344+-2.2480        ? might be 1.0043x slower

                                                        TipOfTree                BoolIntSpec                                    
V8Spider:
   crypto                                            56.4034+-2.6669     ?     58.7864+-1.2729        ? might be 1.0422x slower
   deltablue                                         99.3724+-3.9996     ?     99.7380+-4.6827        ?
   earley-boyer                                      48.5664+-2.8933           48.2881+-3.3690        
   raytrace                                          40.5133+-2.0820           39.1307+-3.8100          might be 1.0353x faster
   regexp                                            80.3853+-2.2554     ?     80.4203+-2.0039        ?
   richards                                          81.3835+-3.3516           79.4982+-3.6194          might be 1.0237x faster
   splay                                             40.2080+-1.5275           39.7500+-1.6245          might be 1.0115x faster

   &lt;geometric&gt;                                       60.2719+-1.3393           59.9869+-0.9283          might be 1.0048x faster

                                                        TipOfTree                BoolIntSpec                                    
Octane:
   encrypt                                           0.20345+-0.00135          0.20343+-0.00132       
   decrypt                                           3.64616+-0.07087          3.60238+-0.06143         might be 1.0122x faster
   deltablue                                x2       0.20320+-0.01375          0.19714+-0.00104         might be 1.0307x faster
   earley                                            0.39634+-0.00436          0.39426+-0.00368       
   boyer                                             5.11354+-0.02240    ?     5.13278+-0.05283       ?
   navier-stokes                            x2       5.18153+-0.01647          5.17050+-0.00387       
   raytrace                                 x2       1.22613+-0.04303    ?     1.24317+-0.04491       ? might be 1.0139x slower
   richards                                 x2       0.12251+-0.00123    ?     0.12261+-0.00140       ?
   splay                                    x2       0.40027+-0.00524          0.39816+-0.00289       
   regexp                                   x2      31.93295+-0.60568         31.45226+-0.29395         might be 1.0153x faster
   pdfjs                                    x2      43.07510+-0.20723    ?    43.15980+-0.19576       ?
   mandreel                                 x2      50.03154+-0.55008    ?    50.03724+-0.47480       ?
   gbemu                                    x2      42.50785+-2.19792         41.76754+-0.34029         might be 1.0177x faster
   closure                                           0.56058+-0.00278    ?     0.56371+-0.00216       ?
   jquery                                            7.16894+-0.05739    ?     7.18442+-0.04332       ?
   box2d                                    x2      12.55960+-0.12397    ?    12.57111+-0.03810       ?
   zlib                                     x2     394.39602+-12.00826       394.09907+-13.08779      
   typescript                               x2     819.27913+-9.94474    ?   823.55827+-14.91660      ?

   &lt;geometric&gt;                                       6.57145+-0.03539          6.55006+-0.01623         might be 1.0033x faster

                                                        TipOfTree                BoolIntSpec                                    
Kraken:
   ai-astar                                          236.109+-1.924      ?     236.130+-2.325         ?
   audio-beat-detection                              107.134+-0.799            107.005+-0.834         
   audio-dft                                         120.062+-3.229            119.067+-1.965         
   audio-fft                                          85.910+-4.693      ?      87.190+-5.488         ? might be 1.0149x slower
   audio-oscillator                                   79.804+-3.763             79.208+-1.676         
   imaging-darkroom                                  104.476+-1.941      ?     104.781+-1.828         ?
   imaging-desaturate                                 63.075+-0.403      ?      63.515+-1.879         ?
   imaging-gaussian-blur                             110.677+-1.972      ?     111.444+-1.560         ?
   json-parse-financial                               47.427+-2.490             46.176+-1.639           might be 1.0271x faster
   json-stringify-tinderbox                           28.854+-1.825             28.562+-0.335           might be 1.0102x faster
   stanford-crypto-aes                                58.549+-1.064             58.447+-0.785         
   stanford-crypto-ccm                                52.039+-2.203             51.444+-1.232           might be 1.0116x faster
   stanford-crypto-pbkdf2                            119.749+-1.663            118.374+-1.937           might be 1.0116x faster
   stanford-crypto-sha256-iterative                   46.680+-1.613             46.364+-1.730         

   &lt;arithmetic&gt;                                       90.039+-1.055             89.836+-0.552           might be 1.0023x faster

                                                        TipOfTree                BoolIntSpec                                    
JSRegress:
   abs-boolean                                        2.7876+-0.1095            2.6582+-0.0569          might be 1.0487x faster
   adapt-to-double-divide                            17.0508+-0.4777           17.0024+-0.6398        
   aliased-arguments-getbyval                         1.2920+-0.0642     ?      1.3153+-0.1568        ? might be 1.0180x slower
   allocate-big-object                                2.9588+-0.1256            2.8011+-0.0671          might be 1.0563x faster
   arguments-named-and-reflective                    12.8151+-1.1229     ?     13.5955+-1.7606        ? might be 1.0609x slower
   arguments-out-of-bounds                           14.7999+-0.3137     ?     15.0169+-0.7465        ? might be 1.0147x slower
   arguments-strict-mode                             12.0669+-0.9256     ?     12.1999+-0.9937        ? might be 1.0110x slower
   arguments                                         11.4152+-1.0349     ^     10.0626+-0.2482        ^ definitely 1.1344x faster
   arity-mismatch-inlining                            0.8837+-0.0350     ?      0.8995+-0.0370        ? might be 1.0178x slower
   array-access-polymorphic-structure                 6.7325+-0.1265     ?      6.8432+-0.0979        ? might be 1.0164x slower
   array-nonarray-polymorhpic-access                 33.6294+-0.4739           33.1976+-1.0304          might be 1.0130x faster
   array-prototype-every                             86.9688+-3.6473           85.1381+-3.5237          might be 1.0215x faster
   array-prototype-forEach                           86.5005+-1.6587           85.5065+-1.9673          might be 1.0116x faster
   array-prototype-map                               94.6635+-1.4463           92.8283+-1.0418          might be 1.0198x faster
   array-prototype-some                              85.9272+-1.8799     ?     86.6708+-2.2367        ?
   array-splice-contiguous                           42.2173+-2.0758     ?     42.5205+-2.1159        ?
   array-with-double-add                              4.3494+-0.4613            4.1258+-0.0440          might be 1.0542x faster
   array-with-double-increment                        3.3719+-0.2626            3.2966+-0.1435          might be 1.0228x faster
   array-with-double-mul-add                          5.0247+-0.1638     ?      5.0722+-0.1838        ?
   array-with-double-sum                              3.6372+-0.6372            3.3966+-0.2516          might be 1.0708x faster
   array-with-int32-add-sub                           6.8291+-0.1203            6.8104+-0.1976        
   array-with-int32-or-double-sum                     3.3716+-0.0384     ?      3.5343+-0.4177        ? might be 1.0483x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     33.3518+-2.1840     ?     33.7090+-1.6918        ? might be 1.0107x slower
   ArrayBuffer-DataView-alloc-long-lived             14.4155+-1.7674           14.1609+-1.4233          might be 1.0180x faster
   ArrayBuffer-Int32Array-byteOffset                  4.0227+-0.4023            3.8875+-0.0904          might be 1.0348x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     32.7657+-1.3753     ?     32.7778+-2.0520        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     25.3801+-5.4121           22.6709+-1.5029          might be 1.1195x faster
   ArrayBuffer-Int8Array-alloc-long-lived            12.9069+-1.7797     ?     13.1502+-1.1916        ? might be 1.0188x slower
   ArrayBuffer-Int8Array-alloc                       11.8150+-1.1535           10.8099+-1.6191          might be 1.0930x faster
   asmjs_bool_bug                                     7.4146+-0.0716     ?      7.6236+-0.2003        ? might be 1.0282x slower
   assign-custom-setter-polymorphic                   3.2024+-0.0832            3.0990+-0.2226          might be 1.0334x faster
   assign-custom-setter                               4.7976+-0.8710     ?      4.8410+-1.2685        ?
   basic-set                                          8.7978+-0.3603            8.7199+-0.3174        
   big-int-mul                                        4.0615+-0.0889            4.0608+-0.1740        
   boolean-test                                       3.1831+-0.1961            3.0720+-0.0444          might be 1.0362x faster
   branch-fold                                        3.9354+-0.3089            3.7299+-0.0312          might be 1.0551x faster
   branch-on-string-as-boolean                       19.8607+-1.7960     ?     20.1292+-2.0308        ? might be 1.0135x slower
   by-val-generic                                     8.1512+-0.3091     ?      8.2402+-0.6740        ? might be 1.0109x slower
   call-spread-apply                                 29.8175+-1.5875     ?     30.2605+-1.4559        ? might be 1.0149x slower
   call-spread-call                                  25.4423+-0.8063     ?     26.2179+-2.1484        ? might be 1.0305x slower
   captured-assignments                               0.4462+-0.0155     ?      0.4802+-0.0658        ? might be 1.0762x slower
   cast-int-to-double                                 5.3702+-0.1057            5.3575+-0.1363        
   cell-argument                                      8.5872+-0.3045     ?      8.7815+-0.4985        ? might be 1.0226x slower
   cfg-simplify                                       2.9542+-0.3540            2.8847+-0.1887          might be 1.0241x faster
   chain-getter-access                                9.2509+-0.2778            9.0641+-0.1320          might be 1.0206x faster
   cmpeq-obj-to-obj-other                            11.7700+-1.0341           11.6906+-1.2045        
   constant-test                                      6.4427+-3.5193            5.5383+-1.1352          might be 1.1633x faster
   create-lots-of-functions                          11.7802+-0.3586     ?     11.9544+-0.6526        ? might be 1.0148x slower
   DataView-custom-properties                        39.4586+-1.8419           38.2196+-2.4078          might be 1.0324x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.5643+-0.0521     ?      0.5675+-0.0845        ?
   delay-tear-off-arguments-strictmode               14.2187+-0.3344           14.1513+-0.1535        
   deltablue-varargs                                207.8375+-3.7186     ?    208.6033+-2.5913        ?
   destructuring-arguments                           18.3710+-0.7196           18.1116+-0.9785          might be 1.0143x faster
   destructuring-swap                                 5.0979+-0.0663            5.0820+-0.0296        
   direct-arguments-getbyval                          1.3804+-0.1154            1.3057+-0.1677          might be 1.0572x faster
   div-boolean-double                                 5.2711+-0.0972     ?      5.3543+-0.3211        ? might be 1.0158x slower
   div-boolean                                        8.0501+-0.2700            8.0264+-0.2988        
   double-get-by-val-out-of-bounds                    4.5644+-0.0553            4.5568+-0.0330        
   double-pollution-getbyval                          8.9207+-0.1507            8.8775+-0.0849        
   double-pollution-putbyoffset                       4.3520+-0.1769            4.3083+-0.0881          might be 1.0101x faster
   double-to-int32-typed-array-no-inline              2.3315+-0.2372            2.3237+-0.1102        
   double-to-int32-typed-array                        2.0718+-0.1737            1.9883+-0.0590          might be 1.0420x faster
   double-to-uint32-typed-array-no-inline             2.3577+-0.1151     ?      2.3901+-0.1300        ? might be 1.0137x slower
   double-to-uint32-typed-array                       2.1206+-0.0967            2.0389+-0.0304          might be 1.0401x faster
   elidable-new-object-dag                           42.8444+-0.8864     ?     43.8203+-1.8462        ? might be 1.0228x slower
   elidable-new-object-roflcopter                    44.3840+-1.3553     ?     44.9463+-1.5655        ? might be 1.0127x slower
   elidable-new-object-then-call                     39.6901+-1.5846     ?     40.6565+-2.0080        ? might be 1.0243x slower
   elidable-new-object-tree                          47.1600+-1.5905           46.0621+-1.5137          might be 1.0238x faster
   empty-string-plus-int                              5.5578+-0.1328            5.5405+-0.1990        
   emscripten-cube2hash                              39.6191+-2.0787           38.8406+-1.9143          might be 1.0200x faster
   exit-length-on-plain-object                       14.9132+-1.7094           14.2535+-0.7104          might be 1.0463x faster
   external-arguments-getbyval                        1.3233+-0.0797     ?      1.3324+-0.1533        ?
   external-arguments-putbyval                        2.3551+-0.1244            2.3379+-0.1054        
   fixed-typed-array-storage-var-index                1.3549+-0.1911            1.2085+-0.0149          might be 1.1212x faster
   fixed-typed-array-storage                          0.9291+-0.0479            0.9165+-0.0526          might be 1.0137x faster
   Float32Array-matrix-mult                           4.4347+-0.1411            4.3993+-0.1208        
   Float32Array-to-Float64Array-set                  56.4130+-0.9987     ?     57.1275+-3.3881        ? might be 1.0127x slower
   Float64Array-alloc-long-lived                     68.9781+-1.9496     ?     70.1473+-1.7697        ? might be 1.0169x slower
   Float64Array-to-Int16Array-set                    68.3184+-1.6165     ?     78.3512+-17.3110       ? might be 1.1469x slower
   fold-double-to-int                                13.4108+-0.1365     ?     13.4238+-0.2378        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.1661+-1.3088     ?     10.4575+-0.9022        ? might be 1.0287x slower
   fold-get-by-id-to-multi-get-by-offset             10.4685+-0.8943           10.3062+-1.0336          might be 1.0157x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.3158+-1.9556     ?      9.8357+-0.4448        ? might be 1.1828x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      9.0590+-0.8478     ?      9.4589+-0.7259        ? might be 1.0441x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.6405+-1.4533     ?     10.3107+-1.2717        ? might be 1.1933x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.5813+-1.0112     ^      5.4721+-0.9486        ^ definitely 1.3854x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.5784+-0.3870     ?      9.7420+-0.5651        ? might be 1.0171x slower
   fold-put-by-id-to-multi-put-by-offset              9.6446+-0.9406     ?      9.6468+-1.0236        ?
   fold-put-structure                                 6.7475+-2.0446            6.1100+-1.6521          might be 1.1043x faster
   for-of-iterate-array-entries                       4.8383+-0.2317            4.8076+-0.2112        
   for-of-iterate-array-keys                          3.7615+-0.0722     ?      4.1282+-0.5264        ? might be 1.0975x slower
   for-of-iterate-array-values                        3.9668+-0.6324            3.7116+-0.0720          might be 1.0687x faster
   fround                                            21.5970+-0.8822           21.1696+-0.5277          might be 1.0202x faster
   ftl-library-inlining-dataview                     66.5999+-2.9727     ?     67.4645+-2.3878        ? might be 1.0130x slower
   ftl-library-inlining                              76.1938+-11.4468          73.6352+-1.1151          might be 1.0347x faster
   function-dot-apply                                 2.3622+-0.3353            2.3616+-0.3389        
   function-test                                      2.9547+-0.2895            2.8341+-0.0457          might be 1.0425x faster
   function-with-eval                               105.1833+-0.9889     ?    107.2544+-3.3575        ? might be 1.0197x slower
   gcse-poly-get-less-obvious                        22.5491+-6.0591           18.4538+-0.9111          might be 1.2219x faster
   gcse-poly-get                                     19.2860+-1.6018     ?     20.6937+-1.7782        ? might be 1.0730x slower
   gcse                                               4.4617+-0.1969            4.4070+-0.1313          might be 1.0124x faster
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7232+-0.0386     ?      2.7517+-0.1228        ? might be 1.0104x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.1618+-0.2037     ?      6.1810+-0.2001        ?
   get-by-id-chain-from-try-block                     7.1556+-1.3695            6.9358+-0.7624          might be 1.0317x faster
   get-by-id-check-structure-elimination              5.2763+-0.2456            5.1473+-0.0871          might be 1.0251x faster
   get-by-id-proto-or-self                           19.7133+-2.2340           19.4064+-2.1896          might be 1.0158x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.2419+-0.2464     ?      3.3253+-0.4265        ? might be 1.0257x slower
   get-by-id-self-or-proto                           19.2970+-1.8530     ?     20.3520+-2.1409        ? might be 1.0547x slower
   get-by-val-out-of-bounds                           4.4800+-0.0467            4.4589+-0.0707        
   get_callee_monomorphic                             2.9921+-0.1878     ?      3.0672+-0.1739        ? might be 1.0251x slower
   get_callee_polymorphic                             3.7630+-0.1790            3.7305+-0.0810        
   getter-no-activation                               5.2118+-0.3658     ?      5.3197+-0.2840        ? might be 1.0207x slower
   getter-richards                                  126.9248+-5.3858     ?    128.9834+-6.2150        ? might be 1.0162x slower
   getter                                             6.5136+-0.8979            5.7159+-0.5685          might be 1.1396x faster
   global-var-const-infer-fire-from-opt               1.0461+-0.1054            1.0177+-0.1723          might be 1.0279x faster
   global-var-const-infer                             0.8201+-0.0978     ?      0.8555+-0.0854        ? might be 1.0431x slower
   HashMap-put-get-iterate-keys                      29.4547+-1.3738     ?     29.7352+-3.5141        ?
   HashMap-put-get-iterate                           32.1803+-2.9866           31.6245+-1.9308          might be 1.0176x faster
   HashMap-string-put-get-iterate                    29.6097+-0.3204           29.4003+-1.0689        
   hoist-make-rope                                   11.8430+-0.9314     ?     12.5135+-0.7011        ? might be 1.0566x slower
   hoist-poly-check-structure-effectful-loop   
                                                      5.0785+-0.0590     ?      5.0822+-0.1455        ?
   hoist-poly-check-structure                         3.6520+-0.0796            3.6073+-0.0280          might be 1.0124x faster
   imul-double-only                                   8.8980+-0.7000            8.4281+-0.8058          might be 1.0558x faster
   imul-int-only                                     10.2179+-0.7585     ?     10.4200+-0.7335        ? might be 1.0198x slower
   imul-mixed                                         8.6082+-0.4221            8.5607+-0.3138        
   in-four-cases                                     22.2710+-0.5014           22.2229+-0.2339        
   in-one-case-false                                 10.9570+-0.0511     ?     11.4015+-0.5308        ? might be 1.0406x slower
   in-one-case-true                                  11.1535+-0.3007     ?     11.2522+-0.5362        ?
   in-two-cases                                      11.6785+-0.3031     ?     11.8383+-0.2471        ? might be 1.0137x slower
   indexed-properties-in-objects                      3.0552+-0.3069     ?      3.0815+-0.0278        ?
   infer-closure-const-then-mov-no-inline             4.2360+-0.3536            3.9681+-0.0862          might be 1.0675x faster
   infer-closure-const-then-mov                      19.9919+-0.7330     ?     20.7971+-1.4066        ? might be 1.0403x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     12.3442+-0.1727     ?     13.0891+-1.4925        ? might be 1.0603x slower
   infer-closure-const-then-put-to-scope             22.6654+-2.3580           22.4598+-1.1745        
   infer-closure-const-then-reenter-no-inline   
                                                     58.9261+-1.4902           57.5700+-1.9696          might be 1.0236x faster
   infer-closure-const-then-reenter                  23.1859+-1.3484           23.1510+-1.8400        
   infer-constant-global-property                     3.7780+-0.3507            3.6141+-0.1140          might be 1.0454x faster
   infer-constant-property                            2.9899+-0.3915            2.8088+-0.1028          might be 1.0645x faster
   infer-one-time-closure-ten-vars                   12.9147+-0.7582           12.5012+-0.2714          might be 1.0331x faster
   infer-one-time-closure-two-vars                   13.5275+-1.8255           12.7792+-1.3311          might be 1.0586x faster
   infer-one-time-closure                            12.2910+-0.6797     ?     12.5482+-0.9910        ? might be 1.0209x slower
   infer-one-time-deep-closure                       21.9307+-1.0313     ?     21.9316+-1.3862        ?
   inline-arguments-access                            4.6687+-0.2824            4.6257+-0.1308        
   inline-arguments-aliased-access                    4.7666+-0.4336            4.5424+-0.0528          might be 1.0494x faster
   inline-arguments-local-escape                      4.6078+-0.1855     ?      4.6125+-0.1093        ?
   inline-get-scoped-var                              4.8765+-0.2785     ?      4.8868+-0.2380        ?
   inlined-put-by-id-transition                      11.5470+-0.5261     ?     11.5848+-0.6092        ?
   int-or-other-abs-then-get-by-val                   4.9615+-0.0531     ?      4.9712+-0.0538        ?
   int-or-other-abs-zero-then-get-by-val             17.8529+-1.0524           17.1907+-0.3233          might be 1.0385x faster
   int-or-other-add-then-get-by-val                   4.3420+-0.1336     ?      4.3601+-0.0842        ?
   int-or-other-add                                   5.3255+-0.0315     ?      5.4937+-0.4536        ? might be 1.0316x slower
   int-or-other-div-then-get-by-val                   4.3905+-0.1814            4.2480+-0.0821          might be 1.0335x faster
   int-or-other-max-then-get-by-val                   4.3684+-0.1474            4.2997+-0.0482          might be 1.0160x faster
   int-or-other-min-then-get-by-val                   4.4159+-0.0348     ?      4.4312+-0.0992        ?
   int-or-other-mod-then-get-by-val                   4.0060+-0.0439            3.9718+-0.0265        
   int-or-other-mul-then-get-by-val                   3.8515+-0.1598     ?      3.8742+-0.1519        ?
   int-or-other-neg-then-get-by-val                   4.8349+-0.0711            4.7486+-0.0334          might be 1.0182x faster
   int-or-other-neg-zero-then-get-by-val             17.5333+-0.8856     ?     17.6997+-1.4065        ?
   int-or-other-sub-then-get-by-val                   4.5221+-0.3799            4.4109+-0.0581          might be 1.0252x faster
   int-or-other-sub                                   3.5673+-0.0859            3.4803+-0.0355          might be 1.0250x faster
   int-overflow-local                                 4.3978+-0.1093     ?      4.5046+-0.0993        ? might be 1.0243x slower
   Int16Array-alloc-long-lived                       49.8057+-1.3203           49.0448+-1.5725          might be 1.0155x faster
   Int16Array-bubble-sort-with-byteLength            19.0960+-0.1556     ?     19.4186+-0.5034        ? might be 1.0169x slower
   Int16Array-bubble-sort                            21.4048+-4.4046           19.2582+-0.2018          might be 1.1115x faster
   Int16Array-load-int-mul                            1.5057+-0.0292     ?      1.5835+-0.1835        ? might be 1.0517x slower
   Int16Array-to-Int32Array-set                      57.1849+-2.0664           56.9428+-1.6661        
   Int32Array-alloc-large                            23.5930+-0.9332           23.5802+-0.8702        
   Int32Array-alloc-long-lived                       54.8090+-0.9453           54.5370+-1.4311        
   Int32Array-alloc                                   3.9292+-0.5265     ^      3.2838+-0.0495        ^ definitely 1.1966x faster
   Int32Array-Int8Array-view-alloc                    6.7542+-0.1615     ?      6.7841+-0.7158        ?
   int52-spill                                        5.8386+-0.0896     ?      5.9643+-0.2969        ? might be 1.0215x slower
   Int8Array-alloc-long-lived                        44.9080+-1.8141     ?     45.0549+-1.5190        ?
   Int8Array-load-with-byteLength                     3.4667+-0.2904     ?      3.6309+-0.4624        ? might be 1.0474x slower
   Int8Array-load                                     3.3967+-0.1584            3.3906+-0.1529        
   integer-divide                                    11.7502+-1.1153           11.1285+-0.1008          might be 1.0559x faster
   integer-modulo                                     2.0202+-0.0636     ?      2.0301+-0.0747        ?
   is-boolean-fold-tricky                             4.6337+-0.5016     ?      4.7238+-0.4156        ? might be 1.0194x slower
   is-boolean-fold                                    2.9218+-0.1055            2.9025+-0.1466        
   is-function-fold-tricky-internal-function   
                                                     11.9963+-0.1001     ?     12.0938+-0.0521        ?
   is-function-fold-tricky                            4.8967+-0.5984            4.7004+-0.1790          might be 1.0418x faster
   is-function-fold                                   2.9232+-0.0733     ?      3.2025+-0.4091        ? might be 1.0955x slower
   is-number-fold-tricky                              4.6647+-0.5304            4.5938+-0.1014          might be 1.0154x faster
   is-number-fold                                     2.8571+-0.0727     ?      2.8593+-0.0452        ?
   is-object-or-null-fold-functions                   2.9311+-0.0414     ?      2.9412+-0.0314        ?
   is-object-or-null-fold-less-tricky                 4.6556+-0.1482            4.5815+-0.1191          might be 1.0162x faster
   is-object-or-null-fold-tricky                      6.6933+-0.1341            6.6145+-0.0278          might be 1.0119x faster
   is-object-or-null-fold                             2.9135+-0.0453            2.8599+-0.0454          might be 1.0187x faster
   is-object-or-null-trickier-function                4.7960+-0.3688     ?      5.0766+-0.6625        ? might be 1.0585x slower
   is-object-or-null-trickier-internal-function   
                                                     12.5820+-0.1179           12.5467+-0.0879        
   is-object-or-null-tricky-function                  4.7471+-0.1637     ?      4.7977+-0.3441        ? might be 1.0107x slower
   is-object-or-null-tricky-internal-function   
                                                      9.4057+-0.0869            9.2839+-0.1439          might be 1.0131x faster
   is-string-fold-tricky                              4.5693+-0.1238            4.5100+-0.1053          might be 1.0132x faster
   is-string-fold                                     3.0158+-0.3348            2.8953+-0.0982          might be 1.0416x faster
   is-undefined-fold-tricky                           3.8291+-0.1197     ?      3.8409+-0.1537        ?
   is-undefined-fold                                  2.8706+-0.1100     ?      3.1695+-0.4491        ? might be 1.1041x slower
   large-int-captured                                 4.8625+-0.1398            4.7650+-0.0433          might be 1.0205x faster
   large-int-neg                                     16.5145+-0.8608     ?     16.5338+-0.7745        ?
   large-int                                         15.6056+-1.4235           15.4023+-1.4030          might be 1.0132x faster
   load-varargs-elimination                          23.3463+-0.4731     ?     23.4840+-1.2490        ?
   logical-not                                        4.6615+-0.0411     ?      4.6995+-0.1464        ?
   lots-of-fields                                    12.9591+-1.1744           12.7508+-0.4297          might be 1.0163x faster
   make-indexed-storage                               3.1215+-0.0906     ?      3.1677+-0.0642        ? might be 1.0148x slower
   make-rope-cse                                      5.0326+-0.5103     ?      5.1532+-0.5076        ? might be 1.0240x slower
   marsaglia-larger-ints                             35.9801+-0.3718     ?     37.0983+-1.1144        ? might be 1.0311x slower
   marsaglia-osr-entry                               23.1549+-0.1910     !     25.4305+-1.8859        ! definitely 1.0983x slower
   max-boolean                                        2.5227+-0.0519     ?      2.6249+-0.3019        ? might be 1.0405x slower
   method-on-number                                  19.2884+-0.1897     ^     18.4680+-0.2528        ^ definitely 1.0444x faster
   min-boolean                                        2.7411+-0.3757            2.6244+-0.1746          might be 1.0445x faster
   minus-boolean-double                               3.1707+-0.0766     ?      3.2215+-0.0848        ? might be 1.0160x slower
   minus-boolean                                      2.3607+-0.0576     ?      2.6119+-0.3761        ? might be 1.1064x slower
   misc-strict-eq                                    41.4100+-3.3380           39.0376+-1.1264          might be 1.0608x faster
   mod-boolean-double                                11.2101+-0.5737           11.1420+-0.3309        
   mod-boolean                                        7.8695+-0.1056     ?      7.9270+-0.1083        ?
   mul-boolean-double                                 3.8487+-0.1868            3.7403+-0.0977          might be 1.0290x faster
   mul-boolean                                        2.9295+-0.0639            2.9149+-0.0720        
   neg-boolean                                        3.3199+-0.3758            3.2278+-0.1469          might be 1.0285x faster
   negative-zero-divide                               0.4029+-0.0454            0.3993+-0.0565        
   negative-zero-modulo                               0.3807+-0.0422     ?      0.4100+-0.0644        ? might be 1.0771x slower
   negative-zero-negate                               0.3441+-0.0389            0.3420+-0.0071        
   nested-function-parsing                           38.0290+-0.2629     ?     38.5387+-0.8917        ? might be 1.0134x slower
   new-array-buffer-dead                            112.0516+-2.4791     ?    114.1524+-1.5948        ? might be 1.0187x slower
   new-array-buffer-push                              7.5903+-0.9575            7.2343+-0.6949          might be 1.0492x faster
   new-array-dead                                    19.6376+-0.5973     ?     19.9492+-1.2312        ? might be 1.0159x slower
   new-array-push                                     3.9206+-0.1279            3.8662+-0.0982          might be 1.0141x faster
   no-inline-constructor                             40.5932+-1.4216     ?     41.9371+-1.4483        ? might be 1.0331x slower
   number-test                                        3.2506+-0.2914            3.1207+-0.1452          might be 1.0416x faster
   object-closure-call                                5.5908+-0.0322     ?      5.6006+-0.0326        ?
   object-test                                        2.8241+-0.0593     ?      2.9038+-0.0410        ? might be 1.0282x slower
   obvious-sink-pathology-taken                     140.8939+-1.3734     ?    141.4497+-2.2341        ?
   obvious-sink-pathology                           132.4401+-1.1983          131.4785+-1.2166        
   obviously-elidable-new-object                     36.4556+-1.1604           35.5431+-0.5284          might be 1.0257x faster
   plus-boolean-arith                                 2.7516+-0.3336            2.5900+-0.1431          might be 1.0624x faster
   plus-boolean-double                                3.2360+-0.0647     ?      3.3090+-0.2228        ? might be 1.0225x slower
   plus-boolean                                       2.4088+-0.0507            2.4058+-0.0320        
   poly-chain-access-different-prototypes-simple   
                                                      3.2878+-0.0421     ?      3.3438+-0.1504        ? might be 1.0170x slower
   poly-chain-access-different-prototypes             2.5741+-0.0116     ?      2.6533+-0.2243        ? might be 1.0308x slower
   poly-chain-access-simpler                          3.4762+-0.4406            3.3099+-0.0560          might be 1.0502x faster
   poly-chain-access                                  2.6337+-0.0714     ?      2.6528+-0.1048        ?
   poly-stricteq                                     59.0583+-0.8188           58.8917+-1.1588        
   polymorphic-array-call                             1.3647+-0.0709     ?      1.4200+-0.1364        ? might be 1.0405x slower
   polymorphic-get-by-id                              3.2699+-0.3851            3.1265+-0.0685          might be 1.0459x faster
   polymorphic-put-by-id                             33.9565+-2.5871           32.6481+-2.8903          might be 1.0401x faster
   polymorphic-structure                             14.8558+-0.2354     ?     14.9513+-0.2996        ?
   polyvariant-monomorphic-get-by-id                  8.7703+-0.2664            8.6108+-0.1105          might be 1.0185x faster
   proto-getter-access                                9.1464+-0.1391            8.9803+-0.0744          might be 1.0185x faster
   put-by-id-replace-and-transition                   9.4722+-0.2475            9.2120+-0.0578          might be 1.0282x faster
   put-by-id-slightly-polymorphic                     3.0584+-0.3106            2.8863+-0.1215          might be 1.0596x faster
   put-by-id                                         13.4920+-0.6078           12.7779+-0.1719          might be 1.0559x faster
   put-by-val-direct                                  0.3511+-0.0127     ?      0.3716+-0.0246        ? might be 1.0583x slower
   put-by-val-large-index-blank-indexing-type   
                                                      6.2827+-0.6552     ?      6.6811+-0.7926        ? might be 1.0634x slower
   put-by-val-machine-int                             2.6987+-0.0414     ?      2.7969+-0.1617        ? might be 1.0364x slower
   rare-osr-exit-on-local                            15.3201+-0.8732     ?     15.4776+-0.7474        ? might be 1.0103x slower
   register-pressure-from-osr                        21.7500+-0.8922           21.1917+-0.1391          might be 1.0263x faster
   setter                                             6.3315+-0.6583            6.2283+-0.9669          might be 1.0166x faster
   simple-activation-demo                            25.3090+-0.4951     ?     26.4168+-2.0386        ? might be 1.0438x slower
   simple-getter-access                              11.8829+-0.2360     ?     11.8853+-0.2398        ?
   simple-poly-call-nested                            8.6085+-0.6958            8.0682+-0.3671          might be 1.0670x faster
   simple-poly-call                                   1.3660+-0.1643            1.3005+-0.0359          might be 1.0503x faster
   sin-boolean                                       23.1607+-1.1734     ?     23.5621+-1.6156        ? might be 1.0173x slower
   singleton-scope                                   62.8617+-1.5969           62.6801+-1.4811        
   sink-function                                     12.4758+-0.4987           12.2645+-0.2468          might be 1.0172x faster
   sink-huge-activation                              20.1477+-1.2372           19.5266+-0.5383          might be 1.0318x faster
   sinkable-new-object-dag                           71.1024+-2.8376           70.5653+-1.3873        
   sinkable-new-object-taken                         53.9981+-3.2548           51.9679+-2.3984          might be 1.0391x faster
   sinkable-new-object                               39.4790+-1.3053           39.3226+-1.6785        
   slow-array-profile-convergence                     2.8420+-0.1385     ?      3.0634+-0.3533        ? might be 1.0779x slower
   slow-convergence                                   2.8562+-0.3060            2.7302+-0.0721          might be 1.0462x faster
   slow-ternaries                                    30.3178+-2.0924     ^     22.1676+-2.0780        ^ definitely 1.3677x faster
   sorting-benchmark                                 19.7873+-0.2025     ?     19.8093+-0.7345        ?
   sparse-conditional                                 1.1529+-0.0173     ?      1.1819+-0.0775        ? might be 1.0252x slower
   splice-to-remove                                  16.3774+-0.3046     ?     17.0612+-2.2446        ? might be 1.0417x slower
   string-char-code-at                               16.2199+-1.0031           15.7826+-0.2937          might be 1.0277x faster
   string-concat-object                               2.6276+-0.1801     ?      2.8027+-0.3503        ? might be 1.0666x slower
   string-concat-pair-object                          2.5916+-0.0731            2.5529+-0.1098          might be 1.0151x faster
   string-concat-pair-simple                         13.1425+-2.2900           12.6032+-1.3271          might be 1.0428x faster
   string-concat-simple                              12.6005+-1.2266           11.9412+-0.3155          might be 1.0552x faster
   string-cons-repeat                                 8.5621+-0.7527            8.3472+-0.5384          might be 1.0257x faster
   string-cons-tower                                  9.2365+-1.0501            8.5847+-0.8811          might be 1.0759x faster
   string-equality                                   19.1684+-0.8837           18.9944+-0.5745        
   string-get-by-val-big-char                         7.4342+-0.3294            7.2940+-0.1639          might be 1.0192x faster
   string-get-by-val-out-of-bounds-insane             3.6704+-0.2974     ?      3.7952+-0.5329        ? might be 1.0340x slower
   string-get-by-val-out-of-bounds                    5.5275+-0.5525            5.3207+-0.3660          might be 1.0389x faster
   string-get-by-val                                  3.3523+-0.2356            3.2826+-0.0865          might be 1.0212x faster
   string-hash                                        2.0700+-0.0801            2.0391+-0.0237          might be 1.0152x faster
   string-long-ident-equality                        15.7182+-0.3176           15.5611+-0.2521          might be 1.0101x faster
   string-out-of-bounds                              14.8100+-0.2329     ?     15.3347+-1.1013        ? might be 1.0354x slower
   string-repeat-arith                               33.5410+-2.0538           33.2472+-2.1685        
   string-sub                                        65.7166+-3.1251     ?     67.8753+-2.1249        ? might be 1.0328x slower
   string-test                                        2.8993+-0.0745     ?      2.9834+-0.1037        ? might be 1.0290x slower
   string-var-equality                               33.0846+-1.1051     ?     34.1538+-3.0902        ? might be 1.0323x slower
   structure-hoist-over-transitions                   2.7764+-0.1215     ?      2.8218+-0.1481        ? might be 1.0164x slower
   substring-concat-weird                            40.1305+-0.7817     ?     41.0621+-1.9227        ? might be 1.0232x slower
   substring-concat                                  44.1703+-1.8740           43.6440+-1.3957          might be 1.0121x faster
   substring                                         46.4255+-1.3795     ?     47.0370+-2.4405        ? might be 1.0132x slower
   switch-char-constant                               2.7636+-0.0454     ?      2.7681+-0.0373        ?
   switch-char                                        7.7638+-1.4230            7.0290+-0.8818          might be 1.1045x faster
   switch-constant                                    8.8902+-0.6080            8.6934+-0.3028          might be 1.0226x faster
   switch-string-basic-big-var                       19.2320+-0.9851           18.5036+-0.1999          might be 1.0394x faster
   switch-string-basic-big                           14.8532+-0.2796           14.8392+-0.4469        
   switch-string-basic-var                           15.3112+-0.2984           15.0876+-0.1583          might be 1.0148x faster
   switch-string-basic                               13.3564+-0.2939     ?     13.3767+-0.1710        ?
   switch-string-big-length-tower-var                20.6409+-0.6812           20.1085+-0.2742          might be 1.0265x faster
   switch-string-length-tower-var                    15.5468+-0.1961     ?     15.9150+-1.3430        ? might be 1.0237x slower
   switch-string-length-tower                        12.8900+-0.2970     ?     13.3346+-1.0443        ? might be 1.0345x slower
   switch-string-short                               13.2427+-0.7544           12.9244+-0.1071          might be 1.0246x faster
   switch                                            12.7831+-0.2152           12.7216+-0.1322        
   tear-off-arguments-simple                          3.7890+-0.7528            3.5595+-0.0352          might be 1.0645x faster
   tear-off-arguments                                 4.8413+-0.1424            4.7991+-0.0465        
   temporal-structure                                12.2369+-0.1091     ?     12.2453+-0.3428        ?
   to-int32-boolean                                  13.8418+-0.1759     ?     14.0828+-1.0741        ? might be 1.0174x slower
   try-catch-get-by-val-cloned-arguments             15.1797+-1.9949     ?     15.2635+-1.4365        ?
   try-catch-get-by-val-direct-arguments              6.5568+-0.0999     ?      6.6866+-0.2362        ? might be 1.0198x slower
   try-catch-get-by-val-scoped-arguments              7.7468+-0.3196     ?      7.9210+-0.3922        ? might be 1.0225x slower
   typed-array-get-set-by-val-profiling              32.6052+-0.7092     ?     32.6820+-0.8275        ?
   undefined-property-access                        343.4782+-9.4816     ?    343.6361+-3.3868        ?
   undefined-test                                     3.1134+-0.2208     ?      3.2772+-0.2469        ? might be 1.0526x slower
   unprofiled-licm                                   23.1893+-1.1068     ?     23.4959+-1.2463        ? might be 1.0132x slower
   varargs-call                                      14.8244+-0.9459           14.7536+-0.3243        
   varargs-construct-inline                          27.9832+-0.9914           27.7031+-0.6290          might be 1.0101x faster
   varargs-construct                                 23.1576+-0.5115     ?     23.1971+-0.9232        ?
   varargs-inline                                     9.8072+-0.9645            9.3164+-0.1153          might be 1.0527x faster
   varargs-strict-mode                               10.3083+-0.3688     ?     10.7916+-1.2201        ? might be 1.0469x slower
   varargs                                           10.6984+-1.2572           10.1592+-0.0347          might be 1.0531x faster
   weird-inlining-const-prop                          2.5841+-0.3873            2.3782+-0.2886          might be 1.0866x faster

   &lt;geometric&gt;                                        8.6544+-0.0245            8.6034+-0.0309          might be 1.0059x faster

                                                        TipOfTree                BoolIntSpec                                    
AsmBench:
   bigfib.cpp                                       496.7343+-3.1181     ?    496.9650+-3.0324        ?
   cray.c                                           427.1527+-2.1749     ?    473.6928+-117.4410      ? might be 1.1090x slower
   dry.c                                            482.8933+-8.8216          482.1009+-8.6071        
   FloatMM.c                                        726.4123+-3.2011          725.4895+-4.3223        
   gcc-loops.cpp                                   4263.6835+-12.9935    ?   4266.1854+-5.6214        ?
   n-body.c                                         976.0164+-2.6588     ?    977.4551+-4.2989        ?
   Quicksort.c                                      421.9954+-2.0057          418.1124+-4.0578        
   stepanov_container.cpp                          3610.3476+-14.0560    ?   3638.6242+-76.9145       ?
   Towers.c                                         261.7372+-4.5492          261.0118+-1.7728        

   &lt;geometric&gt;                                      792.6210+-2.1695     ?    799.8875+-21.3401       ? might be 1.0092x slower

                                                        TipOfTree                BoolIntSpec                                    
CompressionBench:
   huffman                                          365.1720+-8.5211          355.2417+-3.5626          might be 1.0280x faster
   arithmetic-simple                                364.1168+-2.4099     ?    364.5175+-2.1426        ?
   arithmetic-precise                               292.9322+-3.8845     ?    293.0443+-2.5764        ?
   arithmetic-complex-precise                       301.0099+-3.0825     ?    326.3698+-55.3951       ? might be 1.0842x slower
   arithmetic-precise-order-0                       386.4899+-4.9382          379.8209+-2.6974          might be 1.0176x faster
   arithmetic-precise-order-1                       327.3361+-3.2580     ?    328.7635+-2.7902        ?
   arithmetic-precise-order-2                       362.9375+-5.3518     ?    365.0418+-9.0243        ?
   arithmetic-simple-order-1                        421.2007+-2.3696     ?    424.0184+-2.9166        ?
   arithmetic-simple-order-2                        465.5557+-6.4076          463.4430+-4.0945        
   lz-string                                        334.5470+-14.0652         334.3606+-6.0920        

   &lt;geometric&gt;                                      358.7152+-2.2659     ?    360.1956+-5.6710        ? might be 1.0041x slower

                                                        TipOfTree                BoolIntSpec                                    
Geomean of preferred means:
   &lt;scaled-result&gt;                                   61.6525+-0.1809     ?     61.7453+-0.5334        ? might be 1.0015x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095810</commentid>
    <comment_count>9</comment_count>
      <attachid>253361</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-18 20:54:06 -0700</bug_when>
    <thetext>Created attachment 253361
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095821</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-05-18 21:46:54 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/184542</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>251528</attachid>
            <date>2015-04-23 19:27:31 -0700</date>
            <delta_ts>2015-04-23 19:27:31 -0700</delta_ts>
            <desc>Example that runs slowly and uses a ternary conditional.</desc>
            <filename>slow.js</filename>
            <type>application/javascript</type>
            <size>540</size>
            <attacher name="dougc">dtc-llvm</attacher>
            
              <data encoding="base64">dmFyIGFzbU1vZCA9IGZ1bmN0aW9uIHRlc3QgKGdsb2IsIGVudiwgYikgewogICd1c2UgYXNtJzsK
ICBjb25zdCBpOCA9IG5ldyBnbG9iLkludDhBcnJheShiKTsKICBmdW5jdGlvbiBmKCkgewogICAg
dmFyIGkgPSAwOyB2YXIgciA9IDA7CiAgICBmb3IgKGkgPSAwOyAoaSB8IDApIDwgMTAwMDAwMDAw
MDsgaSA9IChpICsgMSkgfCAwKSB7CiAgICAgIGlmICgoaThbKGkgJiAweGZmKSA+PiAwXSB8IDAp
ID09IDEgPyAoKGk4WygoaSAmIDB4ZmYpICsgMSkgPj4gMF0gfCAwKSA9PSAyID8gKChpOFsoKGkg
JiAweGZmKSArIDIpID4+IDBdIHwgMCkgPT0gMyA/IChpOFsoKGkgJiAweGZmKSArIDMpID4+IDBd
IHwgMCkgPT0gNCA6IDApIDogMCkgOiAwKQogICAgICAgIHIgPSAxOwogICAgfQogICAgcmV0dXJu
IHIgfCAwOwogIH0KICByZXR1cm4gZjsKfTsKdmFyIGJ1ZmZlcjEgPSBuZXcgQXJyYXlCdWZmZXIo
NjQqMTAyNCk7CnZhciBhc20xID0gYXNtTW9kKHRoaXMsIHt9LCBidWZmZXIxKTsKZm9yICh2YXIg
aSA9IDA7IGkgPCA1OyBpKyspIGFzbTEoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>251529</attachid>
            <date>2015-04-23 19:38:00 -0700</date>
            <delta_ts>2015-04-23 19:38:00 -0700</delta_ts>
            <desc>Example that is competitively fast, and uses the &apos;if () if()&apos; pattern.</desc>
            <filename>fast.js</filename>
            <type>application/javascript</type>
            <size>534</size>
            <attacher name="dougc">dtc-llvm</attacher>
            
              <data encoding="base64">dmFyIGFzbU1vZCA9IGZ1bmN0aW9uIHRlc3QgKGdsb2IsIGVudiwgYikgewogICd1c2UgYXNtJzsK
ICBjb25zdCBpOCA9IG5ldyBnbG9iLkludDhBcnJheShiKTsKICBmdW5jdGlvbiBmKCkgewogICAg
dmFyIGkgPSAwOyB2YXIgciA9IDA7CiAgICBmb3IgKGkgPSAwOyAoaSB8IDApIDwgMTAwMDAwMDAw
MDsgaSA9IChpICsgMSkgfCAwKSB7CiAgICAgIGlmICgoaThbKGkgJiAweGZmKSA+PiAwXSB8IDAp
ID09IDEpIGlmICgoaThbKChpICYgMHhmZikgKyAxKSA+PiAwXSB8IDApID09IDIpIGlmICgoaThb
KChpICYgMHhmZikgKyAyKSA+PiAwXSB8IDApID09IDMpIGlmICgoaThbKChpICYgMHhmZikgKyAz
KSA+PiAwXSB8IDApID09IDQpCiAgICAgICAgciA9IDE7CiAgICB9CiAgICByZXR1cm4gciB8IDA7
CiAgfQogIHJldHVybiBmOwp9Owp2YXIgYnVmZmVyMSA9IG5ldyBBcnJheUJ1ZmZlcig2NCoxMDI0
KTsKdmFyIGFzbTEgPSBhc21Nb2QodGhpcywge30sIGJ1ZmZlcjEpOwpmb3IgKHZhciBpID0gMDsg
aSA8IDU7IGkrKykgYXNtMSgpOwoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>253361</attachid>
            <date>2015-05-18 20:54:06 -0700</date>
            <delta_ts>2015-05-18 21:04:17 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>3963</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTg0NTQxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE1LTA1LTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QmV0dGVyIG9wdGltaXplICdpZicgd2l0aCB0ZXJuYXJpZXMgY29uZGl0aW9uYWwgdGVzdHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQxMzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFRo
aXMgaXMgdGhlIGxhc3QgZml4IEknbGwgZG8gZm9yIHRoaXMgZm9yIG5vdy4gQm9vbGVhblRvTnVt
YmVyKFVudHlwZWQ6KSB3aGVyZSB0aGUgaW5wdXQKKyAgICAgICAgaXMgcHJvdmVkIHRvIGJlIGVp
dGhlciBCb29sSW50MzIgb3IgQm9vbGVhbiBzaG91bGQgYmUgb3B0aW1pemVkIHRvIGp1c3QgbWFz
a2luZyB0aGUKKyAgICAgICAgbG93ZXN0IGJpdC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMg
YW5vdGhlciAzNyUgc3BlZWQtdXAgb24gSlNSZWdyZXNzL3Nsb3ctdGVybmFyaWVzLgorCisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6
TG93ZXJERkdUb0xMVk06OmNvbXBpbGVCb29sZWFuVG9OdW1iZXIpOgorCiAyMDE1LTA1LTE4ICBC
ZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8yMTAwMzU1NT4gY2xvYmVycml6ZSgpIGlzIHdyb25nIGZvciBBcml0aFJvdW5kIGJl
Y2F1c2UgaXQgZG9lc24ndCBhY2NvdW50IGZvciB0aGUgYXJpdGggbW9kZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3Bw
CShyZXZpc2lvbiAxODQ1MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDU4LDYgKzMwNTgsMTggQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgCiAg
ICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFs
dWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
IW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNwZWNCb29sSW50
MzIgfCBTcGVjQm9vbGVhbikpIHsKKyAgICAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIEdQUlJlZyB2YWx1ZUdQ
UiA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faml0
Lm1vdmUodmFsdWVHUFIsIHJlc3VsdEdQUik7CisgICAgICAgICAgICAgICAgaW50MzJSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlz
KTsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMpOwogICAgICAg
ICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4NDUzOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNTAsNiAr
MzE1MCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoIW1faW50ZXJwcmV0ZXIubmVlZHNUeXBlQ2hlY2sobm9kZS0+Y2hpbGQxKCksIFNw
ZWNCb29sSW50MzIgfCBTcGVjQm9vbGVhbikpIHsKKyAgICAgICAgICAgICAgICBtX2ppdC5tb3Zl
KHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAgICAgICAgIG1faml0LmFuZDMy
KFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgICAgICAgICBpbnQzMlJl
c3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigp
LCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQueG9yNjQoVHJ1c3RlZEltbTMyKHN0
YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQm9vbGVhbiA9IG1faml0LmJyYW5jaFRlc3Q2NCgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
CShyZXZpc2lvbiAxODQ1MzkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2Vy
REZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4MCw2ICsxMDgwLDExIEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgTFZhbHVlIHZhbHVl
ID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKCFtX2ludGVycHJldGVyLm5lZWRzVHlwZUNoZWNrKG1fbm9kZS0+Y2hpbGQxKCksIFNw
ZWNCb29sSW50MzIgfCBTcGVjQm9vbGVhbikpIHsKKyAgICAgICAgICAgICAgICBzZXRJbnQzMiht
X291dC5iaXRBbmQobV9vdXQuY2FzdFRvSW50MzIodmFsdWUpLCBtX291dC5pbnQzMk9uZSkpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAg
ICAgICAgICAgTEJhc2ljQmxvY2sgYm9vbGVhbkNhc2UgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAo
IkJvb2xlYW5Ub051bWJlciBib29sZWFuIGNhc2UiKSk7CiAgICAgICAgICAgICBMQmFzaWNCbG9j
ayBjb250aW51YXRpb24gPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIkJvb2xlYW5Ub051bWJlciBj
b250aW51YXRpb24iKSk7CiAgICAgICAgICAgICAK
</data>
<flag name="review"
          id="278255"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>