Bug 143822 - [EFL] Enable FTL JIT by default on X86_64
Summary: [EFL] Enable FTL JIT by default on X86_64
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Csaba Osztrogonác
URL:
Keywords:
Depends on: 143087 143089
Blocks: 143604 143605
  Show dependency treegraph
 
Reported: 2015-04-16 05:18 PDT by Csaba Osztrogonác
Modified: 2015-11-20 03:38 PST (History)
12 users (show)

See Also:


Attachments
Patch (2.84 KB, patch)
2015-04-16 05:22 PDT, Csaba Osztrogonác
no flags Details | Formatted Diff | Diff
Patch (2.83 KB, patch)
2015-04-16 06:43 PDT, Csaba Osztrogonác
no flags Details | Formatted Diff | Diff
X86_64 Linux performance results (50.55 KB, text/plain)
2015-04-16 08:06 PDT, Csaba Osztrogonác
no flags Details
X86_64 OS X performance results (49.86 KB, text/plain)
2015-04-16 08:11 PDT, Csaba Osztrogonác
no flags Details
Patch (2.83 KB, patch)
2015-10-27 10:15 PDT, Csaba Osztrogonác
no flags Details | Formatted Diff | Diff
Patch (3.42 KB, patch)
2015-10-27 11:09 PDT, Csaba Osztrogonác
no flags Details | Formatted Diff | Diff
new X86_64 Linux performance results with LLVM 3.6 (63.03 KB, text/plain)
2015-11-02 08:36 PST, Csaba Osztrogonác
no flags Details
new X86_64 Linux performance results with LLVM 3.7 (62.96 KB, text/plain)
2015-11-02 08:37 PST, Csaba Osztrogonác
no flags Details
Patch (8.54 KB, patch)
2015-11-19 06:55 PST, Csaba Osztrogonác
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Csaba Osztrogonác 2015-04-16 05:18:38 PDT
FTL JIT is quite stable, I know only 2 bugs cause
failures (crashes!) with it: bug143087 and bug143089

After fixing them, we might want to enable FTL JIT by default.
Comment 1 Csaba Osztrogonác 2015-04-16 05:22:03 PDT
Created attachment 250914 [details]
Patch

The patch is ready for review, but not ready for landing, because it depends on bug143604. And we shouldn't enable FTL until we have crashes - bug143087 and bug143089
Comment 2 Csaba Osztrogonác 2015-04-16 06:43:27 PDT
Created attachment 250919 [details]
Patch

bug143604 is fixed, uploading again to make EFL EWS green
Comment 3 Csaba Osztrogonác 2015-04-16 08:06:48 PDT
Created attachment 250923 [details]
X86_64 Linux performance results

summary:
- 1.0920x slower - SunSpider
- 1.2151x faster - LongSpider
- 1.0805x slower - V8Spider
- 1.2307x faster - Octane
- 1.0174x faster - Kraken
- 1.0388x faster - JSRegress

The progression is promising on LongSpider and Octane, but 
the regression on SunSpider and V8Spider isn't so good.
Comment 4 Csaba Osztrogonác 2015-04-16 08:11:20 PDT
Created attachment 250924 [details]
X86_64 OS X performance results

I ran performance tests on a Mac Mavericks too 
to be able compare Linux and OS X results.

X86_64 OS X performance results:

summary:
- 1.0225x slower - SunSpider
- 1.1883x faster - LongSpider
- 1.0034x slower - V8Spider
- 1.2322x faster - Octane
- 1.0153x faster - Kraken
- 1.0741x faster - JSRegress

It seems there isn't so big performance regression
on SunSpider and V8Spider benchmarks on Mac.

It would be great to find the reason.
Comment 5 Yusuke Suzuki 2015-10-17 18:59:12 PDT
I guess this is due to memory allocation in LLVM. LLVM utilizes system allocator instead of bmalloc. What do you think about this?
Comment 6 Yusuke Suzuki 2015-10-17 22:17:28 PDT
Retaked benchmark results on ToT. The performance regression seems the same to the previous take;
Octane/LongSpider pose nice performance improvement. But V8Spider/SunSpider pose large performance regression.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on gpgpu.

VMs tested:
"NonFTL" at /home/yusuke/dev/WebKit/WebKitBuild/non-ftl/Release/bin/jsc
"FTL" at /home/yusuke/dev/WebKit/WebKitBuild/llvm37/Release/bin/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                          NonFTL                     FTL                                        
SunSpider:
   3d-cube                                            7.0031+-0.3204     ?      7.6395+-2.1885        ? might be 1.0909x slower
   3d-morph                                          12.9608+-0.0928     ?     13.3483+-0.3445        ? might be 1.0299x slower
   3d-raytrace                                        7.9007+-0.0733     ?     10.0010+-3.8079        ? might be 1.2658x slower
   access-binary-trees                                2.5824+-0.0672     ?      2.7188+-0.0858        ? might be 1.0528x slower
   access-fannkuch                                    7.0578+-0.7296     ?      8.4717+-1.5839        ? might be 1.2003x slower
   access-nbody                                       3.3753+-0.0972     ?      3.4233+-0.1286        ? might be 1.0142x slower
   access-nsieve                                      3.5013+-0.0309     ?      3.7796+-0.2715        ? might be 1.0795x slower
   bitops-3bit-bits-in-byte                           1.3780+-0.1066     ?      1.7532+-0.3534        ? might be 1.2723x slower
   bitops-bits-in-byte                                2.7602+-0.1410     !      4.7855+-0.1766        ! definitely 1.7338x slower
   bitops-bitwise-and                                 2.5574+-0.0444     ?      2.6218+-0.0733        ? might be 1.0252x slower
   bitops-nsieve-bits                                 3.5963+-0.0765     !      3.8878+-0.1614        ! definitely 1.0810x slower
   controlflow-recursive                              2.6783+-0.0644     !      4.8235+-1.6216        ! definitely 1.8010x slower
   crypto-aes                                         5.3835+-0.0722     !      5.5342+-0.0474        ! definitely 1.0280x slower
   crypto-md5                                         3.1453+-0.1381     ?      3.6224+-0.5258        ? might be 1.1517x slower
   crypto-sha1                                        2.8336+-0.0965     !      5.0596+-0.8193        ! definitely 1.7856x slower
   date-format-tofte                                 10.8575+-0.4859     ?     11.3693+-0.2142        ? might be 1.0471x slower
   date-format-xparb                                  6.8826+-0.0579     ?      6.9730+-0.1341        ? might be 1.0131x slower
   math-cordic                                        3.4540+-0.0422     !      4.2343+-0.7306        ! definitely 1.2259x slower
   math-partial-sums                                  8.7980+-0.0949            8.7950+-0.1120        
   math-spectral-norm                                 2.5347+-0.0147     ?      3.0671+-0.6926        ? might be 1.2100x slower
   regexp-dna                                         7.8980+-0.0575            7.8111+-0.2034          might be 1.0111x faster
   string-base64                                      4.9125+-0.0321     ?      4.9340+-0.0284        ?
   string-fasta                                       7.7495+-0.0210     ?      8.5035+-0.7953        ? might be 1.0973x slower
   string-tagcloud                                   10.6423+-0.1593           10.4427+-0.1533          might be 1.0191x faster
   string-unpack-code                                24.1935+-0.6388     ?     25.2277+-0.5744        ? might be 1.0427x slower
   string-validate-input                              5.0146+-0.0712     ?      6.1221+-1.6783        ? might be 1.2209x slower

   <arithmetic>                                       6.2173+-0.0474     !      6.8827+-0.1961        ! definitely 1.1070x slower

                                                          NonFTL                     FTL                                        
LongSpider:
   3d-cube                                         1421.5816+-101.6784   ^   1011.7004+-271.4847      ^ definitely 1.4051x faster
   3d-morph                                        2524.6907+-37.5970        2468.2552+-34.0509         might be 1.0229x faster
   3d-raytrace                                      921.1516+-26.1127         893.2654+-33.3576         might be 1.0312x faster
   access-binary-trees                             1164.2353+-21.0705    ^   1057.8945+-5.6713        ^ definitely 1.1005x faster
   access-fannkuch                                  480.3762+-18.3591    ^    390.0820+-26.7255       ^ definitely 1.2315x faster
   access-nbody                                     860.0651+-3.9516     ^    664.8162+-36.0199       ^ definitely 1.2937x faster
   access-nsieve                                    624.7917+-24.1613    ^    437.4225+-6.0898        ^ definitely 1.4283x faster
   bitops-3bit-bits-in-byte                          57.4100+-1.0083     ^     45.7519+-1.7314        ^ definitely 1.2548x faster
   bitops-bits-in-byte                              164.7607+-3.9614     ^    103.9333+-4.2542        ^ definitely 1.5853x faster
   bitops-nsieve-bits                               714.7778+-37.1529    ^    455.0768+-28.5406       ^ definitely 1.5707x faster
   controlflow-recursive                            643.0680+-28.9715    ^    557.9988+-11.1653       ^ definitely 1.1525x faster
   crypto-aes                                      1180.1093+-7.7853     ^    708.4333+-14.4786       ^ definitely 1.6658x faster
   crypto-md5                                       808.1646+-5.1983     ^    615.3820+-2.0084        ^ definitely 1.3133x faster
   crypto-sha1                                     1227.3850+-137.3732   ^    836.2322+-34.3700       ^ definitely 1.4678x faster
   date-format-tofte                                924.3218+-20.0141         909.4755+-22.4284         might be 1.0163x faster
   date-format-xparb                               1043.9988+-107.5824        975.6707+-51.2811         might be 1.0700x faster
   hash-map                                         208.7946+-10.9477         196.4968+-13.5101         might be 1.0626x faster
   math-cordic                                     1136.6967+-18.4573    ^    604.5162+-20.2465       ^ definitely 1.8803x faster
   math-partial-sums                                964.1931+-34.1680         916.8834+-27.5346         might be 1.0516x faster
   math-spectral-norm                              1346.2968+-15.5276    ^    917.4138+-19.9873       ^ definitely 1.4675x faster
   string-base64                                    406.9139+-6.0058          404.2910+-13.7856       
   string-fasta                                     575.6017+-8.7337          554.9366+-122.4603        might be 1.0372x faster
   string-tagcloud                                  230.5507+-4.8234     ?    234.7934+-13.8767       ? might be 1.0184x slower

   <geometric>                                      663.7911+-4.7401     ^    533.9095+-9.1334        ^ definitely 1.2433x faster

                                                          NonFTL                     FTL                                        
V8Spider:
   crypto                                            61.1033+-0.3205     !     76.1574+-11.5123       ! definitely 1.2464x slower
   deltablue                                         77.7545+-2.7002     !     91.4611+-7.4704        ! definitely 1.1763x slower
   earley-boyer                                      52.7540+-0.1628     ?     58.2139+-13.1046       ? might be 1.1035x slower
   raytrace                                          35.2892+-0.5670     !     42.7130+-4.3118        ! definitely 1.2104x slower
   regexp                                            83.9237+-0.9407           83.0450+-2.9677          might be 1.0106x faster
   richards                                          73.7545+-3.1539     ^     64.0198+-1.3773        ^ definitely 1.1521x faster
   splay                                             37.3716+-0.9444     !     42.5600+-3.7822        ! definitely 1.1388x slower

   <geometric>                                       57.3673+-0.3011     !     62.8298+-1.3684        ! definitely 1.0952x slower

                                                          NonFTL                     FTL                                        
Octane:
   encrypt                                           0.31836+-0.00603    ^     0.23572+-0.00424       ^ definitely 1.3506x faster
   decrypt                                           5.72300+-0.01556    ^     4.04778+-0.06852       ^ definitely 1.4139x faster
   deltablue                                x2       0.39609+-0.00729    ^     0.18240+-0.00291       ^ definitely 2.1716x faster
   earley                                            0.60216+-0.00414    ^     0.38777+-0.00902       ^ definitely 1.5529x faster
   boyer                                             8.08088+-0.04495    ^     6.00421+-0.11924       ^ definitely 1.3459x faster
   navier-stokes                            x2       7.00945+-0.02944    ^     5.28166+-0.03552       ^ definitely 1.3271x faster
   raytrace                                 x2       3.00630+-0.01760    ^     1.17410+-0.02495       ^ definitely 2.5605x faster
   richards                                 x2       0.17540+-0.00195    ^     0.11165+-0.00157       ^ definitely 1.5710x faster
   splay                                    x2       0.49268+-0.00877    ^     0.43660+-0.01566       ^ definitely 1.1284x faster
   regexp                                   x2      30.06968+-0.33867    ?    30.40452+-0.93945       ? might be 1.0111x slower
   pdfjs                                    x2      47.52078+-0.95498    ?    49.43740+-2.89588       ? might be 1.0403x slower
   mandreel                                 x2      99.52367+-0.97570    ^    56.29402+-3.97316       ^ definitely 1.7679x faster
   gbemu                                    x2      48.92812+-0.40105         45.49597+-8.00832         might be 1.0754x faster
   closure                                           0.75874+-0.03377          0.74348+-0.00504         might be 1.0205x faster
   jquery                                            9.74666+-0.07306          9.59162+-0.09645         might be 1.0162x faster
   box2d                                    x2      14.57406+-0.47703    ^    13.52207+-0.39216       ^ definitely 1.0778x faster
   zlib                                     x2     570.22791+-52.50757   ^   425.74506+-32.31131      ^ definitely 1.3394x faster
   typescript                               x2     882.28790+-12.69106   ?   902.12482+-21.54151      ? might be 1.0225x slower

   <geometric>                                       9.22350+-0.06126    ^     6.96035+-0.13693       ^ definitely 1.3251x faster

                                                          NonFTL                     FTL                                        
Kraken:
   ai-astar                                          196.404+-1.486      ^     165.669+-18.605        ^ definitely 1.1855x faster
   audio-beat-detection                               83.691+-0.566      ^      66.552+-0.760         ^ definitely 1.2575x faster
   audio-dft                                         115.363+-1.195      ^      81.591+-1.271         ^ definitely 1.4139x faster
   audio-fft                                          68.174+-1.033      ^      50.221+-0.071         ^ definitely 1.3575x faster
   audio-oscillator                                   89.944+-2.512      ^      79.610+-3.397         ^ definitely 1.1298x faster
   imaging-darkroom                                  212.694+-0.020      ^     109.313+-4.865         ^ definitely 1.9457x faster
   imaging-desaturate                                112.130+-1.704      ^      70.681+-4.182         ^ definitely 1.5864x faster
   imaging-gaussian-blur                             216.575+-8.902      ^     118.781+-7.521         ^ definitely 1.8233x faster
   json-parse-financial                               61.885+-2.948      ?      62.616+-3.969         ? might be 1.0118x slower
   json-stringify-tinderbox                           31.723+-0.269             31.658+-0.333         
   stanford-crypto-aes                                64.064+-0.853      ^      53.477+-0.951         ^ definitely 1.1980x faster
   stanford-crypto-ccm                                50.024+-3.442      ?      51.031+-2.134         ? might be 1.0201x slower
   stanford-crypto-pbkdf2                            130.455+-9.656            120.043+-6.722           might be 1.0867x faster
   stanford-crypto-sha256-iterative                   48.598+-1.092      ^      44.878+-0.875         ^ definitely 1.0829x faster

   <arithmetic>                                      105.837+-1.162      ^      79.009+-1.307         ^ definitely 1.3396x faster

                                                          NonFTL                     FTL                                        
JSRegress:
   string-get-by-val-big-char                         7.9230+-0.1402     ?      9.0322+-2.5162        ? might be 1.1400x slower
   slow-convergence                                   3.1495+-0.0667     ?      3.2338+-0.0433        ? might be 1.0268x slower
   int-or-other-abs-zero-then-get-by-val             26.1489+-0.3158     ?     26.4230+-0.1396        ? might be 1.0105x slower
   polymorphic-put-by-val-with-string                82.4227+-4.2484     ^     51.3531+-0.1211        ^ definitely 1.6050x faster
   switch-string-basic                               16.7052+-0.5414     ?     16.8552+-0.4516        ?
   integer-modulo                                     2.2030+-0.0160     ?      4.2192+-4.1046        ? might be 1.9152x slower
   fold-double-to-int                                19.7263+-0.6474     ^     16.4562+-0.2682        ^ definitely 1.1987x faster
   is-object-or-null-trickier-internal-function   
                                                     11.6105+-0.1392     ?     14.0497+-3.2970        ? might be 1.2101x slower
   setter-prototype                                  22.4247+-0.8431     ^      7.5010+-0.5577        ^ definitely 2.9896x faster
   adapt-to-double-divide                            19.1946+-0.0617     ^     17.0082+-0.0867        ^ definitely 1.1285x faster
   hard-overflow-check-equal                        122.2372+-6.2229     ^     40.6916+-1.9013        ^ definitely 3.0040x faster
   tear-off-arguments                                 5.0728+-0.4917     ?      5.2469+-0.4842        ? might be 1.0343x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     14.0045+-0.0999     !     15.2277+-0.3971        ! definitely 1.0873x slower
   polymorphic-get-by-id                              3.2492+-0.0450     ?      4.0665+-0.8253        ? might be 1.2515x slower
   is-object-or-null-fold-tricky                      5.5211+-0.1851     !      6.4135+-0.1128        ! definitely 1.1616x slower
   inline-arguments-local-escape                      4.6502+-0.0690     !      4.7639+-0.0215        ! definitely 1.0245x slower
   int-or-other-sub                                   4.2678+-0.0560     ?      4.8489+-1.1607        ? might be 1.1362x slower
   new-array-dead                                   120.0605+-2.8918     ^     16.8080+-0.4356        ^ definitely 7.1431x faster
   rare-osr-exit-on-local                            14.7955+-0.0419     !     15.9777+-0.7006        ! definitely 1.0799x slower
   obvious-sink-pathology                           146.3562+-2.2884     ^     38.7897+-1.3060        ^ definitely 3.7731x faster
   infer-one-time-closure                            23.7234+-0.1996     ^      9.7617+-0.5667        ^ definitely 2.4303x faster
   in-one-case-true                                  11.0164+-0.0535     !     14.5066+-2.8611        ! definitely 1.3168x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     25.6621+-1.8061     ?     26.3530+-0.6119        ? might be 1.0269x slower
   infer-closure-const-then-reenter-no-inline   
                                                     78.7333+-3.3335     ^     61.9983+-0.8914        ^ definitely 1.2699x faster
   global-object-access-with-mutating-structure   
                                                      7.1567+-0.0293     ^      6.7306+-0.0467        ^ definitely 1.0633x faster
   array-prototype-reduce                            94.0864+-2.2384     !    108.8960+-9.3993        ! definitely 1.1574x slower
   call-spread-apply                                 38.6299+-2.1218     ?     43.0335+-8.4209        ? might be 1.1140x slower
   destructuring-arguments                          241.4147+-29.2420         220.8710+-16.5747         might be 1.0930x faster
   string-concat-object                               2.6700+-0.0349     ?      2.7335+-0.2229        ? might be 1.0238x slower
   arguments-named-and-reflective                    35.7427+-0.9618     ^     11.6185+-0.1802        ^ definitely 3.0764x faster
   singleton-scope                                   91.5198+-0.3237     ^     76.9550+-1.2346        ^ definitely 1.1893x faster
   sparse-conditional                                 1.4257+-0.0860     !      1.5793+-0.0125        ! definitely 1.1078x slower
   is-string-fold-tricky                              3.8311+-0.0253     !      4.8519+-0.5780        ! definitely 1.2665x slower
   splice-to-remove                                  19.1110+-0.8846           18.5847+-0.5808          might be 1.0283x faster
   assign-custom-setter                               4.7272+-0.0288     ?      4.7630+-0.0917        ?
   slow-array-profile-convergence                     3.4962+-0.0250            3.4913+-0.2318        
   proto-getter-access                               14.3912+-0.3999     ^      9.2745+-0.5763        ^ definitely 1.5517x faster
   direct-arguments-getbyval                          1.3553+-0.0231     ?      1.5854+-0.2692        ? might be 1.1698x slower
   fold-put-by-id-to-multi-put-by-offset             10.2091+-0.9726     ?     11.4528+-1.5679        ? might be 1.1218x slower
   to-int32-boolean                                  16.1522+-0.3958     ?     16.6697+-0.5955        ? might be 1.0320x slower
   is-object-or-null-fold-functions                   3.5373+-0.0429     ?      3.9329+-0.5567        ? might be 1.1118x slower
   Float32Array-matrix-mult                           5.6401+-0.1244     ?      5.6818+-0.0763        ?
   register-pressure-from-osr                        22.1398+-0.0307     ?     22.7104+-0.8037        ? might be 1.0258x slower
   new-array-buffer-dead                            117.0670+-0.6611     ^    110.4128+-2.7039        ^ definitely 1.0603x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     16.0513+-0.0558     ^     14.2435+-0.0619        ^ definitely 1.1269x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     38.0132+-0.6654     ?     38.3163+-0.5032        ?
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.3718+-0.0803     !      4.5275+-0.0700        ! definitely 1.3428x slower
   double-to-int32-typed-array-no-inline              2.4932+-0.0910     ?      3.3647+-1.0290        ? might be 1.3495x slower
   put-by-val-with-string-replace-and-transition   
                                                     13.1211+-0.1222     !     14.2885+-0.7129        ! definitely 1.0890x slower
   getter-richards                                  107.1147+-24.4534    ?    113.4538+-15.1403       ? might be 1.0592x slower
   new-array-push                                     4.3075+-0.0930     ?      4.7010+-0.7529        ? might be 1.0914x slower
   infer-closure-const-then-put-to-scope             25.8068+-0.6282           25.7345+-0.2278        
   array-splice-contiguous                           49.4340+-3.0239     ?     50.1680+-2.5496        ? might be 1.0148x slower
   ftl-library-inlining-dataview                     78.2460+-5.0498     ?     78.6257+-0.0129        ?
   indexed-properties-in-objects                      3.0803+-0.0430     ?      3.6220+-0.7979        ? might be 1.1759x slower
   div-boolean-double                                 5.4830+-0.0834     ?      5.8000+-0.2868        ? might be 1.0578x slower
   is-boolean-fold                                    3.4581+-0.0102     ?      3.7738+-0.3753        ? might be 1.0913x slower
   int-or-other-neg-then-get-by-val                   4.8244+-0.0874     ?      5.4515+-1.1126        ? might be 1.1300x slower
   poly-stricteq                                     69.9953+-0.1640           69.2156+-2.7591          might be 1.0113x faster
   polymorphic-put-by-id                             79.9990+-0.2003     ^     51.1808+-3.2141        ^ definitely 1.5631x faster
   try-catch-get-by-val-cloned-arguments             19.1109+-0.6936     ^     12.4948+-0.0460        ^ definitely 1.5295x faster
   custom-setter-getter-as-put-get-by-id              0.6630+-0.0329     ?      0.6670+-0.0228        ?
   polymorphic-array-call                             1.4429+-0.0659     !      1.9129+-0.2230        ! definitely 1.3257x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.9759+-0.0739     ?      9.5292+-1.0311        ? might be 1.0616x slower
   in-two-cases                                      11.2234+-0.1955     !     15.8213+-3.1839        ! definitely 1.4097x slower
   array-access-polymorphic-structure                 8.7495+-0.2567     ?      8.8377+-0.1312        ? might be 1.0101x slower
   varargs-call                                      17.2928+-0.5840           16.5765+-0.6616          might be 1.0432x faster
   poly-chain-access                                  3.0945+-0.0285     ?      3.4667+-0.8650        ? might be 1.1203x slower
   get_callee_polymorphic                             4.0986+-0.0259     ?      4.1210+-0.0183        ?
   cmpeq-obj-to-obj-other                            12.4483+-0.6709     ?     12.8854+-1.7214        ? might be 1.0351x slower
   arrowfunction-call                                14.6559+-0.0473     ^     13.5565+-0.8295        ^ definitely 1.0811x faster
   cast-int-to-double                                 5.8456+-0.1253     ?      6.2162+-0.2836        ? might be 1.0634x slower
   polyvariant-monomorphic-get-by-id                  9.4138+-0.0479     !     10.3359+-0.2516        ! definitely 1.0980x slower
   global-var-const-infer-fire-from-opt               0.9012+-0.0458     ?      1.0164+-0.2553        ? might be 1.1277x slower
   array-prototype-some                              93.9464+-6.2426     ?    101.1664+-20.9607       ? might be 1.0769x slower
   inlined-put-by-val-with-symbol-transition   
                                                     73.8535+-13.3798    ^     55.5883+-4.1080        ^ definitely 1.3286x faster
   logical-not-weird-types                            3.5731+-0.0208     !      3.8951+-0.0879        ! definitely 1.0901x slower
   basic-set                                          8.7731+-0.5291     ?      9.4421+-1.3019        ? might be 1.0762x slower
   is-function-fold                                   3.4786+-0.0231     ?      3.8862+-0.3887        ? might be 1.1172x slower
   switch-string-basic-var                           18.3503+-0.4480     ?     18.5076+-0.7720        ?
   assign-custom-setter-polymorphic                   3.3788+-0.0670            3.3539+-0.0408        
   put-by-val-direct                                  0.4256+-0.0260     ?      0.4285+-0.0185        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     35.9009+-0.5786     ?     36.2803+-0.7242        ? might be 1.0106x slower
   abc-skippy-loop                                   58.7056+-0.2175     ^     35.0159+-1.2423        ^ definitely 1.6765x faster
   simple-activation-demo                            28.3408+-1.2963     ?     29.6160+-0.4205        ? might be 1.0450x slower
   string-concat-pair-simple                         12.2679+-0.1187     ?     12.4800+-0.2968        ? might be 1.0173x slower
   get-by-val-out-of-bounds                           5.7010+-1.5606            5.3125+-0.1256          might be 1.0731x faster
   destructuring-parameters-overridden-by-function   
                                                      0.5833+-0.0385     ?      0.5844+-0.0275        ?
   prototype-access-with-mutating-prototype           6.7167+-0.0725     ?      7.1268+-1.5193        ? might be 1.0611x slower
   switch-string-length-tower-var                    18.1631+-0.6233     ?     18.2670+-1.6607        ?
   captured-assignments                               0.5443+-0.0174     ?      0.5513+-0.0126        ? might be 1.0129x slower
   JSONP-negative-0                                   0.3005+-0.0112     ?      0.3198+-0.0176        ? might be 1.0642x slower
   string-var-equality                               41.3701+-0.0761           41.2098+-0.4893        
   int-or-other-mod-then-get-by-val                   4.2367+-0.0381     !      4.5900+-0.2610        ! definitely 1.0834x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     14.4775+-0.3219     !     15.2324+-0.2168        ! definitely 1.0521x slower
   put-by-val-with-symbol                            13.8167+-0.4499     ?     14.5800+-0.7900        ? might be 1.0552x slower
   Int32Array-alloc-large                            25.1632+-0.3942           25.1091+-0.5327        
   sin-boolean                                       21.4800+-0.7855     ^     14.7610+-1.4462        ^ definitely 1.4552x faster
   string-concat-simple                              13.1550+-0.1308     ?     13.2583+-0.1930        ?
   getter-no-activation                               5.5590+-0.1287     ?      5.9790+-0.7153        ? might be 1.0755x slower
   try-catch-get-by-val-direct-arguments              2.7095+-0.1225            2.7090+-0.3800        
   infer-constant-property                            3.0411+-0.2281     ?      3.3724+-0.4640        ? might be 1.1089x slower
   div-boolean                                        8.1184+-0.0179     !      8.5206+-0.0492        ! definitely 1.0495x slower
   large-int                                         19.5272+-0.1958     ^     15.5234+-0.2170        ^ definitely 1.2579x faster
   external-arguments-putbyval                        2.8700+-0.0211     ?      3.0460+-0.2601        ? might be 1.0613x slower
   max-boolean                                        2.8497+-0.1156     !      3.3422+-0.0951        ! definitely 1.1728x slower
   get-by-id-proto-or-self                           19.6556+-0.1148     ^     17.4230+-1.6601        ^ definitely 1.1281x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.3260+-0.0337     !      6.8212+-1.2047        ! definitely 1.2807x slower
   get-by-val-with-symbol-proto-or-self              19.7358+-0.4432           18.7139+-1.5902          might be 1.0546x faster
   string-equality                                   23.4778+-0.2409           23.4141+-0.7514        
   getter                                             5.2850+-0.0939     ?      6.6855+-2.0419        ? might be 1.2650x slower
   Int32Array-Int8Array-view-alloc                    7.6896+-0.3901     ?      7.7499+-0.4586        ?
   substring-concat                                  58.3458+-0.6530     ?     58.4691+-0.2550        ?
   is-boolean-fold-tricky                             3.9456+-0.2226     ?      5.7930+-2.0286        ? might be 1.4682x slower
   integer-divide                                    13.3607+-0.3843     ?     13.9982+-0.9620        ? might be 1.0477x slower
   cse-new-array                                      2.8134+-0.1901     ?      2.8962+-0.0236        ? might be 1.0294x slower
   is-string-fold                                     3.4775+-0.1211     ?      3.8306+-0.5588        ? might be 1.1015x slower
   object-closure-call                                6.7424+-0.0549     ?      6.8902+-0.9515        ? might be 1.0219x slower
   sinkable-new-object-dag                          289.9733+-5.5523     ^     64.9756+-2.3596        ^ definitely 4.4628x faster
   string-char-code-at                               18.0813+-0.3232     ?     18.3694+-0.7281        ? might be 1.0159x slower
   double-to-uint32-typed-array-no-inline             2.5646+-0.0780     !      3.0407+-0.3095        ! definitely 1.1857x slower
   Int16Array-bubble-sort                            25.3566+-0.8943     !     29.7587+-2.0796        ! definitely 1.1736x slower
   switch-char                                        6.4022+-0.2039     !      8.3433+-1.4796        ! definitely 1.3032x slower
   switch-char-constant                               3.1697+-0.0639     ?      3.5245+-0.5135        ? might be 1.1119x slower
   infer-one-time-closure-two-vars                   23.6450+-1.0931     ^      9.6426+-0.0455        ^ definitely 2.4521x faster
   object-test                                        3.2466+-0.1183     ?      3.8132+-0.6573        ? might be 1.1745x slower
   external-arguments-getbyval                        1.4206+-0.0495     !      1.8110+-0.1671        ! definitely 1.2748x slower
   plus-boolean                                       2.7690+-0.0812     !      3.5812+-0.6528        ! definitely 1.2933x slower
   Int16Array-alloc-long-lived                       52.9647+-1.1617     ?     53.7213+-0.7280        ? might be 1.0143x slower
   fold-get-by-id-to-multi-get-by-offset              8.5941+-0.0689     ?      9.2654+-0.6759        ? might be 1.0781x slower
   infer-one-time-deep-closure                       45.2012+-2.9428     ^     16.4357+-0.9169        ^ definitely 2.7502x faster
   new-array-buffer-push                              6.9199+-0.0875     ?      7.1538+-0.4835        ? might be 1.0338x slower
   aliased-arguments-getbyval                         1.3669+-0.0543     ?      1.5131+-0.1060        ? might be 1.1069x slower
   by-val-generic                                     2.8350+-0.0217     ?      3.6452+-0.9411        ? might be 1.2858x slower
   get-by-val-with-string-chain-from-try-block   
                                                      3.0896+-0.1333            3.0576+-0.0476          might be 1.0105x faster
   ArrayBuffer-Int8Array-alloc-long-lived            15.8231+-1.1741     ?     15.8570+-0.2280        ?
   exit-length-on-plain-object                       18.5483+-1.0611           17.8870+-0.5707          might be 1.0370x faster
   Int32Array-alloc                                   3.7540+-0.0329     ?      3.7673+-0.0187        ?
   weird-inlining-const-prop                          2.4759+-0.0206     !      3.3680+-0.6774        ! definitely 1.3603x slower
   DataView-custom-properties                        46.1414+-0.7009           44.8441+-1.1243          might be 1.0289x faster
   HashMap-string-put-get-iterate                    28.3382+-1.8440     ?     32.1696+-3.8409        ? might be 1.1352x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.7838+-0.0394     !      3.7436+-0.6603        ! definitely 1.3448x slower
   temporal-structure                                14.9177+-0.0384     !     15.3156+-0.3351        ! definitely 1.0267x slower
   for-of-iterate-array-values                        4.3520+-0.2200     ?      4.7446+-0.6516        ? might be 1.0902x slower
   varargs-construct                                 26.4003+-0.9502           24.7656+-1.3160          might be 1.0660x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.2728+-0.0289     ?      5.5972+-2.5921        ? might be 1.7102x slower
   abc-simple-forward-loop                          111.2878+-7.1319     ^     50.3485+-1.1032        ^ definitely 2.2103x faster
   double-to-uint32-typed-array                       2.3746+-0.0492     ?      3.1480+-1.0520        ? might be 1.3257x slower
   int-or-other-mul-then-get-by-val                   4.2385+-0.0478     ?      4.9221+-1.3474        ? might be 1.1613x slower
   put-by-val-machine-int                             3.0732+-0.0486     ?      3.5190+-0.9860        ? might be 1.1451x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.0059+-0.1440     ?      3.8461+-1.4638        ? might be 1.2795x slower
   lots-of-fields                                    11.6937+-0.0496     !     11.9425+-0.0417        ! definitely 1.0213x slower
   infer-closure-const-then-mov-no-inline             3.9034+-0.1383     ?      4.1177+-0.0792        ? might be 1.0549x slower
   arguments                                         31.0430+-0.6386     ^      9.4599+-0.6021        ^ definitely 3.2815x faster
   negative-zero-divide                               0.4261+-0.0144     ?      0.4280+-0.0131        ?
   big-int-mul                                        4.1722+-0.0901     ?      5.1115+-1.3432        ? might be 1.2251x slower
   is-object-or-null-tricky-function                  3.9465+-0.0282     !      5.0596+-0.4505        ! definitely 1.2820x slower
   try-catch-get-by-val-scoped-arguments              5.9901+-0.1027     ?      5.9915+-0.0333        ?
   is-undefined-fold-tricky                           3.5276+-0.1003     ?      4.2086+-0.7621        ? might be 1.1930x slower
   setter                                             5.7682+-0.1016     ?      6.8131+-1.3774        ? might be 1.1811x slower
   neg-boolean                                        3.3338+-0.0229     ?      3.7850+-0.6130        ? might be 1.1353x slower
   poly-chain-access-simpler                          2.9557+-0.0455     ?      3.8280+-1.3684        ? might be 1.2951x slower
   slow-ternaries                                    42.1741+-0.2744     ^     28.7265+-0.7518        ^ definitely 1.4681x faster
   put-by-id-slightly-polymorphic                     3.2094+-0.0261     ?      3.5184+-0.5898        ? might be 1.0963x slower
   arguments-out-of-bounds                           24.1373+-0.8040     ^     13.2431+-1.1761        ^ definitely 1.8226x faster
   sink-function                                     19.1873+-0.3560     ^      9.8521+-0.1094        ^ definitely 1.9475x faster
   marsaglia-larger-ints                             90.2585+-0.1241     ^     47.8788+-2.6324        ^ definitely 1.8851x faster
   undefined-test                                     3.5214+-0.0212     !      4.0762+-0.3633        ! definitely 1.1575x slower
   imul-mixed                                        12.7208+-0.6635     ^      7.4192+-1.1760        ^ definitely 1.7146x faster
   global-var-const-infer                             0.8193+-0.0826     ?      0.8370+-0.0172        ? might be 1.0215x slower
   abc-simple-backward-loop                         119.5490+-4.8134     ^     50.2454+-1.0734        ^ definitely 2.3793x faster
   asmjs_bool_bug                                     9.1121+-0.0531     ?      9.8143+-1.4998        ? might be 1.0771x slower
   double-pollution-putbyoffset                       5.2958+-0.0391     ?      5.3387+-0.1271        ?
   is-object-or-null-fold                             3.4839+-0.0135     ?      4.0001+-0.6530        ? might be 1.1481x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.0031+-0.0756     !     11.2491+-0.8936        ! definitely 1.1246x slower
   cell-argument                                     12.4632+-0.4134     ^      6.8090+-0.6528        ^ definitely 1.8304x faster
   int-or-other-add                                   5.6505+-0.0464     !      6.1195+-0.4057        ! definitely 1.0830x slower
   put-by-val-with-string                            13.6443+-0.2048     ?     14.2668+-0.5743        ? might be 1.0456x slower
   plus-boolean-arith                                 2.8640+-0.1664     !      3.1418+-0.1018        ! definitely 1.0970x slower
   ArrayBuffer-Int32Array-byteOffset                  4.7238+-0.0911            4.6349+-0.0430          might be 1.0192x faster
   mod-boolean                                        8.2263+-0.0284     !      8.6599+-0.3807        ! definitely 1.0527x slower
   infer-closure-const-then-mov                      22.0172+-0.7808     ^     16.9840+-1.5923        ^ definitely 1.2963x faster
   large-int-neg                                     21.0789+-0.0429     ^     17.6800+-1.8976        ^ definitely 1.1922x faster
   fround                                            29.9113+-0.0430     ^     17.5023+-0.5705        ^ definitely 1.7090x faster
   elidable-new-object-dag                          279.5915+-4.1982     ^     44.6257+-0.2958        ^ definitely 6.2653x faster
   make-indexed-storage                               3.6017+-0.1225            3.4348+-0.4825          might be 1.0486x faster
   int-or-other-add-then-get-by-val                   5.3765+-0.0846     ?      6.0399+-1.2466        ? might be 1.1234x slower
   string-cons-repeat                                 8.4344+-0.3118     ?      8.5355+-0.2114        ? might be 1.0120x slower
   logical-not                                        5.0028+-0.1036     ?      5.0247+-0.1448        ?
   poly-chain-access-different-prototypes-simple   
                                                      2.9552+-0.0277     ?      3.8501+-1.2924        ? might be 1.3028x slower
   fixed-typed-array-storage-var-index                1.4318+-0.0826     ?      1.5193+-0.1442        ? might be 1.0611x slower
   function-test                                      3.2056+-0.1080     ?      3.6876+-0.4686        ? might be 1.1504x slower
   string-cons-tower                                  8.5580+-0.2258            8.2426+-0.1146          might be 1.0383x faster
   destructuring-swap                                 5.3834+-0.0797     ?      5.8253+-0.7851        ? might be 1.0821x slower
   is-function-fold-tricky                            3.9351+-0.0263     !      5.2598+-0.9156        ! definitely 1.3367x slower
   array-prototype-reduceRight                       94.5892+-11.0148          89.7671+-5.6436          might be 1.0537x faster
   int-or-other-max-then-get-by-val                   4.6478+-0.0500     ?      5.2686+-1.0990        ? might be 1.1336x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.1613+-0.0529            6.9626+-0.1864          might be 1.0285x faster
   method-on-number                                  20.7433+-0.1607     ?     21.5430+-0.6721        ? might be 1.0386x slower
   put-by-id-replace-and-transition                   8.7050+-0.2580     !      9.7940+-0.1959        ! definitely 1.1251x slower
   int-or-other-neg-zero-then-get-by-val             25.5925+-0.9182     ?     27.0650+-2.7762        ? might be 1.0575x slower
   get-by-val-with-symbol-self-or-proto              20.3127+-0.1354     ?     22.2968+-6.9156        ? might be 1.0977x slower
   varargs-strict-mode                               12.0976+-0.0500     !     14.2051+-1.5431        ! definitely 1.1742x slower
   string-get-by-val-out-of-bounds-insane             4.0048+-0.0829     ?      4.1106+-0.2513        ? might be 1.0264x slower
   imul-double-only                                  10.7089+-0.0192     ^      6.9798+-0.1823        ^ definitely 1.5343x faster
   polymorphic-put-by-val-with-symbol                80.5499+-9.2189     ^     51.2168+-1.4945        ^ definitely 1.5727x faster
   for-of-iterate-array-keys                          4.4060+-0.2731     ?      5.1633+-0.6297        ? might be 1.1719x slower
   string-get-by-val                                  3.1003+-0.0200     !      4.8377+-1.5434        ! definitely 1.5604x slower
   nested-function-parsing                           48.7020+-0.3358     ?     52.4249+-8.9069        ? might be 1.0764x slower
   inlined-put-by-val-with-string-transition   
                                                     71.3392+-2.5821     ^     54.6213+-0.7515        ^ definitely 1.3061x faster
   string-repeat-arith                               36.5135+-0.4196     !     40.5518+-0.2738        ! definitely 1.1106x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.3184+-0.5027     ?     12.5891+-2.6232        ? might be 1.2201x slower
   inline-arguments-aliased-access                    4.6809+-0.0638     ?      5.1559+-0.9455        ? might be 1.1015x slower
   allocate-big-object                                2.7122+-0.0336     ?      3.0897+-0.3914        ? might be 1.1392x slower
   is-object-or-null-fold-less-tricky                 3.9767+-0.2038     ?      5.0715+-1.0032        ? might be 1.2753x slower
   elidable-new-object-tree                         285.3134+-10.3802    ^     47.6078+-1.3902        ^ definitely 5.9930x faster
   ArrayBuffer-Int8Array-alloc                       13.0708+-0.1405     ?     13.4281+-0.7858        ? might be 1.0273x slower
   repeat-multi-get-by-offset                        36.2632+-1.5125     ^     26.2115+-2.1116        ^ definitely 1.3835x faster
   int52-spill                                        7.4507+-0.4889            7.2200+-0.4573          might be 1.0319x faster
   no-inline-constructor                            118.8953+-1.4945     ^     42.0670+-0.6821        ^ definitely 2.8263x faster
   hoist-make-rope                                   54.2411+-0.4383     ^      8.4819+-0.1065        ^ definitely 6.3949x faster
   arguments-strict-mode                            191.3527+-23.7812    ^     10.2546+-0.0176        ^ definitely 18.6602x faster
   function-with-eval                               108.8823+-4.8496          108.0505+-1.6381        
   ArrayBuffer-DataView-alloc-long-lived             18.3102+-1.3732     ?     18.8069+-1.3045        ? might be 1.0271x slower
   simple-poly-call-nested                            8.0485+-0.1817     !      9.6196+-1.1981        ! definitely 1.1952x slower
   switch-string-big-length-tower-var                22.8771+-0.2934     ?     23.1442+-2.0376        ? might be 1.0117x slower
   getter-prototype                                  22.7758+-0.1853     ^     10.0335+-0.4076        ^ definitely 2.2700x faster
   number-test                                        3.5318+-0.0606     !      3.9247+-0.2714        ! definitely 1.1113x slower
   Int16Array-load-int-mul                            1.7813+-0.0362     !      1.9814+-0.0217        ! definitely 1.1124x slower
   put-by-id                                         13.4205+-0.2821     ?     13.7910+-0.4359        ? might be 1.0276x slower
   imul-int-only                                     11.9165+-0.1706     ^      9.7191+-0.1021        ^ definitely 1.2261x faster
   gcse                                               4.1748+-0.0471     ?      5.4501+-1.2435        ? might be 1.3055x slower
   create-lots-of-functions                          12.0698+-0.8546     ?     12.4170+-0.8240        ? might be 1.0288x slower
   in-four-cases                                     19.7836+-0.2195     !     24.0595+-2.7616        ! definitely 1.2161x slower
   function-call                                     14.9920+-0.1940     ^     13.3870+-0.1672        ^ definitely 1.1199x faster
   elidable-new-object-then-call                    146.9852+-1.6712     ^     36.1570+-0.6377        ^ definitely 4.0652x faster
   int-or-other-sub-then-get-by-val                   5.5786+-0.1136     ?      6.2263+-1.2915        ? might be 1.1161x slower
   mul-boolean-double                                 3.9709+-0.0758     ?      4.1727+-0.1621        ? might be 1.0508x slower
   mod-boolean-double                                 7.2473+-0.0413     !      8.6052+-0.8354        ! definitely 1.1874x slower
   inline-arguments-access                            4.6270+-0.0418     ?      4.8613+-0.2833        ? might be 1.0506x slower
   substring-concat-weird                            51.8423+-1.0684           51.6823+-1.3839        
   varargs-construct-inline                          67.4532+-0.9767     ^     26.7151+-0.3995        ^ definitely 2.5249x faster
   HashMap-put-get-iterate                           28.7404+-3.4264     !     38.3832+-1.8176        ! definitely 1.3355x slower
   string-long-ident-equality                        18.7655+-0.6547     ?     19.4649+-1.7519        ? might be 1.0373x slower
   mul-boolean                                        3.0164+-0.0199     !      3.2469+-0.0270        ! definitely 1.0764x slower
   get-by-id-check-structure-elimination              4.4843+-0.3224     !      5.1877+-0.1593        ! definitely 1.1569x slower
   marsaglia-osr-entry                               39.0438+-0.0375     ^     24.5261+-0.7259        ^ definitely 1.5919x faster
   double-real-use                                   43.9907+-1.8629     ^     31.5926+-1.5916        ^ definitely 1.3924x faster
   Float64Array-alloc-long-lived                     76.3998+-1.2093     ?     76.5687+-1.1632        ?
   misc-strict-eq                                    51.9265+-1.0945     ^     35.6979+-2.2381        ^ definitely 1.4546x faster
   raytrace-with-empty-try-catch                      8.0946+-0.1096     ?      8.1592+-0.3629        ?
   make-rope-cse                                      4.4749+-0.1094     ?      4.5277+-0.1249        ? might be 1.0118x slower
   array-with-double-sum                              3.5099+-0.0150     !      3.6700+-0.0563        ! definitely 1.0456x slower
   substring                                         68.3262+-0.9611     ?     69.3586+-1.7972        ? might be 1.0151x slower
   array-with-double-increment                        3.8042+-0.0313     ?      4.5106+-1.0360        ? might be 1.1857x slower
   is-object-or-null-trickier-function                4.0521+-0.1213     !      5.0208+-0.5532        ! definitely 1.2391x slower
   hard-overflow-check                              120.4727+-7.4838     ^     40.3348+-1.5570        ^ definitely 2.9868x faster
   for-of-iterate-array-entries                      14.5544+-1.1267     ?     15.5571+-3.3539        ? might be 1.0689x slower
   array-nonarray-polymorhpic-access                 35.8502+-1.7448           33.7783+-1.7208          might be 1.0613x faster
   varargs                                           12.2153+-0.4963     ?     12.6841+-1.9431        ? might be 1.0384x slower
   getter-richards-try-catch                       1660.8530+-61.2685    ^   1466.9562+-58.6432       ^ definitely 1.1322x faster
   string-out-of-bounds                              23.6370+-0.7223     ^     13.8415+-1.3201        ^ definitely 1.7077x faster
   abc-forward-loop-equal                           129.2076+-3.3087     ^     50.8071+-1.1125        ^ definitely 2.5431x faster
   inlined-put-by-id-transition                      10.6431+-0.2454     ?     11.2136+-0.6219        ? might be 1.0536x slower
   minus-boolean-double                               3.3433+-0.0348     ?      3.6895+-0.5020        ? might be 1.1035x slower
   is-object-or-null-tricky-internal-function   
                                                      8.5009+-0.1582     !      9.7007+-0.0303        ! definitely 1.1411x slower
   delay-tear-off-arguments-strictmode               22.6231+-1.0949     ^     15.3263+-0.2974        ^ definitely 1.4761x faster
   array-prototype-every                             99.0335+-5.6731           94.9998+-3.0034          might be 1.0425x faster
   chain-getter-access                               14.4065+-0.3681     ^      9.1865+-0.2082        ^ definitely 1.5682x faster
   int-or-other-min-then-get-by-val                   4.6286+-0.0531     ?      5.0355+-0.3764        ? might be 1.0879x slower
   HashMap-put-get-iterate-keys                      28.3032+-0.7919     !     34.9284+-4.4328        ! definitely 1.2341x slower
   double-pollution-getbyval                          9.1422+-0.1223     ?      9.4540+-0.2444        ? might be 1.0341x slower
   structure-hoist-over-transitions                   2.9680+-0.0299     ?      3.3383+-0.4731        ? might be 1.1248x slower
   polymorphic-structure                             15.2248+-0.4957     ?     15.5936+-0.5133        ? might be 1.0242x slower
   sorting-benchmark                                 21.1093+-0.3525     ?     23.3660+-3.1702        ? might be 1.1069x slower
   fixed-typed-array-storage                          1.0285+-0.0515     !      1.2695+-0.1337        ! definitely 1.2343x slower
   load-varargs-elimination                          60.3274+-0.6656     ^     25.9871+-0.7879        ^ definitely 2.3214x faster
   raytrace-with-try-catch                           12.9223+-0.1565     ?     15.3657+-4.7743        ? might be 1.1891x slower
   switch-string-length-tower                        15.9096+-0.5246     ^     15.1467+-0.1765        ^ definitely 1.0504x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      7.8463+-0.0457            7.7003+-0.9568          might be 1.0190x faster
   Int8Array-load-with-byteLength                     4.0532+-0.0217     !      4.1588+-0.0174        ! definitely 1.0260x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      3.2864+-0.0813     !      4.2201+-0.0687        ! definitely 1.2841x slower
   Float64Array-to-Int16Array-set                    81.4868+-2.9809     ?     83.5517+-5.1952        ? might be 1.0253x slower
   infer-constant-global-property                     7.1948+-0.1797     ?      7.5440+-0.5363        ? might be 1.0485x slower
   int-overflow-local                                 5.1300+-0.0719     ?      5.8468+-1.2989        ? might be 1.1397x slower
   min-boolean                                        2.8971+-0.2087     ?      3.4810+-0.8845        ? might be 1.2015x slower
   simple-getter-access                              22.1263+-0.0243     ^     12.7398+-0.3920        ^ definitely 1.7368x faster
   string-hash                                        2.4135+-0.2768     ?      2.4847+-0.0063        ? might be 1.0295x slower
   richards-empty-try-catch                          93.8581+-0.7394           93.6034+-1.4092        
   arity-mismatch-inlining                            1.0055+-0.0188     ?      1.2826+-0.2617        ? might be 1.2756x slower
   obviously-elidable-new-object                    143.9283+-1.7075     ^     32.6684+-1.0903        ^ definitely 4.4057x faster
   deltablue-varargs                                242.3076+-2.6028          236.6606+-22.5169         might be 1.0239x faster
   gcse-poly-get                                     30.5043+-1.0418     ^     24.7817+-1.4182        ^ definitely 1.2309x faster
   object-get-own-property-symbols-on-large-array   
                                                      1.8766+-0.0167            1.8746+-0.0172        
   hoist-poly-check-structure-effectful-loop   
                                                      4.4153+-0.0396     !      6.1181+-1.5513        ! definitely 1.3856x slower
   minus-boolean                                      2.7552+-0.0907     ?      3.2397+-0.6484        ? might be 1.1758x slower
   gcse-poly-get-less-obvious                        31.0952+-0.0572     ^     23.3472+-1.3112        ^ definitely 1.3319x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.2644+-1.5148     ?     12.9441+-0.7859        ? might be 1.0554x slower
   branch-fold                                        4.2296+-0.2645     ?      4.6057+-0.4375        ? might be 1.0889x slower
   double-to-int32-typed-array                        2.3863+-0.0271     !      2.5633+-0.0638        ! definitely 1.0742x slower
   plus-boolean-double                                3.3588+-0.0328     ?      3.7271+-0.4964        ? might be 1.1097x slower
   hoist-poly-check-structure                         3.4344+-0.0787     !      3.7622+-0.0558        ! definitely 1.0955x slower
   infer-one-time-closure-ten-vars                   24.5740+-0.6767     ^     10.0900+-0.0381        ^ definitely 2.4355x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.3190+-0.0310     !      4.0804+-0.0253        ! definitely 1.2294x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      4.1390+-0.0981     !      4.7871+-0.0447        ! definitely 1.1566x slower
   is-function-fold-tricky-internal-function   
                                                     11.0883+-0.0341     !     12.2023+-0.3159        ! definitely 1.1005x slower
   array-with-double-mul-add                          5.2574+-0.0617     ?      6.5280+-2.2030        ? might be 1.2417x slower
   array-prototype-map                              108.2628+-2.1056          103.8231+-6.3347          might be 1.0428x faster
   varargs-inline                                    13.0585+-0.0777     ^     10.6839+-0.0345        ^ definitely 1.2223x faster
   sink-huge-activation                              54.0956+-0.5480     ^     16.5635+-2.2668        ^ definitely 3.2659x faster
   undefined-property-access                        681.9703+-31.8667    ^    373.3286+-9.7194        ^ definitely 1.8267x faster
   array-with-int32-add-sub                           7.3907+-0.3494     !      8.2432+-0.0528        ! definitely 1.1153x slower
   v8-raytrace-with-try-catch                        82.5601+-2.4536     ?     83.4528+-3.2215        ? might be 1.0108x slower
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.1230+-0.1112            3.0590+-0.0457          might be 1.0210x faster
   function-dot-apply                                 2.4475+-0.0892     ?      3.0312+-0.7211        ? might be 1.2385x slower
   richards-try-catch                               367.9762+-10.6270    ^    303.4581+-4.9509        ^ definitely 1.2126x faster
   string-sub                                        47.6243+-2.7722     ?     47.6743+-2.9316        ?
   boolean-test                                       3.6196+-0.0485     ?      3.8912+-0.2525        ? might be 1.0750x slower
   emscripten-cube2hash                              37.4694+-0.1242     ?     45.6163+-10.1910       ? might be 1.2174x slower
   Int32Array-alloc-long-lived                       61.3869+-1.7107           60.7700+-1.3098          might be 1.0102x faster
   get-by-id-self-or-proto                           20.2512+-0.1026           18.4865+-3.3665          might be 1.0955x faster
   cse-new-array-buffer                               2.6937+-0.0169     ?      2.9470+-0.2538        ? might be 1.0940x slower
   get-by-val-with-string-self-or-proto              20.2811+-0.0714           19.6463+-3.6527          might be 1.0323x faster
   sinkable-new-object                              147.3574+-0.7908     ^     37.9512+-0.6235        ^ definitely 3.8828x faster
   put-by-val-large-index-blank-indexing-type   
                                                      8.7107+-0.4712     ^      6.9465+-0.1519        ^ definitely 1.2540x faster
   Int8Array-load                                     4.0434+-0.0508     !      4.2582+-0.1603        ! definitely 1.0531x slower
   int-or-other-abs-then-get-by-val                   5.3297+-0.1241     ?      5.6600+-0.3603        ? might be 1.0620x slower
   abs-boolean                                        2.8765+-0.0744     ?      3.7597+-1.0509        ? might be 1.3071x slower
   call-spread-call                                  35.9855+-0.4666     ^     28.1262+-5.5528        ^ definitely 1.2794x faster
   unprofiled-licm                                   25.0434+-0.5978     ^     13.1142+-0.2349        ^ definitely 1.9096x faster
   constant-test                                      5.5013+-0.0409     ?      5.9000+-0.5183        ? might be 1.0725x slower
   cfg-simplify                                       3.2528+-0.0073     !      3.7600+-0.3474        ! definitely 1.1559x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.1011+-0.0196     ?      3.7275+-1.1843        ? might be 1.2020x slower
   fold-put-structure                                 6.1555+-0.0829     !      8.8040+-1.1878        ! definitely 1.4303x slower
   get-by-id-chain-from-try-block                     3.0038+-0.0071     ?      3.0367+-0.1047        ? might be 1.0110x slower
   poly-chain-access-different-prototypes             3.1957+-0.0368     ?      3.7245+-0.8956        ? might be 1.1655x slower
   is-number-fold-tricky                              3.8045+-0.0483     !      5.0715+-1.0370        ! definitely 1.3330x slower
   get_callee_monomorphic                             2.8164+-0.0141     !      3.3842+-0.5307        ! definitely 1.2016x slower
   empty-string-plus-int                              6.1417+-0.1575     ?      6.5657+-0.8874        ? might be 1.0690x slower
   Float32Array-to-Float64Array-set                  71.5372+-2.4000     ?     73.4636+-0.0340        ? might be 1.0269x slower
   switch-string-short                               16.0023+-0.1514     ^     15.0644+-0.5658        ^ definitely 1.0623x faster
   switch-string-basic-big                           17.4162+-0.0661     !     21.6041+-0.1106        ! definitely 1.2405x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      7.3303+-0.0462     ?     10.4140+-4.1936        ? might be 1.4207x slower
   double-get-by-val-out-of-bounds                    6.8491+-1.3988            5.8732+-1.3033          might be 1.1662x faster
   large-int-captured                                 5.0432+-0.1002     ?      5.4730+-0.4882        ? might be 1.0852x slower
   elidable-new-object-roflcopter                   129.5013+-1.5275     ^     41.9938+-0.4463        ^ definitely 3.0838x faster
   string-get-by-val-out-of-bounds                    4.8237+-0.0384     ?      6.9265+-2.3442        ? might be 1.4359x slower
   array-with-double-add                              4.5355+-0.0454     !      4.9616+-0.1788        ! definitely 1.0940x slower
   math-with-out-of-bounds-array-values              46.7276+-8.3773           43.4080+-6.5516          might be 1.0765x faster
   string-test                                        3.4795+-0.0098     ?      3.7310+-0.3701        ? might be 1.0723x slower
   is-undefined-fold                                  3.4432+-0.0495     ?      3.9227+-0.4848        ? might be 1.1393x slower
   switch                                            11.4039+-0.1880     !     13.6285+-1.2977        ! definitely 1.1951x slower
   get-by-val-with-string-proto-or-self              19.5636+-0.3021     ?     19.5771+-3.1296        ?
   inline-get-scoped-var                              5.1848+-0.3612     ?      5.8010+-0.4234        ? might be 1.1188x slower
   v8-raytrace-with-empty-try-catch                  40.2857+-0.6616           39.8312+-1.5939          might be 1.0114x faster
   abc-postfix-backward-loop                        121.4096+-0.4551     ^     50.5142+-1.2367        ^ definitely 2.4035x faster
   tear-off-arguments-simple                          3.5998+-0.0381     ?      4.0432+-0.4421        ? might be 1.1232x slower
   negative-zero-modulo                               0.4373+-0.0236            0.4240+-0.0296          might be 1.0314x faster
   infer-closure-const-then-reenter                  26.0088+-0.2819     ?     26.1910+-0.5336        ?
   array-prototype-forEach                           93.5983+-7.3253     ?     98.1876+-16.7322       ? might be 1.0490x slower
   switch-constant                                    8.1714+-0.2837     ?      9.2730+-1.2033        ? might be 1.1348x slower
   negative-zero-negate                               0.4161+-0.0247            0.4106+-0.0134          might be 1.0132x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.9167+-0.0400     !     10.6697+-0.2405        ! definitely 1.0759x slower
   in-one-case-false                                 11.1960+-0.2205     !     12.9901+-0.3651        ! definitely 1.1602x slower
   int-or-other-div-then-get-by-val                   4.5335+-0.0550     ?      4.8741+-0.5516        ? might be 1.0751x slower
   typed-array-get-set-by-val-profiling              54.8230+-3.0342     ^     31.1624+-1.2875        ^ definitely 1.7593x faster
   Int8Array-alloc-long-lived                        48.2638+-0.8158     ?     48.7107+-1.7355        ?
   simple-poly-call                                   1.3978+-0.0494     !      1.6505+-0.1817        ! definitely 1.1808x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.6177+-0.4850     !     10.2785+-2.0320        ! definitely 1.3493x slower
   switch-string-basic-big-var                       18.6783+-0.1675     !     24.6080+-1.4743        ! definitely 1.3175x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     13.1270+-0.1290     ?     19.1835+-7.2694        ? might be 1.4614x slower
   Int16Array-to-Int32Array-set                      66.8518+-3.9525     ?     70.9005+-3.0064        ? might be 1.0606x slower
   sinkable-new-object-taken                        159.2889+-2.3370     ^     53.7167+-2.3388        ^ definitely 2.9653x faster
   string-concat-pair-object                          2.5759+-0.0708            2.5672+-0.0372        
   branch-on-string-as-boolean                       39.2623+-2.3715     ^     19.3448+-1.4935        ^ definitely 2.0296x faster
   is-number-fold                                     3.4458+-0.0144     ?      3.8563+-0.5634        ? might be 1.1191x slower
   obvious-sink-pathology-taken                     158.8640+-1.9904     ^    131.7332+-2.4621        ^ definitely 1.2060x faster
   get-by-val-with-string-check-structure-elimination   
                                                      6.4875+-0.1042     ?      9.1695+-3.3643        ? might be 1.4134x slower
   ftl-library-inlining                              80.4724+-11.6642          78.0033+-10.9751         might be 1.0317x faster
   array-with-int32-or-double-sum                     3.6702+-0.0857     ?      4.7503+-1.5072        ? might be 1.2943x slower
   Int16Array-bubble-sort-with-byteLength            25.5723+-0.2723     !     28.4231+-0.7767        ! definitely 1.1115x slower

   <geometric>                                       11.2093+-0.0182     ^     10.4307+-0.0616        ^ definitely 1.0746x faster

                                                          NonFTL                     FTL                                        
Geomean of preferred means:
   <scaled-result>                                   37.0595+-0.1371     ^     33.1371+-0.2222        ^ definitely 1.1184x faster
Comment 7 Yusuke Suzuki 2015-10-17 22:46:01 PDT
Now, I've installed libjemalloc in Ubuntu, set this to LD_PRELOAD to use jemalloc in LLVM's system allocator.
I think the result seems significantly improved.
So I guess the reason why FTL is slow in Linux is that LLVM uses system allocator.

The result is the following.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on gpgpu.

VMs tested:
"NonFTL" at /home/yusuke/dev/WebKit/WebKitBuild/non-ftl/Release/bin/jsc
"FTL" at /home/yusuke/dev/WebKit/WebKitBuild/llvm37/Release/bin/jsc

Collected 4 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements.
Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level
timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                                          NonFTL                     FTL                                        
SunSpider:
   3d-cube                                            7.0524+-2.6941            6.3386+-0.0731          might be 1.1126x faster
   3d-morph                                          12.7888+-0.6201     ?     13.3835+-0.5311        ? might be 1.0465x slower
   3d-raytrace                                        8.0074+-0.2345     ?      8.8989+-2.1024        ? might be 1.1113x slower
   access-binary-trees                                2.6839+-0.0204     ?      2.7778+-0.0965        ? might be 1.0350x slower
   access-fannkuch                                    6.9145+-0.1362     ?      7.5927+-0.8489        ? might be 1.0981x slower
   access-nbody                                       3.5477+-0.0393     !      3.6294+-0.0211        ! definitely 1.0230x slower
   access-nsieve                                      3.5820+-0.0494     !      3.7101+-0.0170        ! definitely 1.0358x slower
   bitops-3bit-bits-in-byte                           1.5892+-0.0457     ?      1.6793+-0.0541        ? might be 1.0566x slower
   bitops-bits-in-byte                                2.9317+-0.0513     !      4.6410+-0.6375        ! definitely 1.5830x slower
   bitops-bitwise-and                                 2.7906+-0.0432     ?      2.8005+-0.0102        ?
   bitops-nsieve-bits                                 3.8301+-0.0153     ?      4.5641+-1.0581        ? might be 1.1917x slower
   controlflow-recursive                              3.1942+-0.8274     ?      3.9537+-0.7796        ? might be 1.2378x slower
   crypto-aes                                         5.5008+-0.0472     ?      5.5886+-0.0527        ? might be 1.0160x slower
   crypto-md5                                         3.4260+-0.0512     ?      4.4979+-1.1538        ? might be 1.3129x slower
   crypto-sha1                                        3.0262+-0.0314     ?      3.4012+-0.7512        ? might be 1.1239x slower
   date-format-tofte                                 10.7875+-0.4528     ?     12.3550+-2.6425        ? might be 1.1453x slower
   date-format-xparb                                  7.3867+-0.7164            6.8420+-0.2571          might be 1.0796x faster
   math-cordic                                        3.7005+-0.0499     ?      4.0825+-0.8286        ? might be 1.1032x slower
   math-partial-sums                                  8.8740+-0.1694     ?      8.9879+-0.0205        ? might be 1.0128x slower
   math-spectral-norm                                 2.6980+-0.0157     ?      3.0197+-0.7829        ? might be 1.1192x slower
   regexp-dna                                         7.8993+-0.0187            7.8566+-0.1484        
   string-base64                                      4.9214+-0.1204     ?      4.9763+-0.0771        ? might be 1.0112x slower
   string-fasta                                       7.6849+-0.1530     ?      8.3105+-0.9312        ? might be 1.0814x slower
   string-tagcloud                                   10.5847+-0.2908           10.5552+-0.0590        
   string-unpack-code                                24.1332+-0.8036     ?     25.4195+-0.9518        ? might be 1.0533x slower
   string-validate-input                              5.0150+-0.0261     !      5.5007+-0.2956        ! definitely 1.0969x slower

   <arithmetic>                                       6.3289+-0.0922     !      6.7447+-0.1837        ! definitely 1.0657x slower

                                                          NonFTL                     FTL                                        
LongSpider:
   3d-cube                                         1387.5114+-13.3301    ^    914.7476+-27.9571       ^ definitely 1.5168x faster
   3d-morph                                        2535.7257+-44.2009        2465.8999+-30.7478         might be 1.0283x faster
   3d-raytrace                                      915.4013+-11.6122    ^    875.1725+-25.3045       ^ definitely 1.0460x faster
   access-binary-trees                             1156.4896+-14.4819    ^   1056.5853+-12.5312       ^ definitely 1.0946x faster
   access-fannkuch                                  481.8972+-44.2863    ^    369.8143+-19.7913       ^ definitely 1.3031x faster
   access-nbody                                     869.8559+-35.9841    ^    665.6246+-33.6427       ^ definitely 1.3068x faster
   access-nsieve                                    616.0023+-11.0362    ^    434.1047+-3.1067        ^ definitely 1.4190x faster
   bitops-3bit-bits-in-byte                          56.7310+-3.0596     ^     45.3621+-3.7818        ^ definitely 1.2506x faster
   bitops-bits-in-byte                              162.5385+-10.0213    ^    101.0483+-6.5902        ^ definitely 1.6085x faster
   bitops-nsieve-bits                               706.9960+-38.8841    ^    448.3860+-19.6212       ^ definitely 1.5768x faster
   controlflow-recursive                            631.4822+-22.0958    ^    546.2783+-29.8404       ^ definitely 1.1560x faster
   crypto-aes                                      1167.9417+-7.5944     ^    702.9986+-17.3322       ^ definitely 1.6614x faster
   crypto-md5                                       845.9948+-91.6080         760.0557+-178.7554        might be 1.1131x faster
   crypto-sha1                                     1239.7120+-107.2425   ^    930.8085+-115.3220      ^ definitely 1.3319x faster
   date-format-tofte                                932.8746+-30.4738         930.4459+-50.3838       
   date-format-xparb                                994.0773+-42.4641         989.6810+-37.1110       
   hash-map                                         213.2173+-53.8158         203.4932+-16.8819         might be 1.0478x faster
   math-cordic                                     1096.0920+-5.4380     ^    599.1970+-12.1969       ^ definitely 1.8293x faster
   math-partial-sums                                964.8618+-56.4468         924.6985+-55.1435         might be 1.0434x faster
   math-spectral-norm                              1361.6097+-60.2471    ^    910.7105+-13.9885       ^ definitely 1.4951x faster
   string-base64                                    413.0436+-4.5631          410.5074+-10.2382       
   string-fasta                                     572.7180+-5.3593     ^    513.4163+-15.5648       ^ definitely 1.1155x faster
   string-tagcloud                                  235.1322+-10.7020         230.9803+-3.6118          might be 1.0180x faster

   <geometric>                                      661.9206+-7.5903     ^    534.9466+-11.4981       ^ definitely 1.2374x faster

                                                          NonFTL                     FTL                                        
V8Spider:
   crypto                                            61.0082+-1.3079     ?     62.8973+-1.2924        ? might be 1.0310x slower
   deltablue                                         75.9303+-4.6509     ?     81.8624+-4.1616        ? might be 1.0781x slower
   earley-boyer                                      52.7525+-0.1942     ?     54.5363+-3.6253        ? might be 1.0338x slower
   raytrace                                          34.7275+-1.7457     !     44.6025+-7.8898        ! definitely 1.2844x slower
   regexp                                            83.1592+-1.7670     ?     83.6691+-1.0425        ?
   richards                                          72.3243+-3.0315           67.4078+-10.7245         might be 1.0729x faster
   splay                                             37.4365+-0.5734     !     43.2390+-2.5956        ! definitely 1.1550x slower

   <geometric>                                       56.8048+-0.7192     !     60.6816+-2.7316        ! definitely 1.0682x slower

                                                          NonFTL                     FTL                                        
Octane:
   encrypt                                           0.31508+-0.00025    ^     0.23621+-0.00131       ^ definitely 1.3339x faster
   decrypt                                           5.73922+-0.03317    ^     4.05599+-0.13596       ^ definitely 1.4150x faster
   deltablue                                x2       0.40003+-0.00659    ^     0.18305+-0.00339       ^ definitely 2.1853x faster
   earley                                            0.60158+-0.00258    ^     0.38523+-0.00207       ^ definitely 1.5616x faster
   boyer                                             8.10023+-0.06854    ^     6.03855+-0.04359       ^ definitely 1.3414x faster
   navier-stokes                            x2       7.02110+-0.06783    ^     5.26998+-0.00739       ^ definitely 1.3323x faster
   raytrace                                 x2       3.00433+-0.02379    ^     1.16905+-0.00715       ^ definitely 2.5699x faster
   richards                                 x2       0.17456+-0.00121    ^     0.11203+-0.00234       ^ definitely 1.5581x faster
   splay                                    x2       0.48663+-0.00428    ^     0.42882+-0.00140       ^ definitely 1.1348x faster
   regexp                                   x2      29.91012+-0.18866         29.91002+-0.25214       
   pdfjs                                    x2      47.99273+-0.94666         47.40744+-2.07853         might be 1.0123x faster
   mandreel                                 x2     102.13683+-6.81919    ^    56.03108+-2.54898       ^ definitely 1.8229x faster
   gbemu                                    x2      49.41184+-1.11619         42.57532+-8.53758         might be 1.1606x faster
   closure                                           0.75047+-0.01380          0.74682+-0.01589       
   jquery                                            9.70394+-0.24312          9.68995+-0.23014       
   box2d                                    x2      14.35457+-0.13953    ^    13.79179+-0.38706       ^ definitely 1.0408x faster
   zlib                                     x2     569.08685+-8.24707    ^   426.65710+-34.38642      ^ definitely 1.3338x faster
   typescript                               x2     890.21143+-18.17892   ?  1007.53668+-136.60667     ? might be 1.1318x slower

   <geometric>                                       9.23321+-0.04314    ^     6.95631+-0.12638       ^ definitely 1.3273x faster

                                                          NonFTL                     FTL                                        
Kraken:
   ai-astar                                          195.822+-1.175      ^     156.442+-16.945        ^ definitely 1.2517x faster
   audio-beat-detection                               82.226+-3.972      ^      66.638+-0.508         ^ definitely 1.2339x faster
   audio-dft                                         111.592+-6.797      ^      81.541+-0.864         ^ definitely 1.3685x faster
   audio-fft                                          67.706+-0.555      ^      50.151+-0.397         ^ definitely 1.3500x faster
   audio-oscillator                                   89.990+-0.259      ^      79.971+-2.848         ^ definitely 1.1253x faster
   imaging-darkroom                                  212.762+-0.155      ^     110.970+-0.288         ^ definitely 1.9173x faster
   imaging-desaturate                                112.560+-1.048      ^      70.711+-2.760         ^ definitely 1.5918x faster
   imaging-gaussian-blur                             219.492+-0.501      ^     124.164+-6.875         ^ definitely 1.7678x faster
   json-parse-financial                               59.443+-4.652      ?      62.065+-4.081         ? might be 1.0441x slower
   json-stringify-tinderbox                           31.426+-0.113      ?      31.479+-0.409         ?
   stanford-crypto-aes                                63.015+-2.687      ^      53.158+-1.788         ^ definitely 1.1854x faster
   stanford-crypto-ccm                                49.731+-3.135      ?      58.574+-22.015        ? might be 1.1778x slower
   stanford-crypto-pbkdf2                            129.867+-8.112            116.190+-5.853           might be 1.1177x faster
   stanford-crypto-sha256-iterative                   48.418+-0.355      ^      44.526+-0.173         ^ definitely 1.0874x faster

   <arithmetic>                                      105.289+-0.505      ^      79.041+-2.034         ^ definitely 1.3321x faster

                                                          NonFTL                     FTL                                        
JSRegress:
   string-get-by-val-big-char                         7.9072+-0.2146     ?      8.8956+-2.2367        ? might be 1.1250x slower
   slow-convergence                                   3.3200+-0.0290     ?      3.6857+-0.9180        ? might be 1.1102x slower
   int-or-other-abs-zero-then-get-by-val             25.6179+-1.5553     ?     26.2161+-0.5837        ? might be 1.0234x slower
   polymorphic-put-by-val-with-string                81.9053+-5.1484     ^     49.9456+-3.2454        ^ definitely 1.6399x faster
   switch-string-basic                               16.7660+-0.6856     ?     17.3696+-1.6074        ? might be 1.0360x slower
   integer-modulo                                     2.3578+-0.0242     !      2.5977+-0.1807        ! definitely 1.1017x slower
   fold-double-to-int                                19.7733+-0.9953     ^     16.2890+-0.8404        ^ definitely 1.2139x faster
   is-object-or-null-trickier-internal-function   
                                                     11.6551+-0.2834     !     13.0608+-0.7944        ! definitely 1.1206x slower
   setter-prototype                                  22.1702+-1.2897     ^      7.0910+-0.3641        ^ definitely 3.1265x faster
   adapt-to-double-divide                            19.1995+-0.6483     ^     16.8702+-0.5602        ^ definitely 1.1381x faster
   hard-overflow-check-equal                        120.5748+-6.0977     ^     39.9243+-1.5852        ^ definitely 3.0201x faster
   tear-off-arguments                                 4.9485+-0.0438     ?      5.9437+-1.0423        ? might be 1.2011x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     13.8751+-0.6170     ?     20.6727+-9.7086        ? might be 1.4899x slower
   polymorphic-get-by-id                              3.4686+-0.0307     ?      4.3572+-0.8651        ? might be 1.2562x slower
   is-object-or-null-fold-tricky                      5.8133+-0.2585     !      6.6428+-0.1270        ! definitely 1.1427x slower
   inline-arguments-local-escape                      4.6661+-0.0824     ?      5.1209+-0.8170        ? might be 1.0975x slower
   int-or-other-sub                                   4.5521+-0.1333     ?      4.6080+-0.0805        ? might be 1.0123x slower
   new-array-dead                                   120.5289+-1.4344     ^     16.9489+-1.0653        ^ definitely 7.1113x faster
   rare-osr-exit-on-local                            14.6306+-0.7429     !     15.8362+-0.3686        ! definitely 1.0824x slower
   obvious-sink-pathology                           146.3658+-0.6783     ^     34.8726+-4.0812        ^ definitely 4.1972x faster
   infer-one-time-closure                            23.8615+-0.5872     ^      9.6368+-0.7383        ^ definitely 2.4761x faster
   in-one-case-true                                  10.8542+-0.3847     !     14.8499+-2.9527        ! definitely 1.3681x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     25.0853+-1.5681     ?     25.2650+-0.5313        ?
   infer-closure-const-then-reenter-no-inline   
                                                     76.8195+-3.4166     ^     59.7020+-3.1965        ^ definitely 1.2867x faster
   global-object-access-with-mutating-structure   
                                                      6.9704+-0.0334     ?      6.9813+-0.9509        ?
   array-prototype-reduce                            89.7750+-3.1562     !    111.3208+-15.2891       ! definitely 1.2400x slower
   call-spread-apply                                 40.1644+-5.0216           37.6505+-4.4722          might be 1.0668x faster
   destructuring-arguments                          235.8987+-27.9983    ?    253.1880+-39.5233       ? might be 1.0733x slower
   string-concat-object                               2.6994+-0.0645     ?      2.7142+-0.0787        ?
   arguments-named-and-reflective                    35.9856+-1.0446     ^     11.4910+-0.3489        ^ definitely 3.1316x faster
   singleton-scope                                   85.3392+-4.9380     ^     75.1448+-2.3565        ^ definitely 1.1357x faster
   sparse-conditional                                 1.6380+-0.0174     ?      1.7297+-0.1711        ? might be 1.0560x slower
   is-string-fold-tricky                              4.0820+-0.0294     !      4.9240+-0.4485        ! definitely 1.2063x slower
   splice-to-remove                                  18.4214+-0.5200           18.2098+-0.8765          might be 1.0116x faster
   assign-custom-setter                               4.8539+-0.0589     ?      4.8801+-0.0830        ?
   slow-array-profile-convergence                     3.7585+-0.3288     ?      3.8564+-0.7976        ? might be 1.0260x slower
   proto-getter-access                               14.4077+-0.7429     ^      9.7825+-0.6337        ^ definitely 1.4728x faster
   direct-arguments-getbyval                          1.4206+-0.0272     ?      2.8110+-2.1743        ? might be 1.9787x slower
   fold-put-by-id-to-multi-put-by-offset             10.0289+-0.6182     ?     12.2235+-2.4478        ? might be 1.2188x slower
   to-int32-boolean                                  16.3435+-0.4902           15.9930+-0.5631          might be 1.0219x faster
   is-object-or-null-fold-functions                   3.7634+-0.0381     ?      3.9550+-0.3716        ? might be 1.0509x slower
   Float32Array-matrix-mult                           5.9782+-1.0331            5.6951+-0.1011          might be 1.0497x faster
   register-pressure-from-osr                        21.6236+-1.2579     ?     24.2164+-3.3168        ? might be 1.1199x slower
   new-array-buffer-dead                            116.7885+-0.4215     ^    109.8243+-3.7744        ^ definitely 1.0634x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     16.3443+-0.2683     ^     14.2467+-0.3931        ^ definitely 1.1472x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     37.9933+-0.8709     ?     38.3744+-0.4487        ? might be 1.0100x slower
   put-by-val-with-symbol-slightly-polymorphic   
                                                      3.6263+-0.1144     ?      5.1026+-1.3975        ? might be 1.4071x slower
   double-to-int32-typed-array-no-inline              2.7228+-0.0412     ?      4.2307+-1.7678        ? might be 1.5538x slower
   put-by-val-with-string-replace-and-transition   
                                                     13.1796+-0.2901     !     14.6250+-1.1299        ! definitely 1.1097x slower
   getter-richards                                   98.7578+-6.0305     !    122.3333+-2.4874        ! definitely 1.2387x slower
   new-array-push                                     4.4501+-0.1471     ?      4.8727+-0.6607        ? might be 1.0950x slower
   infer-closure-const-then-put-to-scope             25.1785+-1.2246     ?     25.6741+-0.9539        ? might be 1.0197x slower
   array-splice-contiguous                           49.7453+-2.6352           49.5142+-3.5551        
   ftl-library-inlining-dataview                     75.8328+-1.1406     ?     76.1927+-3.5307        ?
   indexed-properties-in-objects                      3.4070+-0.2344     ?      3.7018+-0.7484        ? might be 1.0865x slower
   div-boolean-double                                 5.6614+-0.0845     ?      5.8316+-0.1254        ? might be 1.0301x slower
   is-boolean-fold                                    3.6749+-0.0126     ?      4.0226+-0.5517        ? might be 1.0946x slower
   int-or-other-neg-then-get-by-val                   5.0325+-0.0167     ?      5.1602+-0.2379        ? might be 1.0254x slower
   poly-stricteq                                     66.6585+-4.0028     ?     67.9410+-4.3076        ? might be 1.0192x slower
   polymorphic-put-by-id                             77.7662+-4.3841     ^     48.6328+-3.1315        ^ definitely 1.5990x faster
   try-catch-get-by-val-cloned-arguments             19.0333+-0.8558     ^     12.4322+-0.3588        ^ definitely 1.5310x faster
   custom-setter-getter-as-put-get-by-id              0.7882+-0.0223            0.7836+-0.0174        
   polymorphic-array-call                             1.6200+-0.0286     ?      1.6555+-0.0257        ? might be 1.0219x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      8.4352+-0.2423     !      9.7422+-0.9947        ! definitely 1.1549x slower
   in-two-cases                                      11.1241+-0.3666     !     13.5710+-0.3700        ! definitely 1.2200x slower
   array-access-polymorphic-structure                 8.7220+-0.1922            8.7048+-0.3017        
   varargs-call                                      17.1853+-0.6196           16.2307+-0.4234          might be 1.0588x faster
   poly-chain-access                                  3.2568+-0.2346     ?      3.2646+-0.0601        ?
   get_callee_polymorphic                             4.1091+-0.0207     ?      4.1490+-0.0493        ?
   cmpeq-obj-to-obj-other                            12.2134+-1.0625     ?     12.8953+-1.6500        ? might be 1.0558x slower
   arrowfunction-call                                14.8067+-0.5009     ^     13.1607+-0.3037        ^ definitely 1.1251x faster
   cast-int-to-double                                 6.1027+-0.0150     ?      6.5176+-1.0091        ? might be 1.0680x slower
   polyvariant-monomorphic-get-by-id                  9.4636+-0.2865     ?      9.7250+-0.0744        ? might be 1.0276x slower
   global-var-const-infer-fire-from-opt               1.0914+-0.0352     ?      1.6052+-1.6078        ? might be 1.4708x slower
   array-prototype-some                              92.6352+-5.1199           91.0099+-1.9926          might be 1.0179x faster
   inlined-put-by-val-with-symbol-transition   
                                                     72.9044+-5.2291     ^     55.4588+-3.6838        ^ definitely 1.3146x faster
   logical-not-weird-types                            3.7452+-0.0518     ?      4.5455+-1.1447        ? might be 1.2137x slower
   basic-set                                          8.6926+-0.2564     !      9.0819+-0.0582        ! definitely 1.0448x slower
   is-function-fold                                   3.7295+-0.0652     ?      3.7687+-0.0236        ? might be 1.0105x slower
   switch-string-basic-var                           18.3847+-0.6462           18.3156+-0.5011        
   assign-custom-setter-polymorphic                   3.5208+-0.0078            3.4958+-0.0350        
   put-by-val-direct                                  0.5814+-0.0141     ?      0.5820+-0.0101        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     36.3408+-0.5218     ?     36.5289+-2.1414        ?
   abc-skippy-loop                                   56.7914+-3.2308     ^     34.0815+-2.2893        ^ definitely 1.6663x faster
   simple-activation-demo                            27.8688+-0.8926     ?     28.7615+-1.1019        ? might be 1.0320x slower
   string-concat-pair-simple                         12.3123+-0.3145     ?     12.5488+-0.1945        ? might be 1.0192x slower
   get-by-val-out-of-bounds                           6.6492+-1.6634            5.5787+-0.5742          might be 1.1919x faster
   destructuring-parameters-overridden-by-function   
                                                      0.7380+-0.0107            0.7373+-0.0179        
   prototype-access-with-mutating-prototype           6.7010+-0.3640     ?      7.1796+-1.1793        ? might be 1.0714x slower
   switch-string-length-tower-var                    17.9117+-0.7433     ?     18.2157+-1.6050        ? might be 1.0170x slower
   captured-assignments                               0.7240+-0.0151     ?      0.7406+-0.0171        ? might be 1.0229x slower
   JSONP-negative-0                                   0.4305+-0.0190     ?      0.4418+-0.0132        ? might be 1.0262x slower
   string-var-equality                               40.6328+-2.2004           40.5591+-1.9415        
   int-or-other-mod-then-get-by-val                   4.4503+-0.0147     ?      4.8754+-1.2024        ? might be 1.0955x slower
   put-by-val-with-symbol-replace-and-transition   
                                                     14.4341+-0.2060     ?     15.6154+-1.0040        ? might be 1.0818x slower
   put-by-val-with-symbol                            13.9730+-0.3874     ?     14.2450+-0.5714        ? might be 1.0195x slower
   Int32Array-alloc-large                            24.8322+-0.0707     ?     24.9339+-0.2685        ?
   sin-boolean                                       20.9587+-0.1581     ^     13.7692+-0.5967        ^ definitely 1.5221x faster
   string-concat-simple                              13.0773+-0.3538     ?     13.3105+-0.2449        ? might be 1.0178x slower
   getter-no-activation                               5.7933+-0.0810     !      6.2139+-0.2954        ! definitely 1.0726x slower
   try-catch-get-by-val-direct-arguments              2.6755+-0.1508            2.6405+-0.1098          might be 1.0133x faster
   infer-constant-property                            3.3820+-0.0771     ^      3.2558+-0.0283        ^ definitely 1.0388x faster
   div-boolean                                        8.3546+-0.0763     ?      8.6183+-0.2462        ? might be 1.0316x slower
   large-int                                         19.3674+-0.7733     ^     15.2490+-0.5742        ^ definitely 1.2701x faster
   external-arguments-putbyval                        3.0153+-0.2779            2.9699+-0.0282          might be 1.0153x faster
   max-boolean                                        3.1046+-0.0933     ?      3.5968+-0.6595        ? might be 1.1585x slower
   get-by-id-proto-or-self                           19.4852+-0.8649           16.7718+-2.0165          might be 1.1618x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.5732+-0.0037     !      7.6403+-1.4848        ! definitely 1.3709x slower
   get-by-val-with-symbol-proto-or-self              19.3051+-1.1580     ?     19.5792+-2.5455        ? might be 1.0142x slower
   string-equality                                   23.4940+-0.9941           23.0502+-1.2240          might be 1.0193x faster
   getter                                             5.4614+-0.0268     !      6.0767+-0.1822        ! definitely 1.1127x slower
   Int32Array-Int8Array-view-alloc                    7.6878+-0.2741            7.5983+-0.1161          might be 1.0118x faster
   substring-concat                                  57.9803+-1.4836     ?     58.5788+-0.2797        ? might be 1.0103x slower
   is-boolean-fold-tricky                             4.0497+-0.0053     ?      5.2196+-1.5779        ? might be 1.2889x slower
   integer-divide                                    13.1715+-0.4644     ?     14.0203+-0.6326        ? might be 1.0644x slower
   cse-new-array                                      2.7862+-0.0248     !      2.9492+-0.1190        ! definitely 1.0585x slower
   is-string-fold                                     3.6943+-0.0117     ?      3.7433+-0.0716        ? might be 1.0133x slower
   object-closure-call                                6.7587+-0.5559     ?      6.9147+-0.7595        ? might be 1.0231x slower
   sinkable-new-object-dag                          293.5046+-1.6903     ^     63.8447+-1.1909        ^ definitely 4.5972x faster
   string-char-code-at                               18.0278+-1.0455     ?     18.2718+-0.7880        ? might be 1.0135x slower
   double-to-uint32-typed-array-no-inline             2.8220+-0.0332     !      3.6546+-0.1026        ! definitely 1.2950x slower
   Int16Array-bubble-sort                            25.8096+-2.6175           25.1643+-2.4915          might be 1.0256x faster
   switch-char                                        6.4985+-0.0970     ?      7.2897+-1.2489        ? might be 1.1218x slower
   switch-char-constant                               3.4235+-0.0911     ?      3.7347+-0.4749        ? might be 1.0909x slower
   infer-one-time-closure-two-vars                   23.7090+-0.6046     ^      9.3776+-0.2117        ^ definitely 2.5283x faster
   object-test                                        3.4170+-0.0289     ?      3.8362+-0.6670        ? might be 1.1227x slower
   external-arguments-getbyval                        1.4896+-0.0275     !      3.3329+-0.3709        ! definitely 2.2375x slower
   plus-boolean                                       2.9583+-0.0137     !      3.5665+-0.4440        ! definitely 1.2056x slower
   Int16Array-alloc-long-lived                       53.6694+-0.4797     ?     53.7773+-0.5614        ?
   fold-get-by-id-to-multi-get-by-offset              8.6553+-0.2738     !     10.2044+-0.1658        ! definitely 1.1790x slower
   infer-one-time-deep-closure                       45.0729+-1.9807     ^     15.9156+-0.6612        ^ definitely 2.8320x faster
   new-array-buffer-push                              6.9123+-0.0496     ?      6.9598+-0.0330        ?
   aliased-arguments-getbyval                         1.4443+-0.0315     ?      3.0056+-1.6266        ? might be 2.0811x slower
   by-val-generic                                     2.9092+-0.0391     ?      3.3773+-0.8284        ? might be 1.1609x slower
   get-by-val-with-string-chain-from-try-block   
                                                      3.2953+-0.0508            3.2886+-0.0287        
   ArrayBuffer-Int8Array-alloc-long-lived            16.0220+-0.6474           15.4815+-0.7214          might be 1.0349x faster
   exit-length-on-plain-object                       20.4372+-4.4927           18.2133+-0.4816          might be 1.1221x faster
   Int32Array-alloc                                   3.7964+-0.0401     ?      3.8005+-0.0222        ?
   weird-inlining-const-prop                          2.5745+-0.0431     !      3.4995+-0.8553        ! definitely 1.3593x slower
   DataView-custom-properties                        46.9354+-1.1168           45.9189+-0.5124          might be 1.0221x faster
   HashMap-string-put-get-iterate                    27.8495+-1.4856     ?     31.9622+-2.9834        ? might be 1.1477x slower
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.9907+-0.0229     !      3.1724+-0.0116        ! definitely 1.0608x slower
   temporal-structure                                15.1407+-0.0214     !     16.9080+-0.6290        ! definitely 1.1167x slower
   for-of-iterate-array-values                        4.3481+-0.1214            4.3447+-0.0733        
   varargs-construct                                 25.9533+-1.2827           24.1375+-1.1037          might be 1.0752x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      3.5181+-0.0288     ?      4.9987+-2.3640        ? might be 1.4209x slower
   abc-simple-forward-loop                          113.8921+-9.3642     ^     47.0512+-0.9468        ^ definitely 2.4206x faster
   double-to-uint32-typed-array                       2.6403+-0.0118     !      2.6801+-0.0151        ! definitely 1.0151x slower
   int-or-other-mul-then-get-by-val                   4.4455+-0.0608     ?      5.1855+-0.8335        ? might be 1.1665x slower
   put-by-val-machine-int                             3.1404+-0.0417     !      3.2991+-0.0871        ! definitely 1.0505x slower
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.1743+-0.0564     ?      3.7532+-0.9290        ? might be 1.1824x slower
   lots-of-fields                                    11.6622+-0.0923     ?     11.9182+-0.3428        ? might be 1.0219x slower
   infer-closure-const-then-mov-no-inline             4.0635+-0.0144     ?      4.7260+-0.6777        ? might be 1.1630x slower
   arguments                                         31.0851+-0.8023     ^      9.1857+-0.3325        ^ definitely 3.3841x faster
   negative-zero-divide                               0.5963+-0.0278     ?      0.6030+-0.0095        ? might be 1.0112x slower
   big-int-mul                                        4.4872+-0.2941     ?      5.4025+-1.7452        ? might be 1.2040x slower
   is-object-or-null-tricky-function                  4.2150+-0.0226     ?      5.7435+-1.5685        ? might be 1.3626x slower
   try-catch-get-by-val-scoped-arguments              6.2047+-0.4236            5.9496+-0.1344          might be 1.0429x faster
   is-undefined-fold-tricky                           3.7561+-0.0424     ?      4.4968+-1.4421        ? might be 1.1972x slower
   setter                                             5.9869+-0.0493     ?      6.7793+-1.3548        ? might be 1.1324x slower
   neg-boolean                                        3.5765+-0.0074     ?      3.8631+-0.6868        ? might be 1.0801x slower
   poly-chain-access-simpler                          3.1838+-0.0229     ?      3.9902+-0.9156        ? might be 1.2533x slower
   slow-ternaries                                    41.0300+-2.4804     ^     27.3257+-1.8770        ^ definitely 1.5015x faster
   put-by-id-slightly-polymorphic                     3.4194+-0.0218     ?      3.4675+-0.1093        ? might be 1.0141x slower
   arguments-out-of-bounds                           24.4578+-1.6788     ^     12.7133+-0.5086        ^ definitely 1.9238x faster
   sink-function                                     18.9227+-0.4137     ^      9.8712+-0.0362        ^ definitely 1.9170x faster
   marsaglia-larger-ints                             87.9358+-4.5231     ^     46.9623+-1.8620        ^ definitely 1.8725x faster
   undefined-test                                     3.7154+-0.0196     ?      4.2637+-0.5511        ? might be 1.1476x slower
   imul-mixed                                        12.4578+-0.4793     ^      6.9345+-1.5302        ^ definitely 1.7965x faster
   global-var-const-infer                             1.0099+-0.0292     ?      1.0240+-0.0142        ? might be 1.0139x slower
   abc-simple-backward-loop                         116.7796+-8.4084     ^     47.2610+-0.1622        ^ definitely 2.4709x faster
   asmjs_bool_bug                                     9.4119+-0.1181     ?     10.1245+-1.3167        ? might be 1.0757x slower
   double-pollution-putbyoffset                       5.3373+-0.0398     ?      5.3629+-0.0654        ?
   is-object-or-null-fold                             3.7206+-0.0175     ?      4.0449+-0.5132        ? might be 1.0872x slower
   fold-put-by-val-with-symbol-to-multi-put-by-offset   
                                                     10.3491+-0.6241     ?     11.4197+-0.9424        ? might be 1.1035x slower
   cell-argument                                     12.4335+-0.3437     ^      6.4105+-0.2219        ^ definitely 1.9396x faster
   int-or-other-add                                   5.9343+-0.0593     ?      6.0801+-0.1488        ? might be 1.0246x slower
   put-by-val-with-string                            13.7567+-0.1481     ?     14.0125+-0.3056        ? might be 1.0186x slower
   plus-boolean-arith                                 3.0386+-0.1669     ?      3.5632+-0.7433        ? might be 1.1726x slower
   ArrayBuffer-Int32Array-byteOffset                  4.8767+-0.0468     ?      4.8830+-0.1022        ?
   mod-boolean                                        8.3818+-0.1625     ?      8.6169+-0.2704        ? might be 1.0280x slower
   infer-closure-const-then-mov                      22.0835+-1.1346     ^     16.2788+-1.0477        ^ definitely 1.3566x faster
   large-int-neg                                     21.0408+-0.7342     ^     17.3503+-1.8404        ^ definitely 1.2127x faster
   fround                                            29.4317+-1.3030     ^     16.8084+-0.5209        ^ definitely 1.7510x faster
   elidable-new-object-dag                          283.5838+-5.1411     ^     44.9205+-1.3301        ^ definitely 6.3130x faster
   make-indexed-storage                               3.7514+-0.4264     ?      3.9145+-0.5159        ? might be 1.0435x slower
   int-or-other-add-then-get-by-val                   5.5818+-0.0873     ?      5.7469+-0.2720        ? might be 1.0296x slower
   string-cons-repeat                                 8.3720+-0.0607     ?      8.4960+-0.3505        ? might be 1.0148x slower
   logical-not                                        5.1408+-0.0080     ?      5.2990+-0.8190        ? might be 1.0308x slower
   poly-chain-access-different-prototypes-simple   
                                                      3.1783+-0.0039     ?      3.8608+-1.2767        ? might be 1.2147x slower
   fixed-typed-array-storage-var-index                1.6157+-0.0237     ?      1.7111+-0.1920        ? might be 1.0590x slower
   function-test                                      3.3485+-0.0361     ?      3.7477+-0.5595        ? might be 1.1192x slower
   string-cons-tower                                  8.2407+-0.1400     ?      8.2780+-0.3140        ?
   destructuring-swap                                 5.6506+-0.0874     ?      5.7605+-0.3075        ? might be 1.0194x slower
   is-function-fold-tricky                            4.1847+-0.0811     !      5.0412+-0.5424        ! definitely 1.2047x slower
   array-prototype-reduceRight                       91.3631+-3.3135     ?     95.7963+-9.5668        ? might be 1.0485x slower
   int-or-other-max-then-get-by-val                   4.8115+-0.0804     ?      5.2532+-1.0831        ? might be 1.0918x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      6.4434+-0.1569     ?      7.7468+-2.1197        ? might be 1.2023x slower
   method-on-number                                  21.0338+-0.5489     ?     22.4348+-2.0436        ? might be 1.0666x slower
   put-by-id-replace-and-transition                   8.7812+-0.3278     !      9.8716+-0.1317        ! definitely 1.1242x slower
   int-or-other-neg-zero-then-get-by-val             25.4119+-1.8127     ?     25.9560+-1.1085        ? might be 1.0214x slower
   get-by-val-with-symbol-self-or-proto              20.2516+-0.7050     ^     16.9863+-0.6219        ^ definitely 1.1922x faster
   varargs-strict-mode                               12.2132+-0.4550     ?     12.8719+-1.6756        ? might be 1.0539x slower
   string-get-by-val-out-of-bounds-insane             4.2095+-0.0815            4.1922+-0.0686        
   imul-double-only                                  10.6014+-0.3353     ^      6.7917+-0.1028        ^ definitely 1.5609x faster
   polymorphic-put-by-val-with-symbol                83.6144+-3.5581     ^     49.2299+-2.7708        ^ definitely 1.6984x faster
   for-of-iterate-array-keys                          4.4565+-0.0438     ?      5.0558+-0.8450        ? might be 1.1345x slower
   string-get-by-val                                  3.2762+-0.0402     !      4.0988+-0.0641        ! definitely 1.2511x slower
   nested-function-parsing                           48.6446+-0.1310     !     49.9907+-0.1894        ! definitely 1.0277x slower
   inlined-put-by-val-with-string-transition   
                                                     73.0518+-7.9781     ^     55.0377+-1.2087        ^ definitely 1.3273x faster
   string-repeat-arith                               35.2603+-0.8550     !     39.3600+-1.8522        ! definitely 1.1163x slower
   fold-put-by-val-with-string-to-multi-put-by-offset   
                                                     10.1570+-0.4361     ?     11.2501+-1.0794        ? might be 1.1076x slower
   inline-arguments-aliased-access                    4.6913+-0.0436     ?      4.8490+-0.1934        ? might be 1.0336x slower
   allocate-big-object                                2.7612+-0.0201     ?      3.0272+-0.3748        ? might be 1.0963x slower
   is-object-or-null-fold-less-tricky                 4.1503+-0.0391     !      5.3687+-0.9521        ! definitely 1.2936x slower
   elidable-new-object-tree                         282.8172+-4.5926     ^     48.5969+-1.2920        ^ definitely 5.8197x faster
   ArrayBuffer-Int8Array-alloc                       12.6614+-0.7858     ?     13.1295+-0.1065        ? might be 1.0370x slower
   repeat-multi-get-by-offset                        35.3613+-1.3447     ^     25.8083+-1.4715        ^ definitely 1.3702x faster
   int52-spill                                        7.2577+-0.0799            7.1921+-0.3543        
   no-inline-constructor                            118.8687+-0.4040     ^     42.2557+-1.2675        ^ definitely 2.8131x faster
   hoist-make-rope                                   53.9557+-1.1725     ^      8.1979+-1.1489        ^ definitely 6.5817x faster
   arguments-strict-mode                            191.7001+-15.4669    ^     10.0460+-0.0375        ^ definitely 19.0822x faster
   function-with-eval                               106.6435+-2.1628     ?    109.1393+-3.7487        ? might be 1.0234x slower
   ArrayBuffer-DataView-alloc-long-lived             17.8605+-0.9920     ?     18.2021+-1.0602        ? might be 1.0191x slower
   simple-poly-call-nested                            8.1699+-0.1785     ?      9.4517+-1.4477        ? might be 1.1569x slower
   switch-string-big-length-tower-var                24.7576+-9.1407           22.1013+-0.8389          might be 1.1202x faster
   getter-prototype                                  22.8353+-0.9106     ^      9.8578+-0.3575        ^ definitely 2.3165x faster
   number-test                                        3.7563+-0.0258     ?      3.9451+-0.3587        ? might be 1.0503x slower
   Int16Array-load-int-mul                            2.0286+-0.0161     ?      2.0657+-0.0486        ? might be 1.0183x slower
   put-by-id                                         13.6362+-0.1407     ?     13.9892+-0.4059        ? might be 1.0259x slower
   imul-int-only                                     12.0445+-0.2925     ^      9.4220+-0.2772        ^ definitely 1.2783x faster
   gcse                                               4.4060+-0.0129     ?      5.4810+-1.2276        ? might be 1.2440x slower
   create-lots-of-functions                          11.6929+-0.1349     ?     12.1195+-0.4619        ? might be 1.0365x slower
   in-four-cases                                     19.5029+-0.7977     !     23.3777+-2.8806        ! definitely 1.1987x slower
   function-call                                     14.8235+-0.6137     ^     13.3555+-0.6208        ^ definitely 1.1099x faster
   elidable-new-object-then-call                    146.6854+-2.3604     ^     36.1876+-0.6871        ^ definitely 4.0535x faster
   int-or-other-sub-then-get-by-val                   5.7513+-0.0433     ?      6.1693+-0.9977        ? might be 1.0727x slower
   mul-boolean-double                                 4.1401+-0.0304     !      4.2381+-0.0572        ! definitely 1.0237x slower
   mod-boolean-double                                 7.4017+-0.1606     !      8.2032+-0.0195        ! definitely 1.1083x slower
   inline-arguments-access                            4.6476+-0.0195     !      4.7985+-0.0587        ! definitely 1.0325x slower
   substring-concat-weird                            52.0349+-0.2877           51.3320+-0.6540          might be 1.0137x faster
   varargs-construct-inline                          67.9503+-1.0918     ^     26.7985+-2.1456        ^ definitely 2.5356x faster
   HashMap-put-get-iterate                           27.3087+-1.0464     !     35.7645+-3.8403        ! definitely 1.3096x slower
   string-long-ident-equality                        18.6880+-0.8397     ?     18.9648+-0.7456        ? might be 1.0148x slower
   mul-boolean                                        3.2654+-0.0198     ?      3.6099+-0.7898        ? might be 1.1055x slower
   get-by-id-check-structure-elimination              4.7983+-0.3421     ?      5.4876+-0.8531        ? might be 1.1437x slower
   marsaglia-osr-entry                               38.7648+-1.5912     ^     24.3610+-1.7428        ^ definitely 1.5913x faster
   double-real-use                                   42.6147+-2.3909     ^     31.3326+-1.5132        ^ definitely 1.3601x faster
   Float64Array-alloc-long-lived                     77.0803+-0.4565     ?     77.6374+-1.0645        ?
   misc-strict-eq                                    51.6099+-2.8777     ^     34.4631+-1.1943        ^ definitely 1.4975x faster
   raytrace-with-empty-try-catch                      8.1388+-0.1705            8.0630+-0.0924        
   make-rope-cse                                      4.4767+-0.0901     ?      4.5472+-0.1013        ? might be 1.0158x slower
   array-with-double-sum                              3.7678+-0.0169     ?      3.8019+-0.1319        ?
   substring                                         67.3983+-1.5996     ?     68.3753+-2.9332        ? might be 1.0145x slower
   array-with-double-increment                        4.0875+-0.0329     ?      4.5035+-0.9224        ? might be 1.1018x slower
   is-object-or-null-trickier-function                4.2603+-0.0433     ?      6.0212+-1.8928        ? might be 1.4133x slower
   hard-overflow-check                              118.2269+-4.7907     ^     38.9319+-2.0148        ^ definitely 3.0368x faster
   for-of-iterate-array-entries                      14.2731+-0.5852     ?     15.9123+-4.1222        ? might be 1.1148x slower
   array-nonarray-polymorhpic-access                 36.2726+-2.3770     ^     32.4353+-1.3647        ^ definitely 1.1183x faster
   varargs                                           12.4981+-0.2871     ?     13.0490+-1.5342        ? might be 1.0441x slower
   getter-richards-try-catch                       1725.3296+-30.3436    ^   1459.2888+-130.5426      ^ definitely 1.1823x faster
   string-out-of-bounds                              23.5436+-0.9116     ^     13.6539+-0.9879        ^ definitely 1.7243x faster
   abc-forward-loop-equal                           133.4355+-9.2185     ^     49.6725+-2.4915        ^ definitely 2.6863x faster
   inlined-put-by-id-transition                      10.7962+-0.0826     ?     11.5837+-1.8368        ? might be 1.0729x slower
   minus-boolean-double                               3.5560+-0.0382     ?      3.7803+-0.4630        ? might be 1.0631x slower
   is-object-or-null-tricky-internal-function   
                                                      8.5972+-0.1514     ?     10.3696+-1.7054        ? might be 1.2062x slower
   delay-tear-off-arguments-strictmode               22.0130+-0.7578     ^     15.4550+-0.3061        ^ definitely 1.4243x faster
   array-prototype-every                             94.1058+-8.3399           91.8611+-4.3050          might be 1.0244x faster
   chain-getter-access                               14.5913+-0.5361     ^      9.1824+-0.5533        ^ definitely 1.5890x faster
   int-or-other-min-then-get-by-val                   4.9386+-0.2563     ?      4.9570+-0.0871        ?
   HashMap-put-get-iterate-keys                      29.0244+-4.8236     !     38.3020+-1.6580        ! definitely 1.3196x slower
   double-pollution-getbyval                          9.1630+-0.3105     ?      9.3203+-0.2343        ? might be 1.0172x slower
   structure-hoist-over-transitions                   3.0532+-0.0819     ?      3.1647+-0.2929        ? might be 1.0365x slower
   polymorphic-structure                             15.3062+-0.4966     ?     15.8015+-0.5783        ? might be 1.0324x slower
   sorting-benchmark                                 21.4241+-0.1439     ?     22.4351+-2.5471        ? might be 1.0472x slower
   fixed-typed-array-storage                          1.2925+-0.0169     ?      1.3395+-0.0507        ? might be 1.0364x slower
   load-varargs-elimination                          60.7234+-1.6632     ^     26.4686+-1.0912        ^ definitely 2.2942x faster
   raytrace-with-try-catch                           12.9490+-0.0248     ?     13.2463+-1.1637        ? might be 1.0230x slower
   switch-string-length-tower                        16.0904+-0.5591     ^     15.0429+-0.0216        ^ definitely 1.0696x faster
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      7.1907+-0.1508     ?      7.5662+-0.2394        ? might be 1.0522x slower
   Int8Array-load-with-byteLength                     4.2437+-0.0195     ?      4.3227+-0.1329        ? might be 1.0186x slower
   put-by-val-with-string-slightly-polymorphic   
                                                      3.4268+-0.1022     !      4.6039+-1.0017        ! definitely 1.3435x slower
   Float64Array-to-Int16Array-set                    80.4601+-3.8524     ?     81.1193+-3.6007        ?
   infer-constant-global-property                     7.3777+-0.1216            7.3756+-0.1172        
   int-overflow-local                                 5.2909+-0.0500     ?      5.4771+-0.2309        ? might be 1.0352x slower
   min-boolean                                        3.1701+-0.1580     ?      3.2700+-0.0237        ? might be 1.0315x slower
   simple-getter-access                              21.3184+-1.1235     ^     12.5715+-1.0917        ^ definitely 1.6958x faster
   string-hash                                        2.4854+-0.0400     !      2.5812+-0.0237        ! definitely 1.0386x slower
   richards-empty-try-catch                          92.4245+-3.5537     ?     93.4360+-3.0940        ? might be 1.0109x slower
   arity-mismatch-inlining                            1.2101+-0.0247     ?      1.2664+-0.0678        ? might be 1.0465x slower
   obviously-elidable-new-object                    143.4730+-1.8552     ^     32.3793+-0.2122        ^ definitely 4.4310x faster
   deltablue-varargs                                246.2100+-7.6380          242.5396+-19.6662         might be 1.0151x faster
   gcse-poly-get                                     30.0609+-1.7755     ^     24.3698+-1.7222        ^ definitely 1.2335x faster
   object-get-own-property-symbols-on-large-array   
                                                      1.8842+-0.0435     ?      1.8932+-0.0237        ?
   hoist-poly-check-structure-effectful-loop   
                                                      4.4866+-0.0901     !      5.7695+-0.3741        ! definitely 1.2860x slower
   minus-boolean                                      2.9921+-0.1049     ?      3.2655+-0.4811        ? might be 1.0914x slower
   gcse-poly-get-less-obvious                        30.7116+-1.6140     ^     22.8569+-0.8560        ^ definitely 1.3436x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     11.2834+-0.1735     !     13.5195+-2.0336        ! definitely 1.1982x slower
   branch-fold                                        4.3442+-0.0660     ?      4.9277+-0.5612        ? might be 1.1343x slower
   double-to-int32-typed-array                        2.6075+-0.0043     ?      3.0070+-0.7151        ? might be 1.1532x slower
   plus-boolean-double                                3.6044+-0.0387     ?      3.7210+-0.1742        ? might be 1.0324x slower
   hoist-poly-check-structure                         3.5990+-0.0226     ?      4.0950+-0.9200        ? might be 1.1378x slower
   infer-one-time-closure-ten-vars                   24.1420+-0.9371     ^     10.1355+-0.1365        ^ definitely 2.3819x faster
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      3.5311+-0.0492     ?      4.6548+-1.7189        ? might be 1.3182x slower
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      4.4035+-0.1108     ?      5.6558+-2.5711        ? might be 1.2844x slower
   is-function-fold-tricky-internal-function   
                                                     11.1548+-0.3076     !     12.1813+-0.1130        ! definitely 1.0920x slower
   array-with-double-mul-add                          5.5228+-0.1750     ?      7.5916+-3.1220        ? might be 1.3746x slower
   array-prototype-map                              103.2870+-4.3543          101.2139+-7.6656          might be 1.0205x faster
   varargs-inline                                    13.1813+-0.3642     ^     10.7460+-0.4953        ^ definitely 1.2266x faster
   sink-huge-activation                              53.7635+-0.6447     ^     15.6755+-0.5816        ^ definitely 3.4298x faster
   undefined-property-access                        680.6348+-30.3387    ^    368.5426+-4.5651        ^ definitely 1.8468x faster
   array-with-int32-add-sub                           7.5950+-0.0954     ?      9.8358+-3.2005        ? might be 1.2950x slower
   v8-raytrace-with-try-catch                        82.1516+-0.7951     ?     90.3392+-14.9655       ? might be 1.0997x slower
   get-by-val-with-symbol-chain-from-try-block   
                                                      3.2800+-0.0216     ?      3.3102+-0.0249        ?
   function-dot-apply                                 2.7128+-0.0206     ?      2.8505+-0.3670        ? might be 1.0508x slower
   richards-try-catch                               366.0545+-10.8145    ^    300.0113+-7.6679        ^ definitely 1.2201x faster
   string-sub                                        48.0822+-2.0671           47.2764+-2.5736          might be 1.0170x faster
   boolean-test                                       3.7887+-0.0327     ?      4.1434+-0.3279        ? might be 1.0936x slower
   emscripten-cube2hash                              37.5612+-0.2514     ?     40.7593+-10.5352       ? might be 1.0851x slower
   Int32Array-alloc-long-lived                       61.5937+-0.3122     ?     61.7476+-1.2962        ?
   get-by-id-self-or-proto                           20.2054+-0.6885           18.7450+-4.8825          might be 1.0779x faster
   cse-new-array-buffer                               2.7374+-0.0232     ?      2.9424+-0.1970        ? might be 1.0749x slower
   get-by-val-with-string-self-or-proto              19.9844+-0.9882     ?     21.4657+-8.5245        ? might be 1.0741x slower
   sinkable-new-object                              146.7340+-2.2804     ^     34.5775+-4.2091        ^ definitely 4.2436x faster
   put-by-val-large-index-blank-indexing-type   
                                                      8.4521+-0.3622     ^      6.8856+-0.4375        ^ definitely 1.2275x faster
   Int8Array-load                                     4.2408+-0.0354     ?      4.3738+-0.1733        ? might be 1.0314x slower
   int-or-other-abs-then-get-by-val                   5.5120+-0.0324     ?      5.6555+-0.2842        ? might be 1.0260x slower
   abs-boolean                                        3.1153+-0.0236     ?      3.8414+-0.8569        ? might be 1.2331x slower
   call-spread-call                                  35.0546+-3.0299           28.0239+-5.3761          might be 1.2509x faster
   unprofiled-licm                                   25.0110+-0.6746     ^     13.1661+-0.4313        ^ definitely 1.8996x faster
   constant-test                                      5.7090+-0.0357     ?      5.8875+-0.2475        ? might be 1.0312x slower
   cfg-simplify                                       3.4827+-0.0360     ?      3.7197+-0.4018        ? might be 1.0680x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.3690+-0.1683     ?      3.5632+-0.3504        ? might be 1.0577x slower
   fold-put-structure                                 6.4495+-0.3675     !      8.1970+-1.3521        ! definitely 1.2710x slower
   get-by-id-chain-from-try-block                     3.2465+-0.0925            3.2365+-0.0270        
   poly-chain-access-different-prototypes             3.4392+-0.0171     ?      3.7138+-0.7372        ? might be 1.0798x slower
   is-number-fold-tricky                              4.0884+-0.0289     !      4.7627+-0.1059        ! definitely 1.1649x slower
   get_callee_monomorphic                             2.8679+-0.0414     ?      3.2045+-0.4856        ? might be 1.1174x slower
   empty-string-plus-int                              6.0429+-0.1540     !      6.2593+-0.0427        ! definitely 1.0358x slower
   Float32Array-to-Float64Array-set                  68.1642+-2.2956     ?     72.1258+-4.3917        ? might be 1.0581x slower
   switch-string-short                               16.2162+-0.0883     ^     15.0198+-0.9911        ^ definitely 1.0797x faster
   switch-string-basic-big                           17.6690+-0.2020     !     21.2715+-0.2727        ! definitely 1.2039x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      7.4634+-0.1742     ?      9.3707+-3.5730        ? might be 1.2556x slower
   double-get-by-val-out-of-bounds                    6.6404+-2.3519            6.0086+-1.7802          might be 1.1052x faster
   large-int-captured                                 5.0598+-0.0668     ?      5.5430+-1.1128        ? might be 1.0955x slower
   elidable-new-object-roflcopter                   129.5195+-0.5997     ^     42.6716+-2.0551        ^ definitely 3.0353x faster
   string-get-by-val-out-of-bounds                    5.0798+-0.0925     !      5.8194+-0.1070        ! definitely 1.1456x slower
   array-with-double-add                              4.7324+-0.0519     ?      6.1315+-1.9518        ? might be 1.2957x slower
   math-with-out-of-bounds-array-values              49.2297+-11.8158          42.2332+-11.9949         might be 1.1657x faster
   string-test                                        3.5850+-0.0331     ?      3.8470+-0.4040        ? might be 1.0731x slower
   is-undefined-fold                                  3.7029+-0.0567     ?      3.8820+-0.4851        ? might be 1.0484x slower
   switch                                            11.4010+-0.5026     !     12.5807+-0.2866        ! definitely 1.1035x slower
   get-by-val-with-string-proto-or-self              19.9335+-0.7183           18.2625+-2.3856          might be 1.0915x faster
   inline-get-scoped-var                              5.3463+-0.4131     ?      5.5712+-0.1102        ? might be 1.0421x slower
   v8-raytrace-with-empty-try-catch                  39.8839+-1.2130           38.8493+-1.6724          might be 1.0266x faster
   abc-postfix-backward-loop                        117.5613+-7.5196     ^     48.4510+-3.0530        ^ definitely 2.4264x faster
   tear-off-arguments-simple                          3.6680+-0.0417     !      3.8817+-0.1431        ! definitely 1.0583x slower
   negative-zero-modulo                               0.5790+-0.0207     ?      0.5865+-0.0081        ? might be 1.0129x slower
   infer-closure-const-then-reenter                  25.7738+-1.4696           25.5565+-1.6704        
   array-prototype-forEach                           92.1759+-4.0142     ?     93.4722+-10.7575       ? might be 1.0141x slower
   switch-constant                                    8.1942+-0.2836     ?      9.3406+-0.9365        ? might be 1.1399x slower
   negative-zero-negate                               0.5693+-0.0177     ?      0.5753+-0.0110        ? might be 1.0105x slower
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.9581+-0.2230     ?     11.1285+-1.1373        ? might be 1.1175x slower
   in-one-case-false                                 11.3463+-0.2844     !     14.1113+-1.6614        ! definitely 1.2437x slower
   int-or-other-div-then-get-by-val                   4.7654+-0.1031     ?      5.6160+-1.0800        ? might be 1.1785x slower
   typed-array-get-set-by-val-profiling              55.9189+-2.8909     ^     31.1227+-0.4601        ^ definitely 1.7967x faster
   Int8Array-alloc-long-lived                        48.4653+-0.8600     ?     48.9403+-0.4142        ?
   simple-poly-call                                   1.6200+-0.0329     ?      1.6685+-0.0309        ? might be 1.0300x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      7.5031+-0.0322     !      9.6894+-1.1037        ! definitely 1.2914x slower
   switch-string-basic-big-var                       18.7457+-0.7133     !     25.0718+-3.4248        ! definitely 1.3375x slower
   get-by-val-with-symbol-check-structure-elimination   
                                                     13.4056+-0.5910     ?     17.0460+-5.8852        ? might be 1.2716x slower
   Int16Array-to-Int32Array-set                      66.9800+-4.3391     ?     68.3256+-0.3725        ? might be 1.0201x slower
   sinkable-new-object-taken                        159.4445+-1.7759     ^     53.2231+-1.7816        ^ definitely 2.9958x faster
   string-concat-pair-object                          2.5905+-0.0409     ?      2.5929+-0.0652        ?
   branch-on-string-as-boolean                       40.1921+-0.0313     ^     17.8527+-0.7353        ^ definitely 2.2513x faster
   is-number-fold                                     3.6742+-0.0145     ?      3.7650+-0.0948        ? might be 1.0247x slower
   obvious-sink-pathology-taken                     159.3830+-1.6641     ^    131.8880+-2.5034        ^ definitely 1.2085x faster
   get-by-val-with-string-check-structure-elimination   
                                                      6.6716+-0.0659     ?      8.4758+-3.0846        ? might be 1.2704x slower
   ftl-library-inlining                              77.0017+-5.8045           74.1640+-2.8796          might be 1.0383x faster
   array-with-int32-or-double-sum                     3.8898+-0.1526     ?      3.9038+-0.0434        ?
   Int16Array-bubble-sort-with-byteLength            25.8616+-0.8441           24.1148+-1.1421          might be 1.0724x faster

   <geometric>                                       11.4932+-0.0278     ^     10.5317+-0.1028        ^ definitely 1.0913x faster

                                                          NonFTL                     FTL                                        
Geomean of preferred means:
   <scaled-result>                                   37.2200+-0.0755     ^     32.8961+-0.4671        ^ definitely 1.1314x faster
Comment 8 Michael Catanzaro 2015-10-25 15:48:17 PDT
(In reply to comment #7)
> Now, I've installed libjemalloc in Ubuntu, set this to LD_PRELOAD to use
> jemalloc in LLVM's system allocator.
> I think the result seems significantly improved.
> So I guess the reason why FTL is slow in Linux is that LLVM uses system
> allocator.

This indicates to me that we should keep FTL disabled indefinitely; do you agree?
Comment 9 Filip Pizlo 2015-10-25 18:17:22 PDT
(In reply to comment #8)
> (In reply to comment #7)
> > Now, I've installed libjemalloc in Ubuntu, set this to LD_PRELOAD to use
> > jemalloc in LLVM's system allocator.
> > I think the result seems significantly improved.
> > So I guess the reason why FTL is slow in Linux is that LLVM uses system
> > allocator.
> 
> This indicates to me that we should keep FTL disabled indefinitely; do you
> agree?

Your performance numbers indicate that the FTL configuration gives a ~30% speed up on throughout benchmarks like Octane and Kraken and a 10% slow down on SunSpider. SunSpider is a deprecated benchmark, so it's not clear that we should care at all. But even if we did, the small slow down on SunSpider comes with a huge speed up on other, more modern, tests. This appears to be the case even when you use the system allocator. 

So, can you clarify why you think it's a good idea to keep the FTL disabled?
Comment 10 Filip Pizlo 2015-10-25 18:21:09 PDT
(In reply to comment #3)
> Created attachment 250923 [details]
> X86_64 Linux performance results
> 
> summary:
> - 1.0920x slower - SunSpider
> - 1.2151x faster - LongSpider
> - 1.0805x slower - V8Spider
> - 1.2307x faster - Octane
> - 1.0174x faster - Kraken
> - 1.0388x faster - JSRegress
> 
> The progression is promising on LongSpider and Octane, but 
> the regression on SunSpider and V8Spider isn't so good.

It should be noted that V8Spider, JSReress, and LongSpider aren't official benchmarks. Results from these tests are definitely less significant than results from the other benchmarks. And SunSpider is deprecated. 

So the FTL produces a speed up on both real benchmark suites (Octane and Kraken). For the deprecated and unsupported tests, it looks like it slows down some while speeding up others. That seems like the FTL is a pure win on Linux.
Comment 11 Michael Catanzaro 2015-10-25 19:25:14 PDT
(In reply to comment #9)
> So, can you clarify why you think it's a good idea to keep the FTL disabled?

Simply because I read the words "FTL is slow in Linux." ;) No further objections from me.
Comment 12 Yusuke Suzuki 2015-10-26 00:39:56 PDT
(In reply to comment #11)
> (In reply to comment #9)
> > So, can you clarify why you think it's a good idea to keep the FTL disabled?
> 
> Simply because I read the words "FTL is slow in Linux." ;) No further
> objections from me.

fpizlo@, thank you for your clarification about benchmarks!

It seems that FTL improves real-world benchmarks significantly.
So I think enabling FTL for x64 is reasonable choice.

What do you think of, mcatanzaro@ and ossy@?
Comment 13 Michael Catanzaro 2015-10-26 07:54:31 PDT
"No further objections from me."
Comment 14 Csaba Osztrogonác 2015-10-27 10:15:37 PDT
Created attachment 264134 [details]
Patch

updated to ToT
Comment 15 Csaba Osztrogonác 2015-10-27 11:09:15 PDT
Created attachment 264144 [details]
Patch

Additionally run FTL tests by default
Comment 16 Csaba Osztrogonác 2015-10-27 11:38:41 PDT
(In reply to comment #10)

> It should be noted that V8Spider, JSReress, and LongSpider aren't official
> benchmarks. Results from these tests are definitely less significant than
> results from the other benchmarks. And SunSpider is deprecated. 

> So the FTL produces a speed up on both real benchmark suites (Octane and
> Kraken). For the deprecated and unsupported tests, it looks like it slows
> down some while speeding up others. That seems like the FTL is a pure win on
> Linux.

https://www.webkit.org/blog/3611/announcing-jetstream-1-1/
"JetStream includes many legacy benchmarks from older benchmark suites like SunSpider and V8. Most of those tests are still relevant, since they feature non-trivial workloads that are representative of what we think developers want to be able to do efficiently in JavaScript."

But http://trac.webkit.org/changeset/187526 and now you 
say that SunSpider is deprecated / no longer maintained.

I'm confused a little bit ... so SunSpider is relevant or not? 
As far as I know it is still included in JetStream.

I think it's obvious for the core JSC developers, but how others
can notice what benchmarks are official/deprecated/significant/real ?

Do we have a tool which can run all officially supported benchmarks
with JSC command line binary out-of-the-box? I know Tools/Scripts/run-jsc-benchmarks, but it's not clear to me which version of which benchmark
is officially supported.
Comment 17 Csaba Osztrogonác 2015-10-27 11:41:15 PDT
(In reply to comment #12)
> (In reply to comment #11)
> > (In reply to comment #9)
> > > So, can you clarify why you think it's a good idea to keep the FTL disabled?
> > 
> > Simply because I read the words "FTL is slow in Linux." ;) No further
> > objections from me.
> 
> fpizlo@, thank you for your clarification about benchmarks!
> 
> It seems that FTL improves real-world benchmarks significantly.
> So I think enabling FTL for x64 is reasonable choice.
> 
> What do you think of, mcatanzaro@ and ossy@?

I have no objection ... but it would be clarify which benchmarks
should we take notice.
Comment 18 Filip Pizlo 2015-10-27 12:02:43 PDT
(In reply to comment #16)
> (In reply to comment #10)
> 
> > It should be noted that V8Spider, JSReress, and LongSpider aren't official
> > benchmarks. Results from these tests are definitely less significant than
> > results from the other benchmarks. And SunSpider is deprecated. 
> 
> > So the FTL produces a speed up on both real benchmark suites (Octane and
> > Kraken). For the deprecated and unsupported tests, it looks like it slows
> > down some while speeding up others. That seems like the FTL is a pure win on
> > Linux.
> 
> https://www.webkit.org/blog/3611/announcing-jetstream-1-1/
> "JetStream includes many legacy benchmarks from older benchmark suites like
> SunSpider and V8. Most of those tests are still relevant, since they feature
> non-trivial workloads that are representative of what we think developers
> want to be able to do efficiently in JavaScript."

It includes benchmarks from SunSpider.  It does not include all of SunSpider.

> 
> But http://trac.webkit.org/changeset/187526 and now you 
> say that SunSpider is deprecated / no longer maintained.
> 
> I'm confused a little bit ... so SunSpider is relevant or not? 
> As far as I know it is still included in JetStream.

I'm extremely confused about your confusion.  It's really not that complicated.

> 
> I think it's obvious for the core JSC developers, but how others
> can notice what benchmarks are official/deprecated/significant/real ?

Everyone is free to decide to care, or not care, about various benchmarks.  However, if you decided to care about SunSpider, you'd be the member of a rapidly shrinking club.

> 
> Do we have a tool which can run all officially supported benchmarks
> with JSC command line binary out-of-the-box? 

Not really; I run JetStream in browser because that gives the most believable results.  It's fine to use run-jsc-benchmarks and look at the geomean of SunSpider/Octane.  That's a pretty good proxy for JetStream.

Look, I know that statistics can be tricky, but in all of your performance reports you keep citing a <10% regression on SunSpider and a >30% progression on Octane and Kraken.  So even if you want to care about SunSpider then unless you also decided not to care at all about Octane or Kraken then you must surely concede that the average of -10% and +30% is in positive territory.  This is why we have opted to enable the FTL.

Flip it around in your head: if you had FTL enabled and someone posted a patch to disable it, this patch would cause a 30% regression on Octane and Kraken.  30%!!  That's huge!  It would also cause less than 10% progression on SunSpider.  But, any time I have seen someone land a patch that produces an X% progression in on benchmark A and a Y% regression on benchmark B, the patch will get rolled out if Y > X.
Comment 19 Csaba Osztrogonác 2015-10-28 03:01:29 PDT
Comment on attachment 264144 [details]
Patch

It's ready for review, but I would like to land manually once bug150616 is fixed.
Comment 20 Csaba Osztrogonác 2015-11-02 08:36:42 PST
Created attachment 264589 [details]
new X86_64 Linux performance results with LLVM 3.6
Comment 21 Csaba Osztrogonác 2015-11-02 08:37:05 PST
Created attachment 264590 [details]
new X86_64 Linux performance results with LLVM 3.7
Comment 22 Csaba Osztrogonác 2015-11-02 08:39:42 PST
(In reply to comment #20)
> Created attachment 264589 [details]
> new X86_64 Linux performance results with LLVM 3.6

quick summary:
---------------
1.0978x slower on SunSpider
1.2497x faster on LongSpider
1.1041x slower on V8Spider
1.3198x faster on Octane
1.3772x faster on Kraken
1.0583x faster on JSRegress
Comment 23 Csaba Osztrogonác 2015-11-02 08:41:50 PST
(In reply to comment #21)
> Created attachment 264590 [details]
> new X86_64 Linux performance results with LLVM 3.7

quick summary:
---------------
1.0915x slower on SunSpider
1.2202x faster on LongSpider
1.0974x slower on V8Spider
1.2922x faster on Octane
1.3544x faster on Kraken
1.1111x faster on JSRegress
Comment 24 Csaba Osztrogonác 2015-11-12 04:09:25 PST
Filip, thanks for the clarification about benchmarks. I didn't 
know that SunSpider and V8Spider aren't important at all anymore.

But you must know that the patch was lying here half year ago
and nobody was interested in investigating the performance
regression on SunSpider and V8Spider or reviewing the patch.

I updated it to the trunk 2 weeks before, let's 
see what EFL maintainers think about it.
Comment 25 Carlos Garcia Campos 2015-11-12 23:56:18 PST
Ossy, I've just submitted a patch to GTK+ port in bug #142128. I took a few bits from your patch, but also updated the jhbuild version to use conditions instead of adding the module from the jhbuildrc. So, I think you could use that for EFL as well. I'm requiring 3.7 for GTK port, because I'm not sure 3.6 is enough. LLVM 3.7 requires a non source dir build, so I had to enable buildroot option globally. You could do the same now as well, since you will have to do it once you update to 3.7 eventually.
Comment 26 Csaba Osztrogonác 2015-11-13 03:22:21 PST
(In reply to comment #25)
> Ossy, I've just submitted a patch to GTK+ port in bug #142128. I took a few
> bits from your patch, but also updated the jhbuild version to use conditions
> instead of adding the module from the jhbuildrc. So, I think you could use
> that for EFL as well. I'm requiring 3.7 for GTK port, because I'm not sure
> 3.6 is enough. LLVM 3.7 requires a non source dir build, so I had to enable
> buildroot option globally. You could do the same now as well, since you will
> have to do it once you update to 3.7 eventually.

Thanks, I'll update the EFL part once the GTK patch landed.

LLVM 3.6 (shipped with Ubuntu 15.04) and LLVM 3.7 (built from source) 
work fine with FTL JIT. Yes, I noticed the in-source build issue with
3.7 too, EFL has only 5 modules which don't support non in source build,
so we can migrate to separated buildroot too in the near future.

This conditional feature in jhbuild is good, I like it. :)
Comment 27 Gyuyoung Kim 2015-11-15 22:02:57 PST
(In reply to comment #24)

> I updated it to the trunk 2 weeks before, let's 
> see what EFL maintainers think about it.

Should I do something to enable FTL JIT by default ? Or do you need my help ?
Comment 28 Csaba Osztrogonác 2015-11-16 03:10:09 PST
(In reply to comment #27)
> (In reply to comment #24)
> 
> > I updated it to the trunk 2 weeks before, let's 
> > see what EFL maintainers think about it.
> 
> Should I do something to enable FTL JIT by default ? Or do you need my help ?

I only need an approval that EFL port want to enable 
FTL JIT. I'm not the person who can decide it or not.

And I need an r+, of course. :) But let's wait 
for bug142128, and then I'll update the patch.
Comment 29 Csaba Osztrogonác 2015-11-19 06:55:52 PST
Created attachment 265864 [details]
Patch

Updated after http://trac.webkit.org/changeset/192469, additionally enabled FTL JIT on GTK in build-jsc script too and moved X86_64 platform detection to the jhbuildrc_common.py.
Comment 30 Csaba Osztrogonác 2015-11-19 08:52:41 PST
any opinion from Samsung?
Comment 31 Joonghun Park 2015-11-19 16:25:57 PST
I think it's a good idea to proceed with this :)
Comment 32 WebKit Commit Bot 2015-11-20 03:38:15 PST
Comment on attachment 265864 [details]
Patch

Clearing flags on attachment: 265864

Committed r192682: <http://trac.webkit.org/changeset/192682>
Comment 33 WebKit Commit Bot 2015-11-20 03:38:25 PST
All reviewed patches have been landed.  Closing bug.