Bug 148045 - [JSC] Avoid going to slow path when comparing undefined and null
Summary: [JSC] Avoid going to slow path when comparing undefined and null
Status: RESOLVED DUPLICATE of bug 148157
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: 528+ (Nightly build)
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Benjamin Poulain
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-08-14 16:19 PDT by Benjamin Poulain
Modified: 2015-08-18 21:05 PDT (History)
1 user (show)

See Also:


Attachments
Patch (8.43 KB, patch)
2015-08-14 16:27 PDT, Benjamin Poulain
ggaren: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Poulain 2015-08-14 16:19:11 PDT
[JSC] Avoid going to slow path when comparing undefined and null
Comment 1 Benjamin Poulain 2015-08-14 16:27:11 PDT
Created attachment 259056 [details]
Patch
Comment 2 Benjamin Poulain 2015-08-14 16:27:47 PDT
                                                          Conf#1                    Conf#2                                      
SunSpider:
   3d-cube                                            8.0270+-0.2314     ?      8.3705+-0.4974        ? might be 1.0428x slower
   3d-morph                                           8.1423+-0.2629            8.0778+-0.3080        
   3d-raytrace                                        8.6281+-0.2705     ?      8.8495+-0.4114        ? might be 1.0257x slower
   access-binary-trees                                3.1108+-0.1881            3.1095+-0.1234        
   access-fannkuch                                    8.6398+-0.1608            8.4928+-0.1323          might be 1.0173x faster
   access-nbody                                       4.1830+-0.2632            4.1400+-0.2182          might be 1.0104x faster
   access-nsieve                                      4.5781+-0.0761     ?      4.6166+-0.1229        ?
   bitops-3bit-bits-in-byte                           1.9863+-0.0201     ?      2.0385+-0.1665        ? might be 1.0262x slower
   bitops-bits-in-byte                                5.6634+-0.0469            5.5883+-0.0686          might be 1.0134x faster
   bitops-bitwise-and                                 2.8320+-0.2365            2.7089+-0.2151          might be 1.0454x faster
   bitops-nsieve-bits                                 4.3690+-0.1124            4.2479+-0.0561          might be 1.0285x faster
   controlflow-recursive                              3.0052+-0.0639     ?      3.0807+-0.1469        ? might be 1.0251x slower
   crypto-aes                                         6.0765+-0.2871            6.0192+-0.3982        
   crypto-md5                                         3.8787+-0.1117     ?      3.8879+-0.1360        ?
   crypto-sha1                                        3.3662+-0.1525            3.2835+-0.1581          might be 1.0252x faster
   date-format-tofte                                 12.5698+-0.5042           12.1857+-0.5735          might be 1.0315x faster
   date-format-xparb                                  7.3695+-0.1444            7.2939+-0.4023          might be 1.0104x faster
   math-cordic                                        4.3356+-0.0694     ?      4.3890+-0.0932        ? might be 1.0123x slower
   math-partial-sums                                 10.1257+-0.3032     ?     10.1627+-0.3318        ?
   math-spectral-norm                                 2.9561+-0.1776     ?      2.9691+-0.1027        ?
   regexp-dna                                        10.1000+-0.1767            9.9821+-0.4862          might be 1.0118x faster
   string-base64                                      6.4539+-0.4130     ?      6.6208+-0.2183        ? might be 1.0259x slower
   string-fasta                                       9.2523+-0.1551     ?      9.3478+-0.0672        ? might be 1.0103x slower
   string-tagcloud                                   13.2127+-0.9639     ?     13.2138+-0.3353        ?
   string-unpack-code                                29.0781+-0.9197           29.0722+-1.5443        
   string-validate-input                              6.8618+-0.3863            6.8356+-0.3159        

   <arithmetic>                                       7.2616+-0.0529            7.2532+-0.0805          might be 1.0012x faster

                                                          Conf#1                    Conf#2                                      
LongSpider:
   3d-cube                                         1159.4390+-18.3872    ?   1159.9818+-5.5884        ?
   3d-morph                                        1872.3270+-4.0075         1871.2806+-1.6537        
   3d-raytrace                                      996.2850+-15.7166         987.9307+-23.3216       
   access-binary-trees                             1321.8011+-3.7252     ?   1322.8964+-5.6430        ?
   access-fannkuch                                  449.0647+-21.0879    ?    464.4824+-39.7047       ? might be 1.0343x slower
   access-nbody                                    1008.7484+-0.7014     ?   1010.6885+-1.5951        ?
   access-nsieve                                    666.4697+-11.4402         666.3622+-8.4761        
   bitops-3bit-bits-in-byte                          51.4730+-0.5074     ?     52.2062+-1.1943        ? might be 1.0142x slower
   bitops-bits-in-byte                              310.0107+-6.2068     ?    314.7267+-7.0319        ? might be 1.0152x slower
   bitops-nsieve-bits                               620.4373+-3.7827          619.4960+-3.6790        
   controlflow-recursive                            686.0615+-1.2504     ^    676.2185+-1.2180        ^ definitely 1.0146x faster
   crypto-aes                                       940.2765+-7.6746          932.1885+-7.4716        
   crypto-md5                                       695.4270+-3.4939     ?    700.1296+-10.2146       ?
   crypto-sha1                                      964.9257+-2.1927     ?    965.6763+-5.0394        ?
   date-format-tofte                                956.9150+-14.7842         947.0907+-9.3238          might be 1.0104x faster
   date-format-xparb                               1063.1870+-105.9450       1057.6287+-83.9667       
   hash-map                                         238.4415+-1.5434          237.1068+-4.6344        
   math-cordic                                      654.6338+-1.1860     ?    656.4597+-2.7010        ?
   math-partial-sums                               1126.2252+-4.1284     ?   1130.0621+-3.8194        ?
   math-spectral-norm                              1074.9101+-1.9610     ?   1074.9171+-2.7628        ?
   string-base64                                    530.9650+-3.4890     ?    532.9538+-5.7707        ?
   string-fasta                                     606.8112+-5.2560     ?    609.0435+-5.2807        ?
   string-tagcloud                                  286.3067+-4.6076          282.1616+-2.5118          might be 1.0147x faster

   <geometric>                                      657.7898+-3.5459     ?    658.2909+-3.1522        ? might be 1.0008x slower

                                                          Conf#1                    Conf#2                                      
V8Spider:
   crypto                                            73.2687+-1.4024           72.1216+-0.9278          might be 1.0159x faster
   deltablue                                         92.2487+-2.4600     ?     96.0862+-3.6794        ? might be 1.0416x slower
   earley-boyer                                      63.3910+-1.0347     ?     63.5065+-1.2097        ?
   raytrace                                          41.3782+-2.1482     ?     41.5938+-1.7031        ?
   regexp                                           102.9228+-0.5188          102.2650+-0.8783        
   richards                                          93.9991+-2.2165           92.9843+-1.8538          might be 1.0109x faster
   splay                                             55.1071+-1.8320     ?     55.6590+-2.1056        ? might be 1.0100x slower

   <geometric>                                       71.3838+-0.7175     ?     71.6381+-1.1915        ? might be 1.0036x slower

                                                          Conf#1                    Conf#2                                      
Octane:
   encrypt                                           0.27555+-0.01586    ?     0.27879+-0.00453       ? might be 1.0118x slower
   decrypt                                           4.83295+-0.00507    ?     4.85875+-0.02968       ?
   deltablue                                x2       0.26448+-0.01150          0.26235+-0.01431       
   earley                                            0.50115+-0.00201          0.50041+-0.00412       
   boyer                                             8.04595+-0.08925          7.93259+-0.10713         might be 1.0143x faster
   navier-stokes                            x2       6.37906+-0.03004          6.36829+-0.00458       
   raytrace                                 x2       1.71163+-0.07924    ?     1.78228+-0.11828       ? might be 1.0413x slower
   richards                                 x2       0.16984+-0.00142    ?     0.17222+-0.00315       ? might be 1.0140x slower
   splay                                    x2       0.53225+-0.00674    ?     0.53932+-0.00713       ? might be 1.0133x slower
   regexp                                   x2      38.34281+-0.58286         37.95919+-0.26565         might be 1.0101x faster
   pdfjs                                    x2      59.83973+-0.23388    ?    60.00888+-0.40818       ?
   mandreel                                 x2      69.93256+-0.61686         69.62872+-0.44826       
   gbemu                                    x2      59.82779+-1.28386    ?    60.29241+-0.65040       ?
   closure                                           0.89632+-0.00175          0.89594+-0.00590       
   jquery                                           11.69179+-0.06452         11.67285+-0.10563       
   box2d                                    x2      17.24493+-0.25505    ?    17.40000+-0.10062       ?
   zlib                                     x2     574.63719+-10.86984       572.46226+-4.67871       
   typescript                               x2    1096.98853+-32.30140   ?  1119.18933+-16.95256      ? might be 1.0202x slower

   <geometric>                                       8.99476+-0.03262    ?     9.04214+-0.05265       ? might be 1.0053x slower

                                                          Conf#1                    Conf#2                                      
Kraken:
   ai-astar                                          366.954+-7.110            358.306+-22.822          might be 1.0241x faster
   audio-beat-detection                               83.350+-0.155             82.378+-1.091           might be 1.0118x faster
   audio-dft                                         130.904+-4.564            127.778+-2.067           might be 1.0245x faster
   audio-fft                                          59.235+-0.745             59.018+-0.487         
   audio-oscillator                                  101.311+-0.431            100.828+-0.458         
   imaging-darkroom                                   94.925+-0.306             94.838+-0.415         
   imaging-desaturate                                 90.572+-0.955             90.379+-0.763         
   imaging-gaussian-blur                             151.483+-1.093            150.710+-2.667         
   json-parse-financial                               69.007+-1.263      ?      69.180+-0.636         ?
   json-stringify-tinderbox                           41.754+-0.661             41.543+-0.833         
   stanford-crypto-aes                                63.410+-2.167      ?      63.569+-0.416         ?
   stanford-crypto-ccm                                59.182+-2.108             57.932+-2.425           might be 1.0216x faster
   stanford-crypto-pbkdf2                            142.639+-2.715            141.572+-1.771         
   stanford-crypto-sha256-iterative                   58.184+-1.739             57.436+-2.095           might be 1.0130x faster

   <arithmetic>                                      108.065+-0.846            106.819+-1.662           might be 1.0117x faster

                                                          Conf#1                    Conf#2                                      
JSRegress:
   abc-forward-loop-equal                            58.2887+-1.0064     ?     58.3814+-0.5516        ?
   abc-postfix-backward-loop                         56.7443+-1.1515     ?     57.2455+-2.1390        ?
   abc-simple-backward-loop                          56.7975+-1.5868           56.4058+-0.5100        
   abc-simple-forward-loop                           56.9490+-0.4733           56.7919+-0.6236        
   abc-skippy-loop                                   38.8353+-0.2932     ?     39.2732+-0.7482        ? might be 1.0113x slower
   abs-boolean                                        3.8264+-0.1971            3.7173+-0.1145          might be 1.0293x faster
   adapt-to-double-divide                            19.0785+-0.6318           18.9803+-0.3377        
   aliased-arguments-getbyval                         1.7449+-0.1748            1.6933+-0.3307          might be 1.0305x faster
   allocate-big-object                                3.8170+-0.2369            3.4373+-0.3056          might be 1.1105x faster
   arguments-named-and-reflective                    15.1081+-0.5961           15.0075+-0.1418        
   arguments-out-of-bounds                           18.0140+-0.2171     ?     18.4821+-0.3800        ? might be 1.0260x slower
   arguments-strict-mode                             14.1133+-0.4487           14.0585+-0.6840        
   arguments                                         12.7502+-0.1603           12.5034+-0.7468          might be 1.0197x faster
   arity-mismatch-inlining                            1.2207+-0.1538            1.2190+-0.1256        
   array-access-polymorphic-structure                 9.2256+-0.0982     ?      9.3348+-0.2856        ? might be 1.0118x slower
   array-nonarray-polymorhpic-access                 43.8837+-1.6009           43.5362+-2.3322        
   array-prototype-every                            117.4352+-0.3903          117.4315+-0.8044        
   array-prototype-forEach                          116.4421+-3.7636     ?    117.4316+-3.8972        ?
   array-prototype-map                              129.6927+-3.6762          128.7234+-1.3312        
   array-prototype-reduce                           111.0988+-2.5063          110.4459+-2.9779        
   array-prototype-reduceRight                      110.7897+-1.7052     ?    110.9873+-2.8425        ?
   array-prototype-some                             119.0731+-2.0873          118.7554+-2.3622        
   array-splice-contiguous                           33.2384+-0.6302           33.0129+-0.7028        
   array-with-double-add                              5.6268+-0.1444     ?      5.7300+-0.1647        ? might be 1.0184x slower
   array-with-double-increment                        4.1437+-0.1400     ?      4.1591+-0.2038        ?
   array-with-double-mul-add                          7.2116+-0.1274     ?      7.2646+-0.1430        ?
   array-with-double-sum                              4.4636+-0.1600            4.3229+-0.2244          might be 1.0325x faster
   array-with-int32-add-sub                           9.7039+-0.2661     ?      9.8176+-0.5627        ? might be 1.0117x slower
   array-with-int32-or-double-sum                     4.4205+-0.2741     ?      4.4442+-0.1325        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     45.4847+-1.9772     ?     47.4412+-3.7053        ? might be 1.0430x slower
   ArrayBuffer-DataView-alloc-long-lived             17.9303+-0.7373           17.9271+-0.6407        
   ArrayBuffer-Int32Array-byteOffset                  5.7529+-0.1323            5.7103+-0.3444        
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     46.7865+-1.8971     ?     47.7119+-1.7964        ? might be 1.0198x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     29.9709+-1.3758     ?     30.4168+-0.9992        ? might be 1.0149x slower
   ArrayBuffer-Int8Array-alloc-long-lived            16.9316+-0.1045     ?     17.7052+-1.0998        ? might be 1.0457x slower
   ArrayBuffer-Int8Array-alloc                       14.4175+-0.3142           14.3056+-0.5656        
   asmjs_bool_bug                                     9.7740+-0.2169            9.7323+-0.1355        
   assign-custom-setter-polymorphic                   4.1656+-0.1176     ?      4.2510+-0.1250        ? might be 1.0205x slower
   assign-custom-setter                               5.7785+-0.1751            5.7062+-0.2531          might be 1.0127x faster
   basic-set                                         11.9575+-0.7414           11.7069+-0.6779          might be 1.0214x faster
   big-int-mul                                        5.8705+-0.1417     ?      5.9474+-0.2081        ? might be 1.0131x slower
   boolean-test                                       4.4860+-0.0408            4.3840+-0.1352          might be 1.0232x faster
   branch-fold                                        4.7819+-0.0496     ?      4.8207+-0.1278        ?
   branch-on-string-as-boolean                       26.6865+-0.3951           26.3751+-1.4106          might be 1.0118x faster
   by-val-generic                                     9.0914+-0.4552     ?      9.3495+-0.3739        ? might be 1.0284x slower
   call-spread-apply                                 38.4805+-0.4369     ?     39.7807+-1.9166        ? might be 1.0338x slower
   call-spread-call                                  33.1773+-1.7863     ?     35.5188+-2.3682        ? might be 1.0706x slower
   captured-assignments                               0.7251+-0.2070            0.7153+-0.1676          might be 1.0137x faster
   cast-int-to-double                                 8.3672+-0.1694            8.2828+-0.1660          might be 1.0102x faster
   cell-argument                                     10.2355+-0.7282           10.1572+-0.2452        
   cfg-simplify                                       4.0626+-0.1700            3.9446+-0.2435          might be 1.0299x faster
   chain-getter-access                               12.1132+-0.6099           12.0158+-0.5454        
   cmpeq-obj-to-obj-other                            13.6918+-0.6339           13.4770+-1.0689          might be 1.0159x faster
   constant-test                                      8.0485+-0.1622            8.0262+-0.2435        
   create-lots-of-functions                          16.2736+-0.2387     ?     16.7440+-0.2835        ? might be 1.0289x slower
   cse-new-array-buffer                               3.1590+-0.1747     ?      3.2490+-0.2491        ? might be 1.0285x slower
   cse-new-array                                      3.3322+-0.2206     ?      3.3499+-0.2354        ?
   DataView-custom-properties                        53.9090+-1.8937     ?     54.6787+-2.4591        ? might be 1.0143x slower
   delay-tear-off-arguments-strictmode               18.9810+-0.5663     ?     19.0701+-0.9397        ?
   deltablue-varargs                                268.6152+-3.7894     ?    271.9018+-6.9076        ? might be 1.0122x slower
   destructuring-arguments                          239.3279+-3.4525     ?    239.4290+-4.4579        ?
   destructuring-parameters-overridden-by-function   
                                                      0.7950+-0.1433            0.7490+-0.1560          might be 1.0614x faster
   destructuring-swap                                 7.8615+-0.1651            7.7859+-0.2656        
   direct-arguments-getbyval                          1.6850+-0.1650     ?      1.7838+-0.1640        ? might be 1.0586x slower
   div-boolean-double                                 5.6132+-0.1508            5.6122+-0.1082        
   div-boolean                                        9.9347+-0.3788     ?     10.0549+-0.1559        ? might be 1.0121x slower
   double-get-by-val-out-of-bounds                    6.0786+-0.4350     ?      6.3256+-0.3239        ? might be 1.0406x slower
   double-pollution-getbyval                          9.9087+-0.2003            9.8135+-0.2419        
   double-pollution-putbyoffset                       5.5997+-0.3304     ?      5.6437+-0.1694        ?
   double-real-use                                   40.6090+-0.5327           40.5966+-1.1797        
   double-to-int32-typed-array-no-inline              2.9141+-0.1541            2.7863+-0.1717          might be 1.0458x faster
   double-to-int32-typed-array                        2.6895+-0.0675            2.6578+-0.0791          might be 1.0119x faster
   double-to-uint32-typed-array-no-inline             2.9337+-0.2020     ?      2.9900+-0.1195        ? might be 1.0192x slower
   double-to-uint32-typed-array                       2.7392+-0.1450     ?      2.8625+-0.1935        ? might be 1.0450x slower
   elidable-new-object-dag                           55.5491+-2.1268     ?     56.4929+-1.9160        ? might be 1.0170x slower
   elidable-new-object-roflcopter                    56.0391+-0.9879     ?     56.3384+-0.6889        ?
   elidable-new-object-then-call                     57.3751+-1.9965     ?     58.2582+-2.2884        ? might be 1.0154x slower
   elidable-new-object-tree                          66.3618+-1.6502     ?     67.8672+-2.5131        ? might be 1.0227x slower
   empty-string-plus-int                              7.5840+-0.2597            7.5654+-0.2521        
   emscripten-cube2hash                              45.5349+-1.0407     ?     45.7130+-1.0894        ?
   exit-length-on-plain-object                       20.0347+-2.3064           19.1815+-0.3366          might be 1.0445x faster
   external-arguments-getbyval                        1.7682+-0.2180            1.7424+-0.0926          might be 1.0149x faster
   external-arguments-putbyval                        3.1785+-0.1449     ?      3.2415+-0.1525        ? might be 1.0198x slower
   fixed-typed-array-storage-var-index                1.6366+-0.2326            1.6014+-0.1639          might be 1.0220x faster
   fixed-typed-array-storage                          1.2861+-0.0914            1.2835+-0.1077        
   Float32Array-matrix-mult                           6.2012+-0.2162            6.1163+-0.2436          might be 1.0139x faster
   Float32Array-to-Float64Array-set                  75.7306+-2.7376     ?     85.0920+-30.7306       ? might be 1.1236x slower
   Float64Array-alloc-long-lived                     93.1265+-1.2259           92.6470+-0.6640        
   Float64Array-to-Int16Array-set                    92.6533+-0.4591           91.6345+-1.8214          might be 1.0111x faster
   fold-double-to-int                                19.5321+-0.5629           19.2605+-0.7033          might be 1.0141x faster
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     12.0860+-0.4289           11.8972+-0.5459          might be 1.0159x faster
   fold-get-by-id-to-multi-get-by-offset              9.4568+-0.5245            9.3918+-0.3502        
   fold-multi-get-by-offset-to-get-by-offset   
                                                      8.7472+-0.6326     ?      8.7896+-0.8539        ?
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                      8.3160+-0.7068     ?      8.6014+-0.4161        ? might be 1.0343x slower
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                      7.5986+-0.6523     ?      7.9963+-0.5620        ? might be 1.0523x slower
   fold-multi-put-by-offset-to-put-by-offset   
                                                      6.6580+-0.6721     ?      6.7843+-0.5302        ? might be 1.0190x slower
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     13.2728+-0.2875           12.6271+-0.4430          might be 1.0511x faster
   fold-put-by-id-to-multi-put-by-offset              9.6065+-0.6182            9.2958+-0.5993          might be 1.0334x faster
   fold-put-structure                                 6.8015+-0.5881            6.7257+-0.5777          might be 1.0113x faster
   for-of-iterate-array-entries                      16.7695+-0.2466           16.7354+-0.6625        
   for-of-iterate-array-keys                          5.3076+-0.1228            5.0300+-0.4303          might be 1.0552x faster
   for-of-iterate-array-values                        5.0027+-0.2522            4.8495+-0.2939          might be 1.0316x faster
   fround                                            24.4231+-0.7553     ?     25.6017+-1.6071        ? might be 1.0483x slower
   ftl-library-inlining-dataview                     93.6871+-4.0901     ?     95.8419+-6.1818        ? might be 1.0230x slower
   ftl-library-inlining                              90.3807+-0.8303     ?     90.3939+-1.7109        ?
   function-dot-apply                                 3.0753+-0.2306            2.9447+-0.1353          might be 1.0444x faster
   function-test                                      4.3166+-0.1368     ?      4.3642+-0.1923        ? might be 1.0110x slower
   function-with-eval                               152.2069+-1.7286          151.0617+-0.5950        
   gcse-poly-get-less-obvious                        24.9995+-0.3918     ?     25.1913+-0.8000        ?
   gcse-poly-get                                     25.0765+-0.4001     ?     25.0788+-0.5365        ?
   gcse                                               6.6767+-0.1871     ?      6.6859+-0.0741        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      3.3588+-0.0701            3.2603+-0.0416          might be 1.0302x faster
   get-by-id-bimorphic-check-structure-elimination   
                                                      8.4265+-0.3332            8.4072+-0.0614        
   get-by-id-chain-from-try-block                     6.6638+-0.2946     ?      6.7987+-0.1497        ? might be 1.0202x slower
   get-by-id-check-structure-elimination              7.5994+-0.0663     ?      7.6259+-0.0724        ?
   get-by-id-proto-or-self                           24.9205+-2.8048           23.7673+-1.6365          might be 1.0485x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      3.9924+-0.1408     ?      4.0090+-0.0424        ?
   get-by-id-self-or-proto                           23.0740+-0.6575     ?     23.4334+-1.5997        ? might be 1.0156x slower
   get-by-val-out-of-bounds                           5.8887+-0.2031     ?      5.8917+-0.4282        ?
   get-by-val-with-string-bimorphic-check-structure-elimination-simple   
                                                      3.8891+-0.1209     !      4.3538+-0.1061        ! definitely 1.1195x slower
   get-by-val-with-string-bimorphic-check-structure-elimination   
                                                      9.9590+-0.1676     ?     10.1454+-0.1757        ? might be 1.0187x slower
   get-by-val-with-string-chain-from-try-block   
                                                      7.8618+-0.2827     ?      7.9338+-0.2038        ?
   get-by-val-with-string-check-structure-elimination   
                                                      9.2508+-0.1385            9.0905+-0.2060          might be 1.0176x faster
   get-by-val-with-string-proto-or-self              23.7261+-1.4576           23.4355+-0.9578          might be 1.0124x faster
   get-by-val-with-string-quadmorphic-check-structure-elimination-simple   
                                                      5.0061+-0.1733            4.9163+-0.0732          might be 1.0183x faster
   get-by-val-with-string-self-or-proto              23.9263+-1.9701     ?     24.7756+-2.7752        ? might be 1.0355x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination-simple   
                                                      4.7784+-0.1242     !      5.1998+-0.1189        ! definitely 1.0882x slower
   get-by-val-with-symbol-bimorphic-check-structure-elimination   
                                                     19.4578+-0.3987     ?     19.6690+-0.6428        ? might be 1.0109x slower
   get-by-val-with-symbol-chain-from-try-block   
                                                      8.0378+-0.1686            7.8813+-0.1372          might be 1.0199x faster
   get-by-val-with-symbol-check-structure-elimination   
                                                     18.2907+-0.4349           18.2406+-0.0967        
   get-by-val-with-symbol-proto-or-self              24.0062+-2.0889           23.8724+-2.0738        
   get-by-val-with-symbol-quadmorphic-check-structure-elimination-simple   
                                                      6.1989+-0.0546            6.1830+-0.1724        
   get-by-val-with-symbol-self-or-proto              23.9543+-2.6164     ?     24.7161+-2.2229        ? might be 1.0318x slower
   get_callee_monomorphic                             3.6133+-0.1993     ?      3.6172+-0.3239        ?
   get_callee_polymorphic                             4.4749+-0.1678     ?      4.5038+-0.2935        ?
   getter-no-activation                               5.9998+-0.6117            5.7992+-0.1417          might be 1.0346x faster
   getter-prototype                                  18.1263+-0.3187           18.0215+-0.4027        
   getter-richards                                  132.0611+-1.5368     ?    132.3125+-3.5260        ?
   getter                                             7.2862+-0.1544            7.2575+-0.1168        
   global-object-access-with-mutating-structure   
                                                      8.7153+-0.3302            8.3966+-0.6224          might be 1.0380x faster
   global-var-const-infer-fire-from-opt               1.4174+-0.1257            1.3477+-0.2471          might be 1.0517x faster
   global-var-const-infer                             1.0780+-0.1889     ?      1.1154+-0.1466        ? might be 1.0347x slower
   HashMap-put-get-iterate-keys                      33.5554+-0.7109     ?     33.5730+-0.3699        ?
   HashMap-put-get-iterate                           32.8280+-0.3127     ?     32.8465+-0.2581        ?
   HashMap-string-put-get-iterate                    37.2803+-1.5704           35.9612+-0.9820          might be 1.0367x faster
   hoist-make-rope                                   16.0734+-2.2169     ?     16.9504+-2.1026        ? might be 1.0546x slower
   hoist-poly-check-structure-effectful-loop   
                                                      7.0628+-0.0791            7.0062+-0.1961        
   hoist-poly-check-structure                         4.8928+-0.2016     ?      4.9135+-0.1598        ?
   imul-double-only                                  10.4675+-0.8363     ?     11.2904+-0.9380        ? might be 1.0786x slower
   imul-int-only                                     12.6352+-0.6035           12.6135+-0.7586        
   imul-mixed                                        10.6093+-0.2451     ?     10.9760+-0.4745        ? might be 1.0346x slower
   in-four-cases                                     27.5613+-0.3486           27.5470+-0.1757        
   in-one-case-false                                 14.7556+-0.2779           14.5455+-0.3250          might be 1.0144x faster
   in-one-case-true                                  14.5605+-0.2746     ?     14.6133+-0.1683        ?
   in-two-cases                                      15.3001+-0.2979     ?     15.4854+-0.1410        ? might be 1.0121x slower
   indexed-properties-in-objects                      3.7530+-0.1958     ?      3.7867+-0.0916        ?
   infer-closure-const-then-mov-no-inline             4.5552+-0.1658            4.4617+-0.1518          might be 1.0210x faster
   infer-closure-const-then-mov                      25.6282+-0.6965           25.5356+-0.4920        
   infer-closure-const-then-put-to-scope-no-inline   
                                                     14.8829+-0.2470           14.7369+-0.1857        
   infer-closure-const-then-put-to-scope             28.0590+-0.2565     ?     28.1827+-0.8191        ?
   infer-closure-const-then-reenter-no-inline   
                                                     71.6585+-0.9315           71.5441+-0.3208        
   infer-closure-const-then-reenter                  28.3509+-0.2362     ?     28.6378+-0.3355        ? might be 1.0101x slower
   infer-constant-global-property                     4.8878+-0.2838            4.7686+-0.1509          might be 1.0250x faster
   infer-constant-property                            3.2859+-0.1009     ?      3.3238+-0.0871        ? might be 1.0115x slower
   infer-one-time-closure-ten-vars                   14.6336+-1.1479           14.5790+-0.8828        
   infer-one-time-closure-two-vars                   14.4915+-0.7028           14.1931+-0.4429          might be 1.0210x faster
   infer-one-time-closure                            14.7592+-0.6940     ?     14.8199+-0.3540        ?
   infer-one-time-deep-closure                       25.3856+-0.1929           25.1282+-0.2910          might be 1.0102x faster
   inline-arguments-access                            5.8500+-0.4612     ?      5.8824+-0.2444        ?
   inline-arguments-aliased-access                    5.9479+-0.1476     ?      5.9579+-0.1923        ?
   inline-arguments-local-escape                      5.9890+-0.2159            5.9855+-0.4742        
   inline-get-scoped-var                              5.8372+-0.2177            5.7009+-0.0838          might be 1.0239x faster
   inlined-put-by-id-transition                      17.2598+-0.3707           17.0693+-0.8540          might be 1.0112x faster
   int-or-other-abs-then-get-by-val                   6.9661+-0.0644            6.9592+-0.2572        
   int-or-other-abs-zero-then-get-by-val             27.6118+-0.4366           27.4520+-0.8042        
   int-or-other-add-then-get-by-val                   5.9312+-0.1685     ?      6.1255+-0.1639        ? might be 1.0328x slower
   int-or-other-add                                   8.0950+-0.1849            8.0850+-0.1023        
   int-or-other-div-then-get-by-val                   5.3392+-0.0792            5.3247+-0.1693        
   int-or-other-max-then-get-by-val                   5.3975+-0.0527            5.3712+-0.1339        
   int-or-other-min-then-get-by-val                   5.2209+-0.0749     ?      5.2571+-0.0123        ?
   int-or-other-mod-then-get-by-val                   5.2366+-0.1751            5.1975+-0.0816        
   int-or-other-mul-then-get-by-val                   5.1489+-0.1549            5.1454+-0.0817        
   int-or-other-neg-then-get-by-val                   6.5280+-0.0678            6.4048+-0.1053          might be 1.0192x faster
   int-or-other-neg-zero-then-get-by-val             27.9598+-1.0573           27.4907+-0.2768          might be 1.0171x faster
   int-or-other-sub-then-get-by-val                   6.0895+-0.1239            6.0663+-0.2082        
   int-or-other-sub                                   4.8351+-0.2339     ?      4.8837+-0.1231        ? might be 1.0101x slower
   int-overflow-local                                 5.8470+-0.1376     ?      6.0366+-0.6931        ? might be 1.0324x slower
   Int16Array-alloc-long-lived                       65.1121+-0.8853           64.9979+-1.1488        
   Int16Array-bubble-sort-with-byteLength            38.0549+-1.0541     ?     38.2034+-1.2812        ?
   Int16Array-bubble-sort                            37.6967+-0.4592           37.5710+-0.4605        
   Int16Array-load-int-mul                            2.0907+-0.1680            2.0167+-0.0937          might be 1.0367x faster
   Int16Array-to-Int32Array-set                      72.5335+-1.4316           72.4548+-1.5258        
   Int32Array-alloc-large                            33.5204+-2.1511           33.2973+-0.6012        
   Int32Array-alloc-long-lived                       74.6233+-1.9901           73.9258+-1.3238        
   Int32Array-alloc                                   4.7817+-0.5218            4.5452+-0.2219          might be 1.0520x faster
   Int32Array-Int8Array-view-alloc                    9.2092+-0.1216     ?      9.2820+-0.6863        ?
   int52-spill                                        6.8708+-0.2395            6.8447+-0.4100        
   Int8Array-alloc-long-lived                        57.6243+-0.9129           57.5596+-0.9197        
   Int8Array-load-with-byteLength                     4.7959+-0.1344            4.7903+-0.1777        
   Int8Array-load                                     4.8262+-0.0853            4.7898+-0.1565        
   integer-divide                                    13.5342+-0.5166           13.5288+-0.2657        
   integer-modulo                                     2.8031+-0.2086     ?      2.8085+-0.2523        ?
   is-boolean-fold-tricky                             5.8223+-0.1483            5.8112+-0.1002        
   is-boolean-fold                                    3.9602+-0.0909     ?      4.0553+-0.2242        ? might be 1.0240x slower
   is-function-fold-tricky-internal-function   
                                                     14.8935+-1.0499     ?     15.0900+-1.0239        ? might be 1.0132x slower
   is-function-fold-tricky                            5.9641+-0.0830     ?      5.9827+-0.2145        ?
   is-function-fold                                   4.0333+-0.1328     ?      4.0934+-0.1103        ? might be 1.0149x slower
   is-number-fold-tricky                              5.8030+-0.1511            5.7949+-0.2084        
   is-number-fold                                     3.9904+-0.2336     ?      4.0317+-0.1055        ? might be 1.0104x slower
   is-object-or-null-fold-functions                   4.2217+-0.1751            4.1281+-0.1735          might be 1.0227x faster
   is-object-or-null-fold-less-tricky                 6.0062+-0.0782            5.9191+-0.2302          might be 1.0147x faster
   is-object-or-null-fold-tricky                      7.7667+-0.1416            7.7462+-0.1164        
   is-object-or-null-fold                             4.0212+-0.0839     ?      4.1353+-0.0708        ? might be 1.0284x slower
   is-object-or-null-trickier-function                6.0673+-0.1468            6.0487+-0.1671        
   is-object-or-null-trickier-internal-function   
                                                     15.6751+-2.3187           15.1358+-0.0881          might be 1.0356x faster
   is-object-or-null-tricky-function                  5.9968+-0.1564     ?      6.0485+-0.0739        ?
   is-object-or-null-tricky-internal-function   
                                                     11.4572+-0.9460           11.3889+-0.0788        
   is-string-fold-tricky                              5.8289+-0.1140            5.8242+-0.1477        
   is-string-fold                                     3.9767+-0.1623     ?      4.0387+-0.0869        ? might be 1.0156x slower
   is-undefined-fold-tricky                           4.5299+-0.1682     ?      4.5640+-0.1095        ?
   is-undefined-fold                                  4.0998+-0.0728            4.0361+-0.0185          might be 1.0158x faster
   JSONP-negative-0                                   0.4077+-0.0999     ?      0.4131+-0.1058        ? might be 1.0133x slower
   large-int-captured                                 6.8360+-0.1693            6.7210+-0.2996          might be 1.0171x faster
   large-int-neg                                     21.2775+-0.2361     ?     21.5086+-0.5034        ? might be 1.0109x slower
   large-int                                         19.3978+-0.4221           19.2560+-0.7604        
   load-varargs-elimination                          30.5300+-1.0810     ?     32.9486+-7.1416        ? might be 1.0792x slower
   logical-not-weird-types                            4.9949+-0.1023     ?      5.0725+-0.1853        ? might be 1.0155x slower
   logical-not                                        6.5330+-0.5789            6.1904+-0.1397          might be 1.0554x faster
   lots-of-fields                                    17.8360+-0.4898     ?     18.2853+-0.2093        ? might be 1.0252x slower
   make-indexed-storage                               4.1973+-0.6226     ?      4.3390+-0.2378        ? might be 1.0338x slower
   make-rope-cse                                      6.3795+-0.2929     ?      6.5083+-0.2448        ? might be 1.0202x slower
   marsaglia-larger-ints                             53.6818+-0.8781     ?     53.9678+-1.3525        ?
   marsaglia-osr-entry                               28.9672+-0.7918     ?     29.1805+-0.5315        ?
   math-with-out-of-bounds-array-values              31.9413+-0.1630     ?     32.2396+-0.1519        ?
   max-boolean                                        3.3460+-0.0867     ?      3.3618+-0.1283        ?
   method-on-number                                  23.4180+-0.4877     ?     23.6349+-1.1880        ?
   min-boolean                                        3.3389+-0.1112     ?      3.3865+-0.2082        ? might be 1.0143x slower
   minus-boolean-double                               4.4142+-0.5865            4.2569+-0.1090          might be 1.0370x faster
   minus-boolean                                      3.3251+-0.1084            3.2740+-0.0791          might be 1.0156x faster
   misc-strict-eq                                    56.0356+-1.1150     ?     56.7390+-2.5648        ? might be 1.0126x slower
   mod-boolean-double                                11.8713+-0.1148           11.6815+-0.2303          might be 1.0162x faster
   mod-boolean                                        8.7926+-0.1691     ?      8.8211+-0.0791        ?
   mul-boolean-double                                 4.9789+-0.1572            4.8437+-0.1000          might be 1.0279x faster
   mul-boolean                                        3.5997+-0.1455            3.5095+-0.1243          might be 1.0257x faster
   neg-boolean                                        4.3529+-0.1378     ?      4.4579+-0.1597        ? might be 1.0241x slower
   negative-zero-divide                               0.5853+-0.1294            0.5838+-0.1161        
   negative-zero-modulo                               0.5977+-0.1097            0.5197+-0.0967          might be 1.1500x faster
   negative-zero-negate                               0.5341+-0.1058            0.5035+-0.1102          might be 1.0609x faster
   nested-function-parsing                           71.2968+-1.2420           71.2443+-1.2230        
   new-array-buffer-dead                            146.5917+-2.1576     ?    148.3995+-2.7854        ? might be 1.0123x slower
   new-array-buffer-push                              9.9073+-0.1162            9.7909+-0.3816          might be 1.0119x faster
   new-array-dead                                    25.8542+-1.4003           25.7987+-4.4359        
   new-array-push                                     5.3424+-0.4147     ?      5.5535+-0.2305        ? might be 1.0395x slower
   no-inline-constructor                             50.8151+-1.2009     ?     51.1027+-1.0621        ?
   number-test                                        4.2703+-0.1234     ?      4.3605+-0.0821        ? might be 1.0211x slower
   object-closure-call                                7.9652+-0.3756            7.8865+-0.2630        
   object-get-own-property-symbols-on-large-array   
                                                      5.0026+-0.3170            4.9579+-0.6391        
   object-test                                        4.1442+-0.2170     ?      4.3013+-0.1065        ? might be 1.0379x slower
   obvious-sink-pathology-taken                     176.7546+-4.8419          174.1758+-1.1313          might be 1.0148x faster
   obvious-sink-pathology                           159.4089+-2.0055     ?    161.3255+-3.1990        ? might be 1.0120x slower
   obviously-elidable-new-object                     51.1613+-1.2211     ?     51.2842+-1.1859        ?
   plus-boolean-arith                                 3.3473+-0.0711            3.3409+-0.0574        
   plus-boolean-double                                4.2972+-0.1395            4.2307+-0.1639          might be 1.0157x faster
   plus-boolean                                       3.3223+-0.2221            3.2604+-0.1024          might be 1.0190x faster
   poly-chain-access-different-prototypes-simple   
                                                      4.8985+-0.1158            4.8448+-0.0621          might be 1.0111x faster
   poly-chain-access-different-prototypes             4.4503+-0.1148     ?      4.4659+-0.1686        ?
   poly-chain-access-simpler                          4.9628+-0.0838            4.9313+-0.0923        
   poly-chain-access                                  5.3068+-0.1142            5.2956+-0.0592        
   poly-stricteq                                     76.8267+-1.1512           76.0848+-0.4150        
   polymorphic-array-call                             1.7773+-0.2478     ?      2.0270+-0.1608        ? might be 1.1405x slower
   polymorphic-get-by-id                              4.1860+-0.1253     ?      4.2405+-0.0842        ? might be 1.0130x slower
   polymorphic-put-by-id                             41.3494+-4.0694           41.0753+-3.3648        
   polymorphic-structure                             23.4633+-0.2322     ?     23.4886+-0.3526        ?
   polyvariant-monomorphic-get-by-id                 11.6137+-0.2547           11.5886+-0.2014        
   proto-getter-access                               11.9475+-0.8872     ?     12.0590+-0.1658        ?
   prototype-access-with-mutating-prototype           8.3276+-0.4275            8.1007+-0.1082          might be 1.0280x faster
   put-by-id-replace-and-transition                  12.7149+-0.5136           12.3842+-0.3897          might be 1.0267x faster
   put-by-id-slightly-polymorphic                     3.6617+-0.2835            3.5425+-0.1349          might be 1.0336x faster
   put-by-id                                         18.2053+-0.4786           18.0837+-0.5460        
   put-by-val-direct                                  0.5677+-0.0934     ?      0.5967+-0.1105        ? might be 1.0511x slower
   put-by-val-large-index-blank-indexing-type   
                                                      8.6953+-0.7273     ?      8.9435+-0.8237        ? might be 1.0285x slower
   put-by-val-machine-int                             3.4595+-0.2861     ?      3.4799+-0.2068        ?
   rare-osr-exit-on-local                            18.5200+-0.0614           18.1951+-0.6399          might be 1.0179x faster
   register-pressure-from-osr                        26.6147+-0.7066     ?     26.6753+-0.4447        ?
   repeat-multi-get-by-offset                        29.4469+-0.2531     ?     29.4535+-0.6374        ?
   setter-prototype                                  13.1982+-0.7287     ?     13.5646+-1.2188        ? might be 1.0278x slower
   setter                                             7.5005+-0.5115            7.3199+-0.1835          might be 1.0247x faster
   simple-activation-demo                            34.6340+-1.0875           34.3439+-0.6341        
   simple-getter-access                              15.7452+-0.5904           15.5635+-0.4802          might be 1.0117x faster
   simple-poly-call-nested                            9.0623+-0.0959     ?      9.1170+-0.1691        ?
   simple-poly-call                                   1.6585+-0.0576            1.6577+-0.0966        
   sin-boolean                                       27.8470+-1.6245     ?     29.3789+-1.0582        ? might be 1.0550x slower
   singleton-scope                                   80.3478+-0.4796     ?     81.0616+-1.0841        ?
   sink-function                                     15.9830+-0.7611     ?     16.0695+-0.9293        ?
   sink-huge-activation                              22.7417+-0.6455     ?     22.9886+-0.8724        ? might be 1.0109x slower
   sinkable-new-object-dag                           93.6950+-2.8021           92.2120+-2.8376          might be 1.0161x faster
   sinkable-new-object-taken                         70.5927+-4.0143     ?     73.9823+-1.9807        ? might be 1.0480x slower
   sinkable-new-object                               54.0338+-1.0998     ?     54.3998+-1.0238        ?
   slow-array-profile-convergence                     4.1617+-0.2578            3.9125+-0.1634          might be 1.0637x faster
   slow-convergence                                   3.7563+-0.1554     ?      3.8419+-0.1855        ? might be 1.0228x slower
   slow-ternaries                                    31.3099+-0.5119           30.5288+-0.5804          might be 1.0256x faster
   sorting-benchmark                                 25.6982+-0.7340     ?     26.0173+-0.4139        ? might be 1.0124x slower
   sparse-conditional                                 1.7617+-0.0591            1.7247+-0.0674          might be 1.0215x faster
   splice-to-remove                                  19.3740+-0.4099     ?     19.4282+-0.3897        ?
   string-char-code-at                               20.2340+-0.3546     ?     20.4597+-0.4211        ? might be 1.0112x slower
   string-concat-object                               3.0804+-0.1520     ?      3.1559+-0.2780        ? might be 1.0245x slower
   string-concat-pair-object                          3.1973+-0.3670     ?      3.2776+-0.5712        ? might be 1.0251x slower
   string-concat-pair-simple                         16.4532+-0.2753     ?     16.8273+-0.4268        ? might be 1.0227x slower
   string-concat-simple                              17.1302+-0.2733           17.0754+-0.2276        
   string-cons-repeat                                10.6773+-0.3595     ?     11.0948+-0.4536        ? might be 1.0391x slower
   string-cons-tower                                 10.2848+-0.1581     ?     10.3610+-0.3745        ?
   string-equality                                   21.7126+-0.1496     ?     21.9532+-0.3876        ? might be 1.0111x slower
   string-get-by-val-big-char                        10.0490+-0.1254           10.0023+-0.4743        
   string-get-by-val-out-of-bounds-insane             5.2590+-0.2229     ?      5.3862+-0.1892        ? might be 1.0242x slower
   string-get-by-val-out-of-bounds                    7.1464+-0.1624     ?      7.2068+-0.2292        ?
   string-get-by-val                                  4.7917+-0.0569     ?      4.8239+-0.1096        ?
   string-hash                                        2.7605+-0.2240     ?      2.7938+-0.1950        ? might be 1.0121x slower
   string-long-ident-equality                        17.8384+-0.2092     ?     17.8799+-0.2846        ?
   string-out-of-bounds                              18.3049+-0.4735           18.1622+-0.4944        
   string-repeat-arith                               42.9844+-0.6000     ?     43.5773+-0.3102        ? might be 1.0138x slower
   string-sub                                        83.1382+-1.7331     ?     83.6303+-1.3284        ?
   string-test                                        4.3893+-0.1275            4.3191+-0.1713          might be 1.0163x faster
   string-var-equality                               58.0057+-2.1510           57.7563+-1.3119        
   structure-hoist-over-transitions                   3.7261+-0.1110            3.5363+-0.2063          might be 1.0537x faster
   substring-concat-weird                            57.8778+-0.6721           57.5803+-0.4848        
   substring-concat                                  62.9575+-1.2210           62.8000+-0.8354        
   substring                                         68.9705+-1.0684     ?     69.3724+-1.1392        ?
   switch-char-constant                               3.4149+-0.1785            3.4055+-0.0449        
   switch-char                                        7.9844+-0.1109            7.9273+-0.0954        
   switch-constant                                   10.8530+-0.2543     ?     10.9650+-0.4122        ? might be 1.0103x slower
   switch-string-basic-big-var                       32.4445+-1.1210     ?     32.8615+-0.2657        ? might be 1.0129x slower
   switch-string-basic-big                           24.0043+-2.6799           23.9440+-0.7564        
   switch-string-basic-var                           31.1492+-0.7383     ?     31.6539+-0.8241        ? might be 1.0162x slower
   switch-string-basic                               19.4895+-0.2728     ?     19.6692+-0.3980        ?
   switch-string-big-length-tower-var                27.8477+-0.2533     ?     27.9973+-0.4179        ?
   switch-string-length-tower-var                    21.0109+-0.5697           20.4600+-0.1604          might be 1.0269x faster
   switch-string-length-tower                        15.0373+-0.2367           14.8991+-0.4807        
   switch-string-short                               15.4006+-1.0349           14.9617+-0.3680          might be 1.0293x faster
   switch                                            15.2067+-0.4234     ?     15.2610+-0.6598        ?
   tear-off-arguments-simple                          4.3414+-0.2207     ?      4.4305+-0.2040        ? might be 1.0205x slower
   tear-off-arguments                                 6.1068+-0.2501     ?      6.2754+-0.5947        ? might be 1.0276x slower
   temporal-structure                                17.2863+-0.1451     ?     17.7263+-0.8057        ? might be 1.0255x slower
   to-int32-boolean                                  20.5172+-0.2551           20.3916+-0.0693        
   try-catch-get-by-val-cloned-arguments             20.5646+-0.5122     ?     21.1485+-0.5862        ? might be 1.0284x slower
   try-catch-get-by-val-direct-arguments              9.3717+-0.4897            9.2588+-0.1561          might be 1.0122x faster
   try-catch-get-by-val-scoped-arguments             10.8785+-0.3245     ?     10.9254+-0.3944        ?
   typed-array-get-set-by-val-profiling              38.7723+-2.6927           36.8466+-4.0883          might be 1.0523x faster
   undefined-property-access                        457.2129+-1.7109     ?    457.6590+-3.8175        ?
   undefined-test                                     4.4434+-0.1290            4.4350+-0.1362        
   unprofiled-licm                                   28.5782+-1.3192     ?     28.7718+-0.7783        ?
   varargs-call                                      18.0337+-0.5452           17.7856+-0.2607          might be 1.0139x faster
   varargs-construct-inline                          37.4577+-0.2933     ?     37.5870+-0.2524        ?
   varargs-construct                                 30.5790+-0.6985     ?     30.7068+-0.4164        ?
   varargs-inline                                    11.4510+-0.2759           11.2527+-0.1883          might be 1.0176x faster
   varargs-strict-mode                               13.2001+-0.1470           13.1055+-0.3059        
   varargs                                           13.3032+-0.2276     ?     13.3486+-0.2960        ?
   weird-inlining-const-prop                          3.0400+-0.2184     ?      3.0494+-0.3200        ?

   <geometric>                                       11.5936+-0.0241     ?     11.6044+-0.0436        ? might be 1.0009x slower

                                                          Conf#1                    Conf#2                                      
AsmBench:
   bigfib.cpp                                       675.1662+-20.0359    ?    687.8543+-8.8076        ? might be 1.0188x slower
   cray.c                                           630.7591+-5.3183          630.0542+-4.3589        
   dry.c                                            649.3080+-27.0975    ?    657.5900+-1.6403        ? might be 1.0128x slower
   FloatMM.c                                        914.6072+-1.9265     ?    914.8857+-1.5510        ?
   gcc-loops.cpp                                   5915.6310+-19.7154        5902.3281+-18.0942       
   n-body.c                                        1673.1592+-1.8106     ?   1673.2680+-5.1556        ?
   Quicksort.c                                      573.3643+-4.0996          568.9533+-8.8464        
   stepanov_container.cpp                          4906.5717+-70.8814    ?   4907.2338+-36.5477       ?
   Towers.c                                         381.1053+-5.3566     ?    385.2407+-3.0688        ? might be 1.0109x slower

   <geometric>                                     1115.8817+-6.2704     ?   1119.8371+-1.8141        ? might be 1.0035x slower

                                                          Conf#1                    Conf#2                                      
CompressionBench:
   huffman                                           79.1904+-3.0202           78.7522+-2.5757        
   arithmetic-simple                                432.7852+-1.1907     ?    433.1183+-2.0611        ?
   arithmetic-precise                               362.8991+-2.4463     ?    365.2471+-2.1638        ?
   arithmetic-complex-precise                       362.5283+-0.9336          361.9175+-6.2496        
   arithmetic-precise-order-0                       446.4127+-0.9046          445.4664+-1.0449        
   arithmetic-precise-order-1                       424.2969+-1.7938     ?    426.9127+-1.9588        ?
   arithmetic-precise-order-2                       498.8552+-10.4078         492.1649+-7.7838          might be 1.0136x faster
   arithmetic-simple-order-1                        504.3336+-1.1539     ?    504.3896+-1.8974        ?
   arithmetic-simple-order-2                        575.7477+-12.0423         569.9174+-1.6031          might be 1.0102x faster
   lz-string                                        418.5870+-7.7481          411.3253+-6.1849          might be 1.0177x faster

   <geometric>                                      372.7365+-1.1920          371.3632+-2.0338          might be 1.0037x faster

                                                          Conf#1                    Conf#2                                      
Geomean of preferred means:
   <scaled-result>                                   79.5155+-0.1377           79.4912+-0.2766          might be 1.0003x faster
Comment 3 Geoffrey Garen 2015-08-17 11:42:19 PDT
Comment on attachment 259056 [details]
Patch

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

> Source/JavaScriptCore/ChangeLog:8
> +        Comparing null and undefined to themself or eachoter is always true.

themselves or each other
Comment 4 Filip Pizlo 2015-08-17 11:54:07 PDT
Comment on attachment 259056 [details]
Patch

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

I don't completely object to this optimization being done in FixupPhase, but it seems like the kind of thing that belongs in AbstractInterpreter so that it can fully participate in the constant folding fixpoint.

> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:379
> +            if (node->child1()->shouldSpeculateOther() && node->child2()->shouldSpeculateOther()) {
> +                m_insertionSet.insertNode(m_indexInBlock, SpecNone, Check, node->origin,
> +                    Edge(node->child1().node(), OtherUse));
> +                m_insertionSet.insertNode(m_indexInBlock, SpecNone, Check, node->origin,
> +                    Edge(node->child2().node(), OtherUse));
> +                m_graph.convertToConstant(node, jsBoolean(true));
> +            }

Why not do this in AbstractInterpreter?

> Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:453
> +            if (node->child1()->shouldSpeculateOther() && node->child2()->shouldSpeculateOther()) {
> +                m_insertionSet.insertNode(m_indexInBlock, SpecNone, Check, node->origin,
> +                    Edge(node->child1().node(), OtherUse));
> +                m_insertionSet.insertNode(m_indexInBlock, SpecNone, Check, node->origin,
> +                    Edge(node->child2().node(), OtherUse));
> +                m_graph.convertToConstant(node, jsBoolean(true));
> +                break;
> +            }

Ditto.
Comment 5 Benjamin Poulain 2015-08-18 21:05:53 PDT

*** This bug has been marked as a duplicate of bug 148157 ***