Bug 141332 - DFG should really support varargs
Summary: DFG should really support varargs
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: 141337 141342 141388 141398 141440 141455 141485 141493 141623 141714 141771
Blocks: 141448 141660 141174
  Show dependency treegraph
 
Reported: 2015-02-06 08:06 PST by Filip Pizlo
Modified: 2015-02-18 14:59 PST (History)
12 users (show)

See Also:


Attachments
work in progress (16.82 KB, patch)
2015-02-06 10:52 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
slowly coming along (38.77 KB, patch)
2015-02-07 11:56 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
more things (57.28 KB, patch)
2015-02-07 16:24 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
even more (68.33 KB, patch)
2015-02-10 14:59 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
DFG 64-bit CallVarargs done (72.58 KB, patch)
2015-02-10 15:45 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
DFG LoadVarargs 64-bit done (79.00 KB, patch)
2015-02-10 16:48 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
OMG so much code (101.27 KB, patch)
2015-02-11 15:04 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
more (110.88 KB, patch)
2015-02-11 15:59 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
64-bit might be done (117.48 KB, patch)
2015-02-11 20:59 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
starting to compile, and reworking CallForwardVarargs in FTL (128.91 KB, patch)
2015-02-12 10:19 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
almost compiling (135.52 KB, patch)
2015-02-13 12:43 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
it compiles! (147.48 KB, patch)
2015-02-13 14:17 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
it passes some of our tests! (150.96 KB, patch)
2015-02-13 17:36 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
now passes more tests than ever! (173.22 KB, patch)
2015-02-13 22:04 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
it's passing so many tests (173.50 KB, patch)
2015-02-14 10:11 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
almost passing all tests (183.33 KB, patch)
2015-02-15 18:08 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
more FTL fixes (188.44 KB, patch)
2015-02-16 12:58 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
more fixes, more tests (200.05 KB, patch)
2015-02-16 13:54 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
64-bit tests pass (232.43 KB, patch)
2015-02-16 17:06 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
towards 32-bit support (278.34 KB, patch)
2015-02-16 20:49 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
x86 32-bit and 64-bit pass all tests (285.12 KB, patch)
2015-02-16 21:15 PST, Filip Pizlo
oliver: review+
Details | Formatted Diff | Diff
closer to landing (291.98 KB, patch)
2015-02-17 11:10 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
ARM64 works (292.84 KB, patch)
2015-02-18 09:06 PST, 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-02-06 08:06:47 PST
Something that blocks us from doing various arguments-related improvements is that we don't compile or inline code with varargs calls unless it's statically obvious that we're just forwarding arguments.  That's lame.  The forwarding of arguments should be a late optimization after we have already represented the problem in DFG IR.
Comment 1 Filip Pizlo 2015-02-06 10:52:51 PST
Created attachment 246166 [details]
work in progress
Comment 2 Filip Pizlo 2015-02-07 11:56:37 PST
Created attachment 246212 [details]
slowly coming along
Comment 3 Filip Pizlo 2015-02-07 16:24:13 PST
Created attachment 246226 [details]
more things
Comment 4 Filip Pizlo 2015-02-10 14:59:06 PST
Created attachment 246344 [details]
even more
Comment 5 Filip Pizlo 2015-02-10 15:45:42 PST
Created attachment 246349 [details]
DFG 64-bit CallVarargs done

Still a lot more to do, but it's coming along.
Comment 6 Filip Pizlo 2015-02-10 16:48:36 PST
Created attachment 246351 [details]
DFG LoadVarargs 64-bit done

Now I need to write the FTL side.
Comment 7 Filip Pizlo 2015-02-11 15:04:29 PST
Created attachment 246417 [details]
OMG so much code

I wrote most of the meat of the FTL varargs call, and filled in some missing junk for the inline call frame arguments register.
Comment 8 Filip Pizlo 2015-02-11 15:59:28 PST
Created attachment 246418 [details]
more

Closing the loop on call varargs in the FTL
Comment 9 Filip Pizlo 2015-02-11 20:59:12 PST
Created attachment 246423 [details]
64-bit might be done

I haven't even tried compiling yet.
Comment 10 WebKit Commit Bot 2015-02-12 06:37:05 PST
Attachment 246423 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:46:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:97:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:105:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:298:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/jit/JITCall.cpp:149:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITCall.cpp:168:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/jit/JITCall.cpp:195:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:679:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1139:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 9 in 50 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 11 Filip Pizlo 2015-02-12 10:19:19 PST
Created attachment 246451 [details]
starting to compile, and reworking CallForwardVarargs in FTL
Comment 12 Filip Pizlo 2015-02-13 12:43:55 PST
Created attachment 246542 [details]
almost compiling
Comment 13 Filip Pizlo 2015-02-13 14:17:16 PST
Created attachment 246549 [details]
it compiles!
Comment 14 Filip Pizlo 2015-02-13 17:36:55 PST
Created attachment 246561 [details]
it passes some of our tests!

Fails about 55 of them.  Still debugging...
Comment 15 Filip Pizlo 2015-02-13 22:04:03 PST
Created attachment 246585 [details]
now passes more tests than ever!
Comment 16 Filip Pizlo 2015-02-14 10:11:00 PST
Created attachment 246598 [details]
it's passing so many tests

I still need to write my own tests for this, however.  For example, ConstructVarargs never hits FTL in any of our current tests.

Currently the only tests that fail are regress/script-tests/call-spread-apply.js and 	regress/script-tests/call-spread-call.js.  Everything else passes.
Comment 17 Filip Pizlo 2015-02-15 18:08:52 PST
Created attachment 246629 [details]
almost passing all tests

The latest crash I'm working on is because GetArgument with Int32 flush type tries to speculate, which isn't what we want.  This should fix it: https://bugs.webkit.org/show_bug.cgi?id=141623
Comment 18 Filip Pizlo 2015-02-16 12:58:49 PST
Created attachment 246669 [details]
more FTL fixes
Comment 19 Filip Pizlo 2015-02-16 13:54:15 PST
Created attachment 246676 [details]
more fixes, more tests
Comment 20 Filip Pizlo 2015-02-16 17:06:08 PST
Created attachment 246706 [details]
64-bit tests pass

Still have to implement the 32-bit DFG portion.
Comment 21 Filip Pizlo 2015-02-16 18:47:04 PST
The perf results are intriguing.  On the major benchmarks, the results are great.  But JSRegress is showing signs of trouble - several tests with >2x slow-downs.  I'll investigate.


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

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r180189)
"Varargs" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r180189)

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                  Varargs                                      
SunSpider:
   3d-cube                                            4.8283+-0.0954            4.7690+-0.0585          might be 1.0124x faster
   3d-morph                                           6.0459+-0.0834            5.9905+-0.0944        
   3d-raytrace                                        6.4282+-0.2942            6.3465+-0.2322          might be 1.0129x faster
   access-binary-trees                                2.0801+-0.0888            2.0139+-0.0466          might be 1.0329x faster
   access-fannkuch                                    5.7952+-0.1091     ?      5.8472+-0.0669        ?
   access-nbody                                       2.8569+-0.1308     ?      3.0192+-0.3974        ? might be 1.0568x slower
   access-nsieve                                      3.7162+-0.1641            3.7150+-0.1195        
   bitops-3bit-bits-in-byte                           1.5581+-0.0447            1.5411+-0.0318          might be 1.0111x faster
   bitops-bits-in-byte                                3.5278+-0.1087     ?      3.5432+-0.0682        ?
   bitops-bitwise-and                                 2.0440+-0.0645            2.0327+-0.0592        
   bitops-nsieve-bits                                 3.6942+-0.1953            3.5911+-0.0360          might be 1.0287x faster
   controlflow-recursive                              2.1884+-0.0704            2.1702+-0.0298        
   crypto-aes                                         4.1401+-0.1562     ?      4.4900+-0.7132        ? might be 1.0845x slower
   crypto-md5                                         2.5660+-0.0502     ^      2.3962+-0.0586        ^ definitely 1.0708x faster
   crypto-sha1                                        2.6965+-0.2297            2.6475+-0.1754          might be 1.0185x faster
   date-format-tofte                                  9.4598+-0.2065            9.3200+-0.1137          might be 1.0150x faster
   date-format-xparb                                  5.2196+-0.1684     ?      5.4882+-0.5348        ? might be 1.0515x slower
   math-cordic                                        3.0987+-0.2110            3.0188+-0.0311          might be 1.0265x faster
   math-partial-sums                                  5.2854+-0.1328     ?      5.4272+-0.2084        ? might be 1.0268x slower
   math-spectral-norm                                 1.8893+-0.0356     ?      1.9375+-0.0518        ? might be 1.0255x slower
   regexp-dna                                         8.1920+-1.6161            7.5630+-0.3971          might be 1.0832x faster
   string-base64                                      4.4245+-0.4507     ?      4.4338+-0.4299        ?
   string-fasta                                       6.6985+-0.6527            6.5530+-0.3834          might be 1.0222x faster
   string-tagcloud                                    9.7330+-0.1005     ?      9.7691+-0.5645        ?
   string-unpack-code                                20.1917+-0.7477           19.9587+-0.3141          might be 1.0117x faster
   string-validate-input                              4.6868+-0.2944            4.6316+-0.1272          might be 1.0119x faster

   <arithmetic> *                                     5.1171+-0.0933            5.0852+-0.0599          might be 1.0063x faster
   <geometric>                                        4.2414+-0.0594            4.2232+-0.0623          might be 1.0043x faster
   <harmonic>                                         3.6315+-0.0469            3.6133+-0.0565          might be 1.0050x faster

                                                        TipOfTree                  Varargs                                      
LongSpider:
   3d-cube                                          881.4194+-13.9875         879.4170+-8.1408        
   3d-morph                                        1551.6664+-16.9720    ?   1558.0764+-23.7863       ?
   3d-raytrace                                      752.8704+-9.7494          745.9163+-11.9598       
   access-binary-trees                              989.7576+-9.4885     ?    989.9795+-5.6724        ?
   access-fannkuch                                  333.3687+-8.6867          330.4216+-7.9593        
   access-nbody                                     623.1973+-5.2673          618.9768+-3.3285        
   access-nsieve                                    964.9990+-5.5382          949.9091+-10.9895         might be 1.0159x faster
   bitops-3bit-bits-in-byte                          47.0612+-1.8126     ?     48.9921+-1.8591        ? might be 1.0410x slower
   bitops-bits-in-byte                              107.6802+-2.4302     ?    109.9938+-10.1112       ? might be 1.0215x slower
   bitops-nsieve-bits                               707.6697+-11.9688    ?    711.1864+-5.1370        ?
   controlflow-recursive                            504.2573+-6.1659     ^    485.1164+-6.7681        ^ definitely 1.0395x faster
   crypto-aes                                       689.7016+-7.2003     ?    700.1889+-11.5444       ? might be 1.0152x slower
   crypto-md5                                       629.7967+-19.3334    ?    634.6293+-12.2884       ?
   crypto-sha1                                      671.4510+-6.5079     ?    673.3282+-4.9632        ?
   date-format-tofte                                804.0556+-17.6721    ?    806.4819+-25.1952       ?
   date-format-xparb                                840.2531+-131.2412        762.9652+-16.2090         might be 1.1013x faster
   math-cordic                                      598.9208+-9.7534          596.9500+-6.6383        
   math-partial-sums                                542.0361+-6.8847     ?    542.7876+-7.7068        ?
   math-spectral-norm                               568.7288+-4.2136     ?    575.4578+-7.6344        ? might be 1.0118x slower
   string-base64                                    363.3718+-4.7414          363.2862+-5.9981        
   string-fasta                                     437.9007+-9.7960     ?    438.8616+-10.8546       ?
   string-tagcloud                                  226.8181+-4.8095          217.8351+-4.3486          might be 1.0412x faster

   <arithmetic>                                     628.9537+-6.8231          624.5799+-3.1569          might be 1.0070x faster
   <geometric> *                                    516.1671+-4.6923          513.7706+-3.7479          might be 1.0047x faster
   <harmonic>                                       336.3241+-4.3940     ?    339.6559+-7.7003        ? might be 1.0099x slower

                                                        TipOfTree                  Varargs                                      
V8Spider:
   crypto                                            55.8227+-2.2082           55.0824+-1.3186          might be 1.0134x faster
   deltablue                                         90.9392+-5.1112           90.3206+-2.7756        
   earley-boyer                                      45.5307+-1.1588     ?     46.4867+-1.6907        ? might be 1.0210x slower
   raytrace                                          39.4868+-2.0742           37.9139+-1.3229          might be 1.0415x faster
   regexp                                            70.7640+-1.9655           70.7318+-3.6284        
   richards                                          83.0937+-2.3514           81.7196+-2.3874          might be 1.0168x faster
   splay                                             37.7284+-1.9054           36.7572+-1.1534          might be 1.0264x faster

   <arithmetic>                                      60.4808+-0.8950           59.8589+-0.9805          might be 1.0104x faster
   <geometric> *                                     57.2520+-0.7667           56.5887+-0.8832          might be 1.0117x faster
   <harmonic>                                        54.2504+-0.7908           53.5236+-0.8798          might be 1.0136x faster

                                                        TipOfTree                  Varargs                                      
Octane:
   encrypt                                           0.23636+-0.00582          0.23334+-0.00151         might be 1.0130x faster
   decrypt                                           4.03931+-0.02619    ?     4.04704+-0.02880       ?
   deltablue                                x2       0.20250+-0.00275          0.20100+-0.00159       
   earley                                            0.70505+-0.00706          0.69690+-0.00793         might be 1.0117x faster
   boyer                                             5.31139+-0.05581    ?     5.36110+-0.03308       ?
   navier-stokes                            x2       5.19338+-0.04326    ?     5.22049+-0.04524       ?
   raytrace                                 x2       1.24436+-0.05931          1.23212+-0.04363       
   richards                                 x2       0.13201+-0.00194    ?     0.13371+-0.00404       ? might be 1.0129x slower
   splay                                    x2       0.37827+-0.00330          0.37588+-0.00266       
   regexp                                   x2      33.32768+-0.25133    ?    33.80731+-0.36472       ? might be 1.0144x slower
   pdfjs                                    x2      51.73293+-0.09593         51.49666+-0.48402       
   mandreel                                 x2      53.17239+-1.82697         52.79042+-0.71716       
   gbemu                                    x2      48.13580+-2.72095         47.28809+-2.79174         might be 1.0179x faster
   closure                                           0.56282+-0.00698          0.56205+-0.00835       
   jquery                                            7.22227+-0.14249    ?     7.33856+-0.22317       ? might be 1.0161x slower
   box2d                                    x2      13.53053+-0.08818    ^    12.99392+-0.06465       ^ definitely 1.0413x faster
   zlib                                     x2     400.94647+-2.71702        400.43423+-3.29155       
   typescript                               x2     867.70235+-14.05712       857.25203+-13.12071        might be 1.0122x faster

   <arithmetic>                                     98.98248+-0.85327         98.15636+-1.17218         might be 1.0084x faster
   <geometric> *                                     7.03895+-0.03893          7.00449+-0.04107         might be 1.0049x faster
   <harmonic>                                        0.73804+-0.00354          0.73795+-0.00867         might be 1.0001x faster

                                                        TipOfTree                  Varargs                                      
Kraken:
   ai-astar                                          265.247+-4.953      ?     267.734+-3.605         ?
   audio-beat-detection                              113.623+-4.987            111.641+-0.826           might be 1.0178x faster
   audio-dft                                         160.901+-6.193            160.386+-4.848         
   audio-fft                                          82.935+-1.976      ?      84.361+-3.515         ? might be 1.0172x slower
   audio-oscillator                                  243.720+-6.224            240.822+-5.128           might be 1.0120x faster
   imaging-darkroom                                  139.630+-4.218      ?     139.695+-3.036         ?
   imaging-desaturate                                 63.044+-2.347      ?      64.882+-2.529         ? might be 1.0292x slower
   imaging-gaussian-blur                             111.651+-2.337      ?     114.354+-0.801         ? might be 1.0242x slower
   json-parse-financial                               47.182+-2.390      ?      47.271+-2.158         ?
   json-stringify-tinderbox                           58.979+-1.888             58.928+-2.143         
   stanford-crypto-aes                                58.481+-0.956      ?      58.672+-2.007         ?
   stanford-crypto-ccm                                57.343+-4.574             57.141+-7.693         
   stanford-crypto-pbkdf2                            176.568+-2.281            174.617+-3.758           might be 1.0112x faster
   stanford-crypto-sha256-iterative                   55.021+-3.059             54.157+-1.752           might be 1.0160x faster

   <arithmetic> *                                    116.738+-0.747      ?     116.762+-1.009         ? might be 1.0002x slower
   <geometric>                                        98.982+-0.718      ?      99.113+-1.721         ? might be 1.0013x slower
   <harmonic>                                         85.530+-0.918      ?      85.674+-2.224         ? might be 1.0017x slower

                                                        TipOfTree                  Varargs                                      
JSRegress:
   abs-boolean                                        2.6212+-0.0508     ?      2.7155+-0.1161        ? might be 1.0360x slower
   adapt-to-double-divide                            17.1142+-0.9100           16.6148+-0.0683          might be 1.0301x faster
   aliased-arguments-getbyval                         0.8005+-0.0145     ?      0.8352+-0.0214        ? might be 1.0434x slower
   allocate-big-object                                2.3794+-0.1058     ?      2.3852+-0.1300        ?
   arity-mismatch-inlining                            0.8313+-0.0408            0.8038+-0.0200          might be 1.0341x faster
   array-access-polymorphic-structure                 6.5237+-0.1408     ?      6.5286+-0.4005        ?
   array-nonarray-polymorhpic-access                 35.5060+-2.1529     ?     35.5355+-1.7563        ?
   array-prototype-every                             88.5483+-2.5047     ?     92.0790+-4.2008        ? might be 1.0399x slower
   array-prototype-forEach                          103.4073+-28.1307          88.3062+-2.4138          might be 1.1710x faster
   array-prototype-map                              112.6493+-4.3786     ?    112.9924+-2.1811        ?
   array-prototype-some                              92.0496+-2.6549           91.7615+-2.6859        
   array-splice-contiguous                           41.9680+-2.2560           41.0247+-1.3918          might be 1.0230x faster
   array-with-double-add                              4.0435+-0.0641     ?      4.1392+-0.1183        ? might be 1.0237x slower
   array-with-double-increment                        3.1501+-0.0326     ?      3.1606+-0.0328        ?
   array-with-double-mul-add                          4.9618+-0.0622     ?      5.0511+-0.0770        ? might be 1.0180x slower
   array-with-double-sum                              3.2103+-0.0581     ?      3.2753+-0.1485        ? might be 1.0202x slower
   array-with-int32-add-sub                           6.6989+-0.0480     ?      6.7505+-0.0661        ?
   array-with-int32-or-double-sum                     3.2725+-0.0677     ?      3.2885+-0.0680        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     34.4093+-1.7458           33.6566+-2.4267          might be 1.0224x faster
   ArrayBuffer-DataView-alloc-long-lived             14.6401+-1.8103           14.2390+-1.7203          might be 1.0282x faster
   ArrayBuffer-Int32Array-byteOffset                  3.7377+-0.6725            3.4513+-0.0569          might be 1.0830x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     34.5740+-2.2274           34.5194+-1.3680        
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.7324+-2.5308           23.4676+-1.7975          might be 1.0113x faster
   ArrayBuffer-Int8Array-alloc-long-lived            13.3031+-1.0186     ?     14.1278+-1.9482        ? might be 1.0620x slower
   ArrayBuffer-Int8Array-alloc                       11.0494+-0.5546     ?     11.2141+-1.1636        ? might be 1.0149x slower
   asmjs_bool_bug                                     7.3911+-0.3005     ?      7.3963+-0.2349        ?
   assign-custom-setter-polymorphic                   2.9513+-0.0509     ?      3.0782+-0.1254        ? might be 1.0430x slower
   assign-custom-setter                               4.2493+-0.3050            4.1284+-0.0655          might be 1.0293x faster
   basic-set                                         10.2118+-0.3989     ?     10.2993+-0.4182        ?
   big-int-mul                                        3.9087+-0.0566     ?      3.9505+-0.0386        ? might be 1.0107x slower
   boolean-test                                       2.9321+-0.0203     ?      2.9499+-0.0278        ?
   branch-fold                                        3.6477+-0.0449     ?      3.6549+-0.0384        ?
   by-val-generic                                     7.9581+-0.2530            7.8708+-0.1251          might be 1.0111x faster
   call-spread-apply                                 14.4283+-0.9393     ?     14.6791+-1.1879        ? might be 1.0174x slower
   call-spread-call                                   6.4222+-1.0667            5.6920+-0.0650          might be 1.1283x faster
   captured-assignments                               0.4342+-0.0124            0.4341+-0.0094        
   cast-int-to-double                                 5.2074+-0.0117     ?      5.3169+-0.1629        ? might be 1.0210x slower
   cell-argument                                      8.3357+-0.1236     ?      8.5077+-0.2804        ? might be 1.0206x slower
   cfg-simplify                                       2.9085+-0.0557            2.8805+-0.0546        
   chain-getter-access                                9.7635+-0.1384            9.6003+-0.1385          might be 1.0170x faster
   cmpeq-obj-to-obj-other                            10.7663+-1.2426     ?     10.8037+-1.0171        ?
   constant-test                                      4.8573+-0.0091            4.8466+-0.0372        
   DataView-custom-properties                        39.8403+-1.0886           39.1313+-1.2256          might be 1.0181x faster
   delay-tear-off-arguments-strictmode               23.4338+-2.1309     ?     24.3552+-2.1906        ? might be 1.0393x slower
   deltablue-varargs                               1102.4718+-7.6058     ^    853.4602+-10.0297       ^ definitely 1.2918x faster
   destructuring-arguments                            5.1800+-0.1092            5.1251+-0.0311          might be 1.0107x faster
   destructuring-swap                                 5.0170+-0.1728            4.9545+-0.0257          might be 1.0126x faster
   direct-arguments-getbyval                          0.9919+-0.0727            0.9124+-0.0420          might be 1.0871x faster
   div-boolean-double                                 5.1696+-0.0234     ?      5.2511+-0.2195        ? might be 1.0158x slower
   div-boolean                                        7.7081+-0.0254     ?      7.8997+-0.3786        ? might be 1.0248x slower
   double-get-by-val-out-of-bounds                    4.3038+-0.1769            4.2531+-0.0230          might be 1.0119x faster
   double-pollution-getbyval                          8.8896+-0.1926            8.8106+-0.0916        
   double-pollution-putbyoffset                       4.0842+-0.0904     ?      4.1893+-0.2126        ? might be 1.0257x slower
   double-to-int32-typed-array-no-inline              2.2601+-0.1611            2.2326+-0.0532          might be 1.0123x faster
   double-to-int32-typed-array                        1.8881+-0.0207     ?      1.8983+-0.0268        ?
   double-to-uint32-typed-array-no-inline             2.3217+-0.1024            2.2588+-0.0460          might be 1.0278x faster
   double-to-uint32-typed-array                       1.9565+-0.0384     ?      2.0793+-0.1647        ? might be 1.0628x slower
   elidable-new-object-dag                           41.9705+-1.8489     ?     42.5362+-2.0310        ? might be 1.0135x slower
   elidable-new-object-roflcopter                    47.4452+-0.7567     ?     48.8214+-1.4310        ? might be 1.0290x slower
   elidable-new-object-then-call                     39.3924+-1.4435     ?     39.6280+-2.0048        ?
   elidable-new-object-tree                          44.7834+-1.4825           44.7431+-2.2761        
   empty-string-plus-int                              5.3086+-0.2324            5.2903+-0.2062        
   emscripten-cube2hash                              38.5666+-0.9606           37.1876+-1.5146          might be 1.0371x faster
   external-arguments-getbyval                        1.2927+-0.0534     ?      1.3328+-0.1267        ? might be 1.0310x slower
   external-arguments-putbyval                        2.1014+-0.0708            2.0734+-0.1155          might be 1.0135x faster
   fixed-typed-array-storage-var-index                1.2355+-0.0565            1.2281+-0.0365        
   fixed-typed-array-storage                          0.9691+-0.1444            0.8939+-0.0462          might be 1.0841x faster
   Float32Array-matrix-mult                           4.2517+-0.0931     !      5.0407+-0.0470        ! definitely 1.1856x slower
   Float32Array-to-Float64Array-set                  58.4541+-2.8761     !     64.1847+-1.8201        ! definitely 1.0980x slower
   Float64Array-alloc-long-lived                     68.2255+-1.0884     !    134.2301+-4.0148        ! definitely 1.9674x slower
   Float64Array-to-Int16Array-set                    69.8218+-2.5428     !     82.9570+-3.9490        ! definitely 1.1881x slower
   fold-double-to-int                                14.5782+-1.5237     ?     14.9761+-1.2871        ? might be 1.0273x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.4859+-0.7349     ?     10.8909+-0.6563        ? might be 1.0386x slower
   fold-get-by-id-to-multi-get-by-offset              9.5851+-0.6564            9.4779+-0.9006          might be 1.0113x faster
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.9248+-0.9236            7.6488+-1.7420          might be 1.1668x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.4383+-1.0385     ?      8.4838+-0.8313        ?
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.6959+-0.9565            7.6415+-0.8026        
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.4022+-0.3573     ?      4.9880+-0.5305        ? might be 1.1331x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      9.5805+-1.3161            9.2419+-0.5965          might be 1.0366x faster
   fold-put-by-id-to-multi-put-by-offset              8.7837+-0.3902     ?      8.8747+-0.7326        ? might be 1.0104x slower
   fold-put-structure                                 5.2815+-0.2719     ?      5.5278+-0.7908        ? might be 1.0466x slower
   for-of-iterate-array-entries                       5.7706+-0.3743     ?      5.9722+-0.7588        ? might be 1.0349x slower
   for-of-iterate-array-keys                          2.7918+-0.0305     ?      2.8633+-0.2045        ? might be 1.0256x slower
   for-of-iterate-array-values                        2.4502+-0.0516     ?      2.5372+-0.0771        ? might be 1.0355x slower
   fround                                            19.7769+-0.8490     ?     20.1560+-1.9624        ? might be 1.0192x slower
   ftl-library-inlining-dataview                     69.5669+-3.7552     ?     72.5727+-3.2062        ? might be 1.0432x slower
   ftl-library-inlining                              68.0919+-5.8361     ?     86.4943+-19.2504       ? might be 1.2703x slower
   function-dot-apply                                 1.4270+-0.0713     ?      1.4848+-0.0868        ? might be 1.0405x slower
   function-test                                      3.3230+-0.0349            3.3216+-0.0805        
   function-with-eval                               116.4371+-2.9604     ?    118.1788+-4.8629        ? might be 1.0150x slower
   gcse-poly-get-less-obvious                        19.9911+-1.9644           19.5193+-2.4473          might be 1.0242x faster
   gcse-poly-get                                     22.6287+-1.2189     ?     22.6932+-2.5801        ?
   gcse                                               4.3161+-0.1181            4.2794+-0.0781        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7213+-0.0482     ?      2.7402+-0.0770        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.1729+-0.2830            6.0600+-0.0507          might be 1.0186x faster
   get-by-id-chain-from-try-block                    10.7787+-1.2202           10.2128+-1.4291          might be 1.0554x faster
   get-by-id-check-structure-elimination              5.0106+-0.0662            4.9877+-0.0772        
   get-by-id-proto-or-self                           17.6327+-1.5857     ?     18.2055+-1.9995        ? might be 1.0325x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8802+-0.0262     ?      2.9535+-0.1357        ? might be 1.0254x slower
   get-by-id-self-or-proto                           17.9494+-1.3706     ?     18.9677+-1.2284        ? might be 1.0567x slower
   get-by-val-out-of-bounds                           4.1816+-0.1696            4.1534+-0.0185        
   get_callee_monomorphic                             3.9935+-0.6877            3.8318+-0.2900          might be 1.0422x faster
   get_callee_polymorphic                             3.5280+-0.2792            3.4435+-0.2515          might be 1.0246x faster
   getter-no-activation                               4.5197+-0.3812            4.4920+-0.3195        
   getter-richards                                  122.4117+-7.8824          121.4702+-11.1709       
   getter                                             5.1069+-0.1335     ?      5.1653+-0.2230        ? might be 1.0114x slower
   global-var-const-infer-fire-from-opt               0.8751+-0.0766            0.8352+-0.0254          might be 1.0478x faster
   global-var-const-infer                             0.7947+-0.1090     ?      0.8060+-0.1067        ? might be 1.0142x slower
   HashMap-put-get-iterate-keys                      27.2985+-0.8603           27.1536+-0.4345        
   HashMap-put-get-iterate                           27.0245+-0.4352     ?     27.7152+-0.9944        ? might be 1.0256x slower
   HashMap-string-put-get-iterate                    27.4995+-0.4608           27.0775+-1.1013          might be 1.0156x faster
   hoist-make-rope                                   10.8986+-0.5091     ?     11.7653+-1.2203        ? might be 1.0795x slower
   hoist-poly-check-structure-effectful-loop   
                                                      4.8593+-0.0453            4.8525+-0.0434        
   hoist-poly-check-structure                         3.6612+-0.1106     ?      3.6876+-0.1942        ?
   imul-double-only                                   7.6360+-0.5558     ?      8.1098+-0.9204        ? might be 1.0620x slower
   imul-int-only                                      9.6540+-0.3078     ?     10.1629+-0.9201        ? might be 1.0527x slower
   imul-mixed                                         8.2721+-0.3917            7.8116+-0.3821          might be 1.0589x faster
   in-four-cases                                     19.5465+-1.2456           19.0280+-0.6362          might be 1.0273x faster
   in-one-case-false                                  9.9301+-0.1526     ?      9.9945+-0.1751        ?
   in-one-case-true                                   9.9178+-0.1594            9.8381+-0.1520        
   in-two-cases                                      10.2864+-0.2896           10.1700+-0.1969          might be 1.0114x faster
   indexed-properties-in-objects                      2.8654+-0.0470     ?      2.9208+-0.1874        ? might be 1.0194x slower
   infer-closure-const-then-mov-no-inline             3.7336+-0.0561            3.7261+-0.1211        
   infer-closure-const-then-mov                      19.4357+-0.7902           18.8259+-1.6148          might be 1.0324x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     12.6548+-1.5165           12.4356+-0.7283          might be 1.0176x faster
   infer-closure-const-then-put-to-scope             23.6111+-1.1613     ?     23.7346+-1.7248        ?
   infer-closure-const-then-reenter-no-inline   
                                                     51.5207+-1.5447           49.1082+-1.7662          might be 1.0491x faster
   infer-closure-const-then-reenter                  19.8989+-1.4809           19.8740+-1.1173        
   infer-constant-global-property                    31.9941+-2.6781     ?     33.2666+-3.1424        ? might be 1.0398x slower
   infer-constant-property                            2.6250+-0.0544            2.6206+-0.0372        
   infer-one-time-closure-ten-vars                   12.0109+-0.2072     ?     12.3396+-0.7536        ? might be 1.0274x slower
   infer-one-time-closure-two-vars                   12.8328+-1.8168           12.0299+-0.9588          might be 1.0667x faster
   infer-one-time-closure                            11.7133+-0.4817           11.6277+-0.4958        
   infer-one-time-deep-closure                       21.8076+-1.5458           21.4972+-1.5976          might be 1.0144x faster
   inline-arguments-access                            1.3980+-0.0397            1.3788+-0.0305          might be 1.0139x faster
   inline-arguments-aliased-access                    1.6316+-0.0906     ?      1.6397+-0.0816        ?
   inline-arguments-local-escape                     13.7856+-1.7195           12.1422+-0.1829          might be 1.1354x faster
   inline-get-scoped-var                              4.1740+-0.1564            4.1435+-0.0694        
   inlined-put-by-id-transition                      10.5479+-0.7039           10.3984+-0.2812          might be 1.0144x faster
   int-or-other-abs-then-get-by-val                   4.8898+-0.0478            4.8555+-0.0647        
   int-or-other-abs-zero-then-get-by-val             17.4460+-0.9715     ?     18.5558+-1.7431        ? might be 1.0636x slower
   int-or-other-add-then-get-by-val                   4.3171+-0.1340            4.2034+-0.0956          might be 1.0271x faster
   int-or-other-add                                   5.2452+-0.1160            5.1812+-0.0404          might be 1.0124x faster
   int-or-other-div-then-get-by-val                   4.2222+-0.0437     ?      4.2812+-0.1237        ? might be 1.0140x slower
   int-or-other-max-then-get-by-val                   4.3131+-0.0294     ?      4.3654+-0.0831        ? might be 1.0121x slower
   int-or-other-min-then-get-by-val                   4.3976+-0.0323            4.3667+-0.0199        
   int-or-other-mod-then-get-by-val                   3.9048+-0.0763     ?      3.9652+-0.1755        ? might be 1.0155x slower
   int-or-other-mul-then-get-by-val                   3.8297+-0.0546     ?      3.9331+-0.2405        ? might be 1.0270x slower
   int-or-other-neg-then-get-by-val                   4.6981+-0.0221            4.6888+-0.0212        
   int-or-other-neg-zero-then-get-by-val             19.5756+-1.5472           18.1175+-1.8202          might be 1.0805x faster
   int-or-other-sub-then-get-by-val                   4.2305+-0.0370     ?      4.3155+-0.1884        ? might be 1.0201x slower
   int-or-other-sub                                   3.4218+-0.0539     ?      3.4270+-0.0459        ?
   int-overflow-local                                 4.2774+-0.0214     ?      4.3836+-0.2082        ? might be 1.0248x slower
   Int16Array-alloc-long-lived                       48.3795+-1.1625     !    116.9775+-3.4435        ! definitely 2.4179x slower
   Int16Array-bubble-sort-with-byteLength            21.1473+-1.6138           20.9348+-1.3590          might be 1.0102x faster
   Int16Array-bubble-sort                            21.5358+-1.4488     ?     21.8587+-1.4315        ? might be 1.0150x slower
   Int16Array-load-int-mul                            1.4775+-0.0224     ?      1.4834+-0.0417        ?
   Int16Array-to-Int32Array-set                      55.1340+-4.6383     !     62.8521+-2.6366        ! definitely 1.1400x slower
   Int32Array-alloc-large                            24.9858+-1.2060     ?     25.2924+-0.6240        ? might be 1.0123x slower
   Int32Array-alloc-long-lived                       53.7673+-1.8909     !    126.4333+-16.4939       ! definitely 2.3515x slower
   Int32Array-alloc                                   3.2045+-0.5075     !      9.3022+-0.6479        ! definitely 2.9029x slower
   Int32Array-Int8Array-view-alloc                    7.5383+-1.1516     ?      7.9868+-0.8453        ? might be 1.0595x slower
   int52-spill                                        6.2405+-0.0779     ?      6.4122+-0.1877        ? might be 1.0275x slower
   Int8Array-alloc-long-lived                        45.4456+-1.2396           45.1487+-1.1212        
   Int8Array-load-with-byteLength                     3.3151+-0.0514     ?      3.3340+-0.1064        ?
   Int8Array-load                                     3.3125+-0.0537     ?      3.3722+-0.1036        ? might be 1.0180x slower
   integer-divide                                    11.6768+-0.1326     ?     11.7314+-0.1118        ?
   integer-modulo                                     1.9913+-0.1124            1.9529+-0.1047          might be 1.0197x faster
   large-int-captured                                 7.0248+-0.8907            6.9187+-0.8493          might be 1.0153x faster
   large-int-neg                                     16.7248+-1.2173     ?     17.0906+-1.3964        ? might be 1.0219x slower
   large-int                                         15.8532+-1.4771           15.4820+-0.4188          might be 1.0240x faster
   logical-not                                        4.5336+-0.0972     ?      4.5854+-0.0455        ? might be 1.0114x slower
   lots-of-fields                                    10.6439+-1.1455            9.9969+-0.3037          might be 1.0647x faster
   make-indexed-storage                               2.9175+-0.0523     ?      2.9629+-0.1185        ? might be 1.0156x slower
   make-rope-cse                                      4.1684+-0.2221     ?      4.2858+-0.5441        ? might be 1.0282x slower
   marsaglia-larger-ints                             39.2186+-1.4956           38.9637+-0.3137        
   marsaglia-osr-entry                               23.6506+-1.6019           23.1045+-1.2788          might be 1.0236x faster
   max-boolean                                        2.5186+-0.1028            2.4621+-0.0224          might be 1.0229x faster
   method-on-number                                  17.2381+-1.6033           16.5872+-0.2592          might be 1.0392x faster
   min-boolean                                        2.6821+-0.5134            2.5538+-0.1153          might be 1.0502x faster
   minus-boolean-double                               3.1676+-0.0555     ?      3.2177+-0.1716        ? might be 1.0158x slower
   minus-boolean                                      2.3297+-0.0526     ?      2.3431+-0.0241        ?
   misc-strict-eq                                    39.0111+-1.9995           38.2700+-0.6152          might be 1.0194x faster
   mod-boolean-double                                11.1165+-0.1679           11.0924+-0.4197        
   mod-boolean                                        7.8316+-0.1505            7.7846+-0.0417        
   mul-boolean-double                                 3.7261+-0.1150            3.7074+-0.0586        
   mul-boolean                                        2.8921+-0.0733     ?      3.0008+-0.2376        ? might be 1.0376x slower
   neg-boolean                                        3.1819+-0.0766            3.1407+-0.0481          might be 1.0131x faster
   negative-zero-divide                               0.3337+-0.0082            0.3291+-0.0126          might be 1.0141x faster
   negative-zero-modulo                               0.3516+-0.0426            0.3461+-0.0055          might be 1.0158x faster
   negative-zero-negate                               0.3126+-0.0135     ?      0.3203+-0.0139        ? might be 1.0245x slower
   nested-function-parsing                           23.6678+-0.8656           23.3872+-0.9651          might be 1.0120x faster
   new-array-buffer-dead                              2.6480+-0.0631     ?      2.6657+-0.0347        ?
   new-array-buffer-push                              7.7949+-0.5895            7.5115+-0.6008          might be 1.0377x faster
   new-array-dead                                    12.1012+-0.3149     ?     12.2894+-0.6665        ? might be 1.0156x slower
   new-array-push                                     5.5441+-0.6130            5.3146+-0.1419          might be 1.0432x faster
   number-test                                        2.9841+-0.0595            2.9729+-0.0753        
   object-closure-call                                5.4504+-0.1075     ?      5.4687+-0.0665        ?
   object-test                                        3.0424+-0.0357     ?      3.0577+-0.0489        ?
   obvious-sink-pathology-taken                     143.0253+-3.0687     ?    143.6776+-2.6762        ?
   obvious-sink-pathology                           139.9014+-3.7380          139.2068+-2.7311        
   obviously-elidable-new-object                     33.9501+-1.1728     ?     35.3165+-1.4360        ? might be 1.0402x slower
   plus-boolean-arith                                 2.5161+-0.0284     ?      2.5201+-0.0222        ?
   plus-boolean-double                                3.2586+-0.1901            3.1591+-0.0495          might be 1.0315x faster
   plus-boolean                                       2.3835+-0.0217            2.3811+-0.0220        
   poly-chain-access-different-prototypes-simple   
                                                      3.2699+-0.0643     ?      3.2849+-0.0235        ?
   poly-chain-access-different-prototypes             2.5390+-0.2473     ?      2.6463+-0.2876        ? might be 1.0422x slower
   poly-chain-access-simpler                          3.2838+-0.0521     ?      3.2993+-0.0575        ?
   poly-chain-access                                  2.7463+-0.0781     ?      2.7716+-0.0810        ?
   poly-stricteq                                     58.5882+-1.3996     ?     59.7712+-1.5602        ? might be 1.0202x slower
   polymorphic-array-call                             1.8600+-0.1043            1.7675+-0.0275          might be 1.0524x faster
   polymorphic-get-by-id                              3.1406+-0.0920     ?      3.1923+-0.1341        ? might be 1.0165x slower
   polymorphic-put-by-id                             30.0338+-2.0337           30.0035+-2.2549        
   polymorphic-structure                             16.1237+-1.5043           14.9755+-0.2461          might be 1.0767x faster
   polyvariant-monomorphic-get-by-id                  8.5378+-0.1801            8.5188+-0.1050        
   proto-getter-access                                9.6822+-0.2914            9.5739+-0.1333          might be 1.0113x faster
   put-by-id-replace-and-transition                   8.6855+-0.4040            8.5883+-0.2173          might be 1.0113x faster
   put-by-id-slightly-polymorphic                     2.8319+-0.0540     ?      2.8479+-0.0527        ?
   put-by-id                                         13.0806+-0.7095     ?     13.1803+-0.5893        ?
   put-by-val-direct                                  0.5483+-0.0107     ?      0.5563+-0.0107        ? might be 1.0147x slower
   put-by-val-large-index-blank-indexing-type   
                                                      6.1962+-0.6805            6.1951+-0.7237        
   put-by-val-machine-int                             2.5099+-0.0133     !      5.5358+-0.1947        ! definitely 2.2056x slower
   rare-osr-exit-on-local                            14.9390+-0.6329     ?     15.2590+-1.1075        ? might be 1.0214x slower
   register-pressure-from-osr                        21.8924+-0.1230           21.7836+-0.5555        
   setter                                             5.2586+-0.0953            5.1667+-0.1546          might be 1.0178x faster
   simple-activation-demo                            26.1979+-1.8037     ?     26.6113+-1.6349        ? might be 1.0158x slower
   simple-getter-access                              12.8826+-0.8359           12.7462+-0.9038          might be 1.0107x faster
   simple-poly-call-nested                            8.0169+-0.2423     ?      8.0260+-0.4032        ?
   simple-poly-call                                   1.2127+-0.0246     ?      1.2519+-0.0971        ? might be 1.0323x slower
   sin-boolean                                       21.4080+-2.7987           21.2675+-2.7870        
   sinkable-new-object-dag                           70.6248+-2.6608           70.0444+-2.2542        
   sinkable-new-object-taken                         49.7336+-1.1298     ?     50.0622+-1.7758        ?
   sinkable-new-object                               39.4986+-2.1484           38.0152+-1.3297          might be 1.0390x faster
   slow-array-profile-convergence                     2.7525+-0.1317     ?      2.7702+-0.1070        ?
   slow-convergence                                   3.1757+-0.0859            3.1300+-0.0591          might be 1.0146x faster
   sparse-conditional                                 1.0975+-0.0414            1.0867+-0.0393        
   splice-to-remove                                  16.2669+-0.2364     ?     17.0596+-1.1917        ? might be 1.0487x slower
   string-char-code-at                               16.7991+-0.4978     ?     17.2823+-1.1255        ? might be 1.0288x slower
   string-concat-object                               2.3502+-0.3680            2.1676+-0.2191          might be 1.0842x faster
   string-concat-pair-object                          2.2224+-0.4796     ?      2.5049+-0.4427        ? might be 1.1271x slower
   string-concat-pair-simple                         11.2702+-1.1780           10.8129+-0.3857          might be 1.0423x faster
   string-concat-simple                              11.3358+-0.3254     ?     11.5503+-1.3039        ? might be 1.0189x slower
   string-cons-repeat                                 7.6313+-0.8740     ?      7.7265+-0.7668        ? might be 1.0125x slower
   string-cons-tower                                  7.4762+-0.9404            7.3413+-0.3000          might be 1.0184x faster
   string-equality                                   18.6333+-1.4472     ?     19.0858+-1.4626        ? might be 1.0243x slower
   string-get-by-val-big-char                         6.9763+-0.2927     ?      7.0665+-0.2846        ? might be 1.0129x slower
   string-get-by-val-out-of-bounds-insane             3.8803+-0.0766     ?      4.1521+-0.7324        ? might be 1.0701x slower
   string-get-by-val-out-of-bounds                    5.1993+-0.0810     ?      5.2216+-0.0693        ?
   string-get-by-val                                  3.2751+-0.1406     ?      3.2946+-0.0478        ?
   string-hash                                        1.9856+-0.0120     ?      2.0042+-0.0158        ?
   string-long-ident-equality                        14.7498+-0.2195     ?     15.2272+-0.3463        ? might be 1.0324x slower
   string-repeat-arith                               34.8779+-3.6760     ?     35.1596+-2.4053        ?
   string-sub                                        70.2493+-2.7303           69.2666+-3.1070          might be 1.0142x faster
   string-test                                        2.8878+-0.0531            2.8728+-0.0581        
   string-var-equality                               31.6888+-1.3291     ?     33.3819+-2.1741        ? might be 1.0534x slower
   structure-hoist-over-transitions                   2.3500+-0.0344     ?      2.3623+-0.0600        ?
   substring-concat-weird                            39.3584+-2.4579     ?     40.0370+-1.7666        ? might be 1.0172x slower
   substring-concat                                  41.7503+-1.7794           39.8837+-0.7298          might be 1.0468x faster
   substring                                         46.0614+-1.7810     ?     46.4079+-1.4951        ?
   switch-char-constant                               2.6933+-0.0298     ?      2.7015+-0.0363        ?
   switch-char                                        7.0086+-0.8838            6.2962+-0.2390          might be 1.1131x faster
   switch-constant                                   10.1568+-0.4310     ?     10.4425+-0.5088        ? might be 1.0281x slower
   switch-string-basic-big-var                       17.3322+-1.7311           15.6095+-1.2567          might be 1.1104x faster
   switch-string-basic-big                           15.9558+-2.1285           14.9291+-1.6003          might be 1.0688x faster
   switch-string-basic-var                           14.9854+-0.9332     ?     15.7466+-1.8105        ? might be 1.0508x slower
   switch-string-basic                               15.0549+-2.2516           14.4403+-1.8227          might be 1.0426x faster
   switch-string-big-length-tower-var                21.8507+-1.7290           21.1774+-1.2508          might be 1.0318x faster
   switch-string-length-tower-var                    16.8516+-1.9020           16.2882+-1.8292          might be 1.0346x faster
   switch-string-length-tower                        12.7258+-0.6479     ?     14.4002+-1.7607        ? might be 1.1316x slower
   switch-string-short                               13.6778+-1.7405           12.9697+-1.4848          might be 1.0546x faster
   switch                                            13.5416+-1.7594           13.2585+-1.9247          might be 1.0214x faster
   tear-off-arguments-simple                          1.7778+-0.0412     ?      1.7989+-0.0417        ? might be 1.0119x slower
   tear-off-arguments                                 2.6882+-0.0571            2.6562+-0.0385          might be 1.0121x faster
   temporal-structure                                12.4624+-0.8400     ?     12.5753+-0.9146        ?
   to-int32-boolean                                  13.7072+-0.3957     ?     13.7639+-0.2956        ?
   undefined-property-access                        390.2414+-5.1663          388.8454+-8.1147        
   undefined-test                                     3.0178+-0.0432            2.9982+-0.0813        
   unprofiled-licm                                   22.4699+-0.3402     ?     22.9527+-1.4431        ? might be 1.0215x slower
   weird-inlining-const-prop                          1.9775+-0.0901     ?      2.0736+-0.1217        ? might be 1.0486x slower

   <arithmetic>                                      21.3187+-0.0745           21.3086+-0.1699          might be 1.0005x faster
   <geometric> *                                      8.1629+-0.0238     !      8.2977+-0.0465        ! definitely 1.0165x slower
   <harmonic>                                         4.0151+-0.0123     ?      4.0449+-0.0257        ? might be 1.0074x slower

                                                        TipOfTree                  Varargs                                      
AsmBench:
   bigfib.cpp                                       501.5117+-4.8465     ?    501.7469+-2.4127        ?
   cray.c                                           501.2266+-141.7163        451.0122+-8.1881          might be 1.1113x faster
   dry.c                                            502.6892+-13.3196         496.4124+-15.2110         might be 1.0126x faster
   FloatMM.c                                        735.8057+-5.1917     ?    742.5267+-16.2023       ?
   gcc-loops.cpp                                   4215.1259+-38.3104    ?   4216.4792+-44.5235       ?
   n-body.c                                        1000.7433+-7.7089     ?   1006.4331+-7.0989        ?
   Quicksort.c                                      451.5618+-5.7585     ?    475.6743+-59.4393       ? might be 1.0534x slower
   stepanov_container.cpp                          3607.4513+-29.5355    ?   3647.0526+-57.3167       ? might be 1.0110x slower
   Towers.c                                         263.5458+-3.7305     ?    267.9293+-15.6823       ? might be 1.0166x slower

   <arithmetic>                                    1308.8513+-22.1903    ?   1311.6963+-11.8905       ? might be 1.0022x slower
   <geometric> *                                    818.4368+-24.3210         817.7156+-13.7320         might be 1.0009x faster
   <harmonic>                                       602.4026+-17.9361    ?    602.4821+-14.0988       ? might be 1.0001x slower

                                                        TipOfTree                  Varargs                                      
CompressionBench:
   huffman                                          506.2357+-6.7995          494.6323+-11.0881         might be 1.0235x faster
   arithmetic-simple                                422.5426+-7.1369     ?    426.2483+-4.7347        ?
   arithmetic-precise                               325.8688+-5.3953          323.8330+-1.9317        
   arithmetic-complex-precise                       323.3937+-4.7004          318.5152+-4.6211          might be 1.0153x faster
   arithmetic-precise-order-0                       463.8657+-8.9762          461.3990+-4.8314        
   arithmetic-precise-order-1                       363.3422+-6.1786     ?    364.0529+-4.8991        ?
   arithmetic-precise-order-2                       397.0428+-5.4652     ?    398.5431+-3.7641        ?
   arithmetic-simple-order-1                        452.7095+-4.8820     ?    452.7105+-5.8528        ?
   arithmetic-simple-order-2                        505.8470+-11.0134         505.4974+-8.3541        
   lz-string                                        342.2450+-6.3964     ?    351.0746+-6.2713        ? might be 1.0258x slower

   <arithmetic>                                     410.3093+-2.0180          409.6506+-1.8749          might be 1.0016x faster
   <geometric> *                                    404.7911+-1.9706          404.3671+-1.9193          might be 1.0010x faster
   <harmonic>                                       399.3305+-1.9341          399.0836+-1.9950          might be 1.0006x faster

                                                        TipOfTree                  Varargs                                      
All benchmarks:
   <arithmetic>                                     102.8410+-0.5303          102.5648+-0.2820          might be 1.0027x faster
   <geometric>                                       13.4697+-0.0420     !     13.6105+-0.0553        ! definitely 1.0105x slower
   <harmonic>                                         3.3731+-0.0091     ?      3.3865+-0.0061        ? might be 1.0040x slower

                                                        TipOfTree                  Varargs                                      
Geomean of preferred means:
   <scaled-result>                                   65.4296+-0.4684           65.3259+-0.1854          might be 1.0016x faster
Comment 22 Filip Pizlo 2015-02-16 19:19:46 PST
I figured out the performance regressions: I broke typed array constructor inlining, and this appears to only have mattered on our microbenchmarks.  I broke it accidentally as part of the refactoring I had to do in the inlining code.
Comment 23 Filip Pizlo 2015-02-16 20:25:23 PST
OK, all performance is good now.


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

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r180189)
"Varargs" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r180189)

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                  Varargs                                      
SunSpider:
   3d-cube                                            4.8026+-0.0567     ?      4.8888+-0.1662        ? might be 1.0179x slower
   3d-morph                                           6.0504+-0.0365     ?      6.0796+-0.1231        ?
   3d-raytrace                                        7.0231+-1.9006            6.2440+-0.1291          might be 1.1248x faster
   access-binary-trees                                2.0839+-0.1252            2.0438+-0.1017          might be 1.0197x faster
   access-fannkuch                                    5.8274+-0.2128     ?      5.8317+-0.0990        ?
   access-nbody                                       2.8365+-0.1328     ?      2.8560+-0.0592        ?
   access-nsieve                                      3.7153+-0.0563     ?      3.9078+-0.6038        ? might be 1.0518x slower
   bitops-3bit-bits-in-byte                           1.5376+-0.0201            1.5277+-0.0193        
   bitops-bits-in-byte                                3.5793+-0.0653            3.4870+-0.1055          might be 1.0265x faster
   bitops-bitwise-and                                 2.0343+-0.0429     ?      2.2374+-0.4134        ? might be 1.0999x slower
   bitops-nsieve-bits                                 3.6144+-0.0658     ?      3.7081+-0.2725        ? might be 1.0259x slower
   controlflow-recursive                              2.2560+-0.1913            2.1695+-0.0268          might be 1.0399x faster
   crypto-aes                                         4.3143+-0.6121            4.1850+-0.1573          might be 1.0309x faster
   crypto-md5                                         2.6027+-0.0700     ^      2.3711+-0.0450        ^ definitely 1.0976x faster
   crypto-sha1                                        2.5798+-0.1380            2.5085+-0.1086          might be 1.0284x faster
   date-format-tofte                                  9.3044+-0.1986     ?      9.3682+-0.2732        ?
   date-format-xparb                                  5.1751+-0.1294     ?      5.2762+-0.1737        ? might be 1.0195x slower
   math-cordic                                        3.0764+-0.1308     ?      3.0803+-0.0798        ?
   math-partial-sums                                  5.6898+-0.5490            5.5437+-0.2932          might be 1.0263x faster
   math-spectral-norm                                 1.8999+-0.0328     ?      1.9185+-0.0459        ?
   regexp-dna                                         8.0837+-1.1750            7.8398+-1.2557          might be 1.0311x faster
   string-base64                                      4.5736+-0.7479            4.5356+-0.5501        
   string-fasta                                       6.3963+-0.1003     ?      6.7719+-0.6303        ? might be 1.0587x slower
   string-tagcloud                                    9.6937+-0.1574     ?      9.8830+-0.3934        ? might be 1.0195x slower
   string-unpack-code                                20.4762+-0.9067     ?     20.5898+-1.0744        ?
   string-validate-input                              4.5740+-0.0523     ?      4.8623+-0.3485        ? might be 1.0630x slower

   <arithmetic> *                                     5.1462+-0.0855            5.1429+-0.0685          might be 1.0006x faster
   <geometric>                                        4.2549+-0.0464            4.2496+-0.0609          might be 1.0012x faster
   <harmonic>                                         3.6352+-0.0379            3.6259+-0.0532          might be 1.0026x faster

                                                        TipOfTree                  Varargs                                      
LongSpider:
   3d-cube                                          908.4274+-15.4800         899.8439+-12.9558       
   3d-morph                                        1598.7533+-26.3411        1592.8800+-27.1534       
   3d-raytrace                                      774.0499+-5.4868          768.2398+-8.9377        
   access-binary-trees                             1006.7487+-6.4017         1001.7826+-6.2242        
   access-fannkuch                                  340.7502+-6.7285          329.5375+-5.4130          might be 1.0340x faster
   access-nbody                                     662.8798+-71.4904         638.2287+-8.2131          might be 1.0386x faster
   access-nsieve                                    971.4976+-11.6297         963.4171+-6.3078        
   bitops-3bit-bits-in-byte                          48.1631+-2.1012           48.1154+-2.0868        
   bitops-bits-in-byte                              118.9046+-12.2232         117.3034+-9.4061          might be 1.0137x faster
   bitops-nsieve-bits                               726.0989+-9.9088     ?    732.0344+-11.0202       ?
   controlflow-recursive                            518.3383+-8.5805          501.5930+-12.6159         might be 1.0334x faster
   crypto-aes                                       702.6232+-9.4370     ?    704.7467+-8.9687        ?
   crypto-md5                                       646.6972+-14.4554    ?    652.7996+-19.1162       ?
   crypto-sha1                                      692.9813+-9.9172     ?    698.0936+-19.8181       ?
   date-format-tofte                                814.8175+-11.2269    ?    826.4238+-34.2474       ? might be 1.0142x slower
   date-format-xparb                                787.5695+-19.9233         779.1775+-23.4253         might be 1.0108x faster
   math-cordic                                      612.5157+-6.3295          609.6938+-8.9129        
   math-partial-sums                                554.4149+-9.0186     ?    615.6208+-95.6192       ? might be 1.1104x slower
   math-spectral-norm                               593.5487+-8.4247          592.4699+-23.0137       
   string-base64                                    369.9431+-6.5546          366.3904+-4.0005        
   string-fasta                                     439.4980+-7.9096     ?    441.8711+-7.2653        ?
   string-tagcloud                                  231.9950+-5.6261          225.1798+-4.9746          might be 1.0303x faster

   <arithmetic>                                     641.8734+-3.6237          641.1565+-6.2110          might be 1.0011x faster
   <geometric> *                                    528.7052+-4.4849          527.2353+-5.1686          might be 1.0028x faster
   <harmonic>                                       347.1165+-6.9698          345.4101+-7.6724          might be 1.0049x faster

                                                        TipOfTree                  Varargs                                      
V8Spider:
   crypto                                            57.2177+-3.6804           55.5971+-1.3303          might be 1.0291x faster
   deltablue                                         85.6786+-8.1014     ?     87.7258+-4.3231        ? might be 1.0239x slower
   earley-boyer                                      47.1467+-1.8877           45.5576+-0.8665          might be 1.0349x faster
   raytrace                                          40.0444+-1.7066           38.5417+-1.1992          might be 1.0390x faster
   regexp                                            70.0061+-1.9349     ?     72.3778+-3.0744        ? might be 1.0339x slower
   richards                                          82.4088+-3.2801     ?     82.7550+-2.3680        ?
   splay                                             36.3880+-2.9921     ?     37.7218+-2.6937        ? might be 1.0367x slower

   <arithmetic>                                      59.8415+-0.9281     ?     60.0396+-0.7153        ? might be 1.0033x slower
   <geometric> *                                     56.8792+-1.0677     ?     56.8811+-0.5210        ? might be 1.0000x slower
   <harmonic>                                        54.0444+-1.4113           53.9032+-0.6379          might be 1.0026x faster

                                                        TipOfTree                  Varargs                                      
Octane:
   encrypt                                           0.24429+-0.00260          0.24011+-0.00284         might be 1.0174x faster
   decrypt                                           4.17529+-0.09454          4.15439+-0.06416       
   deltablue                                x2       0.20785+-0.00408    ?     0.20809+-0.00331       ?
   earley                                            0.71511+-0.00448          0.71203+-0.01544       
   boyer                                             5.49665+-0.08676          5.42468+-0.07401         might be 1.0133x faster
   navier-stokes                            x2       5.38262+-0.05910    ?     5.57102+-0.45325       ? might be 1.0350x slower
   raytrace                                 x2       1.21768+-0.04730    ?     1.35731+-0.28682       ? might be 1.1147x slower
   richards                                 x2       0.13823+-0.00135          0.13805+-0.00285       
   splay                                    x2       0.38471+-0.00151    ?     0.38684+-0.00514       ?
   regexp                                   x2      34.55647+-0.60553         34.34950+-0.41144       
   pdfjs                                    x2      53.59289+-0.43010    ^    52.35451+-0.54997       ^ definitely 1.0237x faster
   mandreel                                 x2      54.00938+-0.34959         53.85736+-0.46010       
   gbemu                                    x2      51.27613+-3.63519         49.20525+-3.32433         might be 1.0421x faster
   closure                                           0.58076+-0.01196    ?     0.59232+-0.00869       ? might be 1.0199x slower
   jquery                                            7.44985+-0.10619    ?     7.54808+-0.19784       ? might be 1.0132x slower
   box2d                                    x2      13.76926+-0.17888    ^    13.18605+-0.09848       ^ definitely 1.0442x faster
   zlib                                     x2     399.63437+-14.00056       398.55208+-13.00459      
   typescript                               x2     871.98271+-13.62226       871.75940+-16.42152      

   <arithmetic>                                     99.69888+-1.40204         99.35075+-1.14040         might be 1.0035x faster
   <geometric> *                                     7.21011+-0.04684    ?     7.21477+-0.07230       ? might be 1.0006x slower
   <harmonic>                                        0.76136+-0.00493    ?     0.76340+-0.00470       ? might be 1.0027x slower

                                                        TipOfTree                  Varargs                                      
Kraken:
   ai-astar                                          275.056+-6.758            274.881+-7.115         
   audio-beat-detection                              114.697+-2.225            112.416+-0.897           might be 1.0203x faster
   audio-dft                                         167.727+-7.843      ?     170.386+-8.763         ? might be 1.0159x slower
   audio-fft                                          87.381+-3.727             85.261+-1.798           might be 1.0249x faster
   audio-oscillator                                  248.447+-8.101      ?     252.176+-8.846         ? might be 1.0150x slower
   imaging-darkroom                                  148.031+-4.077            142.918+-5.047           might be 1.0358x faster
   imaging-desaturate                                 64.936+-2.599      ?      65.988+-3.548         ? might be 1.0162x slower
   imaging-gaussian-blur                             115.969+-3.640            113.935+-2.542           might be 1.0179x faster
   json-parse-financial                               48.101+-3.141             45.361+-1.662           might be 1.0604x faster
   json-stringify-tinderbox                           61.687+-3.626             58.136+-2.064           might be 1.0611x faster
   stanford-crypto-aes                                59.113+-1.579      ?      59.206+-1.492         ?
   stanford-crypto-ccm                                64.187+-2.853             55.956+-8.976           might be 1.1471x faster
   stanford-crypto-pbkdf2                            180.639+-5.349            179.536+-7.031         
   stanford-crypto-sha256-iterative                   56.741+-4.047      ?      57.864+-4.413         ? might be 1.0198x slower

   <arithmetic> *                                    120.908+-1.064            119.573+-1.267           might be 1.0112x faster
   <geometric>                                       102.763+-1.213            100.595+-1.592           might be 1.0216x faster
   <harmonic>                                         88.910+-1.396             86.228+-1.931           might be 1.0311x faster

                                                        TipOfTree                  Varargs                                      
JSRegress:
   abs-boolean                                        2.6377+-0.0478            2.6261+-0.0228        
   adapt-to-double-divide                            17.2713+-1.4470           16.8875+-0.2573          might be 1.0227x faster
   aliased-arguments-getbyval                         0.8099+-0.0128     ?      0.8441+-0.0230        ? might be 1.0423x slower
   allocate-big-object                                2.4469+-0.1833            2.4453+-0.2034        
   arity-mismatch-inlining                            0.8331+-0.0382            0.8124+-0.0204          might be 1.0255x faster
   array-access-polymorphic-structure                 6.6504+-0.8718     ?      6.7401+-0.8589        ? might be 1.0135x slower
   array-nonarray-polymorhpic-access                 36.4305+-1.6605     ?     40.2568+-9.1696        ? might be 1.1050x slower
   array-prototype-every                             90.8488+-3.6178           90.0061+-3.8067        
   array-prototype-forEach                          103.5016+-30.9499          90.2314+-3.5981          might be 1.1471x faster
   array-prototype-map                              114.6580+-4.1355     ?    117.2358+-2.7495        ? might be 1.0225x slower
   array-prototype-some                              92.2380+-3.8656           90.3232+-2.6296          might be 1.0212x faster
   array-splice-contiguous                           44.8178+-1.9957           44.2948+-1.8299          might be 1.0118x faster
   array-with-double-add                              4.0507+-0.0372            4.0458+-0.0647        
   array-with-double-increment                        3.1903+-0.0473            3.1876+-0.0722        
   array-with-double-mul-add                          5.0199+-0.0758            4.9993+-0.0399        
   array-with-double-sum                              3.2251+-0.0490            3.2149+-0.0281        
   array-with-int32-add-sub                           6.7545+-0.1483     ?      7.4878+-1.9125        ? might be 1.1086x slower
   array-with-int32-or-double-sum                     3.2842+-0.0617     ?      3.3610+-0.1915        ? might be 1.0234x slower
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     35.2952+-2.2518     ?     35.8361+-1.1746        ? might be 1.0153x slower
   ArrayBuffer-DataView-alloc-long-lived             13.9316+-1.3197     ?     14.1142+-1.0574        ? might be 1.0131x slower
   ArrayBuffer-Int32Array-byteOffset                  3.4515+-0.0448     ?      3.4736+-0.0454        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     32.9243+-1.2013     ?     33.0442+-1.3008        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     23.6692+-1.8182     ?     25.1093+-7.1848        ? might be 1.0608x slower
   ArrayBuffer-Int8Array-alloc-long-lived            13.0114+-0.8883     ?     13.8030+-1.5158        ? might be 1.0608x slower
   ArrayBuffer-Int8Array-alloc                       12.7911+-3.6218           11.4818+-0.8549          might be 1.1140x faster
   asmjs_bool_bug                                     7.5516+-0.1908            7.3816+-0.1379          might be 1.0230x faster
   assign-custom-setter-polymorphic                   2.9897+-0.0799     ?      3.0284+-0.0761        ? might be 1.0129x slower
   assign-custom-setter                               4.3310+-0.5341            4.1318+-0.0461          might be 1.0482x faster
   basic-set                                         10.3272+-0.2668           10.2016+-0.2047          might be 1.0123x faster
   big-int-mul                                        3.9340+-0.1285     ?      4.0498+-0.2215        ? might be 1.0294x slower
   boolean-test                                       2.9945+-0.0927            2.9519+-0.0255          might be 1.0144x faster
   branch-fold                                        3.6652+-0.0283            3.6361+-0.0452        
   by-val-generic                                     7.8883+-0.1142     ?      7.9510+-0.1299        ?
   call-spread-apply                                 16.0472+-1.5990           14.6655+-2.0460          might be 1.0942x faster
   call-spread-call                                   6.5043+-1.0307            5.7029+-0.0668          might be 1.1405x faster
   captured-assignments                               0.4437+-0.0062     ?      0.4476+-0.0042        ?
   cast-int-to-double                                 5.2476+-0.0941            5.2428+-0.0564        
   cell-argument                                      8.1771+-0.2442     ?      8.2955+-0.0698        ? might be 1.0145x slower
   cfg-simplify                                       2.8748+-0.0535     ?      2.9481+-0.0920        ? might be 1.0255x slower
   chain-getter-access                                9.7045+-0.1511            9.6715+-0.1783        
   cmpeq-obj-to-obj-other                             9.8755+-0.4111     ?     10.2097+-0.6870        ? might be 1.0338x slower
   constant-test                                      4.8528+-0.0237     ?      4.9151+-0.1290        ? might be 1.0128x slower
   DataView-custom-properties                        39.7219+-1.6810           38.8782+-1.2013          might be 1.0217x faster
   delay-tear-off-arguments-strictmode               24.7915+-2.5167           23.3879+-1.2208          might be 1.0600x faster
   deltablue-varargs                               1128.9684+-13.4659    ^    869.3823+-6.4294        ^ definitely 1.2986x faster
   destructuring-arguments                            5.2672+-0.1878            5.1293+-0.0532          might be 1.0269x faster
   destructuring-swap                                 4.9635+-0.0276            4.9562+-0.0338        
   direct-arguments-getbyval                          1.0118+-0.2122            0.9296+-0.1317          might be 1.0884x faster
   div-boolean-double                                 5.1831+-0.0671     ?      5.1976+-0.0825        ?
   div-boolean                                        7.8610+-0.3418            7.8045+-0.1431        
   double-get-by-val-out-of-bounds                    4.5775+-0.7376            4.3300+-0.2577          might be 1.0572x faster
   double-pollution-getbyval                          8.8092+-0.0545            8.8013+-0.0289        
   double-pollution-putbyoffset                       4.0352+-0.0172     ^      4.0001+-0.0146        ^ definitely 1.0088x faster
   double-to-int32-typed-array-no-inline              2.2837+-0.1089     ?      2.2909+-0.0737        ?
   double-to-int32-typed-array                        1.8899+-0.0664     ?      1.9104+-0.0481        ? might be 1.0109x slower
   double-to-uint32-typed-array-no-inline             2.3076+-0.0628            2.3043+-0.0406        
   double-to-uint32-typed-array                       1.9854+-0.0299     ?      1.9926+-0.0513        ?
   elidable-new-object-dag                           41.9845+-1.3982           41.5133+-1.0797          might be 1.0113x faster
   elidable-new-object-roflcopter                    49.6423+-2.1235           48.4762+-1.6715          might be 1.0241x faster
   elidable-new-object-then-call                     39.2714+-1.7955           39.0883+-2.0406        
   elidable-new-object-tree                          45.9883+-1.6952           43.7314+-1.4148          might be 1.0516x faster
   empty-string-plus-int                              5.3034+-0.2852     ?      5.6281+-0.8568        ? might be 1.0612x slower
   emscripten-cube2hash                              37.8470+-0.7233     ?     37.8811+-1.9372        ?
   external-arguments-getbyval                        1.3445+-0.1326            1.3093+-0.0452          might be 1.0269x faster
   external-arguments-putbyval                        2.0651+-0.0817     ?      2.4710+-0.6981        ? might be 1.1965x slower
   fixed-typed-array-storage-var-index                1.3889+-0.3333            1.2710+-0.0625          might be 1.0928x faster
   fixed-typed-array-storage                          0.9009+-0.0701     ?      0.9010+-0.0602        ?
   Float32Array-matrix-mult                           4.2402+-0.1255     ?      4.2472+-0.0959        ?
   Float32Array-to-Float64Array-set                  58.6918+-3.5148     ?     61.5549+-2.7903        ? might be 1.0488x slower
   Float64Array-alloc-long-lived                     66.2131+-1.2333     ?     66.5959+-2.3150        ?
   Float64Array-to-Int16Array-set                    71.1981+-0.6071           70.7301+-3.7265        
   fold-double-to-int                                14.2998+-1.7390     ?     14.6755+-1.3246        ? might be 1.0263x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.5632+-1.5409     ?     10.9552+-0.4857        ? might be 1.0371x slower
   fold-get-by-id-to-multi-get-by-offset              8.5971+-0.5248     ?      9.4651+-0.5530        ? might be 1.1010x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.9455+-0.9358            8.3585+-0.9818          might be 1.0702x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.4058+-1.3022     ?      8.8861+-0.9172        ? might be 1.0571x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.6353+-1.7273     ?      7.8753+-0.9380        ? might be 1.0314x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.8990+-0.2920            4.5053+-0.4021          might be 1.0874x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     10.2271+-1.0402            9.3031+-1.1251          might be 1.0993x faster
   fold-put-by-id-to-multi-put-by-offset              9.1123+-0.7102            8.6698+-0.6625          might be 1.0510x faster
   fold-put-structure                                 5.7914+-0.9123            5.7796+-0.6543        
   for-of-iterate-array-entries                       5.9075+-0.8253     ?      6.6237+-1.0269        ? might be 1.1212x slower
   for-of-iterate-array-keys                          2.8931+-0.1871     ?      2.9036+-0.2203        ?
   for-of-iterate-array-values                        2.6142+-0.0791     ?      2.6244+-0.2241        ?
   fround                                            19.4590+-0.4524           19.2622+-0.5047          might be 1.0102x faster
   ftl-library-inlining-dataview                     69.4948+-2.0472     ?     70.5918+-4.6007        ? might be 1.0158x slower
   ftl-library-inlining                              84.0391+-17.7823    ?     84.3176+-11.9040       ?
   function-dot-apply                                 1.4873+-0.1187     ?      1.4989+-0.0817        ?
   function-test                                      3.3677+-0.1178            3.3170+-0.0377          might be 1.0153x faster
   function-with-eval                               119.9775+-5.9320          114.4809+-2.4122          might be 1.0480x faster
   gcse-poly-get-less-obvious                        19.6985+-1.7078     ?     21.2074+-1.3506        ? might be 1.0766x slower
   gcse-poly-get                                     22.3350+-2.6810           22.2955+-1.5330        
   gcse                                               4.3015+-0.1976            4.2998+-0.1830        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7065+-0.0494     ?      2.7800+-0.1353        ? might be 1.0272x slower
   get-by-id-bimorphic-check-structure-elimination   
                                                      6.0774+-0.3222     ?      6.1314+-0.1992        ?
   get-by-id-chain-from-try-block                    10.5632+-1.5220            9.1527+-0.8315          might be 1.1541x faster
   get-by-id-check-structure-elimination              5.0083+-0.0573     ?      5.0472+-0.1323        ?
   get-by-id-proto-or-self                           18.5756+-2.0665           17.3213+-0.9749          might be 1.0724x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8789+-0.0520            2.8640+-0.0143        
   get-by-id-self-or-proto                           17.3221+-0.9450     ?     17.8546+-0.5510        ? might be 1.0307x slower
   get-by-val-out-of-bounds                           4.1611+-0.0774     ?      4.1709+-0.0703        ?
   get_callee_monomorphic                             3.7891+-0.1650            3.7732+-0.2186        
   get_callee_polymorphic                             3.4610+-0.0603            3.3940+-0.0592          might be 1.0197x faster
   getter-no-activation                               4.6043+-0.3420            4.4551+-0.4731          might be 1.0335x faster
   getter-richards                                  126.8127+-5.3953     ?    127.3516+-4.3695        ?
   getter                                             5.0455+-0.0441     ?      5.0798+-0.0714        ?
   global-var-const-infer-fire-from-opt               0.8233+-0.0358     ?      0.9151+-0.1241        ? might be 1.1114x slower
   global-var-const-infer                             0.8808+-0.1033     ^      0.7131+-0.0262        ^ definitely 1.2353x faster
   HashMap-put-get-iterate-keys                      27.1720+-0.6724     ?     27.2942+-0.4762        ?
   HashMap-put-get-iterate                           27.8050+-1.0344     ?     27.8396+-0.8134        ?
   HashMap-string-put-get-iterate                    27.1544+-1.0001           26.5079+-0.5395          might be 1.0244x faster
   hoist-make-rope                                   11.9669+-1.3628           11.3705+-0.9499          might be 1.0524x faster
   hoist-poly-check-structure-effectful-loop   
                                                      4.9547+-0.2502            4.9170+-0.1121        
   hoist-poly-check-structure                         3.6540+-0.1390            3.6132+-0.0392          might be 1.0113x faster
   imul-double-only                                   7.6957+-0.4688     ?      7.7939+-0.4535        ? might be 1.0128x slower
   imul-int-only                                     10.0865+-0.8308            9.5500+-0.1753          might be 1.0562x faster
   imul-mixed                                         7.6761+-0.3576     ?      7.9413+-0.5426        ? might be 1.0345x slower
   in-four-cases                                     18.9210+-0.2240     ?     18.9618+-0.1739        ?
   in-one-case-false                                  9.9697+-0.2412            9.8764+-0.1707        
   in-one-case-true                                   9.9499+-0.2079     ?      9.9678+-0.2899        ?
   in-two-cases                                      10.0929+-0.0543     ?     10.0970+-0.0866        ?
   indexed-properties-in-objects                      2.8582+-0.0165     ?      2.8665+-0.0620        ?
   infer-closure-const-then-mov-no-inline             3.6946+-0.0290     ?      3.7004+-0.0135        ?
   infer-closure-const-then-mov                      18.9068+-1.3999     ?     19.5348+-1.3789        ? might be 1.0332x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     12.9336+-1.6826     ?     13.1229+-2.0299        ? might be 1.0146x slower
   infer-closure-const-then-put-to-scope             24.0260+-1.7423           23.8776+-1.7231        
   infer-closure-const-then-reenter-no-inline   
                                                     51.5336+-3.3131     ?     51.5431+-2.6450        ?
   infer-closure-const-then-reenter                  18.6663+-0.4180     ?     19.0751+-1.0524        ? might be 1.0219x slower
   infer-constant-global-property                    31.9668+-2.1745     ?     33.7634+-3.2238        ? might be 1.0562x slower
   infer-constant-property                            2.6960+-0.1349            2.6542+-0.0379          might be 1.0157x faster
   infer-one-time-closure-ten-vars                   11.9591+-0.1126     ?     12.3551+-1.3133        ? might be 1.0331x slower
   infer-one-time-closure-two-vars                   12.0148+-1.4513           11.7224+-0.3021          might be 1.0249x faster
   infer-one-time-closure                            11.8381+-0.5616           11.6703+-0.2728          might be 1.0144x faster
   infer-one-time-deep-closure                       21.3217+-1.4321           20.6117+-0.7689          might be 1.0344x faster
   inline-arguments-access                            1.4198+-0.0641     ?      1.4714+-0.1059        ? might be 1.0364x slower
   inline-arguments-aliased-access                    1.6140+-0.0440            1.6122+-0.0428        
   inline-arguments-local-escape                     12.4343+-0.4100     ?     12.5323+-0.5878        ?
   inline-get-scoped-var                              4.1412+-0.1152     ?      4.2033+-0.1242        ? might be 1.0150x slower
   inlined-put-by-id-transition                      10.2543+-0.5430     ?     10.6163+-0.8226        ? might be 1.0353x slower
   int-or-other-abs-then-get-by-val                   4.8823+-0.0420     ?      4.8839+-0.0190        ?
   int-or-other-abs-zero-then-get-by-val             17.4277+-0.4396           17.1905+-0.3863          might be 1.0138x faster
   int-or-other-add-then-get-by-val                   4.3526+-0.2856            4.2052+-0.0249          might be 1.0350x faster
   int-or-other-add                                   5.3398+-0.2020            5.2438+-0.1037          might be 1.0183x faster
   int-or-other-div-then-get-by-val                   4.2901+-0.0805     ?      4.3413+-0.2182        ? might be 1.0119x slower
   int-or-other-max-then-get-by-val                   4.4120+-0.1236            4.3840+-0.0995        
   int-or-other-min-then-get-by-val                   4.4083+-0.0691     ?      4.4243+-0.0704        ?
   int-or-other-mod-then-get-by-val                   3.9061+-0.0579            3.8982+-0.0808        
   int-or-other-mul-then-get-by-val                   3.8535+-0.0500     ?      3.8556+-0.1136        ?
   int-or-other-neg-then-get-by-val                   4.7567+-0.1728            4.7091+-0.0494          might be 1.0101x faster
   int-or-other-neg-zero-then-get-by-val             18.8747+-1.7125           17.9097+-1.5164          might be 1.0539x faster
   int-or-other-sub-then-get-by-val                   4.4021+-0.4287            4.3807+-0.3143        
   int-or-other-sub                                   3.4543+-0.0444     ?      3.5116+-0.1983        ? might be 1.0166x slower
   int-overflow-local                                 4.3218+-0.1094            4.3100+-0.0753        
   Int16Array-alloc-long-lived                       49.8179+-2.4099           48.9523+-1.5323          might be 1.0177x faster
   Int16Array-bubble-sort-with-byteLength            21.7593+-1.0312     ^     20.1429+-0.3934        ^ definitely 1.0802x faster
   Int16Array-bubble-sort                            21.5291+-1.0514     ?     22.0817+-1.5141        ? might be 1.0257x slower
   Int16Array-load-int-mul                            1.5117+-0.1035            1.4672+-0.0157          might be 1.0303x faster
   Int16Array-to-Int32Array-set                      54.9065+-2.9240     ?     54.9702+-2.3688        ?
   Int32Array-alloc-large                            24.8816+-0.7255     ?     24.9344+-0.7280        ?
   Int32Array-alloc-long-lived                       54.4545+-1.4576           54.3951+-2.4334        
   Int32Array-alloc                                   3.1705+-0.3587     ?      3.4528+-0.4989        ? might be 1.0890x slower
   Int32Array-Int8Array-view-alloc                    7.0433+-0.6846     ?      7.2664+-0.9452        ? might be 1.0317x slower
   int52-spill                                        6.4556+-0.3497            6.3528+-0.0827          might be 1.0162x faster
   Int8Array-alloc-long-lived                        46.5347+-2.1107           45.5233+-1.8827          might be 1.0222x faster
   Int8Array-load-with-byteLength                     3.3068+-0.0344            3.3063+-0.0499        
   Int8Array-load                                     3.2994+-0.0341     ?      3.4365+-0.1332        ? might be 1.0416x slower
   integer-divide                                    11.7507+-0.2107           11.7002+-0.2199        
   integer-modulo                                     2.0112+-0.1142     ?      2.0341+-0.2376        ? might be 1.0114x slower
   large-int-captured                                 7.5880+-2.3251            7.5860+-1.1380        
   large-int-neg                                     17.2301+-1.3705           17.0892+-0.6020        
   large-int                                         15.9727+-1.1895           15.3453+-0.4287          might be 1.0409x faster
   logical-not                                        4.5341+-0.0633     ?      4.5882+-0.0225        ? might be 1.0119x slower
   lots-of-fields                                    10.4685+-0.4544           10.1754+-0.9127          might be 1.0288x faster
   make-indexed-storage                               2.8998+-0.1815     ?      2.9312+-0.3173        ? might be 1.0108x slower
   make-rope-cse                                      4.2317+-0.4311     ?      4.4452+-0.5021        ? might be 1.0504x slower
   marsaglia-larger-ints                             39.3074+-1.4513     ?     40.5042+-1.7863        ? might be 1.0304x slower
   marsaglia-osr-entry                               23.2778+-0.9720           23.1380+-1.5516        
   max-boolean                                        2.4907+-0.0229     ?      2.5090+-0.0349        ?
   method-on-number                                  17.3437+-0.9687     ?     17.9661+-2.0800        ? might be 1.0359x slower
   min-boolean                                        2.5390+-0.0973     ?      2.5396+-0.0908        ?
   minus-boolean-double                               3.1490+-0.0499            3.1427+-0.0506        
   minus-boolean                                      2.3213+-0.0191     ?      2.3464+-0.0802        ? might be 1.0108x slower
   misc-strict-eq                                    37.5551+-0.9933     ?     37.9972+-0.8613        ? might be 1.0118x slower
   mod-boolean-double                                11.4840+-0.7778           11.0885+-0.2404          might be 1.0357x faster
   mod-boolean                                        7.8508+-0.0883            7.8348+-0.1187        
   mul-boolean-double                                 3.7596+-0.1519     ?      3.7598+-0.1750        ?
   mul-boolean                                        2.8548+-0.0688     ?      2.8892+-0.1166        ? might be 1.0121x slower
   neg-boolean                                        3.1613+-0.0477            3.1405+-0.0380        
   negative-zero-divide                               0.3408+-0.0189            0.3299+-0.0114          might be 1.0331x faster
   negative-zero-modulo                               0.3334+-0.0127     ?      0.3488+-0.0213        ? might be 1.0461x slower
   negative-zero-negate                               0.3169+-0.0064     ?      0.3278+-0.0405        ? might be 1.0342x slower
   nested-function-parsing                           23.5352+-0.1019           23.4799+-0.9589        
   new-array-buffer-dead                              2.7483+-0.1310            2.6801+-0.0394          might be 1.0254x faster
   new-array-buffer-push                              8.2676+-0.8416            7.6698+-0.8276          might be 1.0779x faster
   new-array-dead                                    12.1735+-0.3248           12.0669+-0.4827        
   new-array-push                                     5.4013+-0.1063            5.2916+-0.0714          might be 1.0207x faster
   number-test                                        2.9772+-0.0615            2.9765+-0.0559        
   object-closure-call                                5.5044+-0.2078     ?      5.5243+-0.0994        ?
   object-test                                        3.0634+-0.1277     ?      3.0794+-0.0765        ?
   obvious-sink-pathology-taken                     143.5330+-2.6452          143.0437+-3.2482        
   obvious-sink-pathology                           138.1538+-3.4589     ?    141.8939+-3.4854        ? might be 1.0271x slower
   obviously-elidable-new-object                     36.4009+-1.1042           34.4602+-1.2098          might be 1.0563x faster
   plus-boolean-arith                                 2.5179+-0.0634            2.4967+-0.0285        
   plus-boolean-double                                3.1927+-0.0948            3.1597+-0.0352          might be 1.0105x faster
   plus-boolean                                       2.3813+-0.0353            2.3586+-0.0290        
   poly-chain-access-different-prototypes-simple   
                                                      3.2906+-0.0517            3.2365+-0.0194          might be 1.0167x faster
   poly-chain-access-different-prototypes             2.5929+-0.2615            2.5549+-0.3371          might be 1.0149x faster
   poly-chain-access-simpler                          3.3089+-0.0614     ?      3.3249+-0.0838        ?
   poly-chain-access                                  2.7039+-0.1782            2.5198+-0.2480          might be 1.0731x faster
   poly-stricteq                                     62.1642+-1.0595           61.3830+-3.6927          might be 1.0127x faster
   polymorphic-array-call                             1.8458+-0.0217     ?      1.8738+-0.1097        ? might be 1.0151x slower
   polymorphic-get-by-id                              3.0846+-0.0460     ?      3.1541+-0.0999        ? might be 1.0225x slower
   polymorphic-put-by-id                             31.3785+-2.8477           30.3222+-1.6786          might be 1.0348x faster
   polymorphic-structure                             16.0190+-1.5044           14.8763+-0.1985          might be 1.0768x faster
   polyvariant-monomorphic-get-by-id                  8.4245+-0.0449     ?      8.4300+-0.0834        ?
   proto-getter-access                                9.6556+-0.1671            9.6091+-0.2301        
   put-by-id-replace-and-transition                   8.5211+-0.2216     ?      8.7251+-0.3925        ? might be 1.0239x slower
   put-by-id-slightly-polymorphic                     2.8475+-0.0471            2.8003+-0.0350          might be 1.0169x faster
   put-by-id                                         12.9555+-0.4101     ?     13.0852+-0.7559        ? might be 1.0100x slower
   put-by-val-direct                                  0.5490+-0.0293            0.5399+-0.0260          might be 1.0167x faster
   put-by-val-large-index-blank-indexing-type   
                                                      5.8709+-0.7326     ?      6.2231+-0.8885        ? might be 1.0600x slower
   put-by-val-machine-int                             2.5232+-0.0126     ?      2.5819+-0.1383        ? might be 1.0233x slower
   rare-osr-exit-on-local                            14.8328+-0.3666           14.7714+-0.2581        
   register-pressure-from-osr                        22.7411+-1.3536           22.1397+-0.6402          might be 1.0272x faster
   setter                                             5.4062+-0.4073            5.2198+-0.2041          might be 1.0357x faster
   simple-activation-demo                            26.8653+-1.9951           26.3792+-2.2680          might be 1.0184x faster
   simple-getter-access                              12.4102+-0.2023     ?     12.7237+-0.3486        ? might be 1.0253x slower
   simple-poly-call-nested                            8.0687+-0.1532     ?      8.2702+-0.3396        ? might be 1.0250x slower
   simple-poly-call                                   1.2332+-0.0905     ?      1.2427+-0.0739        ?
   sin-boolean                                       21.9297+-2.6684     ?     23.2614+-3.2645        ? might be 1.0607x slower
   sinkable-new-object-dag                           69.7868+-2.5697           68.2832+-1.5299          might be 1.0220x faster
   sinkable-new-object-taken                         51.3703+-2.9684     ?     54.8672+-11.2974       ? might be 1.0681x slower
   sinkable-new-object                               38.0990+-1.3234           37.8446+-1.0050        
   slow-array-profile-convergence                     2.8228+-0.2243            2.7380+-0.0521          might be 1.0310x faster
   slow-convergence                                   3.2226+-0.1327            3.1775+-0.0555          might be 1.0142x faster
   sparse-conditional                                 1.0735+-0.0129     ?      1.1053+-0.0450        ? might be 1.0296x slower
   splice-to-remove                                  18.4343+-1.1731           18.2231+-1.3219          might be 1.0116x faster
   string-char-code-at                               17.2371+-1.2694     ?     17.4187+-1.5697        ? might be 1.0105x slower
   string-concat-object                               2.4487+-0.3330            2.3981+-0.5376          might be 1.0211x faster
   string-concat-pair-object                          2.4323+-0.4084            2.2473+-0.3172          might be 1.0823x faster
   string-concat-pair-simple                         11.5662+-2.4361           10.9451+-1.1738          might be 1.0567x faster
   string-concat-simple                              11.5237+-0.9203           11.1984+-1.1504          might be 1.0290x faster
   string-cons-repeat                                 7.4022+-0.5285     ?      8.1506+-1.1613        ? might be 1.1011x slower
   string-cons-tower                                  7.5127+-0.4463            7.4622+-0.8353        
   string-equality                                   21.0863+-3.3804           19.1524+-1.9284          might be 1.1010x faster
   string-get-by-val-big-char                         6.8618+-0.0341     ?      7.9143+-2.3952        ? might be 1.1534x slower
   string-get-by-val-out-of-bounds-insane             4.5302+-1.5902            3.7760+-0.0904          might be 1.1998x faster
   string-get-by-val-out-of-bounds                    5.1728+-0.0918     ?      5.2310+-0.0974        ? might be 1.0113x slower
   string-get-by-val                                  3.1812+-0.0686            3.1576+-0.0323        
   string-hash                                        2.0377+-0.0781            2.0217+-0.0260        
   string-long-ident-equality                        15.4439+-0.9705     ?     15.5222+-0.8648        ?
   string-repeat-arith                               33.8103+-2.0808     ?     34.3999+-1.8125        ? might be 1.0174x slower
   string-sub                                        70.6002+-2.7559           67.9901+-2.0423          might be 1.0384x faster
   string-test                                        2.9440+-0.1276            2.9291+-0.1129        
   string-var-equality                               32.8765+-2.1384           32.8169+-2.6278        
   structure-hoist-over-transitions                   2.3757+-0.0726            2.3644+-0.0328        
   substring-concat-weird                            41.3951+-1.6361           40.6172+-1.3000          might be 1.0192x faster
   substring-concat                                  41.9649+-1.8279     ?     42.6056+-2.1366        ? might be 1.0153x slower
   substring                                         46.5783+-2.2780     ?     47.5019+-2.0320        ? might be 1.0198x slower
   switch-char-constant                               2.6879+-0.0301     ?      2.8632+-0.4446        ? might be 1.0652x slower
   switch-char                                        7.0628+-0.7787            6.9147+-0.6594          might be 1.0214x faster
   switch-constant                                    9.9967+-0.2589            9.6079+-0.8337          might be 1.0405x faster
   switch-string-basic-big-var                       16.4856+-1.4392     ?     16.5869+-1.1903        ?
   switch-string-basic-big                           16.6488+-1.0362           14.7524+-1.5907          might be 1.1285x faster
   switch-string-basic-var                           15.2552+-1.0387     ?     15.6516+-1.5815        ? might be 1.0260x slower
   switch-string-basic                               15.6749+-1.6268           15.3260+-1.3779          might be 1.0228x faster
   switch-string-big-length-tower-var                21.1968+-1.4002           20.3350+-1.4833          might be 1.0424x faster
   switch-string-length-tower-var                    15.6240+-1.4799           14.9983+-0.5767          might be 1.0417x faster
   switch-string-length-tower                        13.0468+-1.1253     ?     14.1802+-1.6277        ? might be 1.0869x slower
   switch-string-short                               14.1847+-1.9313           12.4224+-0.0933          might be 1.1419x faster
   switch                                            14.3986+-1.7643           11.9808+-1.9113          might be 1.2018x faster
   tear-off-arguments-simple                          1.8053+-0.0314     ?      1.8132+-0.0251        ?
   tear-off-arguments                                 2.6222+-0.0492     ?      2.9440+-0.7427        ? might be 1.1227x slower
   temporal-structure                                12.7605+-1.5458           12.4714+-0.8558          might be 1.0232x faster
   to-int32-boolean                                  13.9764+-0.6531           13.9762+-1.0175        
   undefined-property-access                        399.4307+-6.0751          395.6478+-8.7134        
   undefined-test                                     3.0486+-0.1243            3.0361+-0.1414        
   unprofiled-licm                                   22.8896+-0.7671     ?     24.1981+-2.2013        ? might be 1.0572x slower
   weird-inlining-const-prop                          2.1449+-0.1418            2.0306+-0.0915          might be 1.0563x faster

   <arithmetic>                                      21.6450+-0.2338     ^     20.6024+-0.0993        ^ definitely 1.0506x faster
   <geometric> *                                      8.2254+-0.0310            8.1837+-0.0384          might be 1.0051x faster
   <harmonic>                                         4.0410+-0.0231            4.0312+-0.0445          might be 1.0024x faster

                                                        TipOfTree                  Varargs                                      
AsmBench:
   bigfib.cpp                                       509.9665+-3.4647          508.5284+-4.5365        
   cray.c                                           462.3071+-15.9530         455.0837+-4.8121          might be 1.0159x faster
   dry.c                                            522.3138+-8.9570          519.0764+-11.7603       
   FloatMM.c                                        759.7880+-14.7970         754.8067+-8.4566        
   gcc-loops.cpp                                   4350.9079+-27.7889        4349.3158+-17.0638       
   n-body.c                                        1044.2198+-7.0197         1029.9733+-18.1867         might be 1.0138x faster
   Quicksort.c                                      465.0140+-6.2040          461.1965+-10.5657       
   stepanov_container.cpp                          3703.3679+-37.8267        3690.2519+-27.8405       
   Towers.c                                         272.8492+-6.6793          271.8270+-7.0600        

   <arithmetic>                                    1343.4149+-6.5278         1337.7844+-6.8570          might be 1.0042x faster
   <geometric> *                                    836.0450+-6.1720          830.4153+-6.7441          might be 1.0068x faster
   <harmonic>                                       615.1226+-6.4918          610.7100+-6.4641          might be 1.0072x faster

                                                        TipOfTree                  Varargs                                      
CompressionBench:
   huffman                                          523.4119+-14.7566    ?    533.9702+-6.5180        ? might be 1.0202x slower
   arithmetic-simple                                438.0364+-10.2581         435.5862+-10.6094       
   arithmetic-precise                               329.2513+-6.3226     ?    335.0275+-5.9349        ? might be 1.0175x slower
   arithmetic-complex-precise                       329.5603+-10.3139    ?    344.8861+-56.4117       ? might be 1.0465x slower
   arithmetic-precise-order-0                       471.9719+-9.3184     ?    473.6711+-10.0789       ?
   arithmetic-precise-order-1                       377.0987+-5.4909     ?    405.3004+-77.1429       ? might be 1.0748x slower
   arithmetic-precise-order-2                       412.9557+-6.1838          409.1986+-10.6570       
   arithmetic-simple-order-1                        465.3090+-6.0304     ?    467.9609+-6.0845        ?
   arithmetic-simple-order-2                        515.0670+-9.5275          509.0608+-10.1933         might be 1.0118x faster
   lz-string                                        351.5260+-3.4569     ?    363.1371+-9.3085        ? might be 1.0330x slower

   <arithmetic>                                     421.4188+-3.2817     ?    427.7799+-8.9411        ? might be 1.0151x slower
   <geometric> *                                    415.6298+-3.0339     ?    421.9763+-8.8476        ? might be 1.0153x slower
   <harmonic>                                       409.8505+-2.9327     ?    416.1544+-8.8038        ? might be 1.0154x slower

                                                        TipOfTree                  Varargs                                      
All benchmarks:
   <arithmetic>                                     105.0415+-0.4271          104.2315+-0.4958          might be 1.0078x faster
   <geometric>                                       13.6197+-0.0349           13.5614+-0.0464          might be 1.0043x faster
   <harmonic>                                         3.4227+-0.0150            3.4201+-0.0182          might be 1.0008x faster

                                                        TipOfTree                  Varargs                                      
Geomean of preferred means:
   <scaled-result>                                   66.5657+-0.2350           66.4780+-0.3541          might be 1.0013x faster
Comment 24 Filip Pizlo 2015-02-16 20:49:09 PST
Created attachment 246722 [details]
towards 32-bit support

Implemented 32-bit support, but it's still failing a lot of tests.
Comment 25 Filip Pizlo 2015-02-16 21:15:51 PST
Created attachment 246724 [details]
x86 32-bit and 64-bit pass all tests

I still have to do minor tweaks for ARM, but it's ready for review.
Comment 26 WebKit Commit Bot 2015-02-16 21:18:10 PST
Attachment 246724 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:689:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:674:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1417:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1426:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1439:  An else statement can be removed when the prior "if" concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1526:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1254:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1271:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:298:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/jit/JITCall.cpp:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:123:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:134:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:142:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:475:  The parameter name "node" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:476:  The parameter name "node" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 16 in 88 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 27 Oliver Hunt 2015-02-17 08:46:47 PST
Comment on attachment 246724 [details]
x86 32-bit and 64-bit pass all tests

y u so big :-/

r=me
Comment 28 Csaba Osztrogonác 2015-02-17 09:26:52 PST
I tested the latest patch and it doesn't build on ARMv7 Linux. Could you
possibly give us a little bit time (max a day) to fix before landing?
Comment 29 Csaba Osztrogonác 2015-02-17 09:30:49 PST
(In reply to comment #28)
> I tested the latest patch and it doesn't build on ARMv7 Linux. Could you
> possibly give us a little bit time (max a day) to fix before landing?

At least helpers are missing from Source/JavaScriptCore/jit/CCallHelpers.h,
I don't know if there is any issue later, but I'm on it.
Comment 30 Csaba Osztrogonác 2015-02-17 10:20:33 PST
I fixed the ARM Linux build in bug141714, please review 
and land it before landing this patch. Thanks.

Additionally I started JSC tests, it is still running, but no regression at 10% .
Comment 31 Filip Pizlo 2015-02-17 10:36:07 PST
(In reply to comment #28)
> I tested the latest patch and it doesn't build on ARMv7 Linux. Could you
> possibly give us a little bit time (max a day) to fix before landing?

In the past, the way we worked this out was that I CC'd you on the bug before landing and then you would fix after.

Are you proposing a change to this?
Comment 32 Csaba Osztrogonác 2015-02-17 10:38:17 PST
(In reply to comment #31)
> (In reply to comment #28)
> > I tested the latest patch and it doesn't build on ARMv7 Linux. Could you
> > possibly give us a little bit time (max a day) to fix before landing?
> 
> In the past, the way we worked this out was that I CC'd you on the bug
> before landing and then you would fix after.
> 
> Are you proposing a change to this?

Nope, I thought it is a bigger change, but I already fixed it. ;)
Comment 33 Csaba Osztrogonác 2015-02-17 10:42:26 PST
I noticed it wasn't ARM Linux specific build issue,
it was exactly same as the iOS EWS noticed.
Comment 34 Filip Pizlo 2015-02-17 11:10:22 PST
Created attachment 246757 [details]
closer to landing

Fixed some debug asserts and crashes.  Still need to deal with some ARMs.
Comment 35 WebKit Commit Bot 2015-02-17 11:12:53 PST
Attachment 246757 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:689:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:674:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1417:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:1526:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1254:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:1271:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/bytecode/CallLinkStatus.cpp:298:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:54:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:123:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:134:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp:142:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 11 in 94 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 36 Filip Pizlo 2015-02-18 09:06:36 PST
Created attachment 246819 [details]
ARM64 works
Comment 37 Filip Pizlo 2015-02-18 11:57:08 PST
Landed in http://trac.webkit.org/changeset/180279