Bug 124951

Summary: Finally fix some obvious Bartlett bugs
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
the patch mhahnenberg: review+

Description Filip Pizlo 2013-11-27 15:27:08 PST
The obvious thing to do in a Bartlett collector is to ensure that the part of the stack that is below its current position is all zero.  You don't want to do that every time you fiddle with the stack, but you can do it at some key times - GC or OSR entry.
Comment 1 Filip Pizlo 2013-11-27 15:30:59 PST
Created attachment 217970 [details]
the patch
Comment 2 Mark Hahnenberg 2013-11-27 16:12:23 PST
Comment on attachment 217970 [details]
the patch

Very exciting! r=me
Comment 3 Filip Pizlo 2013-11-27 16:19:20 PST
This is perf-neutral if you consider the normal way we do measurements.  But as the ChangeLog states, it's a *big deal* for when you breathe on splay in any way.


Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r159825)
"SanitizeStack" at /Volumes/Data/fromMiniMe/tertiary/OpenSource/WebKitBuild/Release/jsc (r159825)

Collected 4 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               SanitizeStack                                   
SunSpider:
   3d-cube                                            7.7230+-0.0545     ?      7.7404+-0.1754        ?
   3d-morph                                           8.6507+-0.1028            8.6410+-0.2192        
   3d-raytrace                                        8.7073+-0.1923     ?      8.9042+-0.2438        ? might be 1.0226x slower
   access-binary-trees                                2.0042+-0.0260            1.9949+-0.0119        
   access-fannkuch                                    7.9470+-0.1004            7.8858+-0.2495        
   access-nbody                                       4.2484+-0.0388     ?      4.2705+-0.1325        ?
   access-nsieve                                      4.8582+-0.2891     ?      5.0015+-0.1127        ? might be 1.0295x slower
   bitops-3bit-bits-in-byte                           1.8060+-0.0064     ?      1.8087+-0.0100        ?
   bitops-bits-in-byte                                7.2385+-0.3414     ?      7.2862+-0.0597        ?
   bitops-bitwise-and                                 2.9542+-0.0317            2.9114+-0.0701          might be 1.0147x faster
   bitops-nsieve-bits                                 4.5434+-0.1880     ?      4.6066+-0.0083        ? might be 1.0139x slower
   controlflow-recursive                              3.1380+-0.0469            3.1335+-0.0186        
   crypto-aes                                         5.4031+-0.0202     ?      5.4387+-0.0267        ?
   crypto-md5                                         3.1416+-0.0498     ?      3.1448+-0.1387        ?
   crypto-sha1                                        2.9551+-0.0136            2.9525+-0.0246        
   date-format-tofte                                 11.3863+-0.4420           11.2719+-0.1398          might be 1.0102x faster
   date-format-xparb                                  8.4910+-0.4816     ?      8.5724+-0.3055        ?
   math-cordic                                        4.2089+-0.0196     ?      4.2225+-0.0459        ?
   math-partial-sums                                 10.1462+-0.0373     ?     10.2656+-0.1801        ? might be 1.0118x slower
   math-spectral-norm                                 2.7340+-0.0629            2.7310+-0.0154        
   regexp-dna                                        12.7838+-0.2187     ?     12.9282+-0.1422        ? might be 1.0113x slower
   string-base64                                      5.4198+-0.0328            5.4099+-0.0474        
   string-fasta                                      10.2063+-0.2705     ?     10.3498+-0.4985        ? might be 1.0141x slower
   string-tagcloud                                   14.9371+-0.3454     ?     14.9744+-0.1761        ?
   string-unpack-code                                31.7152+-6.3491           29.7375+-0.1811          might be 1.0665x faster
   string-validate-input                              7.4019+-0.6139            7.0229+-0.1234          might be 1.0540x faster

   <arithmetic> *                                     7.4904+-0.2863            7.4310+-0.0476          might be 1.0080x faster
   <geometric>                                        5.9652+-0.0741            5.9621+-0.0285          might be 1.0005x faster
   <harmonic>                                         4.8689+-0.0261     ?      4.8709+-0.0116        ? might be 1.0004x slower

                                                        TipOfTree               SanitizeStack                                   
LongSpider:
   3d-cube                                         2806.7401+-86.6156    ^   2698.0599+-10.4857       ^ definitely 1.0403x faster
   3d-morph                                        1499.2999+-1.9211         1497.8945+-1.7772        
   3d-raytrace                                     1517.3064+-57.6426        1511.6467+-10.5663       
   access-binary-trees                             2244.5419+-94.3897        2185.2230+-12.5940         might be 1.0271x faster
   access-fannkuch                                  668.2514+-0.7516          664.6473+-10.8552       
   access-nbody                                    1496.2232+-3.0286         1495.6696+-0.5764        
   access-nsieve                                   1549.2288+-9.2083     ?   1556.9185+-9.1605        ?
   bitops-3bit-bits-in-byte                         121.2852+-0.2945     ?    121.3745+-0.0974        ?
   bitops-bits-in-byte                              638.9477+-3.4559          637.3329+-2.0107        
   bitops-nsieve-bits                              1046.0585+-2.1467     ?   1046.2405+-1.5613        ?
   controlflow-recursive                           1489.9019+-1.8370     ?   1491.4940+-2.4839        ?
   crypto-aes                                      1650.2003+-6.7320     ?   1653.3613+-33.0644       ?
   crypto-md5                                      1163.0197+-3.3245     ?   1179.9300+-55.4331       ? might be 1.0145x slower
   crypto-sha1                                     1618.0135+-7.2340         1616.7369+-6.5138        
   date-format-tofte                               1190.9562+-41.6368        1173.5876+-40.7106         might be 1.0148x faster
   date-format-xparb                               1472.1722+-59.5402    ?   1483.2620+-50.1133       ?
   math-cordic                                     1733.5922+-0.7589     ?   1738.8733+-16.5955       ?
   math-partial-sums                               1322.4847+-44.0024        1309.9805+-3.8920        
   math-spectral-norm                              1825.9061+-0.7341     ?   1827.8899+-6.9929        ?
   string-base64                                    512.5270+-25.3596         504.8040+-5.9834          might be 1.0153x faster
   string-fasta                                     990.0941+-6.9084     ?    996.3492+-4.9985        ?
   string-tagcloud                                  379.4710+-1.1007     !    382.8420+-1.4078        ! definitely 1.0089x slower

   <arithmetic>                                    1315.2828+-11.9232        1307.9145+-4.3235          might be 1.0056x faster
   <geometric> *                                   1118.5070+-7.2060         1115.0180+-3.1340          might be 1.0031x faster
   <harmonic>                                       801.2235+-3.0972          800.3534+-1.2119          might be 1.0011x faster

                                                        TipOfTree               SanitizeStack                                   
V8Spider:
   crypto                                            79.7162+-1.3527           79.5633+-0.6875        
   deltablue                                         99.1121+-2.5909           98.3615+-2.3015        
   earley-boyer                                      71.6380+-2.9120           71.2197+-0.6317        
   raytrace                                          39.6763+-0.5814           39.6075+-0.2574        
   regexp                                            99.4262+-0.8666           98.7952+-0.6504        
   richards                                         133.8400+-2.1225     ?    134.4115+-4.7856        ?
   splay                                             46.3669+-3.3185     ?     46.8315+-2.1618        ? might be 1.0100x slower

   <arithmetic>                                      81.3965+-0.8572           81.2557+-0.9187          might be 1.0017x faster
   <geometric> *                                     75.3909+-1.2004           75.2957+-0.6792          might be 1.0013x faster
   <harmonic>                                        69.3599+-1.5275           69.3378+-0.6794          might be 1.0003x faster

                                                        TipOfTree               SanitizeStack                                   
Octane and V8v7:
   encrypt                                           0.47191+-0.02240          0.46576+-0.00182         might be 1.0132x faster
   decrypt                                           8.55898+-0.01126    ?     8.56968+-0.00330       ?
   deltablue                                x2       0.56585+-0.01193          0.56433+-0.01090       
   earley                                            0.91043+-0.02474          0.91009+-0.03121       
   boyer                                            12.23468+-0.07809    ?    12.33902+-0.39410       ?
   raytrace                                 x2       4.28421+-0.15736    ?     4.31446+-0.13869       ?
   regexp                                   x2      33.23191+-0.44446    ?    33.51109+-1.42702       ?
   richards                                 x2       0.42989+-0.04726    ?     0.43751+-0.03279       ? might be 1.0177x slower
   splay                                    x2       0.63016+-0.00335    ?     0.63453+-0.00715       ?
   navier-stokes                            x2      10.93438+-0.00772    ?    10.94351+-0.01781       ?
   closure                                           0.42240+-0.00161    ?     0.42352+-0.00260       ?
   jquery                                            6.09880+-0.02252    ?     6.28320+-0.44560       ? might be 1.0302x slower
   gbemu                                    x2      71.88257+-0.46340    ?    72.09858+-0.93748       ?
   mandreel                                 x2     142.34704+-0.35777        142.26104+-0.36853       
   pdfjs                                    x2     100.91978+-1.10373    ?   102.02749+-0.86519       ? might be 1.0110x slower
   box2d                                    x2      35.38358+-0.56139         35.06946+-0.40265       

V8v7:
   <arithmetic>                                      7.64555+-0.04012    ?     7.69346+-0.18461       ? might be 1.0063x slower
   <geometric> *                                     2.51444+-0.05153    ?     2.52596+-0.02897       ? might be 1.0046x slower
   <harmonic>                                        1.03249+-0.04411    ?     1.03739+-0.02242       ? might be 1.0047x slower

Octane including V8v7:
   <arithmetic>                                     31.91984+-0.02604    ?    32.02751+-0.19507       ? might be 1.0034x slower
   <geometric> *                                     6.98190+-0.09162    ?     7.01258+-0.06036       ? might be 1.0044x slower
   <harmonic>                                        1.43272+-0.05273    ?     1.43943+-0.02569       ? might be 1.0047x slower

                                                        TipOfTree               SanitizeStack                                   
Kraken:
   ai-astar                                          494.056+-1.260            493.903+-1.120         
   audio-beat-detection                              236.953+-2.367      ?     236.968+-6.440         ?
   audio-dft                                         290.770+-3.230            288.893+-1.566         
   audio-fft                                         143.037+-0.397            142.779+-0.224         
   audio-oscillator                                  247.213+-10.770           243.654+-0.915           might be 1.0146x faster
   imaging-darkroom                                  311.918+-79.881           286.077+-2.184           might be 1.0903x faster
   imaging-desaturate                                158.322+-0.337      ?     159.202+-2.684         ?
   imaging-gaussian-blur                             362.702+-0.562            362.677+-0.380         
   json-parse-financial                               81.245+-3.529             80.546+-0.453         
   json-stringify-tinderbox                          103.669+-0.660      ?     105.102+-0.984         ? might be 1.0138x slower
   stanford-crypto-aes                                90.643+-3.035      ?      91.460+-1.108         ?
   stanford-crypto-ccm                                99.730+-4.230      ?     102.807+-2.378         ? might be 1.0309x slower
   stanford-crypto-pbkdf2                            255.925+-1.589      !     265.479+-2.811         ! definitely 1.0373x slower
   stanford-crypto-sha256-iterative                  114.322+-1.313      ?     114.590+-1.340         ?

   <arithmetic> *                                    213.608+-7.308            212.438+-0.382           might be 1.0055x faster
   <geometric>                                       183.107+-5.106            182.942+-0.415           might be 1.0009x faster
   <harmonic>                                        157.787+-3.619      ?     158.305+-0.419         ? might be 1.0033x slower

                                                        TipOfTree               SanitizeStack                                   
JSRegress:
   adapt-to-double-divide                            22.6761+-0.1843     ?     22.7277+-0.2150        ?
   aliased-arguments-getbyval                         0.9590+-0.0068            0.9572+-0.0036        
   allocate-big-object                                2.6200+-0.0122            2.6185+-0.0343        
   arity-mismatch-inlining                            0.9321+-0.0173            0.9168+-0.0064          might be 1.0166x faster
   array-access-polymorphic-structure                 9.8262+-0.0518            9.7321+-0.3313        
   array-nonarray-polymorhpic-access                 56.5706+-1.0879     ?    101.7098+-145.2643      ? might be 1.7979x slower
   array-with-double-add                              5.6855+-0.2141     ?      5.7725+-0.2765        ? might be 1.0153x slower
   array-with-double-increment                        4.3523+-0.0106            4.2546+-0.1891          might be 1.0230x faster
   array-with-double-mul-add                          6.8571+-0.0886            6.8420+-0.0968        
   array-with-double-sum                              8.0270+-0.1411     ?      8.1545+-0.2138        ? might be 1.0159x slower
   array-with-int32-add-sub                          10.3670+-0.2390     ?     10.6257+-0.3305        ? might be 1.0250x slower
   array-with-int32-or-double-sum                     8.0985+-0.0916            7.9429+-0.2041          might be 1.0196x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    119.0945+-1.9709     ?    119.1904+-1.4630        ?
   ArrayBuffer-DataView-alloc-long-lived             30.2508+-0.7853     ?     30.9540+-0.5879        ? might be 1.0232x slower
   ArrayBuffer-Int32Array-byteOffset                  7.0743+-0.0782            7.0483+-0.0130        
   ArrayBuffer-Int8Array-alloc-huge-long-lived   
                                                    214.8141+-2.9588     ?    217.2603+-2.1504        ? might be 1.0114x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented   
                                                    165.2525+-2.2852     ?    168.0956+-3.3623        ? might be 1.0172x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    117.7887+-3.8697     ?    121.0142+-9.3241        ? might be 1.0274x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     48.9536+-0.3760     ?     49.9091+-1.3377        ? might be 1.0195x slower
   ArrayBuffer-Int8Array-alloc-long-lived            30.6033+-1.1588     ?     31.1758+-0.6225        ? might be 1.0187x slower
   ArrayBuffer-Int8Array-alloc                       26.5809+-1.1273     ?     27.8334+-1.1767        ? might be 1.0471x slower
   asmjs_bool_bug                                     9.4610+-0.1935     ?      9.4893+-0.0768        ?
   basic-set                                         21.4275+-0.1409     ?     23.2465+-3.1728        ? might be 1.0849x slower
   big-int-mul                                        5.5223+-0.0672            5.4802+-0.0277        
   boolean-test                                       4.3268+-0.0108     ?      4.3323+-0.0113        ?
   branch-fold                                        4.9551+-0.0204     ?      4.9557+-0.0117        ?
   cast-int-to-double                                12.3935+-0.0265           12.2786+-0.2095        
   cell-argument                                     16.2903+-0.8266           16.1346+-1.1303        
   cfg-simplify                                       3.9554+-0.0090            3.9503+-0.0102        
   cmpeq-obj-to-obj-other                            13.0160+-1.3198           12.1685+-1.2118          might be 1.0697x faster
   constant-test                                      8.7445+-0.1974     ?      8.8486+-0.2228        ? might be 1.0119x slower
   DataView-custom-properties                       124.7344+-2.1113     ?    124.7809+-1.5478        ?
   delay-tear-off-arguments-strictmode                3.5204+-0.0294            3.5137+-0.0226        
   destructuring-arguments-length                   169.8019+-2.8996     ?    172.4662+-2.9274        ? might be 1.0157x slower
   destructuring-arguments                            8.8872+-0.0566            8.7162+-0.2538          might be 1.0196x faster
   destructuring-swap                                 8.5507+-0.1473     ?      8.6375+-0.2695        ? might be 1.0102x slower
   direct-arguments-getbyval                          0.8337+-0.0170            0.8295+-0.0132        
   double-pollution-getbyval                         11.0217+-0.2144     ?     11.0529+-0.0179        ?
   double-pollution-putbyoffset                       5.9985+-0.1666            5.8312+-0.0469          might be 1.0287x faster
   empty-string-plus-int                             10.7546+-0.2373     ?     11.4810+-0.5322        ? might be 1.0675x slower
   emscripten-cube2hash                              50.2189+-0.1002     ?     51.3340+-2.1054        ? might be 1.0222x slower
   emscripten-memops                               8398.7665+-45.0201        8378.7040+-4.5956        
   external-arguments-getbyval                        1.9963+-0.0937     ?      2.0334+-0.0648        ? might be 1.0186x slower
   external-arguments-putbyval                        3.0029+-0.0114     ?      3.0071+-0.0550        ?
   Float32Array-matrix-mult                           6.3350+-0.0534     ?      6.3568+-0.0871        ?
   Float32Array-to-Float64Array-set                  94.8268+-1.9665     ?     95.1838+-4.4005        ?
   Float64Array-alloc-long-lived                    102.9706+-1.4973     ?    103.7778+-0.3447        ?
   Float64Array-to-Int16Array-set                   116.6866+-1.0349     ?    117.3914+-2.2287        ?
   fold-double-to-int                                26.2928+-1.4385           25.7225+-0.6463          might be 1.0222x faster
   for-of-iterate-array-entries                       8.4568+-0.2361     ?      8.6274+-0.0793        ? might be 1.0202x slower
   for-of-iterate-array-keys                          3.4432+-0.1154     ?      3.5779+-0.1962        ? might be 1.0391x slower
   for-of-iterate-array-values                        2.9808+-0.0565            2.9202+-0.1760          might be 1.0208x faster
   function-dot-apply                                 3.1213+-0.0172     ?      3.1334+-0.0238        ?
   function-test                                      4.7019+-0.0096     ?      4.8082+-0.1179        ? might be 1.0226x slower
   get-by-id-chain-from-try-block                     7.5655+-0.3292     ?      7.6617+-0.4285        ? might be 1.0127x slower
   get-by-id-proto-or-self                           26.3433+-0.8932           25.9992+-0.8525          might be 1.0132x faster
   get-by-id-self-or-proto                           23.7790+-1.3167           23.1949+-1.1073          might be 1.0252x faster
   get_callee_monomorphic                             4.7274+-0.1310     ?      4.7580+-0.3087        ?
   get_callee_polymorphic                             4.4830+-0.0133     ?      4.4961+-0.0593        ?
   global-var-const-infer-fire-from-opt               0.9385+-0.0173     ?      0.9835+-0.1141        ? might be 1.0479x slower
   global-var-const-infer                             0.7577+-0.0114     ?      0.7605+-0.0112        ?
   HashMap-put-get-iterate-keys                      42.5099+-0.9985     ^     41.0569+-0.1773        ^ definitely 1.0354x faster
   HashMap-put-get-iterate                           60.5083+-0.5073     ^     58.5533+-0.6539        ^ definitely 1.0334x faster
   HashMap-string-put-get-iterate                    53.2421+-0.5112     ?     54.1592+-1.1917        ? might be 1.0172x slower
   imul-double-only                                  17.7548+-0.0244           17.7485+-0.0305        
   imul-int-only                                     14.8425+-0.2189     ?     14.9547+-0.6386        ?
   imul-mixed                                        21.8140+-0.0489           21.8065+-0.3436        
   in-four-cases                                     25.8678+-0.0634     ?     25.9010+-0.2838        ?
   in-one-case-false                                 12.2305+-0.4203           12.1792+-0.2318        
   in-one-case-true                                  12.0380+-0.2505     ?     12.0773+-0.1292        ?
   in-two-cases                                      12.8657+-0.0300     ?     12.9175+-0.1240        ?
   indexed-properties-in-objects                      4.6668+-0.0090            4.6592+-0.0195        
   inline-arguments-access                            1.6490+-0.1479            1.5955+-0.0129          might be 1.0335x faster
   inline-arguments-local-escape                     22.1605+-0.5924     ?     22.7377+-0.4417        ? might be 1.0260x slower
   inline-get-scoped-var                              6.9720+-0.0590     ?      7.1190+-0.1041        ? might be 1.0211x slower
   inlined-put-by-id-transition                      15.4243+-0.4613           15.2905+-0.7566        
   int-or-other-abs-then-get-by-val                   9.5125+-0.2777            9.4443+-0.1685        
   int-or-other-abs-zero-then-get-by-val             37.2091+-0.3635     ?     37.6097+-1.3456        ? might be 1.0108x slower
   int-or-other-add-then-get-by-val                  10.5730+-0.2865           10.5381+-0.1830        
   int-or-other-add                                  11.0640+-0.2302           10.8519+-0.4276          might be 1.0195x faster
   int-or-other-div-then-get-by-val                   6.3692+-0.0259     ?      6.3795+-0.0361        ?
   int-or-other-max-then-get-by-val                   8.5703+-0.1162     ?      8.6499+-0.2192        ?
   int-or-other-min-then-get-by-val                   6.9445+-0.2575     ?      6.9465+-0.0151        ?
   int-or-other-mod-then-get-by-val                   6.1005+-0.0380            6.0305+-0.1901          might be 1.0116x faster
   int-or-other-mul-then-get-by-val                   6.5635+-0.0482            6.5546+-0.0876        
   int-or-other-neg-then-get-by-val                   7.7587+-0.1869     ?      7.7990+-0.0816        ?
   int-or-other-neg-zero-then-get-by-val             36.7533+-0.2706           36.6578+-0.3071        
   int-or-other-sub-then-get-by-val                  10.4568+-0.3675           10.4322+-0.3268        
   int-or-other-sub                                   8.8213+-0.4299     ?      8.8727+-0.1503        ?
   int-overflow-local                                 6.4465+-0.0780     ?      6.4491+-0.0194        ?
   Int16Array-alloc-long-lived                       67.3723+-0.5646     ?     68.1948+-2.9867        ? might be 1.0122x slower
   Int16Array-bubble-sort-with-byteLength            48.9763+-0.1589           48.9663+-0.0542        
   Int16Array-bubble-sort                            48.2940+-0.1019     ?     49.0585+-2.1741        ? might be 1.0158x slower
   Int16Array-load-int-mul                            1.7964+-0.0078     ?      1.8000+-0.0067        ?
   Int16Array-to-Int32Array-set                      89.7446+-1.8348     ?     89.9037+-0.6393        ?
   Int32Array-alloc-huge-long-lived                 705.1150+-7.3812     ?    705.9944+-6.4014        ?
   Int32Array-alloc-huge                            807.4919+-12.1579         804.1201+-8.0841        
   Int32Array-alloc-large-long-lived                964.6575+-13.6917    ?    973.4096+-18.3643       ?
   Int32Array-alloc-large                            46.7620+-1.8033           44.9925+-1.8955          might be 1.0393x faster
   Int32Array-alloc-long-lived                       80.1795+-3.2326     ?     80.3215+-0.6973        ?
   Int32Array-alloc                                   4.4960+-0.0223     ?      4.5327+-0.1321        ?
   Int32Array-Int8Array-view-alloc                   14.7983+-0.0788     !     16.0178+-0.2436        ! definitely 1.0824x slower
   int52-spill                                       12.2700+-0.3308     ?     12.7814+-0.9555        ? might be 1.0417x slower
   Int8Array-alloc-long-lived                        65.9295+-0.2279     ?     67.2307+-1.7542        ? might be 1.0197x slower
   Int8Array-load-with-byteLength                     4.9925+-0.2184     ?      5.0587+-0.0513        ? might be 1.0133x slower
   Int8Array-load                                     4.9506+-0.1879     ?      5.0587+-0.0094        ? might be 1.0218x slower
   integer-divide                                    14.9082+-0.2653           14.8150+-0.3540        
   integer-modulo                                     2.0034+-0.0181            1.9925+-0.0186        
   large-int-captured                                 9.9471+-0.0623            9.8030+-0.5705          might be 1.0147x faster
   large-int-neg                                     25.9329+-0.4005     ?     25.9928+-0.4133        ?
   large-int                                         23.6075+-0.4182           23.4662+-0.2356        
   lots-of-fields                                    11.0015+-0.0883     ?     11.0165+-0.1005        ?
   make-indexed-storage                               4.2234+-0.0431            4.1726+-0.2204          might be 1.0122x faster
   make-rope-cse                                      5.9794+-0.2180            5.9040+-0.2063          might be 1.0128x faster
   marsaglia-larger-ints                            111.8631+-0.1544     !    112.3962+-0.3419        ! definitely 1.0048x slower
   marsaglia-osr-entry                               47.0480+-0.3172     ?     47.0977+-0.2749        ?
   marsaglia                                        463.1880+-1.0270          462.9125+-0.8686        
   method-on-number                                  30.5444+-0.9219     ?     30.7098+-1.5598        ?
   negative-zero-divide                               0.4042+-0.0058            0.4019+-0.0025        
   negative-zero-modulo                               0.3875+-0.0039            0.3845+-0.0055        
   negative-zero-negate                               0.3693+-0.0035     ?      0.3698+-0.0054        ?
   nested-function-parsing-random                   374.8698+-0.6540     !    377.7367+-0.4948        ! definitely 1.0076x slower
   nested-function-parsing                           48.7833+-2.8216           48.2692+-0.1946          might be 1.0107x faster
   new-array-buffer-dead                              3.7042+-0.0168     ?      3.7247+-0.0160        ?
   new-array-buffer-push                             10.4852+-0.3921     ?     10.5753+-0.3499        ?
   new-array-dead                                    28.4589+-0.3872     ?     28.8066+-1.2496        ? might be 1.0122x slower
   new-array-push                                     6.7766+-0.0445     ?      6.8625+-0.0748        ? might be 1.0127x slower
   number-test                                        4.2809+-0.0097     ?      4.2986+-0.0362        ?
   object-closure-call                               13.3716+-0.1915           13.2393+-0.0897        
   object-test                                        4.7969+-0.0081     ?      4.8110+-0.0804        ?
   poly-stricteq                                     77.3371+-4.1868           76.0685+-0.1632          might be 1.0167x faster
   polymorphic-structure                             21.1630+-0.2293           21.0607+-0.1965        
   polyvariant-monomorphic-get-by-id                 11.9323+-0.1812           11.9107+-0.2071        
   put-by-id                                         19.3898+-0.8487     ?     19.7475+-0.5507        ? might be 1.0184x slower
   put-by-val-large-index-blank-indexing-type   
                                                     10.8073+-0.1507     !     11.2458+-0.2515        ! definitely 1.0406x slower
   rare-osr-exit-on-local                            20.3249+-0.3044           20.3163+-0.2119        
   register-pressure-from-osr                        31.1304+-0.2271     ?     31.2450+-0.3611        ?
   simple-activation-demo                            35.1943+-0.1757           35.1248+-0.0785        
   slow-array-profile-convergence                     4.0380+-0.0470            4.0275+-0.0287        
   slow-convergence                                   4.1888+-0.0161     ?      4.1990+-0.0702        ?
   sparse-conditional                                 1.3558+-0.0294            1.3533+-0.0520        
   splice-to-remove                                  78.1144+-2.6362           77.0975+-0.5559          might be 1.0132x faster
   stepanov_container                             11439.1393+-33.5908    ?  11590.8589+-483.6340      ? might be 1.0133x slower
   string-concat-object                               2.9948+-0.0235     ?      3.0159+-0.1029        ?
   string-concat-pair-object                          2.9093+-0.0198            2.9024+-0.0321        
   string-concat-pair-simple                         16.8035+-1.0257           16.5202+-0.6809          might be 1.0171x faster
   string-concat-simple                              16.8743+-0.5430     ?     17.3826+-0.3919        ? might be 1.0301x slower
   string-cons-repeat                                10.4990+-0.0518           10.4954+-0.0399        
   string-cons-tower                                 11.0181+-0.1350     ?     11.0502+-0.1092        ?
   string-equality                                   42.5167+-0.0312     ?     42.8676+-1.3412        ?
   string-get-by-val-big-char                        12.8562+-0.2881     ?     13.3997+-0.8426        ? might be 1.0423x slower
   string-get-by-val-out-of-bounds-insane             5.8951+-0.4483            5.7405+-0.1072          might be 1.0269x faster
   string-get-by-val-out-of-bounds                    5.2743+-0.1571     ?      5.3145+-0.0155        ?
   string-get-by-val                                  4.8933+-0.0145     ?      4.9570+-0.0608        ? might be 1.0130x slower
   string-hash                                        2.7545+-0.0586            2.7370+-0.0144        
   string-long-ident-equality                        36.8970+-0.2410     ?     37.0555+-0.1515        ?
   string-repeat-arith                               48.8970+-0.2346     ?     48.9462+-0.7756        ?
   string-sub                                        97.6720+-0.3376     ?     98.1032+-1.3132        ?
   string-test                                        4.2378+-0.0208     ?      4.3042+-0.1648        ? might be 1.0157x slower
   string-var-equality                               69.8782+-0.0357     ?     70.1060+-0.7802        ?
   structure-hoist-over-transitions                   3.3663+-0.0444            3.3619+-0.0383        
   switch-char-constant                               3.4709+-0.0097     ?      3.4775+-0.0278        ?
   switch-char                                        8.0755+-0.2341     ?      8.1138+-0.2646        ?
   switch-constant                                    9.1712+-0.3306     ?      9.3649+-0.2260        ? might be 1.0211x slower
   switch-string-basic-big-var                       20.3674+-0.4775           20.3409+-0.1938        
   switch-string-basic-big                           20.7240+-0.5023     ?     20.9143+-0.8527        ?
   switch-string-basic-var                           20.1971+-0.1454           20.0680+-0.1590        
   switch-string-basic                               22.3347+-1.6487           20.8702+-1.8603          might be 1.0702x faster
   switch-string-big-length-tower-var                28.9253+-0.3226     ?     29.3337+-1.1735        ? might be 1.0141x slower
   switch-string-length-tower-var                    21.5057+-0.3215     ?     21.5545+-0.1275        ?
   switch-string-length-tower                        16.4064+-0.3100     ?     16.8286+-0.7790        ? might be 1.0257x slower
   switch-string-short                               16.5114+-0.2045     ?     16.5701+-0.8218        ?
   switch                                            16.0359+-0.7271           15.4680+-0.3210          might be 1.0367x faster
   tear-off-arguments-simple                          2.2060+-0.0146            2.2015+-0.0086        
   tear-off-arguments                                 3.5317+-0.0212     ?      3.5342+-0.0245        ?
   temporal-structure                                16.9755+-0.1177     ?     17.1923+-0.7192        ? might be 1.0128x slower
   to-int32-boolean                                  21.9634+-0.1643           21.6900+-0.3442          might be 1.0126x faster
   undefined-test                                     4.4008+-0.1114     ?      4.4095+-0.1895        ?
   weird-inlining-const-prop                          2.2855+-0.0227     ?      2.3370+-0.1742        ? might be 1.0225x slower

   <arithmetic>                                     152.8037+-0.4180     ?    153.9515+-2.5015        ? might be 1.0075x slower
   <geometric> *                                     14.0097+-0.0188     ?     14.0795+-0.0775        ? might be 1.0050x slower
   <harmonic>                                         5.2386+-0.0059     ?      5.2434+-0.0241        ? might be 1.0009x slower

                                                        TipOfTree               SanitizeStack                                   
All benchmarks:
   <arithmetic>                                     222.1644+-0.9323     ?    222.2638+-1.5293        ? might be 1.0004x slower
   <geometric>                                       20.4635+-0.0867     ?     20.5309+-0.0686        ? might be 1.0033x slower
   <harmonic>                                         4.7341+-0.0586     ?      4.7441+-0.0327        ? might be 1.0021x slower

                                                        TipOfTree               SanitizeStack                                   
Geomean of preferred means:
   <scaled-result>                                   48.6107+-0.8273           48.5434+-0.0269          might be 1.0014x faster
Comment 4 Filip Pizlo 2013-11-27 16:20:35 PST
Landed in http://trac.webkit.org/changeset/159826