Bug 146849 - jsc-tailcall: Clean up register naming
Summary: jsc-tailcall: Clean up register naming
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Basile Clement
URL:
Keywords:
Depends on:
Blocks: 146845
  Show dependency treegraph
 
Reported: 2015-07-10 12:33 PDT by Basile Clement
Modified: 2015-09-14 10:56 PDT (History)
5 users (show)

See Also:


Attachments
WIP (123.49 KB, patch)
2015-07-10 17:52 PDT, Basile Clement
no flags Details | Formatted Diff | Diff
Patch (126.31 KB, patch)
2015-07-13 13:54 PDT, Basile Clement
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Basile Clement 2015-07-10 12:33:40 PDT
This has two goals:

 1) Ensure that we are not using callee-save registers (or the least possible amount) on 64-bits platforms in preparation of https://bugs.webkit.org/show_bug.cgi?id=146845

 2) Have sane(r) and (mostly) platform-independent conventions for register naming in the LLint to limit the number of implicit platform knowledge
Comment 1 Basile Clement 2015-07-10 17:52:14 PDT
Created attachment 256629 [details]
WIP

Tests pass on x86_64 and x86. Missing a ChangeLog entry + check that its perf-neutral.
Comment 2 Basile Clement 2015-07-13 12:15:33 PDT
(In reply to comment #1)
> Created attachment 256629 [details]
> WIP
> 
> Tests pass on x86_64 and x86. Missing a ChangeLog entry + check that its
> perf-neutral.

Some tests are actually failing on a clean build.
Comment 3 Basile Clement 2015-07-13 12:30:39 PDT
(In reply to comment #2)
> (In reply to comment #1)
> > Created attachment 256629 [details]
> > WIP
> > 
> > Tests pass on x86_64 and x86. Missing a ChangeLog entry + check that its
> > perf-neutral.
> 
> Some tests are actually failing on a clean build.

Actually, I just shouldn't leave debug breaks lying around when running run-javascriptcore-tests...

https://bugs.webkit.org/attachment.cgi?id=256629&action=diff#a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm_sec12
Comment 4 Basile Clement 2015-07-13 13:07:35 PDT
A few perf changes that were to be expected due to changes in register allocation ordering, but overall looks perf neutral on x86_64. I'll try to run a couple more benches on the browser to check we are not getting screwed by increasing code size.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-Mac-Pro (MacPro6,1).

VMs tested:
"Baseline" at /Volumes/Data/secondary/OpenSource/WebKitBuild/svn-tailcall/Release/jsc
"Cleanup" at /Volumes/Data/secondary/OpenSource/WebKitBuild/jsc-tailcall-cleanup/Release/jsc

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

                                                         Baseline                  Cleanup                                      
SunSpider:
   3d-cube                                            6.7349+-0.0719     ?      6.7963+-0.1519        ?
   3d-morph                                           7.5206+-0.0335     ?      7.5511+-0.0287        ?
   3d-raytrace                                        8.4003+-0.0908            8.3558+-0.1055        
   access-binary-trees                                2.8979+-0.0343     ?      2.9416+-0.0735        ? might be 1.0151x slower
   access-fannkuch                                    7.8890+-0.0495            7.8054+-0.0433          might be 1.0107x faster
   access-nbody                                       3.7960+-0.0149     !      3.8320+-0.0162        ! definitely 1.0095x slower
   access-nsieve                                      4.7426+-0.3226            4.5509+-0.0419          might be 1.0421x faster
   bitops-3bit-bits-in-byte                           2.1748+-0.1635     ^      1.5761+-0.0334        ^ definitely 1.3799x faster
   bitops-bits-in-byte                                4.6630+-0.0654     ?      4.6742+-0.0658        ?
   bitops-bitwise-and                                 2.8267+-0.0360            2.8265+-0.0289        
   bitops-nsieve-bits                                 4.0926+-0.0189            4.0922+-0.0112        
   controlflow-recursive                              2.9229+-0.1597     ?      2.9332+-0.0994        ?
   crypto-aes                                         5.9205+-0.0867     ?      5.9594+-0.0675        ?
   crypto-md5                                         3.4471+-0.0576     ?      3.4939+-0.0313        ? might be 1.0136x slower
   crypto-sha1                                        3.3060+-0.0552     ^      3.2107+-0.0318        ^ definitely 1.0297x faster
   date-format-tofte                                 12.4493+-0.1084           12.3802+-0.2785        
   date-format-xparb                                  7.3903+-0.1070     ?      7.4753+-0.2236        ? might be 1.0115x slower
   math-cordic                                        4.0004+-0.0193     ^      3.8087+-0.0412        ^ definitely 1.0503x faster
   math-partial-sums                                  7.1932+-0.0700            7.1144+-0.0711          might be 1.0111x faster
   math-spectral-norm                                 2.5990+-0.0933            2.4769+-0.0372          might be 1.0493x faster
   regexp-dna                                         9.7048+-0.1017            9.6091+-0.0942        
   string-base64                                      6.2059+-0.0708     ?      6.3383+-0.1474        ? might be 1.0213x slower
   string-fasta                                       8.3570+-0.0535     !      8.4763+-0.0392        ! definitely 1.0143x slower
   string-tagcloud                                   12.2777+-0.0970     ^     12.0398+-0.0679        ^ definitely 1.0198x faster
   string-unpack-code                                27.1223+-0.2250     ?     27.3379+-0.2668        ?
   string-validate-input                              6.4165+-0.0868     ?      6.4353+-0.0778        ?

   <arithmetic>                                       6.7327+-0.0109            6.6958+-0.0263          might be 1.0055x faster

                                                         Baseline                  Cleanup                                      
LongSpider:
   3d-cube                                         1161.8412+-6.4887         1152.5332+-3.2716        
   3d-morph                                        2081.1110+-1.1700         2080.3168+-0.0956        
   3d-raytrace                                      945.4407+-2.7038     ^    934.5921+-4.2997        ^ definitely 1.0116x faster
   access-binary-trees                             1198.6842+-3.9270         1196.6345+-2.7889        
   access-fannkuch                                  453.4463+-8.8105          452.8426+-10.8680       
   access-nbody                                     800.7323+-0.3361     ^    795.9546+-0.4892        ^ definitely 1.0060x faster
   access-nsieve                                    545.8983+-1.8585          544.8724+-3.3537        
   bitops-3bit-bits-in-byte                          62.0057+-0.4545     ^     53.0330+-0.0786        ^ definitely 1.1692x faster
   bitops-bits-in-byte                              124.3708+-1.3943          122.9960+-2.4800          might be 1.0112x faster
   bitops-nsieve-bits                               589.7192+-3.1306          587.5258+-3.5433        
   controlflow-recursive                            629.7211+-11.0865    ?    638.1432+-9.7784        ? might be 1.0134x slower
   crypto-aes                                       876.1451+-5.0672          869.2526+-4.0232        
   crypto-md5                                       677.6091+-2.5095     !    685.0111+-2.6589        ! definitely 1.0109x slower
   crypto-sha1                                      902.1063+-13.3005    ?    905.6310+-3.3668        ?
   date-format-tofte                                990.8559+-16.6845         965.2799+-25.6768         might be 1.0265x faster
   date-format-xparb                               1000.6452+-25.5231    !   1042.5932+-9.3398        ! definitely 1.0419x slower
   hash-map                                         219.3025+-1.3116     ?    219.7008+-2.6742        ?
   math-cordic                                      783.6735+-1.1202          783.1446+-0.9507        
   math-partial-sums                                692.6728+-3.8965     ?    694.4527+-5.9501        ?
   math-spectral-norm                               770.1455+-4.6595          765.6347+-1.3753        
   string-base64                                    479.7296+-0.3406     !    505.6764+-2.4112        ! definitely 1.0541x slower
   string-fasta                                     544.5638+-3.6467          544.3551+-6.8886        
   string-tagcloud                                  266.0013+-3.3262          263.7384+-1.1230        

   <geometric>                                      589.4795+-1.4041     ^    586.2730+-1.1275        ^ definitely 1.0055x faster

                                                         Baseline                  Cleanup                                      
V8Spider:
   crypto                                            67.5082+-0.2485     !     68.9623+-1.1668        ! definitely 1.0215x slower
   deltablue                                         87.2450+-1.8400           86.8190+-1.1002        
   earley-boyer                                      55.9561+-0.3860     ?     56.6427+-0.4786        ? might be 1.0123x slower
   raytrace                                          38.1482+-0.6174     ?     38.6637+-0.7811        ? might be 1.0135x slower
   regexp                                            97.8666+-0.5275           96.9073+-0.7904        
   richards                                          96.8340+-1.3080           96.4351+-1.4363        
   splay                                             46.4869+-2.2516     ?     47.5540+-2.8788        ? might be 1.0230x slower

   <geometric>                                       66.1322+-0.3290     ?     66.6109+-0.7971        ? might be 1.0072x slower

                                                         Baseline                  Cleanup                                      
Octane:
   encrypt                                           0.31168+-0.01076          0.30730+-0.01144         might be 1.0142x faster
   decrypt                                           5.11519+-0.11926          5.06137+-0.01625         might be 1.0106x faster
   deltablue                                x2       0.24911+-0.00229    ?     0.24961+-0.00472       ?
   earley                                            0.42829+-0.00222    ?     0.43060+-0.00139       ?
   boyer                                             6.76369+-0.00910    !     6.80048+-0.00558       ! definitely 1.0054x slower
   navier-stokes                            x2       7.00241+-0.00648    ?     7.01282+-0.00568       ?
   raytrace                                 x2       1.62602+-0.05696          1.62311+-0.06450       
   richards                                 x2       0.17121+-0.00312          0.16901+-0.00248         might be 1.0130x faster
   splay                                    x2       0.46480+-0.00577    ?     0.46815+-0.00591       ?
   regexp                                   x2      36.88398+-0.37551         36.63212+-0.20488       
   pdfjs                                    x2      55.99159+-0.08090    !    56.42693+-0.19653       ! definitely 1.0078x slower
   mandreel                                 x2      67.92740+-0.15191    !    68.50462+-0.19064       ! definitely 1.0085x slower
   gbemu                                    x2      60.30344+-0.65758         59.67936+-0.23516         might be 1.0105x faster
   closure                                           0.88833+-0.00385          0.88533+-0.00465       
   jquery                                           11.58502+-0.03336         11.54738+-0.01633       
   box2d                                    x2      16.75842+-0.06345    ?    16.76000+-0.04127       ?
   zlib                                     x2     519.24531+-19.93258   ?   529.23839+-1.89203       ? might be 1.0192x slower
   typescript                               x2    1071.06067+-17.42616      1066.31193+-20.44820      

   <geometric>                                       8.69376+-0.05176          8.69358+-0.03174         might be 1.0000x faster

                                                         Baseline                  Cleanup                                      
Kraken:
   ai-astar                                          374.098+-4.521            371.082+-5.049         
   audio-beat-detection                              108.882+-0.610      ?     109.963+-0.717         ?
   audio-dft                                         150.174+-0.868            149.704+-1.020         
   audio-fft                                          86.256+-6.821             80.177+-5.606           might be 1.0758x faster
   audio-oscillator                                   96.539+-0.173      ^      95.260+-0.153         ^ definitely 1.0134x faster
   imaging-darkroom                                  140.365+-1.004            140.333+-0.736         
   imaging-desaturate                                 84.466+-0.627      ?      84.985+-0.388         ?
   imaging-gaussian-blur                             144.349+-1.003      ?     144.462+-1.088         ?
   json-parse-financial                               62.070+-0.221      ?      62.595+-0.365         ?
   json-stringify-tinderbox                           41.271+-0.124      !      42.021+-0.153         ! definitely 1.0182x slower
   stanford-crypto-aes                                75.097+-0.656      ?      75.291+-0.662         ?
   stanford-crypto-ccm                                65.848+-2.608             65.224+-1.840         
   stanford-crypto-pbkdf2                            138.845+-0.981      ?     139.965+-1.186         ?
   stanford-crypto-sha256-iterative                   56.915+-0.317             56.605+-0.543         

   <arithmetic>                                      116.084+-0.763            115.548+-0.796           might be 1.0046x faster

                                                         Baseline                  Cleanup                                      
JSRegress:
   abc-forward-loop-equal                            62.0682+-0.1434     ?     62.1720+-0.0636        ?
   abc-postfix-backward-loop                         61.6083+-0.1318           61.5688+-0.0841        
   abc-simple-backward-loop                          61.3091+-0.0556           61.2077+-0.0497        
   abc-simple-forward-loop                           61.5677+-0.2466           61.5199+-0.1163        
   abc-skippy-loop                                   42.0013+-0.1525     ?     42.1657+-0.3324        ?
   abs-boolean                                        3.4184+-0.0357     ?      3.4819+-0.0387        ? might be 1.0186x slower
   adapt-to-double-divide                            21.7009+-0.0684     ?     21.7128+-0.0704        ?
   aliased-arguments-getbyval                         1.6740+-0.1143            1.6715+-0.0651        
   allocate-big-object                                3.1800+-0.1098     ?      3.2656+-0.0873        ? might be 1.0269x slower
   arguments-named-and-reflective                    15.1085+-0.3518           15.0746+-0.3501        
   arguments-out-of-bounds                           18.5758+-0.0332     ?     18.6112+-0.0983        ?
   arguments-strict-mode                             12.8947+-0.2754     ?     13.0587+-0.3522        ? might be 1.0127x slower
   arguments                                         11.4388+-0.0800           11.4332+-0.0854        
   arity-mismatch-inlining                            1.1892+-0.0290     ?      1.2225+-0.0388        ? might be 1.0280x slower
   array-access-polymorphic-structure                 7.9513+-0.0805            7.9278+-0.0657        
   array-nonarray-polymorhpic-access                 41.1190+-0.2191           40.6074+-1.1804          might be 1.0126x faster
   array-prototype-every                            111.6422+-0.2003     !    112.5262+-0.6148        ! definitely 1.0079x slower
   array-prototype-forEach                          109.2232+-0.8932     ?    109.5192+-0.5706        ?
   array-prototype-map                              124.6735+-2.4861          124.0004+-2.5844        
   array-prototype-reduce                           104.9543+-0.5647     ?    105.2569+-0.7580        ?
   array-prototype-reduceRight                      105.3582+-0.6879          104.7185+-0.6439        
   array-prototype-some                             111.6165+-0.2144     ?    113.3468+-1.9217        ? might be 1.0155x slower
   array-splice-contiguous                           34.7727+-0.3378     !     35.8519+-0.4091        ! definitely 1.0310x slower
   array-with-double-add                              5.3252+-0.0559     ?      5.3681+-0.0151        ?
   array-with-double-increment                        4.2321+-0.0217            4.1750+-0.0374          might be 1.0137x faster
   array-with-double-mul-add                          6.5493+-0.0387     ^      6.4688+-0.0119        ^ definitely 1.0124x faster
   array-with-double-sum                              4.2673+-0.0313            4.2491+-0.0183        
   array-with-int32-add-sub                           8.5422+-0.0337     !      8.7853+-0.1885        ! definitely 1.0285x slower
   array-with-int32-or-double-sum                     4.3495+-0.0312            4.3354+-0.0213        
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     38.7996+-0.1750           38.6390+-0.1529        
   ArrayBuffer-DataView-alloc-long-lived             16.9175+-0.2802     ?     17.0192+-0.2815        ?
   ArrayBuffer-Int32Array-byteOffset                  5.1020+-0.1983            5.0294+-0.0139          might be 1.0144x faster
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     41.6876+-3.8315           39.7367+-1.8853          might be 1.0491x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     28.2072+-0.1603     ^     27.5235+-0.1837        ^ definitely 1.0248x faster
   ArrayBuffer-Int8Array-alloc-long-lived            16.8138+-2.1193           15.9185+-0.1793          might be 1.0562x faster
   ArrayBuffer-Int8Array-alloc                       13.6458+-0.3295     ?     14.5506+-2.5724        ? might be 1.0663x slower
   asmjs_bool_bug                                     9.5976+-0.1853     ?      9.7096+-0.1721        ? might be 1.0117x slower
   assign-custom-setter-polymorphic                   4.0940+-0.0581     !      4.1918+-0.0398        ! definitely 1.0239x slower
   assign-custom-setter                               5.6039+-0.0315     ?      5.8127+-0.1899        ? might be 1.0373x slower
   basic-set                                         11.1949+-0.5221           11.1298+-0.0903        
   big-int-mul                                        5.3266+-0.2377            5.2237+-0.0130          might be 1.0197x faster
   boolean-test                                       4.0314+-0.0562            3.9959+-0.0278        
   branch-fold                                        4.8407+-0.0350     ?      4.9161+-0.1572        ? might be 1.0156x slower
   branch-on-string-as-boolean                       25.3538+-0.3078           25.2882+-0.3910        
   by-val-generic                                     9.9597+-0.0653            9.9080+-0.2558        
   call-spread-apply                                 37.4915+-0.8748     ?     38.4904+-1.1527        ? might be 1.0266x slower
   call-spread-call                                  31.1302+-0.0865     ^     30.8404+-0.1320        ^ definitely 1.0094x faster
   captured-assignments                               0.6444+-0.0219     ?      0.6492+-0.0241        ?
   cast-int-to-double                                 6.7339+-0.0235     ?      6.8240+-0.1739        ? might be 1.0134x slower
   cell-argument                                     10.7218+-0.0303     ?     10.7826+-0.2197        ?
   cfg-simplify                                       3.6548+-0.0806            3.6434+-0.0936        
   chain-getter-access                               11.7304+-0.0908           11.6052+-0.1325          might be 1.0108x faster
   cmpeq-obj-to-obj-other                            12.6528+-0.1375     !     13.0671+-0.0453        ! definitely 1.0328x slower
   constant-test                                      6.3556+-0.0184     ?      6.3623+-0.0255        ?
   create-lots-of-functions                          13.3037+-0.5555           12.9614+-0.1109          might be 1.0264x faster
   cse-new-array-buffer                               2.8648+-0.0402            2.7787+-0.0864          might be 1.0310x faster
   cse-new-array                                      2.9864+-0.0579            2.9787+-0.0495        
   DataView-custom-properties                        46.2083+-1.2287           45.5124+-0.4256          might be 1.0153x faster
   delay-tear-off-arguments-strictmode               17.5054+-0.2570           17.3861+-0.0780        
   deltablue-varargs                                266.0583+-1.9069     ?    268.6702+-8.2586        ?
   destructuring-arguments                          230.2788+-1.2814     ?    235.8361+-10.9457       ? might be 1.0241x slower
   destructuring-parameters-overridden-by-function   
                                                      0.7323+-0.0307            0.7212+-0.0487          might be 1.0154x faster
   destructuring-swap                                 6.5111+-0.0286            6.5089+-0.0481        
   direct-arguments-getbyval                          1.7095+-0.0661            1.7005+-0.0518        
   div-boolean-double                                 6.6482+-0.0212     ?      6.6833+-0.0341        ?
   div-boolean                                        9.9967+-0.0109     !     10.0710+-0.0184        ! definitely 1.0074x slower
   double-get-by-val-out-of-bounds                    5.7133+-0.0227     ^      5.5549+-0.0347        ^ definitely 1.0285x faster
   double-pollution-getbyval                         11.3955+-0.0430     ?     11.4111+-0.0237        ?
   double-pollution-putbyoffset                       5.3514+-0.0304     ^      5.2711+-0.0395        ^ definitely 1.0152x faster
   double-real-use                                   38.8680+-0.0312     !     39.0460+-0.1097        ! definitely 1.0046x slower
   double-to-int32-typed-array-no-inline              2.9147+-0.0513            2.9027+-0.0509        
   double-to-int32-typed-array                        2.6109+-0.0410            2.5654+-0.0535          might be 1.0177x faster
   double-to-uint32-typed-array-no-inline             2.9718+-0.0460            2.9450+-0.0312        
   double-to-uint32-typed-array                       2.6473+-0.0525     ?      2.6488+-0.0403        ?
   elidable-new-object-dag                           50.3193+-0.8058     ?     50.3413+-0.4375        ?
   elidable-new-object-roflcopter                    50.8408+-0.4193           50.8092+-0.4156        
   elidable-new-object-then-call                     46.7357+-0.2467     ?     46.9992+-0.4955        ?
   elidable-new-object-tree                          52.7918+-0.6395     ?     52.8315+-0.6537        ?
   empty-string-plus-int                              6.7159+-0.1521     ?      6.7271+-0.0628        ?
   emscripten-cube2hash                              48.3326+-0.3124     ?     48.8531+-0.3268        ? might be 1.0108x slower
   exit-length-on-plain-object                       16.8698+-0.0872     ?     17.4952+-0.7665        ? might be 1.0371x slower
   external-arguments-getbyval                        1.6294+-0.0537     ?      1.6655+-0.0615        ? might be 1.0222x slower
   external-arguments-putbyval                        3.0933+-0.1654            3.0282+-0.0560          might be 1.0215x faster
   fixed-typed-array-storage-var-index                1.6789+-0.0308     ?      1.6958+-0.0626        ? might be 1.0101x slower
   fixed-typed-array-storage                          1.2629+-0.0240            1.2496+-0.0284          might be 1.0106x faster
   Float32Array-matrix-mult                           5.8921+-0.0466     ?      5.9247+-0.0474        ?
   Float32Array-to-Float64Array-set                  70.4592+-0.0870     !     73.9915+-0.1406        ! definitely 1.0501x slower
   Float64Array-alloc-long-lived                     80.4173+-0.3633     ^     79.3145+-0.3472        ^ definitely 1.0139x faster
   Float64Array-to-Int16Array-set                    99.7402+-0.3963     ^     93.4952+-0.1544        ^ definitely 1.0668x faster
   fold-double-to-int                                18.5864+-0.1552     ?     18.6248+-0.1537        ?
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     10.7157+-0.2105     ?     10.7184+-0.2382        ?
   fold-get-by-id-to-multi-get-by-offset              8.9760+-0.2921     ?      9.0944+-0.1363        ? might be 1.0132x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.4648+-0.3831     ?      8.4701+-0.4334        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.3057+-0.5966     ?      8.3653+-0.6644        ?
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.7778+-0.3071     ?      7.7787+-0.2733        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.2231+-0.0474            6.0987+-0.3375          might be 1.0204x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     12.2407+-0.7210     ?     12.6628+-0.6421        ? might be 1.0345x slower
   fold-put-by-id-to-multi-put-by-offset              8.9200+-0.5767     ?      8.9666+-0.4092        ?
   fold-put-structure                                 5.9176+-0.0474     ?      5.9606+-0.0391        ?
   for-of-iterate-array-entries                      16.5500+-0.5184           16.1927+-0.3405          might be 1.0221x faster
   for-of-iterate-array-keys                          4.8068+-0.1401     ?      4.9388+-0.1891        ? might be 1.0275x slower
   for-of-iterate-array-values                        4.6561+-0.0500     ?      4.7798+-0.2045        ? might be 1.0266x slower
   fround                                            25.9820+-0.2891     ?     26.2406+-0.3518        ?
   ftl-library-inlining-dataview                     86.4126+-0.0862     ?     86.7813+-0.3783        ?
   ftl-library-inlining                             161.7449+-33.1793         144.2740+-0.1983          might be 1.1211x faster
   function-dot-apply                                 2.8805+-0.0433     ?      2.8958+-0.0308        ?
   function-test                                      3.8060+-0.0397     ?      3.8293+-0.0674        ?
   function-with-eval                               124.7633+-0.9514          123.8104+-0.8024        
   gcse-poly-get-less-obvious                        27.0659+-4.1221           25.2286+-1.9691          might be 1.0728x faster
   gcse-poly-get                                     33.4540+-3.5483           29.7109+-2.5840          might be 1.1260x faster
   gcse                                               5.6418+-0.0271            5.6310+-0.0204        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.6243+-0.1606            3.5333+-0.0273          might be 1.0258x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      7.9460+-0.1116     ?      7.9474+-0.0904        ?
   get-by-id-chain-from-try-block                     8.8924+-0.0081     ^      8.7063+-0.0362        ^ definitely 1.0214x faster
   get-by-id-check-structure-elimination              6.6802+-0.0465     ?      6.6847+-0.0290        ?
   get-by-id-proto-or-self                           22.5911+-0.9970     ?     24.9811+-2.2403        ? might be 1.1058x slower
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.8105+-0.0641     ?      3.8470+-0.2084        ?
   get-by-id-self-or-proto                           22.1123+-0.9911     ?     23.0606+-1.1966        ? might be 1.0429x slower
   get-by-val-out-of-bounds                           5.4045+-0.0329            5.3690+-0.0551        
   get_callee_monomorphic                             3.0481+-0.1333     ?      3.0840+-0.0445        ? might be 1.0118x slower
   get_callee_polymorphic                             4.2763+-0.0854            4.2666+-0.0632        
   getter-no-activation                               6.1677+-0.0418            6.1478+-0.0583        
   getter-prototype                                  19.1430+-0.2014     ?     19.1616+-0.1338        ?
   getter-richards                                  119.2553+-2.3645     ?    120.0335+-1.7076        ?
   getter                                             6.7192+-0.0550     ?      6.8012+-0.0481        ? might be 1.0122x slower
   global-var-const-infer-fire-from-opt               1.2591+-0.1525     ?      1.3055+-0.1271        ? might be 1.0369x slower
   global-var-const-infer                             1.0558+-0.0354     ?      1.1400+-0.1248        ? might be 1.0797x slower
   HashMap-put-get-iterate-keys                      31.0373+-0.3722           30.7209+-0.2404          might be 1.0103x faster
   HashMap-put-get-iterate                           30.6773+-0.2117           30.3654+-0.5507          might be 1.0103x faster
   HashMap-string-put-get-iterate                    40.2012+-1.5833     ^     35.2194+-1.3954        ^ definitely 1.1414x faster
   hoist-make-rope                                   14.3208+-1.1539     ?     14.7665+-1.3856        ? might be 1.0311x slower
   hoist-poly-check-structure-effectful-loop   
                                                      6.4588+-0.0400     ?      6.4836+-0.0492        ?
   hoist-poly-check-structure                         4.7786+-0.0272            4.7678+-0.0285        
   imul-double-only                                  10.0229+-0.0623     ^      9.4725+-0.1127        ^ definitely 1.0581x faster
   imul-int-only                                     12.3222+-0.3697           12.2781+-0.3992        
   imul-mixed                                         9.5611+-0.1233     ?      9.8151+-0.5966        ? might be 1.0266x slower
   in-four-cases                                     28.8295+-0.1128     !     29.9942+-0.2183        ! definitely 1.0404x slower
   in-one-case-false                                 14.1002+-0.0638           13.8383+-0.2094          might be 1.0189x faster
   in-one-case-true                                  14.0590+-0.0375     ^     13.7144+-0.0258        ^ definitely 1.0251x faster
   in-two-cases                                      14.7330+-0.1485     ^     14.1530+-0.0930        ^ definitely 1.0410x faster
   indexed-properties-in-objects                      3.7946+-0.0502            3.7887+-0.0461        
   infer-closure-const-then-mov-no-inline             5.1108+-0.0671     ^      5.0094+-0.0252        ^ definitely 1.0202x faster
   infer-closure-const-then-mov                      25.5530+-0.1854     ?     25.8312+-0.3787        ? might be 1.0109x slower
   infer-closure-const-then-put-to-scope-no-inline   
                                                     16.5005+-0.0361     ?     16.7502+-0.2455        ? might be 1.0151x slower
   infer-closure-const-then-put-to-scope             28.1703+-0.1493     !     29.5809+-1.1496        ! definitely 1.0501x slower
   infer-closure-const-then-reenter-no-inline   
                                                     72.4104+-0.3225     ?     73.0959+-1.1720        ?
   infer-closure-const-then-reenter                  28.8865+-0.9151           28.8506+-0.8386        
   infer-constant-global-property                     4.6298+-0.0958            4.5800+-0.0175          might be 1.0109x faster
   infer-constant-property                            3.5152+-0.0184     ?      3.5610+-0.0347        ? might be 1.0130x slower
   infer-one-time-closure-ten-vars                   15.8865+-0.1956           15.7283+-0.1921          might be 1.0101x faster
   infer-one-time-closure-two-vars                   15.2623+-0.1001           15.0797+-0.1232          might be 1.0121x faster
   infer-one-time-closure                            15.1500+-0.2953     ?     15.1530+-0.0952        ?
   infer-one-time-deep-closure                       26.8258+-0.1937     ?     26.8922+-0.1958        ?
   inline-arguments-access                            4.9858+-0.0946            4.9540+-0.0756        
   inline-arguments-aliased-access                    5.0320+-0.1188            5.0165+-0.0968        
   inline-arguments-local-escape                      5.1383+-0.1950            5.1078+-0.1401        
   inline-get-scoped-var                              6.0699+-0.0654     ?      6.1210+-0.0525        ?
   inlined-put-by-id-transition                      13.9570+-0.2643           13.8094+-0.1864          might be 1.0107x faster
   int-or-other-abs-then-get-by-val                   6.3394+-0.0365     ^      5.9941+-0.0386        ^ definitely 1.0576x faster
   int-or-other-abs-zero-then-get-by-val             22.7919+-0.2342     ?     23.4238+-0.4075        ? might be 1.0277x slower
   int-or-other-add-then-get-by-val                   5.5110+-0.0473     ?      5.5436+-0.0547        ?
   int-or-other-add                                   6.8479+-0.0562     ?      6.8490+-0.0468        ?
   int-or-other-div-then-get-by-val                   5.4437+-0.0291     ^      5.3094+-0.0326        ^ definitely 1.0253x faster
   int-or-other-max-then-get-by-val                   5.5627+-0.0332     ^      5.5003+-0.0135        ^ definitely 1.0113x faster
   int-or-other-min-then-get-by-val                   5.5589+-0.0265     ^      5.3693+-0.0174        ^ definitely 1.0353x faster
   int-or-other-mod-then-get-by-val                   5.0503+-0.0621     ?      5.0994+-0.0950        ?
   int-or-other-mul-then-get-by-val                   5.0573+-0.0215     ?      5.1177+-0.1406        ? might be 1.0119x slower
   int-or-other-neg-then-get-by-val                   6.1060+-0.0188     ^      5.5638+-0.0251        ^ definitely 1.0974x faster
   int-or-other-neg-zero-then-get-by-val             22.6818+-0.2077     !     23.3442+-0.2087        ! definitely 1.0292x slower
   int-or-other-sub-then-get-by-val                   5.5424+-0.0524            5.5153+-0.0524        
   int-or-other-sub                                   4.5974+-0.0416            4.5789+-0.0389        
   int-overflow-local                                 5.7850+-0.0405            5.7319+-0.1740        
   Int16Array-alloc-long-lived                       58.9126+-0.7147           58.2027+-0.3232          might be 1.0122x faster
   Int16Array-bubble-sort-with-byteLength            26.3084+-0.0651     !     27.0109+-0.2123        ! definitely 1.0267x slower
   Int16Array-bubble-sort                            26.9322+-0.2398     ?     26.9779+-0.2370        ?
   Int16Array-load-int-mul                            1.9698+-0.0246            1.9617+-0.0199        
   Int16Array-to-Int32Array-set                      68.5887+-0.0703     !     69.1246+-0.3598        ! definitely 1.0078x slower
   Int32Array-alloc-large                            23.3470+-0.3762     ?     23.4303+-0.3749        ?
   Int32Array-alloc-long-lived                       66.0114+-0.6230           65.2233+-0.6977          might be 1.0121x faster
   Int32Array-alloc                                   3.4170+-0.0703     ?      3.4827+-0.3743        ? might be 1.0192x slower
   Int32Array-Int8Array-view-alloc                    8.3517+-0.0467     ?      8.3605+-0.0253        ?
   int52-spill                                        6.7677+-0.0811            6.7405+-0.0624        
   Int8Array-alloc-long-lived                        53.1388+-0.7743           52.1472+-0.5969          might be 1.0190x faster
   Int8Array-load-with-byteLength                     4.3444+-0.0335     ?      4.4068+-0.1735        ? might be 1.0144x slower
   Int8Array-load                                     4.3530+-0.0273     ?      4.3627+-0.0158        ?
   integer-divide                                    14.3213+-0.1036     ?     14.3812+-0.1493        ?
   integer-modulo                                     2.7508+-0.0920            2.6565+-0.0855          might be 1.0355x faster
   is-boolean-fold-tricky                             5.8466+-0.2136            5.7972+-0.0332        
   is-boolean-fold                                    3.6215+-0.0193     ?      3.6837+-0.0443        ? might be 1.0172x slower
   is-function-fold-tricky-internal-function   
                                                     15.6170+-0.0276     ^     15.1833+-0.0372        ^ definitely 1.0286x faster
   is-function-fold-tricky                            5.8931+-0.0186     ?      5.9482+-0.0801        ?
   is-function-fold                                   3.6844+-0.0415            3.6705+-0.0526        
   is-number-fold-tricky                              5.7832+-0.0276     ?      5.8123+-0.0931        ?
   is-number-fold                                     3.6545+-0.0687     ?      3.6620+-0.0565        ?
   is-object-or-null-fold-functions                   3.7469+-0.0328            3.7423+-0.0661        
   is-object-or-null-fold-less-tricky                 5.8537+-0.0142     ?      5.9615+-0.0971        ? might be 1.0184x slower
   is-object-or-null-fold-tricky                      8.4486+-0.0213            8.4420+-0.0218        
   is-object-or-null-fold                             3.7019+-0.0630            3.6944+-0.0230        
   is-object-or-null-trickier-function                6.0220+-0.0225     ?      6.0699+-0.1157        ?
   is-object-or-null-trickier-internal-function   
                                                     16.2985+-0.0641     !     16.6989+-0.2520        ! definitely 1.0246x slower
   is-object-or-null-tricky-function                  5.9465+-0.0283     ?      5.9914+-0.0311        ?
   is-object-or-null-tricky-internal-function   
                                                     12.0720+-0.0267     ^     11.8963+-0.0287        ^ definitely 1.0148x faster
   is-string-fold-tricky                              5.7970+-0.0255     ?      5.8106+-0.0131        ?
   is-string-fold                                     3.6236+-0.0544     ?      3.7114+-0.1770        ? might be 1.0242x slower
   is-undefined-fold-tricky                           4.8417+-0.0654            4.8016+-0.0423        
   is-undefined-fold                                  3.6639+-0.0662            3.6401+-0.0283        
   large-int-captured                                 5.4955+-0.0993            5.4434+-0.0883        
   large-int-neg                                     21.3974+-0.0881     ^     21.1322+-0.1651        ^ definitely 1.0126x faster
   large-int                                         19.8873+-0.2852           19.5206+-0.1725          might be 1.0188x faster
   load-varargs-elimination                          31.3516+-0.2604     ?     31.6255+-0.0860        ?
   logical-not-weird-types                            4.3513+-0.0473            4.2990+-0.0642          might be 1.0122x faster
   logical-not                                        5.9675+-0.0661     !      6.1282+-0.0930        ! definitely 1.0269x slower
   lots-of-fields                                    14.9067+-0.0930     ?     14.9414+-0.1004        ?
   make-indexed-storage                               3.9790+-0.2916            3.9529+-0.2975        
   make-rope-cse                                      4.8083+-0.0619            4.7662+-0.0603        
   marsaglia-larger-ints                             52.2453+-0.1612           52.1742+-0.2116        
   marsaglia-osr-entry                               29.2806+-0.1460     ?     29.4050+-0.2476        ?
   math-with-out-of-bounds-array-values              32.5067+-1.9226           32.1429+-1.0026          might be 1.0113x faster
   max-boolean                                        3.2168+-0.0476            3.1592+-0.0164          might be 1.0182x faster
   method-on-number                                  22.8708+-0.2147     ?     23.2787+-0.2161        ? might be 1.0178x slower
   min-boolean                                        3.2193+-0.0474            3.1983+-0.0414        
   minus-boolean-double                               4.1091+-0.0316     ?      4.1172+-0.0339        ?
   minus-boolean                                      3.0298+-0.0628            2.9913+-0.0153          might be 1.0129x faster
   misc-strict-eq                                    48.3538+-1.0811           47.9309+-0.6977        
   mod-boolean-double                                14.1358+-0.0184           14.1352+-0.0523        
   mod-boolean                                       10.0667+-0.0475           10.0608+-0.0470        
   mul-boolean-double                                 4.8247+-0.0166            4.7988+-0.0186        
   mul-boolean                                        3.7300+-0.0173     ?      3.7378+-0.0571        ?
   neg-boolean                                        4.1357+-0.0490            4.1104+-0.0252        
   negative-zero-divide                               0.5373+-0.0241            0.5323+-0.0321        
   negative-zero-modulo                               0.5457+-0.0147            0.5212+-0.0303          might be 1.0470x faster
   negative-zero-negate                               0.5039+-0.0314            0.4987+-0.0272          might be 1.0104x faster
   nested-function-parsing                           50.4342+-0.4603           50.3311+-0.3377        
   new-array-buffer-dead                            124.9716+-0.4599     ?    125.3321+-1.4148        ?
   new-array-buffer-push                              8.0832+-0.3174            7.8784+-0.1356          might be 1.0260x faster
   new-array-dead                                    22.4814+-0.7806     ?     22.9073+-0.7556        ? might be 1.0189x slower
   new-array-push                                     4.6827+-0.0810     ?      4.7508+-0.1801        ? might be 1.0145x slower
   no-inline-constructor                             46.6945+-0.1829           46.6540+-0.3923        
   number-test                                        3.9960+-0.1413     ?      4.0682+-0.2109        ? might be 1.0181x slower
   object-closure-call                                7.2012+-0.0641     ?      7.2381+-0.0501        ?
   object-test                                        3.7124+-0.0596     ^      3.6113+-0.0364        ^ definitely 1.0280x faster
   obvious-sink-pathology-taken                     151.7870+-1.1083          151.6200+-1.6764        
   obvious-sink-pathology                           142.5675+-0.8539          142.3259+-1.0376        
   obviously-elidable-new-object                     41.2596+-0.2919           41.2030+-0.2047        
   plus-boolean-arith                                 3.2520+-0.0190     ?      3.2595+-0.0262        ?
   plus-boolean-double                                4.1027+-0.0295     ?      4.1306+-0.0473        ?
   plus-boolean                                       3.1228+-0.0454            3.1160+-0.0177        
   poly-chain-access-different-prototypes-simple   
                                                      4.2731+-0.0211     ?      4.2766+-0.0183        ?
   poly-chain-access-different-prototypes             3.3501+-0.0398     ?      3.3523+-0.0285        ?
   poly-chain-access-simpler                          4.2382+-0.0424     ?      4.2453+-0.0337        ?
   poly-chain-access                                  3.3725+-0.0345            3.3615+-0.0158        
   poly-stricteq                                     83.3443+-0.3664     !     84.1060+-0.1634        ! definitely 1.0091x slower
   polymorphic-array-call                             1.8799+-0.1427            1.8236+-0.0660          might be 1.0309x faster
   polymorphic-get-by-id                              4.0509+-0.0786     ?      4.0605+-0.2026        ?
   polymorphic-put-by-id                             39.2329+-1.4733     ?     40.8713+-1.8717        ? might be 1.0418x slower
   polymorphic-structure                             19.5623+-0.0641     ?     19.5924+-0.2310        ?
   polyvariant-monomorphic-get-by-id                 10.9385+-0.0181           10.9276+-0.0298        
   proto-getter-access                               11.7424+-0.1295     ?     11.7708+-0.2814        ?
   put-by-id-replace-and-transition                  11.6860+-0.0568     ?     11.6990+-0.1435        ?
   put-by-id-slightly-polymorphic                     3.7568+-0.1086            3.6465+-0.0145          might be 1.0302x faster
   put-by-id                                         14.6830+-0.3868           14.4934+-0.0747          might be 1.0131x faster
   put-by-val-direct                                  0.5404+-0.0182            0.5387+-0.0075        
   put-by-val-large-index-blank-indexing-type   
                                                      6.9388+-0.2142            6.8062+-0.1478          might be 1.0195x faster
   put-by-val-machine-int                             3.2948+-0.0924            3.2623+-0.0409        
   rare-osr-exit-on-local                            19.7411+-0.2237     ^     19.0790+-0.1641        ^ definitely 1.0347x faster
   register-pressure-from-osr                        28.1209+-0.0970     ^     27.7845+-0.0265        ^ definitely 1.0121x faster
   repeat-multi-get-by-offset                        32.1580+-0.0559     ^     31.4649+-0.0682        ^ definitely 1.0220x faster
   setter-prototype                                  13.1719+-0.0638     ?     13.6416+-0.6023        ? might be 1.0357x slower
   setter                                             6.8587+-0.0148     !      7.0769+-0.0356        ! definitely 1.0318x slower
   simple-activation-demo                            32.9895+-0.1577     ?     32.9927+-0.0450        ?
   simple-getter-access                              15.4791+-0.3484           15.2904+-0.3360          might be 1.0123x faster
   simple-poly-call-nested                           10.2493+-0.1542           10.1699+-0.0467        
   simple-poly-call                                   1.7946+-0.0303            1.7848+-0.0324        
   sin-boolean                                       24.3118+-0.3637     ?     24.3903+-0.4249        ?
   singleton-scope                                   83.1614+-0.1904           83.1191+-0.0863        
   sink-function                                     13.6433+-0.4021           13.2854+-0.6508          might be 1.0269x faster
   sink-huge-activation                              22.6903+-0.6360     ?     22.9220+-0.5473        ? might be 1.0102x slower
   sinkable-new-object-dag                           84.9805+-0.7027           84.3514+-0.6247        
   sinkable-new-object-taken                         65.6322+-3.1689     ?     65.8191+-3.0931        ?
   sinkable-new-object                               45.7503+-0.5675     ?     46.0223+-0.3013        ?
   slow-array-profile-convergence                     3.7451+-0.1139     ?      3.8437+-0.0714        ? might be 1.0263x slower
   slow-convergence                                   3.6045+-0.0368            3.5973+-0.0449        
   slow-ternaries                                    24.2060+-0.2163           24.0245+-0.2353        
   sorting-benchmark                                 24.6932+-0.5514           24.6858+-0.4376        
   sparse-conditional                                 1.5698+-0.0340            1.5675+-0.0301        
   splice-to-remove                                  19.8423+-0.3218     ?     19.9764+-0.5908        ?
   string-char-code-at                               20.9876+-0.2843     ?     21.1620+-0.1656        ?
   string-concat-object                               2.7364+-0.0655     ?      2.7422+-0.0315        ?
   string-concat-pair-object                          2.6460+-0.0506     ?      2.6642+-0.0514        ?
   string-concat-pair-simple                         13.5157+-0.2640     ?     13.7063+-0.1159        ? might be 1.0141x slower
   string-concat-simple                              14.0951+-0.2387     ?     14.2005+-0.1988        ?
   string-cons-repeat                                 9.2513+-0.0515     ?      9.4098+-0.1888        ? might be 1.0171x slower
   string-cons-tower                                  9.6667+-0.2086            9.5395+-0.0810          might be 1.0133x faster
   string-equality                                   23.6063+-0.2168           23.5155+-0.0265        
   string-get-by-val-big-char                         9.0806+-0.0862     ?      9.1562+-0.0958        ?
   string-get-by-val-out-of-bounds-insane             4.8190+-0.0441     ?      5.0474+-0.6344        ? might be 1.0474x slower
   string-get-by-val-out-of-bounds                    6.8684+-0.0265     ^      6.6848+-0.0538        ^ definitely 1.0275x faster
   string-get-by-val                                  4.3996+-0.0316     ^      4.2893+-0.0293        ^ definitely 1.0257x faster
   string-hash                                        2.6992+-0.0704     ?      2.7437+-0.1147        ? might be 1.0165x slower
   string-long-ident-equality                        19.6039+-0.2716           19.4805+-0.1779        
   string-out-of-bounds                              19.0359+-0.1593     ?     19.0513+-0.0943        ?
   string-repeat-arith                               43.4468+-0.5989           42.8693+-0.7905          might be 1.0135x faster
   string-sub                                        82.3200+-0.2182     ^     81.1168+-0.1957        ^ definitely 1.0148x faster
   string-test                                        3.7943+-0.0348            3.7915+-0.0380        
   string-var-equality                               46.2826+-0.3475     ?     46.5564+-0.1709        ?
   structure-hoist-over-transitions                   3.2639+-0.0683            3.2330+-0.0567        
   substring-concat-weird                            53.2482+-0.6092           52.7653+-0.1292        
   substring-concat                                  57.7355+-1.1844     ?     60.3466+-7.2989        ? might be 1.0452x slower
   substring                                         63.4055+-0.9276           62.6812+-0.2170          might be 1.0116x faster
   switch-char-constant                               3.4739+-0.0413     ?      3.4799+-0.0438        ?
   switch-char                                        7.8057+-0.0242            7.7732+-0.2004        
   switch-constant                                   11.2731+-0.6442           10.7506+-0.8877          might be 1.0486x faster
   switch-string-basic-big-var                       24.4424+-0.4139     ?     24.5066+-0.4056        ?
   switch-string-basic-big                           23.5321+-0.2996           22.9768+-0.3396          might be 1.0242x faster
   switch-string-basic-var                           19.7283+-0.0995     ?     19.8987+-0.0945        ?
   switch-string-basic                               19.3378+-0.2378           18.8169+-0.3269          might be 1.0277x faster
   switch-string-big-length-tower-var                26.5957+-0.0297           26.5598+-0.0874        
   switch-string-length-tower-var                    20.1005+-0.1995           20.0606+-0.1977        
   switch-string-length-tower                        17.3988+-0.1986           17.2304+-0.0791        
   switch-string-short                               17.1941+-0.0667     ?     17.2528+-0.1996        ?
   switch                                            15.3530+-0.2367     ^     14.0450+-0.1074        ^ definitely 1.0931x faster
   tear-off-arguments-simple                          4.1361+-0.0805            4.0854+-0.0461          might be 1.0124x faster
   tear-off-arguments                                 5.4071+-0.0441     ?      5.4895+-0.1201        ? might be 1.0152x slower
   temporal-structure                                15.8851+-0.0627           15.8675+-0.0728        
   to-int32-boolean                                  18.9233+-0.1154           18.6267+-0.1996          might be 1.0159x faster
   try-catch-get-by-val-cloned-arguments             18.1443+-0.3468           17.8828+-0.3005          might be 1.0146x faster
   try-catch-get-by-val-direct-arguments              7.7983+-0.0713            7.6645+-0.0682          might be 1.0175x faster
   try-catch-get-by-val-scoped-arguments              8.9816+-0.0585            8.9486+-0.0641        
   typed-array-get-set-by-val-profiling              39.8994+-0.6285     ?     40.2024+-0.5922        ?
   undefined-property-access                        458.2072+-0.7950          457.8249+-0.5490        
   undefined-test                                     3.9502+-0.0373            3.9157+-0.0399        
   unprofiled-licm                                   28.9218+-0.0516           28.8149+-0.2147        
   varargs-call                                      19.7487+-0.1390     ^     19.4434+-0.1203        ^ definitely 1.0157x faster
   varargs-construct-inline                          33.9153+-0.1252           33.7347+-0.2229        
   varargs-construct                                 28.9379+-0.0709           28.9348+-0.0644        
   varargs-inline                                    11.9621+-0.0572     ?     11.9979+-0.0646        ?
   varargs-strict-mode                               13.0958+-0.2104     ?     13.1982+-0.0330        ?
   varargs                                           13.1533+-0.2389     ?     13.1689+-0.1161        ?
   weird-inlining-const-prop                          2.8992+-0.0306     ?      2.9430+-0.0948        ? might be 1.0151x slower

   <geometric>                                       11.1467+-0.0095           11.1272+-0.0175          might be 1.0018x faster

                                                         Baseline                  Cleanup                                      
AsmBench:
   bigfib.cpp                                       662.2800+-1.9151     ?    664.0327+-2.9713        ?
   cray.c                                           582.6438+-1.7950     ?    585.1523+-0.9829        ?
   dry.c                                            665.7187+-16.7209    ?    669.6738+-13.0361       ?
   FloatMM.c                                        981.7186+-0.8931     ?    982.5483+-0.9883        ?
   gcc-loops.cpp                                   5398.6945+-19.9279        5386.8262+-20.6273       
   n-body.c                                        1338.3314+-1.5712         1337.5039+-1.1509        
   Quicksort.c                                      571.0984+-7.3592          569.8118+-2.2348        
   stepanov_container.cpp                          5053.1910+-17.3673        5047.7298+-8.0727        
   Towers.c                                         341.1200+-3.4657          340.9508+-2.2335        

   <geometric>                                     1067.0364+-2.8968     ?   1067.8936+-2.6431        ? might be 1.0008x slower

                                                         Baseline                  Cleanup                                      
CompressionBench:
   huffman                                           77.5303+-2.4317           76.5352+-1.7042          might be 1.0130x faster
   arithmetic-simple                                451.1222+-0.6117          450.9536+-1.2013        
   arithmetic-precise                               366.6309+-1.7393     ?    367.1316+-0.7801        ?
   arithmetic-complex-precise                       364.5636+-3.0375     ?    366.0035+-3.4183        ?
   arithmetic-precise-order-0                       464.0109+-0.5699     ?    465.7971+-1.9316        ?
   arithmetic-precise-order-1                       436.7401+-2.2413     ?    438.2528+-1.2560        ?
   arithmetic-precise-order-2                       501.5858+-3.3546     ?    503.6953+-2.3826        ?
   arithmetic-simple-order-1                        531.2106+-1.8268     ?    533.1872+-0.9793        ?
   arithmetic-simple-order-2                        598.7681+-2.4969     ?    602.1770+-2.9760        ?
   lz-string                                        400.7597+-2.9111     ?    409.3882+-7.3152        ? might be 1.0215x slower

   <geometric>                                      378.6246+-1.2321     ?    379.9261+-1.4980        ? might be 1.0034x slower

                                                         Baseline                  Cleanup                                      
Geomean of preferred means:
   <scaled-result>                                   76.6604+-0.1408           76.6034+-0.1108          might be 1.0007x faster
Comment 5 Basile Clement 2015-07-13 13:54:52 PDT
Created attachment 256720 [details]
Patch
Comment 6 WebKit Commit Bot 2015-07-13 13:58:00 PDT
Attachment 256720 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/GPRInfo.h:429:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 7 Basile Clement 2015-07-13 13:58:58 PDT
(In reply to comment #6)
> Attachment 256720 [details] did not pass style-queue:
> 
> 
> ERROR: Source/JavaScriptCore/jit/GPRInfo.h:429:  One space before end of
> line comments  [whitespace/comments] [5]
> Total errors found: 1 in 21 files
> 
> 
> If any of these errors are false positives, please file a bug against
> check-webkit-style.

Fixed locally.
Comment 8 Michael Saboff 2015-07-13 15:43:09 PDT
Comment on attachment 256720 [details]
Patch

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

r=me with a couple of changes.

> Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:408
> +    if (GPRInfo::returnValueGPR != GPRInfo::argumentGPR0)

A register to register move() in the macro assembler already does a src != dest check so this is redundant.

> Source/JavaScriptCore/jit/FPRInfo.h:280
> +    static const FPRReg fpRegT5 = MIPSRegisters::f10;
>      static const FPRReg fpRegT5 = MIPSRegisters::f18;

You have fpRegT5 listed twice.  I think one of these should be fpRegT6.

> Source/JavaScriptCore/jit/GPRInfo.h:406
> +    static const GPRReg regC0 = X86Registers::ebx;
> +    static const GPRReg regC1 = X86Registers::r12;
> +    static const GPRReg regC2 = X86Registers::r13;

What about changing the names to regCS<n? or even regCalleeSave<n>?

> Source/JavaScriptCore/jit/JIT.cpp:594
> +        if (returnValueGPR != GPRInfo::argumentGPR0)

Like above, this not needed.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:33
> +#   Currently this is just 32-bit so "i" and "p" are interchangeable

Change this line to 'For 32-bit, "i" and "p" are interchangeable'

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:132
> +

Delete this blank line

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:867
> +        const address = a1
> +        const zeroValue = a2

Let's add "const vm = a0" for readability.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:934
>      if X86_64
> -        leap (label - _relativePCBase)[t1], t0
> -        move index, t2
> -        storep t0, [t4, t2, 8]
> +        leap (label - _relativePCBase)[t1], t3
> +        move index, t4
> +        storep t3, [a0, t4, 8]
>      elsif X86_64_WIN
> -        leap (label - _relativePCBase)[t1], t0
> +        leap (label - _relativePCBase)[t1], t3
>          move index, t4
> -        storep t0, [t2, t4, 8]
> +        storep t3, [a0, t4, 8]

These two cases are now the same and can be merged together.
Comment 9 Basile Clement 2015-07-13 15:58:09 PDT
(In reply to comment #8)
> Comment on attachment 256720 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=256720&action=review
> 
> r=me with a couple of changes.

Thanks!

> 
> > Source/JavaScriptCore/dfg/DFGJITCompiler.cpp:408
> > +    if (GPRInfo::returnValueGPR != GPRInfo::argumentGPR0)
> 
> A register to register move() in the macro assembler already does a src !=
> dest check so this is redundant.

Removed.

> 
> > Source/JavaScriptCore/jit/FPRInfo.h:280
> > +    static const FPRReg fpRegT5 = MIPSRegisters::f10;
> >      static const FPRReg fpRegT5 = MIPSRegisters::f18;
> 
> You have fpRegT5 listed twice.  I think one of these should be fpRegT6.

Indeed, good catch.

> 
> > Source/JavaScriptCore/jit/GPRInfo.h:406
> > +    static const GPRReg regC0 = X86Registers::ebx;
> > +    static const GPRReg regC1 = X86Registers::r12;
> > +    static const GPRReg regC2 = X86Registers::r13;
> 
> What about changing the names to regCS<n? or even regCalleeSave<n>?

Changed those to regCS<n>.

> 
> > Source/JavaScriptCore/jit/JIT.cpp:594
> > +        if (returnValueGPR != GPRInfo::argumentGPR0)
> 
> Like above, this not needed.

Removed.

> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:33
> > +#   Currently this is just 32-bit so "i" and "p" are interchangeable
> 
> Change this line to 'For 32-bit, "i" and "p" are interchangeable'

Done.

> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:132
> > +
> 
> Delete this blank line

Done.

> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:867
> > +        const address = a1
> > +        const zeroValue = a2
> 
> Let's add "const vm = a0" for readability.

Ditto.

> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:934
> >      if X86_64
> > -        leap (label - _relativePCBase)[t1], t0
> > -        move index, t2
> > -        storep t0, [t4, t2, 8]
> > +        leap (label - _relativePCBase)[t1], t3
> > +        move index, t4
> > +        storep t3, [a0, t4, 8]
> >      elsif X86_64_WIN
> > -        leap (label - _relativePCBase)[t1], t0
> > +        leap (label - _relativePCBase)[t1], t3
> >          move index, t4
> > -        storep t0, [t2, t4, 8]
> > +        storep t3, [a0, t4, 8]
> 
> These two cases are now the same and can be merged together.

Indeed, merged.
Comment 10 Basile Clement 2015-07-13 16:02:36 PDT
Committed r186792 <https://trac.webkit.org/changeset/186792>.
Comment 11 Csaba Osztrogonác 2015-09-14 10:56:42 PDT
Comment on attachment 256720 [details]
Patch

Cleared review? from attachment 256720 [details] so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).