Bug 143807 - Extract the allocation profile from JSFunction into a rare object
Summary: Extract the allocation profile from JSFunction into a rare object
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Enhancement
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-04-15 17:24 PDT by Basile Clement
Modified: 2015-04-19 09:21 PDT (History)
13 users (show)

See Also:


Attachments
Patch (37.81 KB, patch)
2015-04-15 17:26 PDT, Basile Clement
no flags Details | Formatted Diff | Diff
Fixed patch (40.54 KB, patch)
2015-04-15 19:05 PDT, Basile Clement
no flags Details | Formatted Diff | Diff
Remove additional GPR (40.18 KB, patch)
2015-04-16 10:24 PDT, Basile Clement
no flags Details | Formatted Diff | Diff
Hopefully final patch (40.01 KB, patch)
2015-04-16 10:32 PDT, Basile Clement
fpizlo: review+
fpizlo: commit-queue-
Details | Formatted Diff | Diff
Fix style issues (41.00 KB, patch)
2015-04-16 11:09 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-04-15 17:24:05 PDT
Patch forthcoming.
Comment 1 Basile Clement 2015-04-15 17:26:08 PDT
Created attachment 250885 [details]
Patch
Comment 2 Basile Clement 2015-04-15 17:26:45 PDT
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3).



VMs tested:

"Conf#1" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r182860)

"Conf#2" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r182860)



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.



                                                          Conf#1                    Conf#2                                      

SunSpider:

   3d-cube                                            4.3513+-0.1785            4.3360+-0.1592        

   3d-morph                                           5.4240+-0.2413            5.3956+-0.1235        

   3d-raytrace                                        5.3105+-0.1665     ?      5.3206+-0.2631        ?

   access-binary-trees                                2.1284+-0.2883            2.0650+-0.1657          might be 1.0307x faster

   access-fannkuch                                    5.2994+-0.1189     ^      5.1220+-0.0457        ^ definitely 1.0346x faster

   access-nbody                                       2.6285+-0.1909            2.6151+-0.1385        

   access-nsieve                                      3.3890+-0.1249            3.3334+-0.1385          might be 1.0167x faster

   bitops-3bit-bits-in-byte                           1.4627+-0.0548     ?      1.4956+-0.1999        ? might be 1.0225x slower

   bitops-bits-in-byte                                3.2333+-0.0620     ?      3.2732+-0.1676        ? might be 1.0123x slower

   bitops-bitwise-and                                 2.1891+-0.1071     ?      2.2299+-0.2655        ? might be 1.0186x slower

   bitops-nsieve-bits                                 3.4100+-0.1431            3.3588+-0.0775          might be 1.0152x faster

   controlflow-recursive                              2.0201+-0.1349            1.9712+-0.2311          might be 1.0249x faster

   crypto-aes                                         3.6953+-0.2613     ?      3.8790+-0.5430        ? might be 1.0497x slower

   crypto-md5                                         2.1340+-0.0327     ?      2.1982+-0.0638        ? might be 1.0301x slower

   crypto-sha1                                        2.4345+-0.0927            2.4067+-0.0722          might be 1.0115x faster

   date-format-tofte                                  7.0014+-0.4243            7.0010+-0.2992        

   date-format-xparb                                  5.1174+-0.5043            5.0167+-0.2513          might be 1.0201x faster

   math-cordic                                        2.8093+-0.0494     ?      2.9795+-0.3261        ? might be 1.0606x slower

   math-partial-sums                                  4.9482+-0.5678            4.5165+-0.1615          might be 1.0956x faster

   math-spectral-norm                                 1.8149+-0.1162     ?      1.9406+-0.2506        ? might be 1.0693x slower

   regexp-dna                                         6.3341+-0.2084     ?      6.7853+-0.2775        ? might be 1.0712x slower

   string-base64                                      4.0452+-0.1517     ?      4.2826+-0.1629        ? might be 1.0587x slower

   string-fasta                                       6.0740+-0.1815            5.9692+-0.2017          might be 1.0176x faster

   string-tagcloud                                    8.9479+-0.5924            8.8315+-0.2544          might be 1.0132x faster

   string-unpack-code                                20.0675+-1.0627           19.7247+-1.5502          might be 1.0174x faster

   string-validate-input                              4.4497+-0.0519     ?      4.5726+-0.2648        ? might be 1.0276x slower



   <arithmetic>                                       4.6431+-0.0687            4.6393+-0.0905          might be 1.0008x faster



                                                          Conf#1                    Conf#2                                      

LongSpider:

   3d-cube                                          805.9812+-21.1292    ?    813.0506+-11.1882       ?

   3d-morph                                        1552.0595+-9.2674     ?   1560.3653+-9.6951        ?

   3d-raytrace                                      677.2637+-13.8804    ?    679.2043+-9.6171        ?

   access-binary-trees                              852.5469+-8.2149          850.5845+-10.6724       

   access-fannkuch                                  268.2402+-4.9708     ?    268.8646+-8.1638        ?

   access-nbody                                     561.8849+-3.9658          559.1225+-5.5987        

   access-nsieve                                    654.4847+-9.7351     ?    663.2570+-24.9499       ? might be 1.0134x slower

   bitops-3bit-bits-in-byte                          41.9596+-1.1038           41.4735+-1.0046          might be 1.0117x faster

   bitops-bits-in-byte                               85.4745+-5.5203     ?     87.4890+-4.2883        ? might be 1.0236x slower

   bitops-nsieve-bits                               682.3320+-5.7989     ?    685.3353+-8.4696        ?

   controlflow-recursive                            468.8551+-7.7111     ?    475.3370+-10.7655       ? might be 1.0138x slower

   crypto-aes                                       557.6466+-16.6942    ?    558.5888+-11.1633       ?

   crypto-md5                                       543.4281+-11.1941    ?    544.2752+-15.7457       ?

   crypto-sha1                                      584.4222+-18.9099    ?    601.1943+-22.1867       ? might be 1.0287x slower

   date-format-tofte                                535.7275+-5.1229          524.5095+-12.2826         might be 1.0214x faster

   date-format-xparb                                671.3372+-41.2631         648.0869+-18.9281         might be 1.0359x faster

   math-cordic                                      523.4803+-14.0231         519.3766+-10.0796       

   math-partial-sums                                430.4116+-6.2189     ?    433.1621+-5.9940        ?

   math-spectral-norm                               573.9135+-8.8926     ?    574.4497+-7.6372        ?

   string-base64                                    320.3403+-3.4645     ?    320.4820+-1.5651        ?

   string-fasta                                     391.5900+-3.5560          389.6848+-7.2312        

   string-tagcloud                                  206.1483+-11.5628    ?    207.6641+-8.3331        ?



   <geometric>                                      443.8034+-3.4514     ?    444.4876+-2.3120        ? might be 1.0015x slower



                                                          Conf#1                    Conf#2                                      

V8Spider:

   crypto                                            51.7504+-1.8540     ?     52.7356+-2.2131        ? might be 1.0190x slower

   deltablue                                         85.6441+-8.3407           78.0389+-7.2471          might be 1.0975x faster

   earley-boyer                                      38.3156+-1.3167     ?     39.1658+-0.9573        ? might be 1.0222x slower

   raytrace                                          31.5426+-1.3368           31.4274+-0.8680        

   regexp                                            59.2784+-2.6065     ?     60.9765+-4.2955        ? might be 1.0286x slower

   richards                                          73.1881+-3.1756           71.2199+-4.3579          might be 1.0276x faster

   splay                                             35.2180+-2.1385           35.0353+-3.2324        



   <geometric>                                       50.2885+-1.2212           49.8388+-1.4047          might be 1.0090x faster



                                                          Conf#1                    Conf#2                                      

Octane:

   encrypt                                           0.20917+-0.00291    ^     0.20275+-0.00312       ^ definitely 1.0316x faster

   decrypt                                           3.63869+-0.21103    ?     3.70599+-0.05919       ? might be 1.0185x slower

   deltablue                                x2       0.16576+-0.00505          0.16545+-0.00328       

   earley                                            0.48861+-0.00667    ^     0.47382+-0.00452       ^ definitely 1.0312x faster

   boyer                                             5.76205+-0.43739          5.73269+-0.19125       

   navier-stokes                            x2       5.24776+-0.06561          5.21805+-0.03738       

   raytrace                                 x2       1.04842+-0.04976    ?     1.09179+-0.04619       ? might be 1.0414x slower

   richards                                 x2       0.09695+-0.00279          0.09545+-0.00107         might be 1.0158x faster

   splay                                    x2       0.34778+-0.00360          0.34488+-0.00262       

   regexp                                   x2      29.27406+-0.34967         29.01738+-0.52917       

   pdfjs                                    x2      40.72890+-0.64434    ^    39.69891+-0.36499       ^ definitely 1.0259x faster

   mandreel                                 x2      47.66526+-0.53252         47.37911+-0.61930       

   gbemu                                    x2      31.40833+-0.36088    ?    32.11507+-1.59081       ? might be 1.0225x slower

   closure                                           0.50644+-0.00739    ?     0.50699+-0.01412       ?

   jquery                                            6.27980+-0.10694          6.20199+-0.06621         might be 1.0125x faster

   box2d                                    x2      10.56740+-0.13805    ?    10.66469+-0.11187       ?

   zlib                                     x2     375.41363+-18.39243       368.38181+-16.55848        might be 1.0191x faster

   typescript                               x2     690.40413+-17.49761       684.44393+-11.66221      



   <geometric>                                       5.92639+-0.05255          5.90409+-0.02452         might be 1.0038x faster



                                                          Conf#1                    Conf#2                                      

Kraken:

   ai-astar                                          283.567+-7.912      ?     290.582+-4.608         ? might be 1.0247x slower

   audio-beat-detection                              102.799+-1.283      ?     104.721+-2.821         ? might be 1.0187x slower

   audio-dft                                         166.767+-3.061      ?     173.423+-8.775         ? might be 1.0399x slower

   audio-fft                                          80.274+-3.549             79.426+-3.065           might be 1.0107x faster

   audio-oscillator                                  184.104+-5.671      ?     184.316+-2.930         ?

   imaging-darkroom                                   95.977+-1.004      ?      97.370+-2.378         ? might be 1.0145x slower

   imaging-desaturate                                 61.096+-4.870             58.605+-3.155           might be 1.0425x faster

   imaging-gaussian-blur                              89.670+-1.087      ?      90.760+-2.958         ? might be 1.0122x slower

   json-parse-financial                               37.007+-0.786      ?      37.426+-0.927         ? might be 1.0113x slower

   json-stringify-tinderbox                           53.990+-1.140             52.961+-2.414           might be 1.0194x faster

   stanford-crypto-aes                                58.041+-1.020      ?      58.267+-2.908         ?

   stanford-crypto-ccm                                48.891+-7.332             44.840+-4.612           might be 1.0904x faster

   stanford-crypto-pbkdf2                            154.977+-3.332            154.907+-6.089         

   stanford-crypto-sha256-iterative                   51.138+-1.856      ?      53.542+-3.257         ? might be 1.0470x slower



   <arithmetic>                                      104.878+-1.471      ?     105.796+-1.037         ? might be 1.0088x slower



                                                          Conf#1                    Conf#2                                      

JSRegress:

   abs-boolean                                        2.4470+-0.0717            2.4020+-0.0689          might be 1.0187x faster

   adapt-to-double-divide                            16.5470+-0.4568     ?     17.6393+-2.4509        ? might be 1.0660x slower

   aliased-arguments-getbyval                         1.0880+-0.0253     ?      1.2509+-0.4839        ? might be 1.1498x slower

   allocate-big-object                                2.3208+-0.1204            2.2062+-0.1695          might be 1.0520x faster

   arguments-named-and-reflective                    11.0983+-0.3014     ?     11.3414+-0.3893        ? might be 1.0219x slower

   arguments-out-of-bounds                           10.5700+-0.4304           10.4874+-0.4199        

   arguments-strict-mode                             10.1077+-0.1490     ?     10.3695+-0.5764        ? might be 1.0259x slower

   arguments                                          9.2575+-0.4066            9.1913+-0.3207        

   arity-mismatch-inlining                            0.7933+-0.0482     ?      0.8027+-0.0401        ? might be 1.0119x slower

   array-access-polymorphic-structure                 6.1383+-0.2885     ?      6.1785+-0.1563        ?

   array-nonarray-polymorhpic-access                 29.9244+-2.4530           28.9091+-1.1795          might be 1.0351x faster

   array-prototype-every                             81.1347+-2.5441     ?     82.1025+-2.2622        ? might be 1.0119x slower

   array-prototype-forEach                           79.9167+-1.0646     ?     81.9886+-1.9933        ? might be 1.0259x slower

   array-prototype-map                               87.9089+-2.4001           87.0442+-0.5808        

   array-prototype-some                              82.6800+-3.1647     ?     84.5488+-3.0160        ? might be 1.0226x slower

   array-splice-contiguous                           39.5854+-1.9664           39.2182+-0.7816        

   array-with-double-add                              3.4590+-0.1063            3.4455+-0.0669        

   array-with-double-increment                        3.0582+-0.0367     ?      3.1237+-0.0830        ? might be 1.0214x slower

   array-with-double-mul-add                          4.1863+-0.1335     ?      4.2050+-0.0578        ?

   array-with-double-sum                              3.1970+-0.0507     ?      3.2220+-0.0887        ?

   array-with-int32-add-sub                           6.2628+-0.5371            5.9781+-0.2515          might be 1.0476x faster

   array-with-int32-or-double-sum                     3.2559+-0.1113            3.2370+-0.0981        

   ArrayBuffer-DataView-alloc-large-long-lived   

                                                     29.2911+-2.1794           28.3682+-1.3741          might be 1.0325x faster

   ArrayBuffer-DataView-alloc-long-lived             13.0213+-0.5505     ?     13.1938+-1.3226        ? might be 1.0132x slower

   ArrayBuffer-Int32Array-byteOffset                  3.7203+-0.1995            3.6816+-0.1867          might be 1.0105x faster

   ArrayBuffer-Int8Array-alloc-large-long-lived   

                                                     28.6268+-1.8027     ?     29.6625+-2.5780        ? might be 1.0362x slower

   ArrayBuffer-Int8Array-alloc-long-lived-buffer   

                                                     22.9383+-2.2068           21.8558+-0.6083          might be 1.0495x faster

   ArrayBuffer-Int8Array-alloc-long-lived            12.0463+-0.4333     ?     12.4331+-0.8103        ? might be 1.0321x slower

   ArrayBuffer-Int8Array-alloc                       10.4162+-0.5165     ?     10.5004+-0.2224        ?

   asmjs_bool_bug                                     6.8307+-0.1466     ?      6.9816+-0.4124        ? might be 1.0221x slower

   assign-custom-setter-polymorphic                   2.5518+-0.0465     ?      2.5977+-0.1283        ? might be 1.0180x slower

   assign-custom-setter                               3.4644+-0.1091     ?      3.4959+-0.1295        ?

   basic-set                                          8.0380+-0.4414            7.9612+-0.4836        

   big-int-mul                                        3.4882+-0.0546     ?      3.5283+-0.1376        ? might be 1.0115x slower

   boolean-test                                       2.8894+-0.0869            2.8186+-0.0454          might be 1.0251x faster

   branch-fold                                        3.5740+-0.0814     ?      3.5741+-0.0552        ?

   by-val-generic                                     7.7531+-0.4641            7.6645+-0.2614          might be 1.0116x faster

   call-spread-apply                                 28.0690+-1.1195     ?     28.8062+-1.3833        ? might be 1.0263x slower

   call-spread-call                                  22.2289+-0.4870           21.7955+-0.5135          might be 1.0199x faster

   captured-assignments                               0.3833+-0.0161     ?      0.3995+-0.0459        ? might be 1.0425x slower

   cast-int-to-double                                 4.9596+-0.0722            4.8877+-0.0557          might be 1.0147x faster

   cell-argument                                      6.3247+-0.1647            6.2119+-0.1538          might be 1.0182x faster

   cfg-simplify                                       2.9167+-0.0889            2.9148+-0.0519        

   chain-getter-access                                9.2930+-0.2108            9.1744+-0.2308          might be 1.0129x faster

   cmpeq-obj-to-obj-other                            10.2631+-1.5007     ?     11.6333+-0.6556        ? might be 1.1335x slower

   constant-test                                      4.5138+-0.0899     ?      4.6021+-0.0345        ? might be 1.0196x slower

   create-lots-of-functions                          19.3610+-0.5056     ^     18.1178+-0.5121        ^ definitely 1.0686x faster

   DataView-custom-properties                        33.7576+-2.4577     ?     34.1814+-2.0969        ? might be 1.0126x slower

   deconstructing-parameters-overridden-by-function   

                                                      0.4246+-0.0426     ?      0.4714+-0.1571        ? might be 1.1103x slower

   delay-tear-off-arguments-strictmode               12.4769+-0.6749     ?     12.5562+-0.5191        ?

   deltablue-varargs                                145.9152+-3.1133          145.6403+-2.0731        

   destructuring-arguments                           12.9150+-0.2424     ?     13.4771+-0.4675        ? might be 1.0435x slower

   destructuring-swap                                 4.8110+-0.3235            4.7069+-0.1121          might be 1.0221x faster

   direct-arguments-getbyval                          1.1450+-0.1188            1.0568+-0.0284          might be 1.0834x faster

   div-boolean-double                                 5.4067+-0.0886     ?      5.4630+-0.1114        ? might be 1.0104x slower

   div-boolean                                        8.2948+-0.0783     ?      8.3210+-0.1594        ?

   double-get-by-val-out-of-bounds                    4.1602+-0.0719            4.0210+-0.1020          might be 1.0346x faster

   double-pollution-getbyval                          8.9152+-0.1050            8.8576+-0.1342        

   double-pollution-putbyoffset                       3.8286+-0.1303     ?      3.8502+-0.1062        ?

   double-to-int32-typed-array-no-inline              2.0328+-0.0462     ?      2.0838+-0.0829        ? might be 1.0251x slower

   double-to-int32-typed-array                        1.7736+-0.0949            1.7233+-0.0267          might be 1.0292x faster

   double-to-uint32-typed-array-no-inline             2.1069+-0.0449     ?      2.1945+-0.1496        ? might be 1.0416x slower

   double-to-uint32-typed-array                       1.7973+-0.0879     ?      1.9734+-0.1967        ? might be 1.0980x slower

   elidable-new-object-dag                           36.2705+-1.1591     ?     36.9351+-2.3367        ? might be 1.0183x slower

   elidable-new-object-roflcopter                    38.5317+-1.2620           38.0727+-0.5554          might be 1.0121x faster

   elidable-new-object-then-call                     30.7309+-1.9426     ?     31.6465+-1.5167        ? might be 1.0298x slower

   elidable-new-object-tree                          38.5294+-0.5985           37.4125+-1.3000          might be 1.0299x faster

   empty-string-plus-int                              4.7699+-0.1188     ?      4.8735+-0.3916        ? might be 1.0217x slower

   emscripten-cube2hash                              27.9970+-1.0466     ?     28.3249+-1.8332        ? might be 1.0117x slower

   exit-length-on-plain-object                       13.1510+-0.3428     ?     13.3556+-1.0776        ? might be 1.0156x slower

   external-arguments-getbyval                        1.1167+-0.0502     ?      1.2026+-0.1600        ? might be 1.0769x slower

   external-arguments-putbyval                        2.1879+-0.1548            2.1558+-0.0726          might be 1.0149x faster

   fixed-typed-array-storage-var-index                1.2823+-0.1551     ?      1.2834+-0.1316        ?

   fixed-typed-array-storage                          0.8455+-0.1221     ?      0.8700+-0.1142        ? might be 1.0290x slower

   Float32Array-matrix-mult                           4.0235+-0.2515            4.0002+-0.1814        

   Float32Array-to-Float64Array-set                  50.1787+-1.7765           50.0590+-2.0595        

   Float64Array-alloc-long-lived                     65.1996+-1.9900           63.8942+-4.0696          might be 1.0204x faster

   Float64Array-to-Int16Array-set                    59.5739+-2.5364     ?     63.1797+-2.9900        ? might be 1.0605x slower

   fold-double-to-int                                13.4412+-1.0650           12.7556+-0.4693          might be 1.0538x faster

   fold-get-by-id-to-multi-get-by-offset-rare-int   

                                                      9.5311+-0.2923     !     10.4165+-0.5644        ! definitely 1.0929x slower

   fold-get-by-id-to-multi-get-by-offset              7.9154+-0.4113     ?      8.0894+-0.6026        ? might be 1.0220x slower

   fold-multi-get-by-offset-to-get-by-offset   

                                                      7.1672+-0.8907            7.1663+-1.1202        

   fold-multi-get-by-offset-to-poly-get-by-offset   

                                                      7.1836+-0.6323     ?      7.2475+-1.4040        ?

   fold-multi-put-by-offset-to-poly-put-by-offset   

                                                      6.3281+-0.5629     ?      6.9726+-0.6157        ? might be 1.1018x slower

   fold-multi-put-by-offset-to-put-by-offset   

                                                      3.7879+-0.6619     ?      4.5599+-0.7657        ? might be 1.2038x slower

   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   

                                                      7.6506+-0.2611     ?      8.0191+-0.5272        ? might be 1.0482x slower

   fold-put-by-id-to-multi-put-by-offset              8.2140+-0.3295            7.7263+-0.5353          might be 1.0631x faster

   fold-put-structure                                 3.7931+-0.2473     ?      3.8881+-0.3441        ? might be 1.0251x slower

   for-of-iterate-array-entries                       4.3619+-0.1543     ?      4.3892+-0.2508        ?

   for-of-iterate-array-keys                          3.7457+-0.1248     ?      3.8086+-0.1485        ? might be 1.0168x slower

   for-of-iterate-array-values                        3.6927+-0.1684     ?      3.9528+-0.3635        ? might be 1.0705x slower

   fround                                            18.3245+-0.9290           17.7986+-0.5862          might be 1.0295x faster

   ftl-library-inlining-dataview                     62.4902+-1.6495     ?     63.4805+-2.9161        ? might be 1.0158x slower

   ftl-library-inlining                             109.1415+-3.6737     ?    109.1933+-3.0696        ?

   function-dot-apply                                 2.2162+-0.3892            1.9995+-0.0941          might be 1.1084x faster

   function-test                                      3.0187+-0.0624     ?      3.0838+-0.2756        ? might be 1.0216x slower

   function-with-eval                                90.8018+-1.8237     ?     91.1503+-5.5415        ?

   gcse-poly-get-less-obvious                        14.9247+-0.6754           14.9209+-0.4949        

   gcse-poly-get                                     16.8665+-0.6207           16.3741+-0.3081          might be 1.0301x faster

   gcse                                               3.9220+-0.1638            3.9197+-0.0743        

   get-by-id-bimorphic-check-structure-elimination-simple   

                                                      2.6029+-0.0676     ?      2.6348+-0.0724        ? might be 1.0123x slower

   get-by-id-bimorphic-check-structure-elimination   

                                                      5.9172+-0.2047            5.7904+-0.1125          might be 1.0219x faster

   get-by-id-chain-from-try-block                     6.9068+-0.4276            6.7198+-0.2121          might be 1.0278x faster

   get-by-id-check-structure-elimination              4.6242+-0.2982            4.3971+-0.0594          might be 1.0516x faster

   get-by-id-proto-or-self                           14.5816+-0.8079           14.5014+-0.2062        

   get-by-id-quadmorphic-check-structure-elimination-simple   

                                                      2.9205+-0.1074     ?      2.9373+-0.0759        ?

   get-by-id-self-or-proto                           15.2506+-0.7060           14.6537+-0.6429          might be 1.0407x faster

   get-by-val-out-of-bounds                           4.0247+-0.1105            3.9674+-0.3359          might be 1.0144x faster

   get_callee_monomorphic                             3.1870+-0.0588            3.1087+-0.1211          might be 1.0252x faster

   get_callee_polymorphic                             3.3073+-0.2544            3.2628+-0.2182          might be 1.0137x faster

   getter-no-activation                               4.8774+-0.1539     ?      4.9098+-0.1565        ?

   getter-richards                                  114.9438+-21.0411         106.4574+-7.6423          might be 1.0797x faster

   getter                                             5.3629+-0.5664     ?      5.6187+-0.5914        ? might be 1.0477x slower

   global-var-const-infer-fire-from-opt               0.9174+-0.1982            0.8186+-0.1018          might be 1.1207x faster

   global-var-const-infer                             0.8488+-0.1323            0.8268+-0.0589          might be 1.0267x faster

   HashMap-put-get-iterate-keys                      24.5997+-0.6597           24.2360+-0.4131          might be 1.0150x faster

   HashMap-put-get-iterate                           24.4452+-0.4996           23.9115+-0.7288          might be 1.0223x faster

   HashMap-string-put-get-iterate                    25.0247+-1.8637     ?     25.3269+-1.8388        ? might be 1.0121x slower

   hoist-make-rope                                    8.4273+-0.9837            8.0370+-0.5119          might be 1.0486x faster

   hoist-poly-check-structure-effectful-loop   

                                                      4.1768+-0.1928     ?      4.2096+-0.2305        ?

   hoist-poly-check-structure                         3.3617+-0.1426     ?      3.4393+-0.1364        ? might be 1.0231x slower

   imul-double-only                                   6.6837+-0.0837     ?      7.0327+-0.4151        ? might be 1.0522x slower

   imul-int-only                                      8.5438+-0.6180            8.4200+-0.8476          might be 1.0147x faster

   imul-mixed                                         6.6873+-0.2674            6.6116+-0.3278          might be 1.0114x faster

   in-four-cases                                     16.0926+-0.7004           15.5995+-0.5874          might be 1.0316x faster

   in-one-case-false                                  8.5703+-0.8041            8.4790+-0.5344          might be 1.0108x faster

   in-one-case-true                                   8.3352+-0.2441     ?      8.7532+-0.7984        ? might be 1.0502x slower

   in-two-cases                                       8.7413+-0.4121     ?      8.8831+-0.1606        ? might be 1.0162x slower

   indexed-properties-in-objects                      3.0389+-0.3934            2.7865+-0.0970          might be 1.0906x faster

   infer-closure-const-then-mov-no-inline             3.2487+-0.0299            3.2090+-0.0880          might be 1.0124x faster

   infer-closure-const-then-mov                      17.1023+-0.5943     ?     17.7515+-0.6377        ? might be 1.0380x slower

   infer-closure-const-then-put-to-scope-no-inline   

                                                     12.2264+-0.7531           12.2021+-1.0730        

   infer-closure-const-then-put-to-scope             24.1777+-1.0407     ?     24.7710+-1.7980        ? might be 1.0245x slower

   infer-closure-const-then-reenter-no-inline   

                                                     51.5117+-0.5737     ?     53.6785+-2.5452        ? might be 1.0421x slower

   infer-closure-const-then-reenter                  24.5851+-1.6039           24.1594+-1.0726          might be 1.0176x faster

   infer-constant-global-property                    30.2894+-0.3676     ?     30.8308+-1.4379        ? might be 1.0179x slower

   infer-constant-property                            2.6012+-0.0377     ?      2.6929+-0.1057        ? might be 1.0353x slower

   infer-one-time-closure-ten-vars                    8.5869+-0.2672            8.5217+-0.2592        

   infer-one-time-closure-two-vars                    8.3461+-0.4496            8.0946+-0.3877          might be 1.0311x faster

   infer-one-time-closure                             8.0044+-0.2049     ?      8.0071+-0.1362        ?

   infer-one-time-deep-closure                       12.8431+-0.2929           12.8362+-0.2785        

   inline-arguments-access                            3.6133+-0.0647     ?      3.8733+-0.2685        ? might be 1.0720x slower

   inline-arguments-aliased-access                    3.7615+-0.1298     ?      4.2146+-0.9004        ? might be 1.1204x slower

   inline-arguments-local-escape                      3.8512+-0.1097     ?      4.7598+-0.8653        ? might be 1.2359x slower

   inline-get-scoped-var                              4.6466+-0.1738     ?      4.7523+-0.1596        ? might be 1.0228x slower

   inlined-put-by-id-transition                       9.1040+-0.5404     ?      9.2681+-1.1541        ? might be 1.0180x slower

   int-or-other-abs-then-get-by-val                   4.8204+-0.0683     ?      4.8572+-0.0621        ?

   int-or-other-abs-zero-then-get-by-val             16.7458+-1.1446           16.1743+-0.4484          might be 1.0353x faster

   int-or-other-add-then-get-by-val                   4.7622+-0.9350            3.9939+-0.0848          might be 1.1924x faster

   int-or-other-add                                   4.8892+-0.2197     ?      4.8919+-0.1231        ?

   int-or-other-div-then-get-by-val                   3.8716+-0.1419            3.8261+-0.1023          might be 1.0119x faster

   int-or-other-max-then-get-by-val                   4.0236+-0.0957     ?      4.0723+-0.1084        ? might be 1.0121x slower

   int-or-other-min-then-get-by-val                   4.4017+-0.3416            4.2161+-0.2137          might be 1.0440x faster

   int-or-other-mod-then-get-by-val                   3.5405+-0.1954     ?      3.5422+-0.1543        ?

   int-or-other-mul-then-get-by-val                   3.7321+-0.1482            3.7158+-0.0562        

   int-or-other-neg-then-get-by-val                   4.3765+-0.1337     ?      4.4526+-0.3742        ? might be 1.0174x slower

   int-or-other-neg-zero-then-get-by-val             16.3265+-0.3323     ?     17.1420+-0.8509        ? might be 1.0500x slower

   int-or-other-sub-then-get-by-val                   4.1029+-0.0647            4.0551+-0.1018          might be 1.0118x faster

   int-or-other-sub                                   3.5291+-0.1039     ^      3.3637+-0.0232        ^ definitely 1.0492x faster

   int-overflow-local                                 4.3227+-0.2873            4.1696+-0.1362          might be 1.0367x faster

   Int16Array-alloc-long-lived                       44.9307+-1.8153     ?     44.9941+-2.6205        ?

   Int16Array-bubble-sort-with-byteLength            17.8456+-0.3220           17.4260+-0.3872          might be 1.0241x faster

   Int16Array-bubble-sort                            18.3149+-1.1043           17.8524+-0.9480          might be 1.0259x faster

   Int16Array-load-int-mul                            1.4119+-0.0552     ?      1.4187+-0.0616        ?

   Int16Array-to-Int32Array-set                      46.6766+-1.6102     ?     49.4229+-1.5800        ? might be 1.0588x slower

   Int32Array-alloc-large                            13.5403+-0.8172           12.9837+-1.2923          might be 1.0429x faster

   Int32Array-alloc-long-lived                       52.2821+-1.7672           51.1169+-2.4143          might be 1.0228x faster

   Int32Array-alloc                                   2.6732+-0.1611     ?      2.8685+-0.2351        ? might be 1.0731x slower

   Int32Array-Int8Array-view-alloc                    6.5135+-0.1935     ?      6.8676+-0.6793        ? might be 1.0544x slower

   int52-spill                                        6.1901+-0.1403     ?      6.2548+-0.3288        ? might be 1.0105x slower

   Int8Array-alloc-long-lived                        41.5637+-2.6369     ?     41.9657+-1.9899        ?

   Int8Array-load-with-byteLength                     3.3803+-0.0651     ?      3.4696+-0.1029        ? might be 1.0264x slower

   Int8Array-load                                     3.3928+-0.0504     ?      3.5075+-0.1899        ? might be 1.0338x slower

   integer-divide                                    10.8359+-0.1329           10.8241+-0.2211        

   integer-modulo                                     1.7508+-0.1243     ?      1.7933+-0.1891        ? might be 1.0243x slower

   large-int-captured                                 4.9695+-0.2195            4.7894+-0.0808          might be 1.0376x faster

   large-int-neg                                     14.7512+-0.3105     ?     14.9455+-0.3321        ? might be 1.0132x slower

   large-int                                         14.7057+-1.2848           14.1331+-0.3249          might be 1.0405x faster

   logical-not                                        4.3738+-0.5171            4.3016+-0.2493          might be 1.0168x faster

   lots-of-fields                                    10.2178+-0.4758     ?     10.4213+-0.2671        ? might be 1.0199x slower

   make-indexed-storage                               2.9106+-0.1317            2.8947+-0.3064        

   make-rope-cse                                      4.1259+-0.4273            3.8891+-0.3678          might be 1.0609x faster

   marsaglia-larger-ints                             33.0348+-0.7826     ?     33.1362+-0.9114        ?

   marsaglia-osr-entry                               21.5758+-0.8149     ?     21.6227+-1.0558        ?

   max-boolean                                        2.6696+-0.1082     ?      2.7087+-0.1518        ? might be 1.0146x slower

   method-on-number                                  17.2861+-0.1209     ?     18.2095+-1.3223        ? might be 1.0534x slower

   min-boolean                                        2.6209+-0.0893            2.6203+-0.0538        

   minus-boolean-double                               3.1611+-0.0886            3.1045+-0.1085          might be 1.0182x faster

   minus-boolean                                      2.3757+-0.1565            2.3493+-0.0650          might be 1.0112x faster

   misc-strict-eq                                    30.8309+-1.5289           29.3101+-0.8581          might be 1.0519x faster

   mod-boolean-double                                11.2475+-0.1101     ?     11.2770+-0.3256        ?

   mod-boolean                                        8.6964+-0.4684            8.4384+-0.0889          might be 1.0306x faster

   mul-boolean-double                                 3.6336+-0.0721     ?      3.6897+-0.1839        ? might be 1.0155x slower

   mul-boolean                                        2.8127+-0.0725            2.7802+-0.0611          might be 1.0117x faster

   neg-boolean                                        3.0795+-0.0420     ?      3.1750+-0.1171        ? might be 1.0310x slower

   negative-zero-divide                               0.3247+-0.0382            0.3243+-0.0304        

   negative-zero-modulo                               0.3616+-0.1617            0.2866+-0.0117          might be 1.2615x faster

   negative-zero-negate                               0.3037+-0.0235            0.2940+-0.0444          might be 1.0328x faster

   nested-function-parsing                           33.4737+-0.4162           33.1794+-0.5459        

   new-array-buffer-dead                              2.7588+-0.0951            2.6984+-0.0742          might be 1.0224x faster

   new-array-buffer-push                              5.5800+-0.3222     ?      5.9913+-0.4773        ? might be 1.0737x slower

   new-array-dead                                    10.1062+-0.5379            9.8837+-0.6697          might be 1.0225x faster

   new-array-push                                     3.5486+-0.1768     ?      3.6952+-0.3021        ? might be 1.0413x slower

   no-inline-constructor                             96.0861+-2.3181     ?    101.0527+-5.0416        ? might be 1.0517x slower

   number-test                                        2.8767+-0.1351     ?      2.9318+-0.1498        ? might be 1.0192x slower

   object-closure-call                                4.8381+-0.0924     ?      5.0502+-0.2476        ? might be 1.0438x slower

   object-test                                        2.8946+-0.1125            2.8885+-0.0972        

   obvious-sink-pathology-taken                     108.2443+-1.8968     ?    109.0769+-2.3924        ?

   obvious-sink-pathology                           105.2601+-2.6540     ?    106.7945+-2.3189        ? might be 1.0146x slower

   obviously-elidable-new-object                     29.0853+-0.9474           28.0793+-1.6868          might be 1.0358x faster

   plus-boolean-arith                                 2.3867+-0.0238     ?      2.4349+-0.2101        ? might be 1.0202x slower

   plus-boolean-double                                3.3150+-0.5270     ?      3.3153+-0.4388        ?

   plus-boolean                                       2.6865+-0.3043            2.6433+-0.1416          might be 1.0163x faster

   poly-chain-access-different-prototypes-simple   

                                                      2.7579+-0.0734            2.7311+-0.0440        

   poly-chain-access-different-prototypes             2.6934+-0.1833            2.5474+-0.0483          might be 1.0573x faster

   poly-chain-access-simpler                          2.7611+-0.1065            2.7164+-0.0683          might be 1.0165x faster

   poly-chain-access                                  2.5560+-0.0736     ?      2.6841+-0.2057        ? might be 1.0501x slower

   poly-stricteq                                     49.9447+-2.3295     ?     50.9228+-2.1288        ? might be 1.0196x slower

   polymorphic-array-call                             1.3330+-0.2299            1.1597+-0.1140          might be 1.1495x faster

   polymorphic-get-by-id                              3.0607+-0.5783            2.8054+-0.0428          might be 1.0910x faster

   polymorphic-put-by-id                             25.2950+-1.9675     ?     25.3914+-1.0398        ?

   polymorphic-structure                             13.3582+-0.0774     ?     13.4792+-0.7486        ?

   polyvariant-monomorphic-get-by-id                  7.2417+-0.6198            6.3695+-0.3046          might be 1.1369x faster

   proto-getter-access                                9.2262+-0.1738     ?      9.3690+-0.2347        ? might be 1.0155x slower

   put-by-id-replace-and-transition                   7.9064+-0.2603     ?      8.1257+-1.5109        ? might be 1.0277x slower

   put-by-id-slightly-polymorphic                     2.5765+-0.0566     ?      2.6063+-0.0328        ? might be 1.0116x slower

   put-by-id                                         10.8564+-0.8895     ?     11.0350+-1.4826        ? might be 1.0165x slower

   put-by-val-direct                                  0.4960+-0.0188            0.4794+-0.0273          might be 1.0346x faster

   put-by-val-large-index-blank-indexing-type   

                                                      5.3332+-0.1801     ?      5.5276+-0.5819        ? might be 1.0364x slower

   put-by-val-machine-int                             2.4430+-0.3109            2.3938+-0.1683          might be 1.0206x faster

   rare-osr-exit-on-local                            14.5754+-0.1570     ?     14.7751+-0.2857        ? might be 1.0137x slower

   register-pressure-from-osr                        17.9425+-1.3491           17.2388+-0.3619          might be 1.0408x faster

   setter                                             5.7654+-0.3138     ?      5.9409+-0.6959        ? might be 1.0304x slower

   simple-activation-demo                            25.5822+-1.0465           24.4492+-0.3769          might be 1.0463x faster

   simple-getter-access                              12.2469+-0.2270     ?     12.4367+-0.6603        ? might be 1.0155x slower

   simple-poly-call-nested                            9.1729+-0.4342            8.7048+-0.5874          might be 1.0538x faster

   simple-poly-call                                   1.2172+-0.0516     ?      1.2383+-0.0791        ? might be 1.0173x slower

   sin-boolean                                       19.2640+-2.2581     ?     19.5773+-1.0929        ? might be 1.0163x slower

   singleton-scope                                   64.7191+-2.5280           64.3277+-2.3284        

   sinkable-new-object-dag                           59.3475+-1.4328           59.3381+-3.5678        

   sinkable-new-object-taken                         46.4440+-1.2259           45.6636+-1.9789          might be 1.0171x faster

   sinkable-new-object                               30.8000+-0.6025     ?     31.2879+-1.5587        ? might be 1.0158x slower

   slow-array-profile-convergence                     2.5523+-0.0920     ?      2.7250+-0.2071        ? might be 1.0677x slower

   slow-convergence                                   2.4540+-0.1392            2.3775+-0.0919          might be 1.0322x faster

   sorting-benchmark                                 19.9351+-0.2945     ?     20.1936+-0.6075        ? might be 1.0130x slower

   sparse-conditional                                 1.0732+-0.0236            1.0630+-0.0237        

   splice-to-remove                                  14.9857+-0.8762           14.2835+-0.4009          might be 1.0492x faster

   string-char-code-at                               15.5874+-1.6960           15.0841+-0.3360          might be 1.0334x faster

   string-concat-object                               2.0522+-0.0734            2.0415+-0.0671        

   string-concat-pair-object                          2.1482+-0.1470     ?      2.1695+-0.2370        ?

   string-concat-pair-simple                          9.8400+-0.6300            9.4590+-0.5268          might be 1.0403x faster

   string-concat-simple                               9.7713+-0.7697            9.6748+-0.3354        

   string-cons-repeat                                 7.4106+-0.8353            7.0088+-0.3639          might be 1.0573x faster

   string-cons-tower                                  6.7628+-0.2068     ?      6.8241+-0.5052        ?

   string-equality                                   16.0970+-0.2158           15.8285+-0.4133          might be 1.0170x faster

   string-get-by-val-big-char                         6.6118+-0.2895            6.6075+-0.2083        

   string-get-by-val-out-of-bounds-insane             3.9981+-0.1946            3.9610+-0.2683        

   string-get-by-val-out-of-bounds                    4.1211+-0.1380     ?      4.1410+-0.0970        ?

   string-get-by-val                                  2.9617+-0.4066            2.7778+-0.0485          might be 1.0662x faster

   string-hash                                        1.8992+-0.0726            1.8407+-0.0449          might be 1.0318x faster

   string-long-ident-equality                        13.5400+-0.5006           13.2640+-0.1854          might be 1.0208x faster

   string-out-of-bounds                              11.0115+-0.6230           10.8793+-0.3301          might be 1.0121x faster

   string-repeat-arith                               27.7100+-0.8342     ?     27.8004+-0.9779        ?

   string-sub                                        57.6659+-1.3248           57.4607+-3.0040        

   string-test                                        2.8607+-0.2511            2.8349+-0.3307        

   string-var-equality                               28.7307+-0.6587     ?     28.9283+-2.0548        ?

   structure-hoist-over-transitions                   2.5308+-0.3787            2.3550+-0.1144          might be 1.0746x faster

   substring-concat-weird                            34.7950+-1.9028     ?     35.1104+-1.4638        ?

   substring-concat                                  36.8240+-1.7533     ?     37.3585+-2.4048        ? might be 1.0145x slower

   substring                                         43.4368+-1.5777           42.6465+-2.1750          might be 1.0185x faster

   switch-char-constant                               2.6923+-0.0793     ?      2.7522+-0.2170        ? might be 1.0222x slower

   switch-char                                        5.8794+-0.8110     ?      6.1860+-0.5772        ? might be 1.0522x slower

   switch-constant                                    8.3120+-1.8192            7.6528+-1.3334          might be 1.0861x faster

   switch-string-basic-big-var                       13.1865+-0.6113           13.1327+-0.4918        

   switch-string-basic-big                           13.1063+-0.8972     ?     13.4681+-1.2100        ? might be 1.0276x slower

   switch-string-basic-var                           12.5857+-0.1542     ?     13.3750+-1.5991        ? might be 1.0627x slower

   switch-string-basic                               12.2845+-0.9972           12.2083+-0.8656        

   switch-string-big-length-tower-var                19.0946+-0.5982           18.8591+-0.8912          might be 1.0125x faster

   switch-string-length-tower-var                    13.1603+-0.4897           13.1156+-0.5273        

   switch-string-length-tower                        11.9500+-0.5492           11.5292+-0.4682          might be 1.0365x faster

   switch-string-short                               11.4360+-0.2374     ?     11.6886+-0.2499        ? might be 1.0221x slower

   switch                                            11.2175+-0.7249     ?     11.6713+-0.8491        ? might be 1.0404x slower

   tear-off-arguments-simple                          3.0621+-0.1749     ?      3.0950+-0.1255        ? might be 1.0107x slower

   tear-off-arguments                                 4.0537+-0.1320     ?      4.0640+-0.2690        ?

   temporal-structure                                12.8728+-1.0210           12.4593+-0.2351          might be 1.0332x faster

   to-int32-boolean                                  13.2303+-0.4304           13.0375+-0.2702          might be 1.0148x faster

   try-catch-get-by-val-cloned-arguments             14.0837+-1.2924           12.9720+-0.8019          might be 1.0857x faster

   try-catch-get-by-val-direct-arguments              5.6621+-0.1302     ?      5.9954+-0.6771        ? might be 1.0589x slower

   try-catch-get-by-val-scoped-arguments              6.8892+-0.3583     ?      7.0235+-0.5856        ? might be 1.0195x slower

   undefined-property-access                        221.7123+-4.4892     ?    224.6543+-6.6061        ? might be 1.0133x slower

   undefined-test                                     2.9931+-0.1423            2.8862+-0.0326          might be 1.0370x faster

   unprofiled-licm                                   14.4461+-0.7887     ?     14.4980+-0.5982        ?

   varargs-call                                      14.2791+-0.1581           13.9928+-0.3318          might be 1.0205x faster

   varargs-construct-inline                          17.1877+-0.3266     ?     18.6308+-1.4743        ? might be 1.0840x slower

   varargs-construct                                 30.2887+-1.6360           30.1033+-1.5078        

   varargs-inline                                     8.7581+-0.9182            8.5734+-0.3605          might be 1.0216x faster

   varargs-strict-mode                                9.4986+-1.0589     ?      9.6034+-0.9567        ? might be 1.0110x slower

   varargs                                            9.1910+-0.0851            9.1539+-0.1327        

   weird-inlining-const-prop                          2.1704+-0.3752            2.1100+-0.1346          might be 1.0286x faster



   <geometric>                                        7.7486+-0.0189     ?      7.7488+-0.0330        ? might be 1.0000x slower



                                                          Conf#1                    Conf#2                                      

AsmBench:

   bigfib.cpp                                       457.7183+-2.2443     ?    462.6533+-3.7366        ? might be 1.0108x slower

   cray.c                                           404.8771+-3.7259     ?    406.6829+-5.3605        ?

   dry.c                                            445.7400+-18.9474         431.0726+-16.3180         might be 1.0340x faster

   FloatMM.c                                        719.1459+-16.9821         710.0690+-8.3355          might be 1.0128x faster

   gcc-loops.cpp                                   3649.7099+-46.4415        3608.2496+-31.4029         might be 1.0115x faster

   n-body.c                                         852.5490+-10.7679         851.9524+-6.0051        

   Quicksort.c                                      407.8164+-7.5912     ?    412.7252+-7.8622        ? might be 1.0120x slower

   stepanov_container.cpp                          3762.6456+-41.7441        3729.1539+-22.3776       

   Towers.c                                         243.8719+-2.6687     ?    246.5487+-5.7779        ? might be 1.0110x slower



   <geometric>                                      743.0915+-3.1920          740.7067+-3.8797          might be 1.0032x faster



                                                          Conf#1                    Conf#2                                      

CompressionBench:

   huffman                                          320.0449+-4.4448     ?    322.8716+-5.5127        ?

   arithmetic-simple                                353.8173+-4.7846          349.5854+-2.0231          might be 1.0121x faster

   arithmetic-precise                               273.1763+-3.3772          270.0466+-2.5023          might be 1.0116x faster

   arithmetic-complex-precise                       271.0485+-2.6181          270.5658+-1.4383        

   arithmetic-precise-order-0                       378.9841+-10.3023    ?    384.0884+-13.1022       ? might be 1.0135x slower

   arithmetic-precise-order-1                       311.5114+-2.3965          308.6568+-3.8442        

   arithmetic-precise-order-2                       350.6539+-4.4347          346.0896+-2.2586          might be 1.0132x faster

   arithmetic-simple-order-1                        344.7344+-5.9207     ?    345.8405+-7.9524        ?

   arithmetic-simple-order-2                        394.4603+-3.9589     ?    396.3191+-5.6523        ?

   lz-string                                        347.5848+-8.3916     ?    349.2193+-11.8821       ?



   <geometric>                                      332.2468+-1.2255          331.8051+-1.2837          might be 1.0013x faster



                                                          Conf#1                    Conf#2                                      

Geomean of preferred means:

   <scaled-result>                                   57.7180+-0.2085           57.6611+-0.2612          might be 1.0010x faster
Comment 3 Basile Clement 2015-04-15 18:45:17 PDT
I forgot to remove the destroy() functions in JSCallee/JSFunction/JSBoundFunction (should be dead code now). I am preparing an updated patch.
Comment 4 Basile Clement 2015-04-15 19:05:36 PDT
Created attachment 250889 [details]
Fixed patch
Comment 5 Basile Clement 2015-04-15 19:07:02 PDT
The bench results should still be valid for the new patch, but I will rerun them tomorrow to double check.
Comment 6 Filip Pizlo 2015-04-15 20:25:56 PDT
Comment on attachment 250889 [details]
Fixed patch

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

LGTM other than maybe using one too many GPRs.  When you're ready to request review and have the reviewed patch committed, please set the review bit to "?" and the commit-queue bit to "?" as well.  Then whoever reviews this can set both bits to "+" which will trigger the automatic commit bot.

Our usual procedure for posting patches is:

- Create a bug and upload a patch as you have done.
- Post performance results as you have done, if applicable (some patches can safely be presumed to be perf-neutral).
- Mark the patch r?/cq?.
- Add appropriate reviewers to the CC on the bug.  That would be me, ggaren@apple.com, and msaboff@apple.com.  Maybe others.
- Send e-mail to the reviewers to poke them.

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3490
> +        GPRTemporary rareData(this);

See below...

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3561
> +        GPRTemporary rareData(this);

Note that this increases the GPR usage of this code snippet, which then evicts other things from registers in case of pressure.  It might be nice to avoid using a separate GPR for this...

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:3579
> -        
> -        m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfAllocator()), allocatorGPR);
> -        m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfStructure()), structureGPR);
> -        slowPath.append(m_jit.branchTestPtr(MacroAssembler::Zero, allocatorGPR));
> +
> +        m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfRareData()), rareDataGPR);
> +        slowPath.append(m_jit.branchTestPtr(MacroAssembler::Zero, rareDataGPR));
> +        m_jit.loadPtr(JITCompiler::Address(rareDataGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfAllocator()), allocatorGPR);
> +        m_jit.loadPtr(JITCompiler::Address(rareDataGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfStructure()), structureGPR);

Is it clear that you need a separate GPR for rareDataGPR?  Could you instead use structureGPR?  I believe that this code would work fine:

        m_jit.loadPtr(JITCompiler::Address(calleeGPR, JSFunction::offsetOfRareData()), structureGPR);
        slowPath.append(m_jit.branchTestPtr(MacroAssembler::Zero, structureGPR));
        m_jit.loadPtr(JITCompiler::Address(structureGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfAllocator()), allocatorGPR);
        m_jit.loadPtr(JITCompiler::Address(structureGPR, FunctionRareData::offsetOfAllocationProfile() + ObjectAllocationProfile::offsetOfStructure()), structureGPR);

This works because we only need the rareData until we load the structure, and it's OK to issue a load instruction that uses/defs the same register.  Such a sequence would be strictly better from a register pressure perspective.
Comment 7 Basile Clement 2015-04-16 10:24:49 PDT
Created attachment 250927 [details]
Remove additional GPR
Comment 8 Basile Clement 2015-04-16 10:25:39 PDT
Here is the new benchmark w/ the additional GPR removed.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-MacBook-Pro (MacBookPro11,3).

VMs tested:
"Conf#1" at /Volumes/Data/secondary/OpenSource/WebKitBuild/Release/jsc (r182874)
"Conf#2" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc (r182874)

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.

                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            4.2751+-0.1618     ?      4.3051+-0.1287        ?
   3d-morph                                           5.2443+-0.1484     ?      5.4814+-0.6629        ? might be 1.0452x slower
   3d-raytrace                                        5.6020+-0.3578            5.5575+-0.7740        
   access-binary-trees                                1.9568+-0.1172     ?      2.0829+-0.1869        ? might be 1.0644x slower
   access-fannkuch                                    5.2535+-0.1691            5.1101+-0.0772          might be 1.0281x faster
   access-nbody                                       2.7100+-0.4389            2.5473+-0.0688          might be 1.0639x faster
   access-nsieve                                      3.2419+-0.0328     ?      3.3524+-0.1971        ? might be 1.0341x slower
   bitops-3bit-bits-in-byte                           1.5218+-0.2325            1.4383+-0.0574          might be 1.0580x faster
   bitops-bits-in-byte                                3.2115+-0.1585            3.1365+-0.1147          might be 1.0239x faster
   bitops-bitwise-and                                 2.0138+-0.0356     ?      2.0474+-0.0820        ? might be 1.0167x slower
   bitops-nsieve-bits                                 3.3853+-0.1453            3.3663+-0.1296        
   controlflow-recursive                              2.0552+-0.2885            1.9727+-0.1284          might be 1.0418x faster
   crypto-aes                                         3.6840+-0.1291     ?      3.7177+-0.3822        ?
   crypto-md5                                         2.1862+-0.0626     ?      2.2449+-0.0968        ? might be 1.0269x slower
   crypto-sha1                                        2.7869+-0.7359            2.3460+-0.0608          might be 1.1879x faster
   date-format-tofte                                  6.9065+-0.2500     ?      6.9370+-0.3947        ?
   date-format-xparb                                  4.8311+-0.1972     ?      5.1482+-0.7599        ? might be 1.0656x slower
   math-cordic                                        2.9469+-0.1004            2.8778+-0.1447          might be 1.0240x faster
   math-partial-sums                                  4.4467+-0.0884     ?      4.5785+-0.6243        ? might be 1.0296x slower
   math-spectral-norm                                 1.8158+-0.0585            1.7428+-0.0627          might be 1.0419x faster
   regexp-dna                                         6.4248+-0.4988     ?      6.5942+-0.2221        ? might be 1.0264x slower
   string-base64                                      4.2583+-0.4344            4.2490+-0.2877        
   string-fasta                                       5.8477+-0.0182            5.7767+-0.0836          might be 1.0123x faster
   string-tagcloud                                    8.9775+-0.7981     ?      9.2810+-0.5547        ? might be 1.0338x slower
   string-unpack-code                                20.1492+-1.2473           20.1485+-2.1006        
   string-validate-input                              4.3938+-0.1725     ?      4.4193+-0.1910        ?

   <arithmetic>                                       4.6203+-0.0876     ?      4.6331+-0.0990        ? might be 1.0028x slower

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                          787.7651+-9.8427     ?    796.0437+-20.7486       ? might be 1.0105x slower
   3d-morph                                        1540.5809+-25.6819    ?   1558.0421+-41.3556       ? might be 1.0113x slower
   3d-raytrace                                      667.0268+-7.1077     ?    667.0935+-3.9206        ?
   access-binary-trees                              849.0704+-15.3632         838.3417+-5.5639          might be 1.0128x faster
   access-fannkuch                                  269.5464+-3.1122          268.2630+-6.3289        
   access-nbody                                     561.4915+-9.6159          552.8761+-2.9952          might be 1.0156x faster
   access-nsieve                                    626.1717+-2.9813     ?    632.7624+-12.9957       ? might be 1.0105x slower
   bitops-3bit-bits-in-byte                          42.1627+-1.7482           41.2813+-0.9975          might be 1.0214x faster
   bitops-bits-in-byte                               83.7639+-4.4055     ?     84.8185+-2.5604        ? might be 1.0126x slower
   bitops-nsieve-bits                               666.4224+-6.5566     ?    673.1970+-20.9553       ? might be 1.0102x slower
   controlflow-recursive                            460.3107+-6.1788     ?    464.1873+-4.3324        ?
   crypto-aes                                       542.3236+-3.5903     ?    552.6162+-11.5164       ? might be 1.0190x slower
   crypto-md5                                       536.6162+-14.5443         532.3539+-6.7520        
   crypto-sha1                                      569.9403+-3.3739     ?    571.6066+-4.7282        ?
   date-format-tofte                                526.3601+-9.9023          512.6865+-5.3605          might be 1.0267x faster
   date-format-xparb                                639.4729+-5.2480     ?    646.0918+-14.8343       ? might be 1.0104x slower
   math-cordic                                      508.6027+-4.6132     ?    510.7360+-6.0197        ?
   math-partial-sums                                429.7371+-5.4419     ?    431.0619+-8.8535        ?
   math-spectral-norm                               566.4093+-6.4445          565.0580+-6.0389        
   string-base64                                    311.8376+-2.2076     ?    312.4631+-4.2592        ?
   string-fasta                                     386.3601+-5.6181     ?    387.3623+-5.0983        ?
   string-tagcloud                                  199.1064+-1.8685     ?    200.0346+-1.6738        ?

   <geometric>                                      435.9213+-2.3074     ?    436.3434+-2.0647        ? might be 1.0010x slower

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            50.3978+-2.3073     ?     51.6629+-0.9042        ? might be 1.0251x slower
   deltablue                                         82.4384+-15.1605          80.5931+-3.6272          might be 1.0229x faster
   earley-boyer                                      37.9593+-1.3837     ?     39.1320+-2.3473        ? might be 1.0309x slower
   raytrace                                          30.1717+-1.3167           29.9217+-1.2822        
   regexp                                            59.0181+-3.2129           57.6798+-2.2841          might be 1.0232x faster
   richards                                          72.4204+-1.9720           71.4766+-3.2119          might be 1.0132x faster
   splay                                             34.0970+-1.6166     ?     34.4194+-2.0485        ?

   <geometric>                                       49.0755+-2.0930     ?     49.1080+-1.0401        ? might be 1.0007x slower

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.20550+-0.00385          0.20005+-0.00199         might be 1.0272x faster
   decrypt                                           3.49846+-0.12777    ?     3.54832+-0.09333       ? might be 1.0143x slower
   deltablue                                x2       0.16207+-0.00250    ?     0.16282+-0.00317       ?
   earley                                            0.48211+-0.00339          0.47404+-0.01014         might be 1.0170x faster
   boyer                                             5.46286+-0.04075    ?     5.59242+-0.13028       ? might be 1.0237x slower
   navier-stokes                            x2       5.15667+-0.06815          5.10363+-0.02446         might be 1.0104x faster
   raytrace                                 x2       1.08411+-0.05752          1.06021+-0.07440         might be 1.0225x faster
   richards                                 x2       0.09403+-0.00267    ?     0.09456+-0.00252       ?
   splay                                    x2       0.33789+-0.00379          0.33675+-0.00250       
   regexp                                   x2      28.68248+-0.38623    ?    29.60008+-0.70429       ? might be 1.0320x slower
   pdfjs                                    x2      39.56257+-0.38752    ^    38.81180+-0.29667       ^ definitely 1.0193x faster
   mandreel                                 x2      46.02229+-0.61381    ?    46.29461+-0.79539       ?
   gbemu                                    x2      32.32424+-2.22576         31.91316+-2.05484         might be 1.0129x faster
   closure                                           0.49442+-0.00877          0.49034+-0.00333       
   jquery                                            6.08931+-0.06100    ?     6.09142+-0.03743       ?
   box2d                                    x2      10.36411+-0.18492         10.36032+-0.06904       
   zlib                                     x2     362.89091+-20.03586       362.28285+-20.28446      
   typescript                               x2     666.81181+-20.02114       659.87366+-15.16640        might be 1.0105x faster

   <geometric>                                       5.80919+-0.06247          5.79342+-0.03336         might be 1.0027x faster

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                          286.500+-6.354      ?     292.718+-19.973        ? might be 1.0217x slower
   audio-beat-detection                              101.844+-1.012      !     103.840+-0.725         ! definitely 1.0196x slower
   audio-dft                                         162.694+-6.286            159.566+-5.307           might be 1.0196x faster
   audio-fft                                          79.286+-3.654      ?      80.434+-0.818         ? might be 1.0145x slower
   audio-oscillator                                  182.264+-6.132            180.000+-0.414           might be 1.0126x faster
   imaging-darkroom                                   96.516+-1.449      ?      99.429+-2.630         ? might be 1.0302x slower
   imaging-desaturate                                 56.418+-2.158      ?      57.375+-1.970         ? might be 1.0170x slower
   imaging-gaussian-blur                              88.543+-0.824      ?      89.199+-2.167         ?
   json-parse-financial                               37.575+-1.062             36.854+-0.482           might be 1.0196x faster
   json-stringify-tinderbox                           51.246+-1.471             50.792+-2.502         
   stanford-crypto-aes                                56.442+-2.649      ?      56.570+-2.526         ?
   stanford-crypto-ccm                                48.014+-5.335             42.459+-1.408           might be 1.1308x faster
   stanford-crypto-pbkdf2                            151.536+-2.661      ?     152.297+-3.602         ?
   stanford-crypto-sha256-iterative                   50.071+-1.195             49.422+-1.539           might be 1.0131x faster

   <arithmetic>                                      103.496+-0.706      ?     103.640+-1.910         ? might be 1.0014x slower

                                                          Conf#1                    Conf#2                                      
JSRegress:
   abs-boolean                                        2.4253+-0.0547            2.4064+-0.0631        
   adapt-to-double-divide                            16.4655+-0.5180     ?     16.9612+-1.0227        ? might be 1.0301x slower
   aliased-arguments-getbyval                         1.0874+-0.0771            1.0572+-0.0651          might be 1.0286x faster
   allocate-big-object                                2.2400+-0.3349     ?      2.2699+-0.2892        ? might be 1.0133x slower
   arguments-named-and-reflective                    10.9965+-0.1880           10.6622+-0.4047          might be 1.0314x faster
   arguments-out-of-bounds                           10.7717+-0.9990           10.3738+-0.2059          might be 1.0384x faster
   arguments-strict-mode                             10.0313+-0.4026     ?     10.3482+-0.7807        ? might be 1.0316x slower
   arguments                                          9.1912+-0.7071     ?      9.5975+-0.8339        ? might be 1.0442x slower
   arity-mismatch-inlining                            0.7798+-0.0498     ?      0.8905+-0.2364        ? might be 1.1419x slower
   array-access-polymorphic-structure                 5.9981+-0.2467     ?      6.2668+-0.4615        ? might be 1.0448x slower
   array-nonarray-polymorhpic-access                 28.4446+-0.7340     ?     28.9095+-1.6154        ? might be 1.0163x slower
   array-prototype-every                             78.7761+-1.2422     ?     79.6152+-3.0374        ? might be 1.0107x slower
   array-prototype-forEach                           79.7049+-1.1714     ?     86.6035+-19.8664       ? might be 1.0866x slower
   array-prototype-map                               88.1125+-2.0838     ?     88.1470+-2.0963        ?
   array-prototype-some                              79.1877+-1.5714     ?     79.2244+-1.2457        ?
   array-splice-contiguous                           38.5819+-0.9069     !     41.3791+-0.9371        ! definitely 1.0725x slower
   array-with-double-add                              3.4309+-0.0579     ?      3.6272+-0.4456        ? might be 1.0572x slower
   array-with-double-increment                        3.4398+-1.0136            3.1187+-0.2048          might be 1.1030x faster
   array-with-double-mul-add                          4.2877+-0.1775     ?      4.4434+-0.5505        ? might be 1.0363x slower
   array-with-double-sum                              3.4552+-0.5697            3.1757+-0.0660          might be 1.0880x faster
   array-with-int32-add-sub                           5.8816+-0.0707     ?      5.9617+-0.1507        ? might be 1.0136x slower
   array-with-int32-or-double-sum                     3.2307+-0.0217     ?      3.2357+-0.0943        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     27.1905+-0.4098     ?     28.3344+-1.4013        ? might be 1.0421x slower
   ArrayBuffer-DataView-alloc-long-lived             12.8779+-0.5630     ?     13.8155+-1.7907        ? might be 1.0728x slower
   ArrayBuffer-Int32Array-byteOffset                  3.6069+-0.1189            3.5895+-0.0773        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     28.3209+-1.2669           27.7727+-0.8127          might be 1.0197x faster
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     21.3450+-1.9584     ?     22.3772+-2.1304        ? might be 1.0484x slower
   ArrayBuffer-Int8Array-alloc-long-lived            13.1410+-1.5683           12.2904+-0.8210          might be 1.0692x faster
   ArrayBuffer-Int8Array-alloc                       10.5734+-0.5631           10.3741+-0.5687          might be 1.0192x faster
   asmjs_bool_bug                                     6.7502+-0.3549     ?      6.7819+-0.6348        ?
   assign-custom-setter-polymorphic                   2.5687+-0.2027            2.5365+-0.0288          might be 1.0127x faster
   assign-custom-setter                               3.4005+-0.0532     ?      3.6321+-0.2512        ? might be 1.0681x slower
   basic-set                                          8.1024+-0.2638            7.9674+-0.0671          might be 1.0169x faster
   big-int-mul                                        3.4617+-0.0753     ?      3.5135+-0.0706        ? might be 1.0150x slower
   boolean-test                                       2.8417+-0.0589     ?      2.8741+-0.1223        ? might be 1.0114x slower
   branch-fold                                        3.5061+-0.0353     ?      3.5583+-0.0784        ? might be 1.0149x slower
   by-val-generic                                     7.6001+-0.2564     ?      7.9913+-1.5591        ? might be 1.0515x slower
   call-spread-apply                                 27.4773+-1.1754     ?     27.4915+-0.8092        ?
   call-spread-call                                  22.4423+-0.3723           22.1294+-0.8403          might be 1.0141x faster
   captured-assignments                               0.3779+-0.0148     ?      0.4134+-0.0678        ? might be 1.0939x slower
   cast-int-to-double                                 4.7893+-0.0422     ?      4.8827+-0.0964        ? might be 1.0195x slower
   cell-argument                                      6.3695+-0.4236            6.1362+-0.2429          might be 1.0380x faster
   cfg-simplify                                       2.8650+-0.1121            2.8528+-0.0732        
   chain-getter-access                                9.1663+-0.2283            9.0343+-0.0695          might be 1.0146x faster
   cmpeq-obj-to-obj-other                             9.5897+-1.2023     ?     10.7785+-1.0900        ? might be 1.1240x slower
   constant-test                                      4.5929+-0.0800     ?      4.6333+-0.2308        ?
   create-lots-of-functions                          20.1407+-0.9622           18.5049+-0.8428          might be 1.0884x faster
   DataView-custom-properties                        32.8149+-1.4559           32.5873+-0.6178        
   deconstructing-parameters-overridden-by-function   
                                                      0.3899+-0.0062     ?      0.4062+-0.0181        ? might be 1.0421x slower
   delay-tear-off-arguments-strictmode               12.0525+-0.2611     ?     12.8459+-0.6896        ? might be 1.0658x slower
   deltablue-varargs                                143.7742+-2.6878          143.3159+-1.7948        
   destructuring-arguments                           12.7889+-0.0834     ?     13.4400+-0.7770        ? might be 1.0509x slower
   destructuring-swap                                 4.8703+-0.4335            4.7046+-0.2682          might be 1.0352x faster
   direct-arguments-getbyval                          1.1826+-0.0781     ^      1.0310+-0.0553        ^ definitely 1.1470x faster
   div-boolean-double                                 5.3931+-0.1205     ?      5.4133+-0.0986        ?
   div-boolean                                        8.3207+-0.1673            8.2886+-0.1413        
   double-get-by-val-out-of-bounds                    4.3068+-0.1014            4.1623+-0.2769          might be 1.0347x faster
   double-pollution-getbyval                          8.8875+-0.2796            8.8141+-0.3121        
   double-pollution-putbyoffset                       3.7793+-0.1764     ?      3.8410+-0.0645        ? might be 1.0163x slower
   double-to-int32-typed-array-no-inline              2.0326+-0.0570     ?      2.2357+-0.4898        ? might be 1.1000x slower
   double-to-int32-typed-array                        1.7325+-0.0801     ?      1.7694+-0.0526        ? might be 1.0213x slower
   double-to-uint32-typed-array-no-inline             2.0872+-0.0800     ?      2.1844+-0.2554        ? might be 1.0466x slower
   double-to-uint32-typed-array                       1.7969+-0.0688            1.7878+-0.0763        
   elidable-new-object-dag                           35.8145+-2.3960           34.6637+-0.3052          might be 1.0332x faster
   elidable-new-object-roflcopter                    37.6876+-1.5823     ?     37.9375+-1.4487        ?
   elidable-new-object-then-call                     30.4771+-1.6195     ?     31.7274+-1.8811        ? might be 1.0410x slower
   elidable-new-object-tree                          37.5769+-2.4447           37.1602+-1.5025          might be 1.0112x faster
   empty-string-plus-int                              4.7122+-0.0974            4.6884+-0.0695        
   emscripten-cube2hash                              26.8267+-1.0050           26.2631+-1.2811          might be 1.0215x faster
   exit-length-on-plain-object                       14.0516+-2.3348           13.0482+-0.4074          might be 1.0769x faster
   external-arguments-getbyval                        1.1711+-0.1700            1.1231+-0.0502          might be 1.0428x faster
   external-arguments-putbyval                        2.1198+-0.0359            2.1015+-0.0763        
   fixed-typed-array-storage-var-index                1.1690+-0.0211     ?      1.2113+-0.0335        ? might be 1.0362x slower
   fixed-typed-array-storage                          0.8157+-0.0368            0.8071+-0.0211          might be 1.0107x faster
   Float32Array-matrix-mult                           3.8940+-0.1178            3.8417+-0.0935          might be 1.0136x faster
   Float32Array-to-Float64Array-set                  48.4830+-1.0277           48.1956+-0.7776        
   Float64Array-alloc-long-lived                     60.5223+-1.7589           58.9128+-1.7621          might be 1.0273x faster
   Float64Array-to-Int16Array-set                    60.3468+-1.8409           57.7170+-1.4610          might be 1.0456x faster
   fold-double-to-int                                13.2108+-1.3800           12.5582+-0.1574          might be 1.0520x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                      9.3741+-0.5859     ?     10.1509+-0.4207        ? might be 1.0829x slower
   fold-get-by-id-to-multi-get-by-offset              7.7845+-0.4339     ?      8.0470+-0.2838        ? might be 1.0337x slower
   fold-multi-get-by-offset-to-get-by-offset   
                                                      7.2857+-1.4581     ?      7.4994+-0.6978        ? might be 1.0293x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      7.0432+-1.1428     ?      7.4090+-0.5497        ? might be 1.0519x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.0452+-0.6077     ?      7.3158+-0.6546        ? might be 1.0384x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      4.3656+-0.9825     ?      4.9283+-0.7889        ? might be 1.1289x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                      7.9274+-0.4367     ?      8.1517+-0.9128        ? might be 1.0283x slower
   fold-put-by-id-to-multi-put-by-offset              8.1551+-0.5546            8.1152+-0.3387        
   fold-put-structure                                 3.7675+-0.2201     !      5.3345+-0.6416        ! definitely 1.4159x slower
   for-of-iterate-array-entries                       4.3303+-0.4416            4.1460+-0.0554          might be 1.0445x faster
   for-of-iterate-array-keys                          3.6171+-0.0804     ?      3.6784+-0.1246        ? might be 1.0170x slower
   for-of-iterate-array-values                        3.5393+-0.1232     ?      3.7362+-0.4044        ? might be 1.0556x slower
   fround                                            17.5203+-0.4389     ?     18.4511+-1.5430        ? might be 1.0531x slower
   ftl-library-inlining-dataview                     61.4627+-0.9979     ?     63.0803+-3.1148        ? might be 1.0263x slower
   ftl-library-inlining                             107.2616+-1.1114          106.5103+-1.1933        
   function-dot-apply                                 2.1187+-0.1115     ?      2.2769+-0.6803        ? might be 1.0747x slower
   function-test                                      3.0291+-0.0754            2.9628+-0.0366          might be 1.0224x faster
   function-with-eval                                88.9831+-3.5254           87.3103+-1.0255          might be 1.0192x faster
   gcse-poly-get-less-obvious                        14.5973+-0.4711           14.4822+-0.2445        
   gcse-poly-get                                     16.9070+-1.0756           16.5629+-1.3974          might be 1.0208x faster
   gcse                                               3.8595+-0.1215            3.8480+-0.1194        
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      2.6497+-0.2264            2.5673+-0.0279          might be 1.0321x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      5.8747+-0.2094     ?      5.9242+-0.1731        ?
   get-by-id-chain-from-try-block                     6.5125+-0.1535     ?      6.5714+-0.2831        ?
   get-by-id-check-structure-elimination              4.3761+-0.0365            4.3717+-0.0304        
   get-by-id-proto-or-self                           14.5732+-0.7455           14.3267+-0.8293          might be 1.0172x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      2.8561+-0.0442     ?      3.0031+-0.1819        ? might be 1.0514x slower
   get-by-id-self-or-proto                           14.6013+-0.5585     ?     14.7390+-0.6828        ?
   get-by-val-out-of-bounds                           3.9436+-0.0926     ?      4.0101+-0.3166        ? might be 1.0169x slower
   get_callee_monomorphic                             3.2609+-0.1400     ^      3.0098+-0.0520        ^ definitely 1.0834x faster
   get_callee_polymorphic                             3.1102+-0.1256            3.0718+-0.1813          might be 1.0125x faster
   getter-no-activation                               4.8482+-0.1916     ?      4.8616+-0.1485        ?
   getter-richards                                  110.1828+-4.0645           98.7890+-14.0624         might be 1.1153x faster
   getter                                             5.5140+-0.7201            5.4429+-0.3584          might be 1.0131x faster
   global-var-const-infer-fire-from-opt               0.8455+-0.1016     ?      0.9181+-0.1257        ? might be 1.0858x slower
   global-var-const-infer                             0.9364+-0.1566            0.8521+-0.0866          might be 1.0990x faster
   HashMap-put-get-iterate-keys                      24.4522+-0.8747           24.3848+-0.8135        
   HashMap-put-get-iterate                           24.0252+-0.9695     ?     24.1531+-1.1510        ?
   HashMap-string-put-get-iterate                    24.9566+-0.8440           23.6414+-1.3269          might be 1.0556x faster
   hoist-make-rope                                    7.9901+-0.8597     ?      8.0160+-0.6029        ?
   hoist-poly-check-structure-effectful-loop   
                                                      4.1823+-0.2727            4.1097+-0.0753          might be 1.0177x faster
   hoist-poly-check-structure                         3.2598+-0.0301     ?      3.5929+-0.7958        ? might be 1.1022x slower
   imul-double-only                                   6.7579+-0.3943     ?      7.1380+-0.8365        ? might be 1.0562x slower
   imul-int-only                                      8.5066+-0.1634     ?      8.5378+-0.7963        ?
   imul-mixed                                         6.5256+-0.2864            6.4133+-0.5065          might be 1.0175x faster
   in-four-cases                                     15.8869+-1.1673           15.6946+-0.7207          might be 1.0123x faster
   in-one-case-false                                  8.8659+-0.2761            8.3712+-0.5404          might be 1.0591x faster
   in-one-case-true                                   8.4403+-0.3225            8.3698+-0.5555        
   in-two-cases                                       8.7140+-0.4700     ?      8.7336+-0.4535        ?
   indexed-properties-in-objects                      2.7649+-0.0333     ?      2.7874+-0.0627        ?
   infer-closure-const-then-mov-no-inline             3.2762+-0.0476            3.2291+-0.0951          might be 1.0146x faster
   infer-closure-const-then-mov                      17.3016+-0.4253           17.0127+-0.6232          might be 1.0170x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     11.6837+-0.0673     ?     11.8806+-0.2863        ? might be 1.0169x slower
   infer-closure-const-then-put-to-scope             23.4230+-0.4832     ?     23.6299+-0.5041        ?
   infer-closure-const-then-reenter-no-inline   
                                                     51.0477+-0.7995     ?     52.0824+-1.4846        ? might be 1.0203x slower
   infer-closure-const-then-reenter                  24.3826+-1.7489           24.0758+-0.4362          might be 1.0127x faster
   infer-constant-global-property                    30.4815+-0.6021     ?     30.7343+-1.0456        ?
   infer-constant-property                            2.6450+-0.1969            2.5971+-0.0372          might be 1.0185x faster
   infer-one-time-closure-ten-vars                    8.6121+-0.6016            8.4577+-0.5584          might be 1.0183x faster
   infer-one-time-closure-two-vars                    8.4733+-0.6850            8.3830+-0.5156          might be 1.0108x faster
   infer-one-time-closure                             7.7824+-0.3900     ?      7.9609+-0.3392        ? might be 1.0229x slower
   infer-one-time-deep-closure                       13.3413+-0.8299           12.7989+-0.4471          might be 1.0424x faster
   inline-arguments-access                            3.6248+-0.1464     ?      3.7311+-0.1492        ? might be 1.0293x slower
   inline-arguments-aliased-access                    3.7082+-0.2284            3.6862+-0.1573        
   inline-arguments-local-escape                      4.0652+-0.2474     ?      4.2109+-0.3666        ? might be 1.0358x slower
   inline-get-scoped-var                              4.7482+-0.1553            4.5643+-0.1577          might be 1.0403x faster
   inlined-put-by-id-transition                       9.9195+-1.0575            9.1507+-0.8503          might be 1.0840x faster
   int-or-other-abs-then-get-by-val                   4.8241+-0.1258            4.7879+-0.0637        
   int-or-other-abs-zero-then-get-by-val             16.4194+-0.5018     ?     16.9959+-0.8305        ? might be 1.0351x slower
   int-or-other-add-then-get-by-val                   4.0264+-0.0575     ?      4.1186+-0.1818        ? might be 1.0229x slower
   int-or-other-add                                   4.8098+-0.0548     ?      4.8825+-0.1813        ? might be 1.0151x slower
   int-or-other-div-then-get-by-val                   3.7918+-0.1329     ?      3.8630+-0.1024        ? might be 1.0188x slower
   int-or-other-max-then-get-by-val                   4.0244+-0.1692            4.0211+-0.0280        
   int-or-other-min-then-get-by-val                   4.1376+-0.0616     ?      4.2601+-0.3949        ? might be 1.0296x slower
   int-or-other-mod-then-get-by-val                   3.4956+-0.1144            3.4520+-0.1074          might be 1.0126x faster
   int-or-other-mul-then-get-by-val                   3.8354+-0.3167     ?      3.9328+-0.6195        ? might be 1.0254x slower
   int-or-other-neg-then-get-by-val                   4.4007+-0.1327            4.3429+-0.1066          might be 1.0133x faster
   int-or-other-neg-zero-then-get-by-val             16.7015+-0.6755     ?     18.4434+-3.9153        ? might be 1.1043x slower
   int-or-other-sub-then-get-by-val                   4.0168+-0.0798     ?      4.2439+-0.5590        ? might be 1.0565x slower
   int-or-other-sub                                   3.3860+-0.0763     ?      3.4215+-0.1906        ? might be 1.0105x slower
   int-overflow-local                                 4.1371+-0.0629            4.1101+-0.1410        
   Int16Array-alloc-long-lived                       44.0789+-1.2521           43.5767+-1.3807          might be 1.0115x faster
   Int16Array-bubble-sort-with-byteLength            17.7168+-0.6866           17.4313+-0.3045          might be 1.0164x faster
   Int16Array-bubble-sort                            18.2169+-0.6875     ?     18.2614+-1.4162        ?
   Int16Array-load-int-mul                            1.6570+-0.3431            1.4141+-0.0342          might be 1.1718x faster
   Int16Array-to-Int32Array-set                      47.6087+-2.5706     ^     43.3835+-0.9072        ^ definitely 1.0974x faster
   Int32Array-alloc-large                            13.7923+-1.5062           12.9419+-0.5629          might be 1.0657x faster
   Int32Array-alloc-long-lived                       49.1785+-1.4400     ?     49.2195+-1.2585        ?
   Int32Array-alloc                                   2.6153+-0.2890     ?      2.8630+-0.0858        ? might be 1.0947x slower
   Int32Array-Int8Array-view-alloc                    6.8905+-0.6552            6.5783+-0.6346          might be 1.0475x faster
   int52-spill                                        6.1755+-0.1635            6.0326+-0.2274          might be 1.0237x faster
   Int8Array-alloc-long-lived                        40.1750+-1.0926     ?     40.2930+-1.1234        ?
   Int8Array-load-with-byteLength                     3.3608+-0.0469     ?      3.9194+-0.6340        ? might be 1.1662x slower
   Int8Array-load                                     3.3743+-0.0724     ?      3.4520+-0.1531        ? might be 1.0230x slower
   integer-divide                                    10.8687+-0.5938           10.8147+-0.3224        
   integer-modulo                                     1.6705+-0.0410            1.6561+-0.0663        
   large-int-captured                                 4.9358+-0.5756     ?      5.1535+-0.7557        ? might be 1.0441x slower
   large-int-neg                                     14.6199+-0.5272     ?     14.9428+-0.4370        ? might be 1.0221x slower
   large-int                                         13.9997+-0.3879           13.9205+-0.3089        
   logical-not                                        4.2502+-0.1684            4.1999+-0.0585          might be 1.0120x faster
   lots-of-fields                                    10.2783+-0.6760            9.8437+-0.3954          might be 1.0442x faster
   make-indexed-storage                               2.8179+-0.0901     ?      2.8739+-0.1819        ? might be 1.0199x slower
   make-rope-cse                                      3.7544+-0.3152            3.7182+-0.2138        
   marsaglia-larger-ints                             32.9640+-0.8257     ?     33.2148+-1.7994        ?
   marsaglia-osr-entry                               21.4915+-0.7509     ?     21.6992+-0.6374        ?
   max-boolean                                        2.7930+-0.3107            2.7744+-0.1257        
   method-on-number                                  17.7836+-0.2585     ?     18.1470+-0.7380        ? might be 1.0204x slower
   min-boolean                                        2.6247+-0.0772            2.6128+-0.0656        
   minus-boolean-double                               3.0473+-0.0361     ?      3.0660+-0.0515        ?
   minus-boolean                                      2.2905+-0.0535     ?      2.3911+-0.2052        ? might be 1.0439x slower
   misc-strict-eq                                    30.5200+-0.8780           29.9632+-1.4940          might be 1.0186x faster
   mod-boolean-double                                11.3050+-0.3207     ?     11.4355+-0.5964        ? might be 1.0116x slower
   mod-boolean                                        8.5099+-0.2415     ?      8.7018+-0.4722        ? might be 1.0225x slower
   mul-boolean-double                                 3.6392+-0.1872     ?      3.7623+-0.4463        ? might be 1.0338x slower
   mul-boolean                                        2.7601+-0.0491     ?      2.9755+-0.4895        ? might be 1.0780x slower
   neg-boolean                                        3.0451+-0.0394     ?      3.1639+-0.2370        ? might be 1.0390x slower
   negative-zero-divide                               0.3102+-0.0186     ?      0.3341+-0.0823        ? might be 1.0771x slower
   negative-zero-modulo                               0.3632+-0.1390            0.2892+-0.0093          might be 1.2558x faster
   negative-zero-negate                               0.2876+-0.0361            0.2849+-0.0176        
   nested-function-parsing                           33.0948+-0.4309           32.9700+-0.6320        
   new-array-buffer-dead                              2.7245+-0.0393     ?      2.8559+-0.2936        ? might be 1.0482x slower
   new-array-buffer-push                              5.6160+-0.2321            5.4071+-0.1266          might be 1.0386x faster
   new-array-dead                                     9.6222+-0.7578     ?     10.2517+-0.5217        ? might be 1.0654x slower
   new-array-push                                     3.4253+-0.0733     ?      3.4285+-0.1710        ?
   no-inline-constructor                             93.2178+-0.9571     !     96.1079+-1.1036        ! definitely 1.0310x slower
   number-test                                        2.8661+-0.0587            2.8026+-0.0352          might be 1.0227x faster
   object-closure-call                                4.9090+-0.1032     ?      4.9707+-0.2711        ? might be 1.0126x slower
   object-test                                        2.8779+-0.0553     ?      2.8799+-0.1055        ?
   obvious-sink-pathology-taken                     105.7966+-1.3470          105.5033+-0.9582        
   obvious-sink-pathology                           102.6165+-0.8497     ?    102.6909+-1.4135        ?
   obviously-elidable-new-object                     29.2012+-1.5757           27.8213+-1.6823          might be 1.0496x faster
   plus-boolean-arith                                 2.3575+-0.0341     ?      2.3865+-0.1052        ? might be 1.0123x slower
   plus-boolean-double                                3.1388+-0.1619            3.1181+-0.1651        
   plus-boolean                                       2.5264+-0.0492     ?      2.5435+-0.0557        ?
   poly-chain-access-different-prototypes-simple   
                                                      2.8221+-0.2408            2.6811+-0.0284          might be 1.0526x faster
   poly-chain-access-different-prototypes             2.5070+-0.0219     ?      2.6024+-0.2216        ? might be 1.0381x slower
   poly-chain-access-simpler                          2.7064+-0.0783     ?      2.8385+-0.2098        ? might be 1.0488x slower
   poly-chain-access                                  2.7332+-0.5697            2.5107+-0.0769          might be 1.0886x faster
   poly-stricteq                                     46.8513+-0.8306     ?     47.1350+-1.3848        ?
   polymorphic-array-call                             1.5173+-0.5028            1.0866+-0.0217          might be 1.3964x faster
   polymorphic-get-by-id                              2.8407+-0.1131     ?      2.9323+-0.1126        ? might be 1.0322x slower
   polymorphic-put-by-id                             25.7317+-1.7496           24.7096+-1.1782          might be 1.0414x faster
   polymorphic-structure                             13.5119+-0.4367           13.2628+-0.1687          might be 1.0188x faster
   polyvariant-monomorphic-get-by-id                  6.7093+-0.4398     ?      6.7334+-1.1091        ?
   proto-getter-access                                9.2640+-0.5346            9.1798+-0.2413        
   put-by-id-replace-and-transition                   7.7678+-0.5600            7.5546+-0.4096          might be 1.0282x faster
   put-by-id-slightly-polymorphic                     2.5647+-0.0540     ?      2.6203+-0.0749        ? might be 1.0217x slower
   put-by-id                                         10.3986+-0.2785     ?     11.1219+-1.0729        ? might be 1.0696x slower
   put-by-val-direct                                  0.5198+-0.0586            0.4955+-0.0282          might be 1.0491x faster
   put-by-val-large-index-blank-indexing-type   
                                                      5.3787+-0.4674     ?      5.4379+-0.5542        ? might be 1.0110x slower
   put-by-val-machine-int                             2.4644+-0.3083            2.4168+-0.2933          might be 1.0197x faster
   rare-osr-exit-on-local                            14.8348+-0.3328     ?     14.8352+-0.2769        ?
   register-pressure-from-osr                        17.3593+-0.6691           17.3053+-0.7614        
   setter                                             5.8640+-0.3722            5.5762+-0.0894          might be 1.0516x faster
   simple-activation-demo                            24.8625+-0.5394     ?     25.2721+-1.2430        ? might be 1.0165x slower
   simple-getter-access                              12.1474+-0.3561           11.9571+-0.1677          might be 1.0159x faster
   simple-poly-call-nested                            8.7076+-0.5250     ?      8.7722+-0.5166        ?
   simple-poly-call                                   1.2652+-0.1111            1.1844+-0.0374          might be 1.0683x faster
   sin-boolean                                       19.7186+-2.1929           19.3376+-2.0071          might be 1.0197x faster
   singleton-scope                                   64.5957+-2.3052           63.2055+-0.7072          might be 1.0220x faster
   sinkable-new-object-dag                           57.3196+-1.9989           56.9303+-1.4708        
   sinkable-new-object-taken                         43.8472+-0.5988     ?     45.0061+-1.3585        ? might be 1.0264x slower
   sinkable-new-object                               31.2967+-0.8339           30.3020+-1.4600          might be 1.0328x faster
   slow-array-profile-convergence                     2.5480+-0.0584     ?      2.7839+-0.5681        ? might be 1.0926x slower
   slow-convergence                                   2.6715+-0.5381            2.4023+-0.0460          might be 1.1121x faster
   sorting-benchmark                                 20.7828+-0.8336           20.0920+-0.8963          might be 1.0344x faster
   sparse-conditional                                 1.0531+-0.0426     ?      1.1358+-0.1746        ? might be 1.0785x slower
   splice-to-remove                                  15.0184+-0.5825     ?     15.1770+-0.9092        ? might be 1.0106x slower
   string-char-code-at                               14.8564+-0.2800     ?     15.3031+-1.5729        ? might be 1.0301x slower
   string-concat-object                               2.1226+-0.1249     ^      1.9085+-0.0368        ^ definitely 1.1122x faster
   string-concat-pair-object                          2.0865+-0.0899     ?      2.1217+-0.1293        ? might be 1.0169x slower
   string-concat-pair-simple                          9.3507+-0.2946     ?      9.9068+-0.9539        ? might be 1.0595x slower
   string-concat-simple                               9.5589+-0.5614     ?     10.1890+-0.9329        ? might be 1.0659x slower
   string-cons-repeat                                 6.7767+-0.5304     ?      7.0576+-0.7423        ? might be 1.0414x slower
   string-cons-tower                                  7.6886+-0.9195            7.2441+-1.1636          might be 1.0614x faster
   string-equality                                   16.1996+-0.7035     ?     16.9302+-0.9109        ? might be 1.0451x slower
   string-get-by-val-big-char                         6.4779+-0.1216     ?      6.7098+-0.2143        ? might be 1.0358x slower
   string-get-by-val-out-of-bounds-insane             3.8914+-0.3056            3.8872+-0.2498        
   string-get-by-val-out-of-bounds                    4.0902+-0.0636     ?      4.1570+-0.1443        ? might be 1.0163x slower
   string-get-by-val                                  2.7786+-0.0593     ?      2.8003+-0.1490        ?
   string-hash                                        1.8389+-0.0731     ?      1.8755+-0.0384        ? might be 1.0199x slower
   string-long-ident-equality                        13.6662+-0.8088           13.6368+-0.7725        
   string-out-of-bounds                              10.7582+-0.6152           10.7368+-0.3525        
   string-repeat-arith                               27.3470+-0.3819     ?     27.5798+-1.0265        ?
   string-sub                                        55.5684+-0.9498     ?     57.4611+-1.4236        ? might be 1.0341x slower
   string-test                                        2.7446+-0.0723            2.7073+-0.0496          might be 1.0138x faster
   string-var-equality                               28.3610+-0.8946     ?     28.3650+-0.4691        ?
   structure-hoist-over-transitions                   2.3448+-0.2035            2.3179+-0.0841          might be 1.0116x faster
   substring-concat-weird                            34.5034+-1.6816     ?     35.8158+-1.6434        ? might be 1.0380x slower
   substring-concat                                  36.5814+-0.7620           36.5397+-2.5861        
   substring                                         41.3188+-1.2838     ?     41.9881+-2.1414        ? might be 1.0162x slower
   switch-char-constant                               2.7214+-0.1025     ?      2.9080+-0.4961        ? might be 1.0686x slower
   switch-char                                        5.8513+-0.4269            5.8316+-0.4669        
   switch-constant                                    7.7212+-0.9823            7.5852+-0.9880          might be 1.0179x faster
   switch-string-basic-big-var                       12.5313+-0.2213     ?     12.8189+-0.2507        ? might be 1.0229x slower
   switch-string-basic-big                           13.0455+-1.1843           12.2990+-0.2062          might be 1.0607x faster
   switch-string-basic-var                           12.2968+-0.3578     ?     12.6713+-0.3710        ? might be 1.0305x slower
   switch-string-basic                               11.7838+-0.2815           11.7257+-0.2209        
   switch-string-big-length-tower-var                18.7553+-0.3507     ?     19.3801+-1.0468        ? might be 1.0333x slower
   switch-string-length-tower-var                    13.2185+-1.0873           12.7931+-0.3855          might be 1.0333x faster
   switch-string-length-tower                        11.7014+-0.9812           11.6498+-0.7806        
   switch-string-short                               11.4374+-0.5712           11.2316+-0.2924          might be 1.0183x faster
   switch                                            11.5144+-0.6931     ?     11.6128+-0.8495        ?
   tear-off-arguments-simple                          3.2976+-0.5800            3.0086+-0.1731          might be 1.0961x faster
   tear-off-arguments                                 4.0003+-0.1618     ?      4.0723+-0.1554        ? might be 1.0180x slower
   temporal-structure                                12.3168+-0.3434     ?     12.3615+-0.6382        ?
   to-int32-boolean                                  12.8783+-0.1467     ?     12.9539+-0.2884        ?
   try-catch-get-by-val-cloned-arguments             13.1721+-0.3996           12.8925+-0.3697          might be 1.0217x faster
   try-catch-get-by-val-direct-arguments              5.6501+-0.2499            5.5898+-0.1623          might be 1.0108x faster
   try-catch-get-by-val-scoped-arguments              6.7100+-0.2316     ?      7.1114+-0.5965        ? might be 1.0598x slower
   undefined-property-access                        215.9011+-1.4330     ?    215.9905+-2.1992        ?
   undefined-test                                     2.8682+-0.0402     ?      2.9000+-0.1897        ? might be 1.0111x slower
   unprofiled-licm                                   14.1552+-0.2850     ?     14.3551+-0.6636        ? might be 1.0141x slower
   varargs-call                                      13.9777+-0.2729     ?     14.0356+-0.4356        ?
   varargs-construct-inline                          16.7644+-0.5979     !     18.1422+-0.7033        ! definitely 1.0822x slower
   varargs-construct                                 29.1991+-0.7688           28.9882+-0.9022        
   varargs-inline                                     8.4107+-0.4951     ?      8.5150+-0.2732        ? might be 1.0124x slower
   varargs-strict-mode                                9.0990+-0.1030     ?      9.1029+-0.1380        ?
   varargs                                            9.1772+-0.3452     ?      9.8012+-0.8176        ? might be 1.0680x slower
   weird-inlining-const-prop                          2.0667+-0.1836     ?      2.2319+-0.3897        ? might be 1.0799x slower

   <geometric>                                        7.6638+-0.0253     ?      7.6909+-0.0407        ? might be 1.0035x slower

                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       449.0408+-1.7001     ?    449.9710+-1.9237        ?
   cray.c                                           398.9409+-2.9850     ?    399.9544+-2.4226        ?
   dry.c                                            449.2397+-20.2805         437.2972+-14.4663         might be 1.0273x faster
   FloatMM.c                                        705.2646+-16.2634         696.6644+-5.7120          might be 1.0123x faster
   gcc-loops.cpp                                   3563.5275+-20.1428    ?   3568.4141+-18.1991       ?
   n-body.c                                         833.3999+-3.8659     ?    839.1577+-5.5071        ?
   Quicksort.c                                      405.3527+-14.8943         404.4587+-10.3040       
   stepanov_container.cpp                          3617.3817+-69.2255        3584.6414+-38.2088       
   Towers.c                                         239.8610+-0.3823     ?    240.9253+-1.7825        ?

   <geometric>                                      730.4594+-6.7246          727.8200+-4.1081          might be 1.0036x faster

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                          309.0644+-2.0040     ?    310.5285+-6.1873        ?
   arithmetic-simple                                353.8047+-14.2702         344.2210+-1.2046          might be 1.0278x faster
   arithmetic-precise                               270.1401+-3.0966          266.3287+-8.9569          might be 1.0143x faster
   arithmetic-complex-precise                       270.1259+-6.8319          262.6709+-1.8474          might be 1.0284x faster
   arithmetic-precise-order-0                       372.2071+-7.1246          365.8042+-4.5539          might be 1.0175x faster
   arithmetic-precise-order-1                       304.0562+-2.5856          300.6914+-2.5431          might be 1.0112x faster
   arithmetic-precise-order-2                       341.8487+-0.8895          340.0347+-3.7666        
   arithmetic-simple-order-1                        334.9377+-3.9425     ?    341.0841+-6.0158        ? might be 1.0184x slower
   arithmetic-simple-order-2                        391.3536+-5.7737          388.9067+-8.0521        
   lz-string                                        328.5979+-14.3359         322.0613+-13.1032         might be 1.0203x faster

   <geometric>                                      325.3149+-2.9507          321.8685+-3.3202          might be 1.0107x faster

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   <scaled-result>                                   56.7866+-0.3746           56.7344+-0.2569          might be 1.0009x faster
Comment 9 Filip Pizlo 2015-04-16 10:27:08 PDT
Comment on attachment 250927 [details]
Remove additional GPR

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

> Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3496
> +        GPRReg rareDataGPR = rareData.gpr();

Does this compile?

Note that you need to do run-javascriptcore-tests --32-bit to test this code.
Comment 10 Basile Clement 2015-04-16 10:32:32 PDT
Created attachment 250928 [details]
Hopefully final patch

Also removes the additional GPR on DFGSpeculativeJIT32_64.
Comment 11 Basile Clement 2015-04-16 10:38:15 PDT
(In reply to comment #9)
> Comment on attachment 250927 [details]
> Remove additional GPR
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=250927&action=review
> 
> > Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3496
> > +        GPRReg rareDataGPR = rareData.gpr();
> 
> Does this compile?
> 
> Note that you need to do run-javascriptcore-tests --32-bit to test this code.

No, that was a mistake (missed keystroke when saving), I updated the patch.
Didn't know about the --32-bit though, I will run that.
Comment 12 WebKit Commit Bot 2015-04-16 10:54:48 PDT
Attachment 250928 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/JSFunction.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/JSFunction.h:137:  The parameter name "exec" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/JSCallee.h:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:47:  The parameter name "vm" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:76:  The parameter name "vm" adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:79:  The parameter name "vm" adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 6 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 13 Filip Pizlo 2015-04-16 10:55:30 PDT
Comment on attachment 250928 [details]
Hopefully final patch

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

Looks great!  Please change the license and reupload.  Then I can mark cq+.

> Source/JavaScriptCore/runtime/FunctionRareData.cpp:19
> +/*
> + *  Copyright (C) 2015 Apple Inc. All rights reserved.
> + *
> + *  This library is free software; you can redistribute it and/or
> + *  modify it under the terms of the GNU Library General Public
> + *  License as published by the Free Software Foundation; either
> + *  version 2 of the License, or (at your option) any later version.
> + *
> + *  This library is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + *  Library General Public License for more details.
> + *
> + *  You should have received a copy of the GNU Library General Public License
> + *  along with this library; see the file COPYING.LIB.  If not, write to
> + *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
> + *  Boston, MA 02110-1301, USA.
> + *
> + */

Newly created files should use the 2-clause BSD license: https://www.webkit.org/coding/bsd-license.html

> Source/JavaScriptCore/runtime/FunctionRareData.h:19
> +/*
> + *  Copyright (C) 2015 Apple Inc. All rights reserved.
> + *
> + *  This library is free software; you can redistribute it and/or
> + *  modify it under the terms of the GNU Library General Public
> + *  License as published by the Free Software Foundation; either
> + *  version 2 of the License, or (at your option) any later version.
> + *
> + *  This library is distributed in the hope that it will be useful,
> + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
> + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> + *  Library General Public License for more details.
> + *
> + *  You should have received a copy of the GNU Library General Public License
> + *  along with this library; see the file COPYING.LIB.  If not, write to
> + *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
> + *  Boston, MA 02110-1301, USA.
> + *
> + */

Ditto.
Comment 14 Filip Pizlo 2015-04-16 10:58:49 PDT
(In reply to comment #12)
> Attachment 250928 [details] did not pass style-queue:
> 

Would be good to address these style issues, too.

> 
> ERROR: Source/JavaScriptCore/runtime/JSFunction.h:30:  Alphabetical sorting
> problem.  [build/include_order] [4]

We like to sort our #include's.  Sometimes editing existing code reveals past style problems - even if it's a preexisting problem, we usually fix it if style bot complains.

> ERROR: Source/JavaScriptCore/runtime/JSFunction.h:137:  The parameter name
> "exec" adds no information, so it should be removed. 

Yeah, just remove the name.

> [readability/parameter_name] [5]
> ERROR: Source/JavaScriptCore/runtime/JSCallee.h:29:  Alphabetical sorting
> problem.  [build/include_order] [4]

Ditto.

> ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:47:  The parameter
> name "vm" adds no information, so it should be removed. 
> [readability/parameter_name] [5]
> ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:76:  The parameter
> name "vm" adds no information, so it should be removed. 
> [readability/parameter_name] [5]
> ERROR: Source/JavaScriptCore/runtime/FunctionRareData.h:79:  The parameter
> name "vm" adds no information, so it should be removed. 
> [readability/parameter_name] [5]

Ditto.

> Total errors found: 6 in 23 files
> 
> 
> If any of these errors are false positives, please file a bug against
> check-webkit-style.
Comment 15 Basile Clement 2015-04-16 11:06:23 PDT
(In reply to comment #13)
> Newly created files should use the 2-clause BSD license:
> https://www.webkit.org/coding/bsd-license.html

Oops, I just copied the license form JSFunction.cpp without thinking.

(In reply to comment #14)
> (In reply to comment #12)
> > Attachment 250928 [details] did not pass style-queue:
> > 
> 
> Would be good to address these style issues, too.

Didn't know about the check-webkit-style script, fixing these now.
Comment 16 Basile Clement 2015-04-16 11:09:45 PDT
Created attachment 250931 [details]
Fix style issues
Comment 17 Filip Pizlo 2015-04-16 11:26:34 PDT
Comment on attachment 250931 [details]
Fix style issues

Nice!  r=me.
Comment 18 WebKit Commit Bot 2015-04-16 12:16:12 PDT
Comment on attachment 250931 [details]
Fix style issues

Clearing flags on attachment: 250931

Committed r182899: <http://trac.webkit.org/changeset/182899>
Comment 19 WebKit Commit Bot 2015-04-16 12:16:18 PDT
All reviewed patches have been landed.  Closing bug.
Comment 20 Simon Fraser (smfr) 2015-04-19 09:15:00 PDT
Comment on attachment 250931 [details]
Fix style issues

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

> WebKit.xcworkspace/contents.xcworkspacedata:13
> +      location = "group:Source/JavaScriptCore/runtime/FunctionRareData.cpp">
> +   </FileRef>
> +   <FileRef
> +      location = "group:Source/JavaScriptCore/runtime/FunctionRareData.h">
> +   </FileRef>
> +   <FileRef
> +      location = "group:Source">
> +   </FileRef>
> +   <FileRef

You should not have committed this change. This has added a folder called "Source" to the workspace, duplicating all the files.
Comment 21 Simon Fraser (smfr) 2015-04-19 09:21:01 PDT
Workspace fixed in https://trac.webkit.org/changeset/182993