Bug 144664 - Extend the SaneChain optimization to Contiguous arrays
Summary: Extend the SaneChain optimization to Contiguous arrays
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on: 144665
Blocks: 144668
  Show dependency treegraph
 
Reported: 2015-05-05 22:36 PDT by Filip Pizlo
Modified: 2015-05-08 17:23 PDT (History)
2 users (show)

See Also:


Attachments
the patch (22.19 KB, patch)
2015-05-08 13:42 PDT, Filip Pizlo
mark.lam: review+
Details | Formatted Diff | Diff
patch for landing (22.72 KB, patch)
2015-05-08 14:59 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2015-05-05 22:36:56 PDT
Patch forthcoming.
Comment 1 Filip Pizlo 2015-05-08 13:42:03 PDT
Created attachment 252745 [details]
the patch
Comment 2 WebKit Commit Bot 2015-05-08 13:43:55 PDT
Attachment 252745 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/ArrayPrototype.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Mark Lam 2015-05-08 14:21:20 PDT
Comment on attachment 252745 [details]
the patch

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

r=me if bot issues are fixed / not caused by this patch.

> Source/JavaScriptCore/ChangeLog:11
> +        prototype chain is sain - i.e. has no indexed properties. Then we can just return

s/sain/sane/.

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338
> +                if (node->arrayMode().isSaneChain()) {

You should put an assertion here like the 64-bit version:
    ASSERT(node->arrayMode().type() == Array::Contiguous);
Comment 4 Filip Pizlo 2015-05-08 14:51:59 PDT
Looks like it's generally a good thing.


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

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r183974)
"FastHole" at /Volumes/Data/pizlo/primary/OpenSource/WebKitBuild/Release/jsc (r183974)

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                  FastHole                                     
SunSpider:
   3d-cube                                            5.2812+-0.2683            5.2124+-0.1318          might be 1.0132x faster
   3d-morph                                           5.7376+-0.0701     ?      5.9680+-0.2872        ? might be 1.0401x slower
   3d-raytrace                                        6.6647+-0.5001     ?      6.9130+-0.4816        ? might be 1.0373x slower
   access-binary-trees                                2.3189+-0.0939     ?      2.3836+-0.1692        ? might be 1.0279x slower
   access-fannkuch                                    6.0336+-0.0747            5.9828+-0.0828        
   access-nbody                                       3.1497+-0.4974            2.9816+-0.0929          might be 1.0563x faster
   access-nsieve                                      3.5473+-0.3499            3.2230+-0.0828          might be 1.1006x faster
   bitops-3bit-bits-in-byte                           1.5710+-0.0281     ?      1.7602+-0.4588        ? might be 1.1204x slower
   bitops-bits-in-byte                                3.3962+-0.0580     ?      3.5341+-0.2448        ? might be 1.0406x slower
   bitops-bitwise-and                                 2.1101+-0.0434     ?      2.1263+-0.0602        ?
   bitops-nsieve-bits                                 3.2057+-0.0697     ?      3.6160+-0.5179        ? might be 1.1280x slower
   controlflow-recursive                              2.3253+-0.0869     ?      2.3722+-0.2167        ? might be 1.0202x slower
   crypto-aes                                         4.4043+-0.1044     ?      4.6892+-0.4824        ? might be 1.0647x slower
   crypto-md5                                         2.7143+-0.0514     ?      2.8308+-0.1794        ? might be 1.0429x slower
   crypto-sha1                                        2.7932+-0.1797     ?      2.8943+-0.2345        ? might be 1.0362x slower
   date-format-tofte                                  9.4850+-0.2104     ?      9.7496+-0.7246        ? might be 1.0279x slower
   date-format-xparb                                  5.8873+-0.3732     ?      6.0942+-0.1776        ? might be 1.0351x slower
   math-cordic                                        3.1794+-0.1166            3.1363+-0.0660          might be 1.0137x faster
   math-partial-sums                                  5.4259+-0.4007            5.3883+-0.1999        
   math-spectral-norm                                 1.9079+-0.0318     ?      2.1150+-0.2277        ? might be 1.1086x slower
   regexp-dna                                         7.7579+-1.2110            7.5813+-1.2213          might be 1.0233x faster
   string-base64                                      4.9657+-0.7743     ?      5.5069+-1.0534        ? might be 1.1090x slower
   string-fasta                                       6.8099+-0.3306     ?      7.0229+-0.8074        ? might be 1.0313x slower
   string-tagcloud                                    9.4453+-0.5153            9.3300+-0.6035          might be 1.0124x faster
   string-unpack-code                                20.8247+-1.5063           19.4271+-0.6138          might be 1.0719x faster
   string-validate-input                              4.9461+-0.2229     ?      5.0068+-0.2815        ? might be 1.0123x slower

   <arithmetic>                                       5.2265+-0.0695     ?      5.2633+-0.0976        ? might be 1.0070x slower

                                                        TipOfTree                  FastHole                                     
LongSpider:
   3d-cube                                          886.5517+-12.7342         885.5944+-10.1133       
   3d-morph                                        1538.5567+-13.9876    ?   1561.3091+-51.5231       ? might be 1.0148x slower
   3d-raytrace                                      743.8158+-9.5285          731.4122+-9.2918          might be 1.0170x faster
   access-binary-trees                             1032.4877+-9.7242         1019.8070+-7.4377          might be 1.0124x faster
   access-fannkuch                                  336.2548+-7.5050          327.6305+-12.6180         might be 1.0263x faster
   access-nbody                                     612.1234+-5.4300     ?    625.4064+-12.3077       ? might be 1.0217x slower
   access-nsieve                                    481.8783+-8.9474          481.3267+-2.8794        
   bitops-3bit-bits-in-byte                          44.6098+-1.1029           43.8759+-0.3759          might be 1.0167x faster
   bitops-bits-in-byte                              103.1358+-4.2807          102.2306+-2.4113        
   bitops-nsieve-bits                               423.9563+-6.1506          421.6956+-2.7490        
   controlflow-recursive                            486.5420+-12.5877    ?    490.9889+-11.9423       ?
   crypto-aes                                       712.9815+-8.1147          703.6635+-9.1228          might be 1.0132x faster
   crypto-md5                                       532.6786+-11.4427         521.8815+-7.4464          might be 1.0207x faster
   crypto-sha1                                      601.2180+-6.9767          596.8802+-7.9371        
   date-format-tofte                                761.5969+-16.4127         750.3714+-12.1484         might be 1.0150x faster
   date-format-xparb                                828.1840+-47.2601         827.9938+-8.1830        
   hash-map                                         169.4223+-3.2059     ?    172.6432+-2.6364        ? might be 1.0190x slower
   math-cordic                                      588.4110+-3.6149     ?    599.4486+-13.4657       ? might be 1.0188x slower
   math-partial-sums                                510.0747+-7.6213     ?    513.5745+-7.7166        ?
   math-spectral-norm                               567.4313+-7.0898     ?    569.8087+-7.0759        ?
   string-base64                                    385.9593+-4.1599          374.3436+-8.2060          might be 1.0310x faster
   string-fasta                                     433.2383+-5.8526     ?    439.1142+-7.3146        ? might be 1.0136x slower
   string-tagcloud                                  198.4856+-4.0301          197.2756+-3.4962        

   <geometric>                                      454.8903+-1.8667          453.4591+-2.0821          might be 1.0032x faster

                                                        TipOfTree                  FastHole                                     
V8Spider:
   crypto                                            57.6836+-1.6892           56.1511+-1.5238          might be 1.0273x faster
   deltablue                                         98.5308+-3.6727           97.1455+-3.3735          might be 1.0143x faster
   earley-boyer                                      45.3531+-1.3586           44.4968+-0.5015          might be 1.0192x faster
   raytrace                                          41.4369+-2.3539     ?     42.7134+-2.8075        ? might be 1.0308x slower
   regexp                                            82.0898+-2.7959     ?     83.0511+-2.4510        ? might be 1.0117x slower
   richards                                          79.1196+-1.3051     ?     79.3960+-3.2864        ?
   splay                                             40.5620+-2.1263           39.2979+-2.4518          might be 1.0322x faster

   <geometric>                                       60.0151+-0.8614           59.6119+-0.9140          might be 1.0068x faster

                                                        TipOfTree                  FastHole                                     
Octane:
   encrypt                                           0.20452+-0.00076    ?     0.20608+-0.00353       ?
   decrypt                                           3.61449+-0.05657          3.55439+-0.00771         might be 1.0169x faster
   deltablue                                x2       0.20817+-0.00276          0.20568+-0.00222         might be 1.0121x faster
   earley                                            0.49751+-0.00495    ?     0.50628+-0.00536       ? might be 1.0176x slower
   boyer                                             6.65453+-0.04412    ?     6.65765+-0.02827       ?
   navier-stokes                            x2       5.21234+-0.04700    ?     5.22844+-0.05116       ?
   raytrace                                 x2       1.28244+-0.04659    ?     1.28562+-0.10758       ?
   richards                                 x2       0.12612+-0.00555          0.12232+-0.00124         might be 1.0311x faster
   splay                                    x2       0.39853+-0.00245          0.39639+-0.00265       
   regexp                                   x2      32.20924+-0.24901         32.00960+-0.21172       
   pdfjs                                    x2      45.33234+-0.46726         45.32037+-0.47136       
   mandreel                                 x2      49.92237+-0.53478    ?    50.15351+-0.49817       ?
   gbemu                                    x2      41.94737+-0.53965    ?    42.84097+-2.76851       ? might be 1.0213x slower
   closure                                           0.56237+-0.00775    ?     0.56711+-0.00894       ?
   jquery                                            7.09744+-0.03079    ?     7.17652+-0.09094       ? might be 1.0111x slower
   box2d                                    x2      12.43604+-0.08078    ?    12.54741+-0.10863       ?
   zlib                                     x2     384.12149+-17.29956   ?   396.58931+-2.92146       ? might be 1.0325x slower
   typescript                               x2     851.50269+-4.54014    ^   825.68233+-16.92565      ^ definitely 1.0313x faster

   <geometric>                                       6.74360+-0.03223          6.74321+-0.06129         might be 1.0001x faster

                                                        TipOfTree                  FastHole                                     
Kraken:
   ai-astar                                          277.733+-6.890      ?     281.228+-4.793         ? might be 1.0126x slower
   audio-beat-detection                              107.300+-1.348            107.125+-1.570         
   audio-dft                                         121.617+-2.843            120.519+-3.760         
   audio-fft                                          87.233+-2.773      ^      80.666+-1.712         ^ definitely 1.0814x faster
   audio-oscillator                                   77.518+-1.948      ?      80.368+-3.436         ? might be 1.0368x slower
   imaging-darkroom                                  106.062+-2.323      ?     106.232+-3.283         ?
   imaging-desaturate                                 64.350+-1.457      ?      64.658+-2.291         ?
   imaging-gaussian-blur                             114.685+-1.581      ^     110.504+-1.556         ^ definitely 1.0378x faster
   json-parse-financial                               47.179+-0.886             45.144+-1.812           might be 1.0451x faster
   json-stringify-tinderbox                           31.937+-0.454      ?      32.611+-1.571         ? might be 1.0211x slower
   stanford-crypto-aes                                60.437+-2.909             60.340+-1.424         
   stanford-crypto-ccm                                60.775+-2.839      ?      61.861+-3.809         ? might be 1.0179x slower
   stanford-crypto-pbkdf2                            138.306+-3.919            136.682+-1.325           might be 1.0119x faster
   stanford-crypto-sha256-iterative                   52.700+-1.299             52.519+-2.063         

   <arithmetic>                                       96.274+-0.657             95.747+-0.745           might be 1.0055x faster

                                                        TipOfTree                  FastHole                                     
JSRegress:
   abs-boolean                                        2.6643+-0.0525     ?      2.9160+-0.4212        ? might be 1.0945x slower
   adapt-to-double-divide                            16.8825+-0.2034     ?     16.9220+-0.4890        ?
   aliased-arguments-getbyval                         1.2445+-0.0682     ?      1.3144+-0.0694        ? might be 1.0562x slower
   allocate-big-object                                2.8730+-0.1780     ?      2.9056+-0.0865        ? might be 1.0113x slower
   arguments-named-and-reflective                    12.2133+-0.4679     ?     12.6496+-1.1829        ? might be 1.0357x slower
   arguments-out-of-bounds                           15.1180+-0.7521           15.0031+-0.3552        
   arguments-strict-mode                             10.6135+-0.2027     ?     11.7751+-1.2812        ? might be 1.1094x slower
   arguments                                          9.6121+-0.6681     ?     10.2111+-1.2600        ? might be 1.0623x slower
   arity-mismatch-inlining                            0.8381+-0.0125     !      0.8769+-0.0254        ! definitely 1.0463x slower
   array-access-polymorphic-structure                 6.7638+-0.1738     ?      7.6043+-0.9670        ? might be 1.1243x slower
   array-nonarray-polymorhpic-access                 35.8663+-3.2219           34.0557+-1.5155          might be 1.0532x faster
   array-prototype-every                             88.8044+-1.6736           86.5129+-1.3507          might be 1.0265x faster
   array-prototype-forEach                           84.8769+-1.3855     ?     85.6665+-1.8398        ?
   array-prototype-map                               96.1570+-2.0365           95.0114+-2.8756          might be 1.0121x faster
   array-prototype-some                              90.1528+-2.0217           88.7385+-1.4294          might be 1.0159x faster
   array-splice-contiguous                           43.8220+-1.8186           42.8987+-2.3541          might be 1.0215x faster
   array-with-double-add                              4.2668+-0.3158            4.2528+-0.3433        
   array-with-double-increment                        3.2118+-0.0358     ?      3.2736+-0.0863        ? might be 1.0193x slower
   array-with-double-mul-add                          5.1140+-0.2777            5.0655+-0.1642        
   array-with-double-sum                              3.2823+-0.0670     ?      3.3741+-0.1596        ? might be 1.0280x slower
   array-with-int32-add-sub                           6.8674+-0.1768            6.7600+-0.0407          might be 1.0159x faster
   array-with-int32-or-double-sum                     3.7378+-0.5220            3.5524+-0.3992          might be 1.0522x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     34.3365+-1.5471           34.0485+-2.6689        
   ArrayBuffer-DataView-alloc-long-lived             15.2573+-2.2570           13.9245+-0.7520          might be 1.0957x faster
   ArrayBuffer-Int32Array-byteOffset                  3.9787+-0.5112     ?      4.0328+-0.4273        ? might be 1.0136x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     34.1185+-1.7896           33.0337+-1.4531          might be 1.0328x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.3879+-1.4807     ?     24.5070+-2.4121        ? might be 1.0479x slower
   ArrayBuffer-Int8Array-alloc-long-lived            14.1728+-1.7257           13.2374+-0.7098          might be 1.0707x faster
   ArrayBuffer-Int8Array-alloc                       10.7344+-0.3994     ?     11.2261+-1.1378        ? might be 1.0458x slower
   asmjs_bool_bug                                     7.7459+-0.1118     ?      7.8767+-0.1997        ? might be 1.0169x slower
   assign-custom-setter-polymorphic                   3.1691+-0.2136            3.1641+-0.1362        
   assign-custom-setter                               4.3257+-0.3082            4.2178+-0.2711          might be 1.0256x faster
   basic-set                                          8.7350+-0.3208     ?      8.8820+-0.6111        ? might be 1.0168x slower
   big-int-mul                                        4.0164+-0.0588     ?      4.1921+-0.4192        ? might be 1.0438x slower
   boolean-test                                       2.9736+-0.0328     ?      3.1419+-0.1652        ? might be 1.0566x slower
   branch-fold                                        3.7495+-0.0740     ?      3.7622+-0.0383        ?
   branch-on-string-as-boolean                       19.8833+-1.6493           19.7284+-1.7549        
   by-val-generic                                     8.6652+-0.9346            8.0686+-0.1802          might be 1.0739x faster
   call-spread-apply                                 31.7810+-1.1540     ?     33.5827+-1.9784        ? might be 1.0567x slower
   call-spread-call                                  28.9175+-2.0304     ?     30.0522+-1.8905        ? might be 1.0392x slower
   captured-assignments                               0.4532+-0.0242     ?      0.4537+-0.0176        ?
   cast-int-to-double                                 5.2850+-0.1761     ?      5.3340+-0.2236        ?
   cell-argument                                      8.4861+-0.1868     ?      8.5749+-0.2888        ? might be 1.0105x slower
   cfg-simplify                                       2.7828+-0.0424     ?      2.8395+-0.0571        ? might be 1.0204x slower
   chain-getter-access                                9.0497+-0.1241     ?      9.2186+-0.1639        ? might be 1.0187x slower
   cmpeq-obj-to-obj-other                            11.9196+-1.4371           11.5873+-0.7991          might be 1.0287x faster
   constant-test                                      4.9178+-0.0382     ?      5.0148+-0.1286        ? might be 1.0197x slower
   create-lots-of-functions                          11.8718+-0.1940     ?     11.9331+-0.2901        ?
   DataView-custom-properties                        39.4846+-1.7661           38.9692+-2.5997          might be 1.0132x faster
   deconstructing-parameters-overridden-by-function   
                                                      0.5091+-0.0339     ?      0.5580+-0.0587        ? might be 1.0962x slower
   delay-tear-off-arguments-strictmode               14.0257+-0.2256     ?     14.4808+-1.0242        ? might be 1.0324x slower
   deltablue-varargs                                205.3045+-3.6575     ?    205.8305+-3.6611        ?
   destructuring-arguments                           17.2991+-0.4101           17.2809+-0.9955        
   destructuring-swap                                 4.9684+-0.0835     ?      5.0115+-0.0687        ?
   direct-arguments-getbyval                          1.2197+-0.0382     ?      1.2938+-0.0557        ? might be 1.0608x slower
   div-boolean-double                                 5.3460+-0.2893            5.2376+-0.0384          might be 1.0207x faster
   div-boolean                                        7.8222+-0.0862            7.8215+-0.0718        
   double-get-by-val-out-of-bounds                    4.7344+-0.2960            4.6451+-0.2752          might be 1.0192x faster
   double-pollution-getbyval                          8.9271+-0.1148     ?      8.9495+-0.1682        ?
   double-pollution-putbyoffset                       4.2721+-0.0426     ?      4.3377+-0.0750        ? might be 1.0154x slower
   double-to-int32-typed-array-no-inline              2.4988+-0.6160            2.3348+-0.1022          might be 1.0702x faster
   double-to-int32-typed-array                        1.9663+-0.1271     ?      1.9956+-0.0307        ? might be 1.0149x slower
   double-to-uint32-typed-array-no-inline             2.2759+-0.0451     ?      2.3219+-0.0393        ? might be 1.0202x slower
   double-to-uint32-typed-array                       2.0630+-0.0582            2.0611+-0.0520        
   elidable-new-object-dag                           43.4476+-1.6092           43.3690+-1.4232        
   elidable-new-object-roflcopter                    49.1507+-1.7778           48.1110+-1.8796          might be 1.0216x faster
   elidable-new-object-then-call                     40.3820+-2.4780           39.7793+-0.7652          might be 1.0152x faster
   elidable-new-object-tree                          45.7240+-1.4841     ?     46.1018+-2.2627        ?
   empty-string-plus-int                              5.5140+-0.1344     ?      5.6119+-0.2277        ? might be 1.0178x slower
   emscripten-cube2hash                              38.7788+-1.2896     ?     38.8230+-0.5783        ?
   exit-length-on-plain-object                       15.5190+-2.0869           13.9537+-0.2872          might be 1.1122x faster
   external-arguments-getbyval                        1.2475+-0.0756     ?      1.3078+-0.0503        ? might be 1.0483x slower
   external-arguments-putbyval                        2.3228+-0.0831            2.3091+-0.0745        
   fixed-typed-array-storage-var-index                1.2190+-0.0249     ?      1.2456+-0.0180        ? might be 1.0219x slower
   fixed-typed-array-storage                          1.0036+-0.1546            0.8942+-0.0372          might be 1.1224x faster
   Float32Array-matrix-mult                           4.5668+-0.1322     ^      4.3605+-0.0662        ^ definitely 1.0473x faster
   Float32Array-to-Float64Array-set                  59.7057+-6.8089           54.7078+-2.0463          might be 1.0914x faster
   Float64Array-alloc-long-lived                     69.3991+-1.0988           69.2076+-1.9770        
   Float64Array-to-Int16Array-set                    70.9117+-0.7483     ?     71.7356+-1.8274        ? might be 1.0116x slower
   fold-double-to-int                                13.4793+-0.1475     ?     13.4929+-0.1670        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.9033+-1.2298     ?     11.0312+-0.9495        ? might be 1.0117x slower
   fold-get-by-id-to-multi-get-by-offset             10.4245+-0.9017            9.6807+-1.0550          might be 1.0768x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.4041+-0.6854     ?      9.0583+-0.8664        ? might be 1.0778x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.7131+-0.8259     ?      9.7189+-0.5901        ? might be 1.1154x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      9.5273+-1.1975     ?     10.1335+-1.7329        ? might be 1.0636x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.2468+-1.0754     ^      4.9554+-0.5467        ^ definitely 1.4624x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.7531+-0.3842     ?     10.0218+-0.5917        ? might be 1.0275x slower
   fold-put-by-id-to-multi-put-by-offset              9.6455+-1.0131     ?     10.0453+-0.9719        ? might be 1.0414x slower
   fold-put-structure                                 7.1434+-0.2634            5.3588+-1.6687          might be 1.3330x faster
   for-of-iterate-array-entries                       4.6768+-0.0844     ?      4.8007+-0.1710        ? might be 1.0265x slower
   for-of-iterate-array-keys                          3.8124+-0.1212     ?      3.8233+-0.0800        ?
   for-of-iterate-array-values                        3.7526+-0.1267            3.7173+-0.0675        
   fround                                            21.3158+-0.7002     ?     21.6998+-1.0226        ? might be 1.0180x slower
   ftl-library-inlining-dataview                     68.3655+-1.9799     ?     69.9019+-2.7712        ? might be 1.0225x slower
   ftl-library-inlining                              80.8171+-21.1343          73.3957+-16.9982         might be 1.1011x faster
   function-dot-apply                                 2.0991+-0.4566            2.0380+-0.0807          might be 1.0300x faster
   function-test                                      2.8458+-0.0344     ?      3.0446+-0.3379        ? might be 1.0698x slower
   function-with-eval                               112.2368+-10.3991         106.0115+-2.9815          might be 1.0587x faster
   gcse-poly-get-less-obvious                        20.2879+-1.5850           18.3787+-0.5086          might be 1.1039x faster
   gcse-poly-get                                     21.3638+-2.3085           20.9547+-1.2060          might be 1.0195x faster
   gcse                                               4.3761+-0.1640            4.3349+-0.0384        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7041+-0.0410     ?      2.7731+-0.1131        ? might be 1.0255x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.1178+-0.1982     ?      6.1341+-0.1607        ?
   get-by-id-chain-from-try-block                     7.2231+-1.1900     ?      7.2941+-1.1972        ?
   get-by-id-check-structure-elimination              5.2725+-0.3272            5.1291+-0.0621          might be 1.0280x faster
   get-by-id-proto-or-self                           17.8273+-0.6533     ?     19.8591+-1.4608        ? might be 1.1140x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.1631+-0.0623     ?      3.2471+-0.0713        ? might be 1.0266x slower
   get-by-id-self-or-proto                           17.1776+-0.2641     !     20.3650+-1.6087        ! definitely 1.1856x slower
   get-by-val-out-of-bounds                           4.3833+-0.1246            4.3491+-0.0433        
   get_callee_monomorphic                             2.8569+-0.1142     ?      2.9219+-0.1199        ? might be 1.0227x slower
   get_callee_polymorphic                             3.6639+-0.0830     ?      4.0583+-0.6224        ? might be 1.1077x slower
   getter-no-activation                               5.0000+-0.2662     ?      5.1982+-0.3702        ? might be 1.0396x slower
   getter-richards                                  129.4320+-7.2038          122.4571+-5.9945          might be 1.0570x faster
   getter                                             6.0876+-0.6888     ?      6.3138+-0.7070        ? might be 1.0372x slower
   global-var-const-infer-fire-from-opt               0.8805+-0.0331     ?      0.9978+-0.1911        ? might be 1.1331x slower
   global-var-const-infer                             0.8845+-0.0873            0.8528+-0.0883          might be 1.0372x faster
   HashMap-put-get-iterate-keys                      31.2319+-2.4139           30.4349+-1.4695          might be 1.0262x faster
   HashMap-put-get-iterate                           30.1729+-1.4593     ?     30.5107+-0.9377        ? might be 1.0112x slower
   HashMap-string-put-get-iterate                    29.2257+-0.5539           28.2772+-1.4189          might be 1.0335x faster
   hoist-make-rope                                   12.2419+-0.5134           12.1171+-0.7255          might be 1.0103x faster
   hoist-poly-check-structure-effectful-loop   
                                                      5.1245+-0.1333     ?      5.1796+-0.3146        ? might be 1.0108x slower
   hoist-poly-check-structure                         3.7841+-0.2725            3.6197+-0.0305          might be 1.0454x faster
   imul-double-only                                   9.0773+-0.4279            8.8487+-0.2048          might be 1.0258x faster
   imul-int-only                                     10.0691+-0.7132     ?     10.1617+-0.9088        ?
   imul-mixed                                         8.3997+-0.3137            8.2845+-0.0819          might be 1.0139x faster
   in-four-cases                                     20.4937+-0.2373     ?     21.9956+-1.3247        ? might be 1.0733x slower
   in-one-case-false                                 10.0572+-0.2819     ?     10.5870+-0.6373        ? might be 1.0527x slower
   in-one-case-true                                  10.3451+-0.4538           10.3251+-0.2669        
   in-two-cases                                      10.8402+-0.1889           10.7937+-0.2768        
   indexed-properties-in-objects                      2.9216+-0.0278     !      3.1145+-0.0417        ! definitely 1.0660x slower
   infer-closure-const-then-mov-no-inline             4.1748+-0.3933            3.9932+-0.0683          might be 1.0455x faster
   infer-closure-const-then-mov                      19.8339+-0.4226     ?     20.4564+-0.8156        ? might be 1.0314x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.0970+-0.2284     ?     11.1483+-0.1091        ?
   infer-closure-const-then-put-to-scope             22.5988+-0.8481           22.2388+-1.5324          might be 1.0162x faster
   infer-closure-const-then-reenter-no-inline   
                                                     50.0051+-2.1959           49.4659+-1.3655          might be 1.0109x faster
   infer-closure-const-then-reenter                  22.5854+-1.2979     ?     22.9608+-2.2032        ? might be 1.0166x slower
   infer-constant-global-property                    31.5500+-1.7633           30.4053+-0.9345          might be 1.0376x faster
   infer-constant-property                            2.7124+-0.0441     ?      2.7769+-0.1687        ? might be 1.0238x slower
   infer-one-time-closure-ten-vars                   13.3175+-1.4873           12.6936+-0.2137          might be 1.0492x faster
   infer-one-time-closure-two-vars                   12.6735+-0.8091           12.1523+-0.3145          might be 1.0429x faster
   infer-one-time-closure                            12.5562+-1.2768     ?     12.6265+-1.5760        ?
   infer-one-time-deep-closure                       21.8801+-1.4416           21.3639+-0.7944          might be 1.0242x faster
   inline-arguments-access                            4.6288+-0.3815            4.4712+-0.0752          might be 1.0353x faster
   inline-arguments-aliased-access                    4.5828+-0.1476     ?      4.6545+-0.2328        ? might be 1.0157x slower
   inline-arguments-local-escape                      4.5464+-0.1902     ?      4.6847+-0.2920        ? might be 1.0304x slower
   inline-get-scoped-var                              4.8466+-0.2389     ?      5.0188+-0.3726        ? might be 1.0355x slower
   inlined-put-by-id-transition                      11.0127+-0.6115     ?     11.6477+-0.5461        ? might be 1.0577x slower
   int-or-other-abs-then-get-by-val                   4.8507+-0.0967            4.8084+-0.0193        
   int-or-other-abs-zero-then-get-by-val             17.4871+-1.0148           16.7086+-0.7476          might be 1.0466x faster
   int-or-other-add-then-get-by-val                   3.9434+-0.0455     !      4.2261+-0.0662        ! definitely 1.0717x slower
   int-or-other-add                                   5.2202+-0.0285     ?      5.4118+-0.2826        ? might be 1.0367x slower
   int-or-other-div-then-get-by-val                   4.1502+-0.0564     ?      4.3867+-0.3444        ? might be 1.0570x slower
   int-or-other-max-then-get-by-val                   4.1313+-0.0868     ?      4.3503+-0.4690        ? might be 1.0530x slower
   int-or-other-min-then-get-by-val                   4.3153+-0.4130            4.1956+-0.0835          might be 1.0285x faster
   int-or-other-mod-then-get-by-val                   3.8097+-0.1061     ?      3.9143+-0.2898        ? might be 1.0275x slower
   int-or-other-mul-then-get-by-val                   3.6285+-0.0572     ?      3.6978+-0.0578        ? might be 1.0191x slower
   int-or-other-neg-then-get-by-val                   4.6301+-0.0376     ?      4.7583+-0.1560        ? might be 1.0277x slower
   int-or-other-neg-zero-then-get-by-val             17.3756+-1.3783     ?     17.6736+-1.4224        ? might be 1.0172x slower
   int-or-other-sub-then-get-by-val                   4.2340+-0.1350     !      4.4148+-0.0424        ! definitely 1.0427x slower
   int-or-other-sub                                   3.4330+-0.1288     ?      3.5271+-0.3317        ? might be 1.0274x slower
   int-overflow-local                                 4.3397+-0.0946            4.3333+-0.0164        
   Int16Array-alloc-long-lived                       49.4464+-1.5996     ?     50.0636+-1.9995        ? might be 1.0125x slower
   Int16Array-bubble-sort-with-byteLength            20.1635+-0.5847     ?     20.2223+-0.7903        ?
   Int16Array-bubble-sort                            19.9209+-0.3736     ?     20.2605+-1.1657        ? might be 1.0170x slower
   Int16Array-load-int-mul                            1.5418+-0.1748     ?      1.5642+-0.0722        ? might be 1.0145x slower
   Int16Array-to-Int32Array-set                      54.1397+-1.8013     !     59.2730+-1.5194        ! definitely 1.0948x slower
   Int32Array-alloc-large                            24.1744+-0.9980           23.8973+-1.1417          might be 1.0116x faster
   Int32Array-alloc-long-lived                       54.5943+-1.5068           54.4823+-2.0656        
   Int32Array-alloc                                   3.6146+-0.6174            3.3935+-0.2070          might be 1.0652x faster
   Int32Array-Int8Array-view-alloc                    7.2155+-0.8545     ?      7.3751+-0.9135        ? might be 1.0221x slower
   int52-spill                                        6.5370+-0.2507            6.3116+-0.5204          might be 1.0357x faster
   Int8Array-alloc-long-lived                        44.4274+-1.8724     ?     44.5386+-1.7007        ?
   Int8Array-load-with-byteLength                     3.6375+-0.5621            3.3796+-0.0916          might be 1.0763x faster
   Int8Array-load                                     3.3700+-0.0740     ?      3.3855+-0.0569        ?
   integer-divide                                    11.4467+-0.8384           11.2923+-0.8176          might be 1.0137x faster
   integer-modulo                                     2.0424+-0.0782     ?      2.1143+-0.2302        ? might be 1.0352x slower
   is-boolean-fold-tricky                             4.5043+-0.0767     ?      4.6840+-0.3596        ? might be 1.0399x slower
   is-boolean-fold                                    2.8431+-0.0334     ?      3.0227+-0.3621        ? might be 1.0632x slower
   is-function-fold-tricky-internal-function   
                                                     11.8937+-0.0681     ?     12.2258+-0.3493        ? might be 1.0279x slower
   is-function-fold-tricky                            4.5195+-0.0676     ?      4.6683+-0.1115        ? might be 1.0329x slower
   is-function-fold                                   2.9369+-0.1018     ?      2.9974+-0.2403        ? might be 1.0206x slower
   is-number-fold-tricky                              4.4460+-0.0623     ?      4.5118+-0.0659        ? might be 1.0148x slower
   is-number-fold                                     2.9497+-0.3083            2.8826+-0.0356          might be 1.0233x faster
   is-object-or-null-fold-functions                   2.9167+-0.0702     ?      3.0922+-0.1851        ? might be 1.0602x slower
   is-object-or-null-fold-less-tricky                 4.8330+-0.5553            4.5545+-0.0689          might be 1.0612x faster
   is-object-or-null-fold-tricky                      6.6665+-0.1074            6.6049+-0.0434        
   is-object-or-null-fold                             2.9925+-0.3228     ?      3.0737+-0.3556        ? might be 1.0271x slower
   is-object-or-null-trickier-function                4.6130+-0.0759     ?      4.8619+-0.5748        ? might be 1.0539x slower
   is-object-or-null-trickier-internal-function   
                                                     12.9263+-0.3715     ?     12.9760+-1.1254        ?
   is-object-or-null-tricky-function                  4.6447+-0.1265     ?      4.8884+-0.5461        ? might be 1.0525x slower
   is-object-or-null-tricky-internal-function   
                                                      9.2701+-0.1388            9.2012+-0.0231        
   is-string-fold-tricky                              4.5020+-0.1517     ?      4.7519+-0.4584        ? might be 1.0555x slower
   is-string-fold                                     2.9997+-0.3489            2.8867+-0.0604          might be 1.0392x faster
   is-undefined-fold-tricky                           3.8317+-0.1343            3.8061+-0.1214        
   is-undefined-fold                                  2.8668+-0.0916     ?      3.0512+-0.3365        ? might be 1.0643x slower
   large-int-captured                                 4.6117+-0.0521     ?      4.6464+-0.1045        ?
   large-int-neg                                     17.0293+-1.5119           16.5405+-1.2348          might be 1.0295x faster
   large-int                                         15.3328+-0.8340     ?     16.0042+-2.0290        ? might be 1.0438x slower
   logical-not                                        4.3886+-0.0748     ?      4.5657+-0.1720        ? might be 1.0403x slower
   lots-of-fields                                    13.4283+-0.5703     ?     13.7754+-1.2094        ? might be 1.0259x slower
   make-indexed-storage                               3.1678+-0.4067     ?      3.1831+-0.1711        ?
   make-rope-cse                                      5.1233+-0.4200            5.0294+-0.4519          might be 1.0187x faster
   marsaglia-larger-ints                             36.9231+-0.8562           36.3250+-1.0104          might be 1.0165x faster
   marsaglia-osr-entry                               23.3869+-1.1528     ?     23.6042+-0.4834        ?
   max-boolean                                        2.5312+-0.0470     ?      2.8295+-0.3949        ? might be 1.1178x slower
   method-on-number                                  16.6918+-0.3050     ?     16.8512+-0.2933        ?
   min-boolean                                        2.5570+-0.0650            2.5421+-0.0991        
   minus-boolean-double                               3.2469+-0.1940     ?      3.3434+-0.3943        ? might be 1.0297x slower
   minus-boolean                                      2.4069+-0.1682     ?      2.4768+-0.1862        ? might be 1.0290x slower
   misc-strict-eq                                    38.4521+-3.5720     ?     39.2409+-1.4447        ? might be 1.0205x slower
   mod-boolean-double                                10.9725+-0.2162     ?     11.0478+-0.1943        ?
   mod-boolean                                        7.8900+-0.1227     ?      8.0498+-0.2223        ? might be 1.0202x slower
   mul-boolean-double                                 3.7181+-0.0771     ?      3.7622+-0.0736        ? might be 1.0119x slower
   mul-boolean                                        3.0583+-0.3604            2.8832+-0.0606          might be 1.0607x faster
   neg-boolean                                        3.2148+-0.1214     ?      3.3069+-0.2021        ? might be 1.0287x slower
   negative-zero-divide                               0.3905+-0.0444            0.3722+-0.0423          might be 1.0491x faster
   negative-zero-modulo                               0.3585+-0.0085     ?      0.3690+-0.0327        ? might be 1.0293x slower
   negative-zero-negate                               0.3228+-0.0232     ?      0.3446+-0.0107        ? might be 1.0674x slower
   nested-function-parsing                           38.9175+-1.2030           37.8525+-0.2279          might be 1.0281x faster
   new-array-buffer-dead                            112.6110+-2.6108     ?    114.6230+-3.2707        ? might be 1.0179x slower
   new-array-buffer-push                              7.2622+-0.9372            7.1871+-0.7752          might be 1.0104x faster
   new-array-dead                                    19.7814+-0.3433           19.1449+-0.5621          might be 1.0332x faster
   new-array-push                                     4.0582+-0.3424            4.0343+-0.2654        
   no-inline-constructor                            123.1716+-3.0629     ?    124.1343+-2.0905        ?
   number-test                                        2.9969+-0.0535     ?      3.1073+-0.0999        ? might be 1.0368x slower
   object-closure-call                                5.3524+-0.0246     !      5.4299+-0.0407        ! definitely 1.0145x slower
   object-test                                        2.7958+-0.0920     ?      2.8919+-0.0680        ? might be 1.0344x slower
   obvious-sink-pathology-taken                     139.1442+-2.9006     ?    140.3360+-1.5888        ?
   obvious-sink-pathology                           132.4001+-2.4203          132.0221+-1.4410        
   obviously-elidable-new-object                     36.5304+-1.7061           35.4111+-1.1487          might be 1.0316x faster
   plus-boolean-arith                                 2.5754+-0.0936            2.5498+-0.1218          might be 1.0100x faster
   plus-boolean-double                                3.2133+-0.0329     ?      3.2342+-0.0396        ?
   plus-boolean                                       2.3933+-0.0319     ?      2.4047+-0.0169        ?
   poly-chain-access-different-prototypes-simple   
                                                      3.4232+-0.2290            3.3700+-0.1182          might be 1.0158x faster
   poly-chain-access-different-prototypes             2.6182+-0.1103     ?      2.7541+-0.3234        ? might be 1.0519x slower
   poly-chain-access-simpler                          3.4490+-0.4197     ?      3.5303+-0.3594        ? might be 1.0236x slower
   poly-chain-access                                  2.6191+-0.1897     ?      2.7754+-0.2901        ? might be 1.0597x slower
   poly-stricteq                                     57.9301+-1.6208     ?     59.2512+-1.3090        ? might be 1.0228x slower
   polymorphic-array-call                             1.1949+-0.0319     ?      1.2556+-0.0573        ? might be 1.0507x slower
   polymorphic-get-by-id                              3.1978+-0.1420            3.1732+-0.1497        
   polymorphic-put-by-id                             28.8736+-1.2724     ?     31.5913+-1.7282        ? might be 1.0941x slower
   polymorphic-structure                             13.6522+-0.1999     ?     13.8112+-0.3163        ? might be 1.0116x slower
   polyvariant-monomorphic-get-by-id                  8.6400+-0.1315     ?      8.6882+-0.1623        ?
   proto-getter-access                                9.1093+-0.1078            9.0994+-0.1171        
   put-by-id-replace-and-transition                   9.0897+-0.2435     ?      9.2620+-0.3528        ? might be 1.0190x slower
   put-by-id-slightly-polymorphic                     2.8780+-0.0444     ?      3.1713+-0.4256        ? might be 1.1019x slower
   put-by-id                                         12.8646+-0.4884           12.7485+-0.3995        
   put-by-val-direct                                  0.4451+-0.0202     ^      0.3686+-0.0207        ^ definitely 1.2074x faster
   put-by-val-large-index-blank-indexing-type   
                                                      5.9325+-0.2611     ?      6.4537+-0.9533        ? might be 1.0879x slower
   put-by-val-machine-int                             2.7202+-0.0813     ?      2.8742+-0.2854        ? might be 1.0566x slower
   rare-osr-exit-on-local                            14.9627+-0.2346     ?     15.6335+-0.5509        ? might be 1.0448x slower
   register-pressure-from-osr                        20.9727+-0.2070     ?     21.2549+-0.2554        ? might be 1.0135x slower
   setter                                             5.7563+-0.4731     ?      5.8645+-0.6333        ? might be 1.0188x slower
   simple-activation-demo                            25.6309+-1.7861           25.5262+-1.3497        
   simple-getter-access                              11.9907+-0.5140     ?     12.0068+-0.7389        ?
   simple-poly-call-nested                            8.3297+-0.2528            8.3180+-0.3521        
   simple-poly-call                                   1.3147+-0.0316     ?      1.3920+-0.1552        ? might be 1.0588x slower
   sin-boolean                                       23.9290+-1.3692           23.5471+-1.3541          might be 1.0162x faster
   singleton-scope                                   62.5216+-0.9220     ?     63.1460+-1.6040        ?
   sink-function                                     12.1471+-0.2714     ?     12.2532+-0.2954        ?
   sink-huge-activation                              19.3598+-0.4226           19.1738+-0.3498        
   sinkable-new-object-dag                           70.7070+-1.5370     ?     71.7837+-1.3946        ? might be 1.0152x slower
   sinkable-new-object-taken                         53.8065+-2.7875           50.2990+-1.2743          might be 1.0697x faster
   sinkable-new-object                               38.8704+-1.4316     ?     40.1107+-1.7211        ? might be 1.0319x slower
   slow-array-profile-convergence                     2.8821+-0.2647            2.8730+-0.0530        
   slow-convergence                                   2.8085+-0.2645     ?      2.8620+-0.3560        ? might be 1.0191x slower
   sorting-benchmark                                 20.7297+-0.2965           20.6305+-0.6390        
   sparse-conditional                                 1.1591+-0.0447     ?      1.1702+-0.0258        ?
   splice-to-remove                                  16.6273+-0.4846           16.6084+-0.6842        
   string-char-code-at                               15.7858+-0.1611     ?     15.7980+-0.1841        ?
   string-concat-object                               2.5913+-0.1059     ?      2.7169+-0.1920        ? might be 1.0484x slower
   string-concat-pair-object                          2.6827+-0.2252     ?      2.7102+-0.3907        ? might be 1.0102x slower
   string-concat-pair-simple                         11.8516+-1.2005     ?     12.0288+-1.2126        ? might be 1.0150x slower
   string-concat-simple                              12.6475+-1.1489           12.2383+-0.7409          might be 1.0334x faster
   string-cons-repeat                                 8.2617+-0.6154            8.2300+-0.6221        
   string-cons-tower                                  7.9940+-0.1006     ?      8.5675+-0.5013        ? might be 1.0717x slower
   string-equality                                   17.9521+-0.4165     ?     18.6851+-0.5563        ? might be 1.0408x slower
   string-get-by-val-big-char                         7.0868+-0.0175     ?      7.2550+-0.2692        ? might be 1.0237x slower
   string-get-by-val-out-of-bounds-insane             3.7495+-0.0476     ?      4.1423+-0.9247        ? might be 1.1047x slower
   string-get-by-val-out-of-bounds                    5.2863+-0.2548            5.2601+-0.0967        
   string-get-by-val                                  3.2518+-0.0604     ?      3.2938+-0.0493        ? might be 1.0129x slower
   string-hash                                        2.0409+-0.0744     ?      2.0972+-0.0375        ? might be 1.0276x slower
   string-long-ident-equality                        14.5076+-0.1048     !     14.9179+-0.2240        ! definitely 1.0283x slower
   string-out-of-bounds                              14.9213+-0.3269           14.8320+-0.1019        
   string-repeat-arith                               35.0280+-0.7108           33.4368+-2.8318          might be 1.0476x faster
   string-sub                                        67.6036+-2.2286     ?     67.9053+-2.3417        ?
   string-test                                        2.8988+-0.0726     ?      2.9850+-0.0540        ? might be 1.0297x slower
   string-var-equality                               37.0370+-1.1733     ^     33.8134+-1.8087        ^ definitely 1.0953x faster
   structure-hoist-over-transitions                   2.8053+-0.3100            2.6891+-0.0660          might be 1.0432x faster
   substring-concat-weird                            40.0362+-1.2059     ?     40.3679+-1.1704        ?
   substring-concat                                  42.6734+-1.4876           42.4832+-0.9377        
   substring                                         47.8118+-1.6578           45.8768+-1.2051          might be 1.0422x faster
   switch-char-constant                               2.8140+-0.1259            2.7412+-0.0254          might be 1.0266x faster
   switch-char                                        6.8333+-0.8476            6.5095+-0.7768          might be 1.0497x faster
   switch-constant                                    8.5779+-0.3581     ?      8.6043+-0.3205        ?
   switch-string-basic-big-var                       17.6891+-0.9629     ?     17.9513+-0.3616        ? might be 1.0148x slower
   switch-string-basic-big                           14.4222+-0.5705     ?     14.5800+-0.5635        ? might be 1.0109x slower
   switch-string-basic-var                           14.8192+-0.2915           14.8118+-0.3435        
   switch-string-basic                               12.7933+-0.2359     ?     13.5111+-1.2653        ? might be 1.0561x slower
   switch-string-big-length-tower-var                20.5070+-1.4151           19.9265+-0.2404          might be 1.0291x faster
   switch-string-length-tower-var                    15.0330+-0.1636           14.8689+-0.2758          might be 1.0110x faster
   switch-string-length-tower                        12.8316+-0.7673           12.7933+-0.1685        
   switch-string-short                               12.4927+-0.3864     ?     12.7951+-0.1148        ? might be 1.0242x slower
   switch                                            12.6122+-0.1750     ?     12.8336+-0.3471        ? might be 1.0176x slower
   tear-off-arguments-simple                          3.6487+-0.3601            3.4521+-0.1315          might be 1.0570x faster
   tear-off-arguments                                 4.8490+-0.3162            4.8050+-0.1291        
   temporal-structure                                12.4925+-1.4003           12.1515+-0.2405          might be 1.0281x faster
   to-int32-boolean                                  13.4350+-0.2909     ?     14.2862+-1.1450        ? might be 1.0634x slower
   try-catch-get-by-val-cloned-arguments             14.9559+-0.8828           14.2516+-0.2386          might be 1.0494x faster
   try-catch-get-by-val-direct-arguments              6.6075+-0.2728     ?      7.1108+-0.9386        ? might be 1.0762x slower
   try-catch-get-by-val-scoped-arguments              8.4666+-1.1474     ?      8.5055+-0.8465        ?
   typed-array-get-set-by-val-profiling              32.4337+-1.1354           32.0209+-0.4813          might be 1.0129x faster
   undefined-property-access                        339.3552+-3.4704     ?    341.7985+-1.9568        ?
   undefined-test                                     2.9887+-0.0214     !      3.1671+-0.1461        ! definitely 1.0597x slower
   unprofiled-licm                                   23.1627+-1.2351     ?     23.4135+-0.9531        ? might be 1.0108x slower
   varargs-call                                      14.2692+-0.2860           14.1517+-0.2186        
   varargs-construct-inline                          22.3266+-1.2963           21.4478+-0.8784          might be 1.0410x faster
   varargs-construct                                 32.0950+-1.4114           31.2430+-1.0348          might be 1.0273x faster
   varargs-inline                                     9.0065+-0.4931     ?      9.3963+-0.5492        ? might be 1.0433x slower
   varargs-strict-mode                                9.9760+-0.4410            9.9575+-0.6220        
   varargs                                            9.8452+-0.3164            9.6734+-0.0638          might be 1.0178x faster
   weird-inlining-const-prop                          2.3099+-0.2279     ?      2.3709+-0.0850        ? might be 1.0264x slower

   <geometric>                                        8.5498+-0.0209     !      8.5978+-0.0231        ! definitely 1.0056x slower

                                                        TipOfTree                  FastHole                                     
AsmBench:
   bigfib.cpp                                       498.5939+-9.3310          496.8912+-3.4112        
   cray.c                                           427.2609+-3.6841     ?    429.5273+-8.5537        ?
   dry.c                                            489.7395+-8.5028          478.1179+-8.7709          might be 1.0243x faster
   FloatMM.c                                        727.8713+-3.8672          723.8812+-0.8241        
   gcc-loops.cpp                                   4291.0448+-24.3440        4279.8032+-14.7762       
   n-body.c                                         984.3193+-9.8684     ?    984.8260+-8.3239        ?
   Quicksort.c                                      423.9570+-4.5924          422.4707+-5.3432        
   stepanov_container.cpp                          3621.5398+-19.7736    ?   3650.6649+-79.7279       ?
   Towers.c                                         262.1503+-3.3071          260.6519+-1.1079        

   <geometric>                                      796.5142+-2.2353          793.7666+-2.5754          might be 1.0035x faster

                                                        TipOfTree                  FastHole                                     
CompressionBench:
   huffman                                          367.0045+-8.2848     ?    373.4247+-5.5695        ? might be 1.0175x slower
   arithmetic-simple                                396.8634+-4.7419          395.9400+-4.3286        
   arithmetic-precise                               299.0268+-4.2492     ?    303.3993+-5.8602        ? might be 1.0146x slower
   arithmetic-complex-precise                       296.5667+-2.4658     ?    301.6456+-4.9070        ? might be 1.0171x slower
   arithmetic-precise-order-0                       435.6970+-8.3435          426.4685+-7.0043          might be 1.0216x faster
   arithmetic-precise-order-1                       328.8191+-7.3537     ?    331.2242+-4.4188        ?
   arithmetic-precise-order-2                       358.2191+-6.1744     ?    364.4676+-5.0685        ? might be 1.0174x slower
   arithmetic-simple-order-1                        430.2028+-5.9866          423.6678+-4.1505          might be 1.0154x faster
   arithmetic-simple-order-2                        467.9954+-3.1357     ?    473.4315+-17.6978       ? might be 1.0116x slower
   lz-string                                        315.1518+-2.8386     !    325.3348+-5.6778        ! definitely 1.0323x slower

   <geometric>                                      365.0494+-1.8005     ?    367.8891+-2.8275        ? might be 1.0078x slower

                                                        TipOfTree                  FastHole                                     
Geomean of preferred means:
   <scaled-result>                                   62.4130+-0.1410     ?     62.4238+-0.2408        ? might be 1.0002x slower
Comment 5 Filip Pizlo 2015-05-08 14:55:46 PDT
(In reply to comment #3)
> Comment on attachment 252745 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=252745&action=review
> 
> r=me if bot issues are fixed / not caused by this patch.

Looks like trunk was broken.  I'll upload another patch and see if EWS is happy.

> 
> > Source/JavaScriptCore/ChangeLog:11
> > +        prototype chain is sain - i.e. has no indexed properties. Then we can just return
> 
> s/sain/sane/.
> 
> > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338
> > +                if (node->arrayMode().isSaneChain()) {
> 
> You should put an assertion here like the 64-bit version:
>     ASSERT(node->arrayMode().type() == Array::Contiguous);

I intentionally excluded it.  If you look above, the Int32 case is handled entirely separately in the 32-bit code.  In the 64-bit code, the int32 and contiguous cases are handled together, so we have to assert that int32 didn't happen to have SaneChain.
Comment 6 Filip Pizlo 2015-05-08 14:59:05 PDT
Created attachment 252750 [details]
patch for landing

Seeing what happens in EWS.
Comment 7 WebKit Commit Bot 2015-05-08 15:00:35 PDT
Attachment 252750 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/ArrayPrototype.cpp:40:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 8 Filip Pizlo 2015-05-08 15:26:05 PDT
I will wait for the GTK bot before landing.
Comment 9 Filip Pizlo 2015-05-08 17:20:25 PDT
Landed in http://trac.webkit.org/changeset/184032
Comment 10 Mark Lam 2015-05-08 17:23:43 PDT
(In reply to comment #5)
> > > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:2338
> > > +                if (node->arrayMode().isSaneChain()) {
> > 
> > You should put an assertion here like the 64-bit version:
> >     ASSERT(node->arrayMode().type() == Array::Contiguous);
> 
> I intentionally excluded it.  If you look above, the Int32 case is handled
> entirely separately in the 32-bit code.  In the 64-bit code, the int32 and
> contiguous cases are handled together, so we have to assert that int32
> didn't happen to have SaneChain.

Oooo, you're right.  I looked for it but I missed that part.