Bug 126218 - DFG PhantomArguments shouldn't rely on a dead Phi graph
Summary: DFG PhantomArguments shouldn't rely on a dead Phi graph
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on:
Blocks: 113986 125531
  Show dependency treegraph
 
Reported: 2013-12-24 11:29 PST by Filip Pizlo
Modified: 2013-12-25 15:42 PST (History)
7 users (show)

See Also:


Attachments
it begins (4.57 KB, patch)
2013-12-24 11:59 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
it runs things? (14.43 KB, patch)
2013-12-24 13:35 PST, Filip Pizlo
no flags Details | Formatted Diff | Diff
the patch (21.74 KB, patch)
2013-12-25 10:08 PST, Filip Pizlo
oliver: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2013-12-24 11:29:28 PST
Instead, an arguments alias variable should be live and its GetLocal's should be Phantom'd appropriately.  This has the chance of being a regression in CPS form because we'll issue stores of empty into the stack, and then maybe even issue loads of that empty value.  But it will buy is a *lot* of sanity.

In particular, this will have a very nice behavior in SSA: PhantomArguments will just have the DFG behavior of JSValue() and the bytecode (OSR exit) behavior of rematerializing the arguments object.  The captured arguments variables will force the store of JSValue() while the uncaptured (i.e. aliased) ones will just cease to exist other than a MovHint of PhantomArguments.
Comment 1 Filip Pizlo 2013-12-24 11:59:36 PST
Created attachment 219975 [details]
it begins
Comment 2 Filip Pizlo 2013-12-24 13:35:48 PST
Created attachment 219982 [details]
it runs things?
Comment 3 Filip Pizlo 2013-12-25 10:08:22 PST
Created attachment 219991 [details]
the patch
Comment 4 Filip Pizlo 2013-12-25 11:05:38 PST
This is totally neutral across the board.

Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1).

VMs tested:
"TipOfTree" at /Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc (r161065)
"FixPhantomArgs" at /Volumes/Data/fromMiniMe/primary/OpenSource/WebKitBuild/Release/jsc (r161065)

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

                                                        TipOfTree               FixPhantomArgs                                  
SunSpider:
   3d-cube                                            7.7660+-0.0691     ?      7.7838+-0.0661        ?
   3d-morph                                           8.8207+-0.1042     ?      8.8695+-0.0699        ?
   3d-raytrace                                        9.0671+-0.1418            8.9412+-0.0867          might be 1.0141x faster
   access-binary-trees                                2.1233+-0.0197     ?      2.1344+-0.0424        ?
   access-fannkuch                                    7.9803+-0.0344            7.9760+-0.1021        
   access-nbody                                       4.2582+-0.0172            4.2572+-0.0088        
   access-nsieve                                      5.0351+-0.0403            4.9848+-0.0706          might be 1.0101x faster
   bitops-3bit-bits-in-byte                           1.8861+-0.0039     ?      1.9271+-0.0867        ? might be 1.0217x slower
   bitops-bits-in-byte                                7.2395+-0.1139            7.2134+-0.0933        
   bitops-bitwise-and                                 3.0821+-0.0426            3.0702+-0.0247        
   bitops-nsieve-bits                                 4.6427+-0.0493     ?      4.6661+-0.0206        ?
   controlflow-recursive                              3.1859+-0.0214            3.1768+-0.0182        
   crypto-aes                                         5.5292+-0.0124     !      5.5588+-0.0154        ! definitely 1.0054x slower
   crypto-md5                                         3.3553+-0.0296     ?      3.4162+-0.0797        ? might be 1.0181x slower
   crypto-sha1                                        3.0173+-0.0256            3.0085+-0.0078        
   date-format-tofte                                 11.8118+-0.1351     ?     12.0171+-0.1753        ? might be 1.0174x slower
   date-format-xparb                                  8.7946+-0.1633            8.6891+-0.1969          might be 1.0121x faster
   math-cordic                                        4.2776+-0.0302     ?      4.3744+-0.1757        ? might be 1.0226x slower
   math-partial-sums                                 10.1587+-0.0923     ?     10.2147+-0.1340        ?
   math-spectral-norm                                 2.7611+-0.0058     ?      2.7638+-0.0096        ?
   regexp-dna                                        12.9010+-0.1444     ?     12.9973+-0.1695        ?
   string-base64                                      5.7963+-0.0774            5.7777+-0.0587        
   string-fasta                                      10.5380+-0.1503           10.4526+-0.0829        
   string-tagcloud                                   15.5291+-0.1240     ?     15.5445+-0.1459        ?
   string-unpack-code                                31.0410+-0.1385     !     31.4369+-0.2355        ! definitely 1.0128x slower
   string-validate-input                              7.1424+-0.0366            7.0915+-0.1013        

   <arithmetic> *                                     7.6054+-0.0158     ?      7.6286+-0.0200        ? might be 1.0031x slower
   <geometric>                                        6.1028+-0.0108     ?      6.1164+-0.0149        ? might be 1.0022x slower
   <harmonic>                                         5.0100+-0.0110     ?      5.0266+-0.0199        ? might be 1.0033x slower

                                                        TipOfTree               FixPhantomArgs                                  
LongSpider:
   3d-cube                                         2686.5415+-5.1094         2685.7136+-6.1509        
   3d-morph                                        1508.8911+-16.3972        1501.2542+-1.8344        
   3d-raytrace                                     1518.2069+-12.9074    ?   1528.8047+-19.0566       ?
   access-binary-trees                             2443.9535+-13.2852        2441.1893+-10.5797       
   access-fannkuch                                  665.0165+-0.2839     ?    665.1871+-0.2476        ?
   access-nbody                                    1495.8355+-0.7271     ?   1496.8125+-2.8619        ?
   access-nsieve                                   1549.7407+-2.2498     ?   1550.4580+-3.4986        ?
   bitops-3bit-bits-in-byte                         126.0413+-0.1899          126.0210+-0.1186        
   bitops-bits-in-byte                              602.9749+-3.2729     ?    603.1399+-5.8048        ?
   bitops-nsieve-bits                              1050.1224+-1.0445         1049.8860+-1.0774        
   controlflow-recursive                           1472.5108+-0.4504     ?   1472.6738+-0.5504        ?
   crypto-aes                                      1664.8427+-5.5731         1660.3140+-3.9072        
   crypto-md5                                      1166.4220+-1.3871     ?   1166.7859+-1.9302        ?
   crypto-sha1                                     1606.8366+-4.1508         1605.8088+-4.9035        
   date-format-tofte                               1212.1227+-10.6261    ?   1221.3336+-7.0744        ?
   date-format-xparb                               1498.2135+-34.3698        1462.7239+-28.7013         might be 1.0243x faster
   math-cordic                                     1757.1904+-42.7892        1745.2505+-20.9316       
   math-partial-sums                               1308.2149+-2.1197     ?   1315.0856+-15.5850       ?
   math-spectral-norm                              1826.0040+-0.4815     ?   1826.1485+-0.7315        ?
   string-base64                                    589.8986+-2.4776          588.8341+-1.9824        
   string-fasta                                     993.0805+-3.4496     ?   1037.2658+-60.9962       ? might be 1.0445x slower
   string-tagcloud                                  391.6693+-2.1728          391.3601+-2.5639        

   <arithmetic>                                    1324.2877+-3.3222     ?   1324.6387+-3.3380        ? might be 1.0003x slower
   <geometric> *                                   1130.4850+-2.3655     ?   1131.4909+-3.2274        ? might be 1.0009x slower
   <harmonic>                                       819.2104+-1.0098     ?    819.8980+-1.7508        ? might be 1.0008x slower

                                                        TipOfTree               FixPhantomArgs                                  
V8Spider:
   crypto                                            79.3720+-0.2899     ?     79.4300+-0.2510        ?
   deltablue                                         98.5750+-0.6521           98.3793+-0.7620        
   earley-boyer                                      72.8843+-0.2721           72.8012+-0.2302        
   raytrace                                          44.2966+-0.1291           44.1868+-0.1412        
   regexp                                           101.9486+-1.5430          100.7952+-1.1217          might be 1.0114x faster
   richards                                         134.8117+-1.3526          133.5168+-1.3606        
   splay                                             46.3564+-0.5050           46.1523+-0.5123        

   <arithmetic>                                      82.6064+-0.3660           82.1803+-0.3042          might be 1.0052x faster
   <geometric> *                                     77.0269+-0.2971           76.6943+-0.2024          might be 1.0043x faster
   <harmonic>                                        71.5405+-0.2665           71.2766+-0.1713          might be 1.0037x faster

                                                        TipOfTree               FixPhantomArgs                                  
Octane and V8v7:
   encrypt                                           0.46558+-0.00032    ?     0.46568+-0.00031       ?
   decrypt                                           8.57466+-0.00613    ?     8.57863+-0.01781       ?
   deltablue                                x2       0.56331+-0.00332          0.56283+-0.00437       
   earley                                            0.91832+-0.00527    ^     0.90241+-0.00671       ^ definitely 1.0176x faster
   boyer                                            12.46841+-0.03875    ?    12.48986+-0.03335       ?
   raytrace                                 x2       4.25960+-0.02449    ?     4.32454+-0.04345       ? might be 1.0152x slower
   regexp                                   x2      32.90411+-0.14865    ?    33.08541+-0.75540       ?
   richards                                 x2       0.43727+-0.00726          0.43210+-0.01051         might be 1.0120x faster
   splay                                    x2       0.64170+-0.01011          0.63893+-0.00326       
   navier-stokes                            x2      10.70012+-0.00589         10.69908+-0.00321       
   closure                                           0.43360+-0.00284    ?     0.43434+-0.00067       ?
   jquery                                            6.35046+-0.00677    ?     6.36374+-0.01021       ?
   gbemu                                    x2      72.12393+-0.99714         71.41640+-0.93899       
   mandreel                                 x2     136.45621+-1.05608        136.32163+-0.55205       
   pdfjs                                    x2     102.12223+-0.22647    ?   102.35857+-0.33215       ?
   box2d                                    x2      34.75326+-0.12016    ?    34.99268+-0.48170       ?

V8v7:
   <arithmetic>                                      7.58995+-0.01946    ?     7.62015+-0.09336       ? might be 1.0040x slower
   <geometric> *                                     2.51525+-0.00833          2.51379+-0.01110         might be 1.0006x faster
   <harmonic>                                        1.03932+-0.00660          1.03371+-0.00796         might be 1.0054x faster

Octane including V8v7:
   <arithmetic>                                     31.50517+-0.14197         31.49612+-0.10176         might be 1.0003x faster
   <geometric> *                                     6.97699+-0.02263          6.97454+-0.01929         might be 1.0004x faster
   <harmonic>                                        1.44621+-0.00873          1.43986+-0.00952         might be 1.0044x faster

                                                        TipOfTree               FixPhantomArgs                                  
Kraken:
   ai-astar                                          493.958+-0.438      ?     494.348+-0.870         ?
   audio-beat-detection                              227.340+-2.486            224.686+-1.093           might be 1.0118x faster
   audio-dft                                         290.656+-1.503      ?     294.442+-6.316         ? might be 1.0130x slower
   audio-fft                                         130.827+-0.181      ?     130.876+-0.138         ?
   audio-oscillator                                  244.456+-0.348            244.130+-0.452         
   imaging-darkroom                                  287.799+-3.597            286.061+-0.944         
   imaging-desaturate                                158.484+-0.098      ?     159.203+-1.769         ?
   imaging-gaussian-blur                             362.897+-0.184            362.623+-0.152         
   json-parse-financial                               81.285+-0.306             81.248+-1.429         
   json-stringify-tinderbox                          103.853+-0.278      ?     103.949+-0.311         ?
   stanford-crypto-aes                                91.292+-0.724      ?      91.332+-0.961         ?
   stanford-crypto-ccm                               100.999+-2.226      ?     101.624+-0.910         ?
   stanford-crypto-pbkdf2                            257.469+-2.474      ?     258.836+-1.080         ?
   stanford-crypto-sha256-iterative                  113.941+-0.462      ?     114.840+-0.442         ?

   <arithmetic> *                                    210.376+-0.520      ?     210.586+-0.486         ? might be 1.0010x slower
   <geometric>                                       180.651+-0.457      ?     180.894+-0.406         ? might be 1.0013x slower
   <harmonic>                                        156.256+-0.407      ?     156.524+-0.462         ? might be 1.0017x slower

                                                        TipOfTree               FixPhantomArgs                                  
JSRegress:
   adapt-to-double-divide                            22.6768+-0.1155     ?     22.7438+-0.1208        ?
   aliased-arguments-getbyval                         0.9930+-0.0061     ?      0.9956+-0.0025        ?
   allocate-big-object                                3.0409+-0.0149     ?      3.0434+-0.0193        ?
   arity-mismatch-inlining                            0.9804+-0.0202            0.9668+-0.0069          might be 1.0140x faster
   array-access-polymorphic-structure                10.6953+-0.4952           10.4102+-0.4084          might be 1.0274x faster
   array-nonarray-polymorhpic-access                 58.1879+-0.2413           58.1229+-0.1850        
   array-with-double-add                              5.7944+-0.0181            5.7446+-0.0687        
   array-with-double-increment                        4.3274+-0.0349     ?      4.3528+-0.0160        ?
   array-with-double-mul-add                          6.8087+-0.0850     ?      6.8837+-0.0336        ? might be 1.0110x slower
   array-with-double-sum                              8.0501+-0.0772     ?      8.0743+-0.0548        ?
   array-with-int32-add-sub                          10.4124+-0.1171     ?     10.5226+-0.1007        ? might be 1.0106x slower
   array-with-int32-or-double-sum                     8.0081+-0.0184     ?      8.0357+-0.0487        ?
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                    118.7195+-0.8988     ?    119.3650+-1.0950        ?
   ArrayBuffer-DataView-alloc-long-lived             30.7013+-0.1663     ?     31.1260+-0.2666        ? might be 1.0138x slower
   ArrayBuffer-Int32Array-byteOffset                  6.0497+-0.0789            6.0088+-0.0969        
   ArrayBuffer-Int8Array-alloc-huge-long-lived   
                                                    215.4851+-1.7898          214.2148+-1.9703        
   ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented   
                                                    166.9588+-1.4260     ?    167.5831+-1.0247        ?
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                    119.1621+-1.3380     ?    119.3522+-1.3893        ?
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     50.5233+-0.2475     ^     49.3379+-0.3472        ^ definitely 1.0240x faster
   ArrayBuffer-Int8Array-alloc-long-lived            30.4709+-0.1118     ?     31.1389+-0.6237        ? might be 1.0219x slower
   ArrayBuffer-Int8Array-alloc                       26.6814+-0.0919     ^     26.4946+-0.0934        ^ definitely 1.0070x faster
   asmjs_bool_bug                                     9.3067+-0.1117            9.2878+-0.0544        
   basic-set                                         20.0017+-0.1659           19.8301+-0.0798        
   big-int-mul                                        5.5126+-0.0633            5.4870+-0.0738        
   boolean-test                                       4.4484+-0.0194            4.4476+-0.0432        
   branch-fold                                        5.0073+-0.0240            5.0057+-0.0120        
   by-val-generic                                    12.7966+-0.1922           12.6076+-0.0921          might be 1.0150x faster
   captured-assignments                               0.6477+-0.0189     ?      0.6513+-0.0185        ?
   cast-int-to-double                                12.6280+-0.1562     ?     12.6349+-0.1399        ?
   cell-argument                                     16.1888+-0.4040           16.1845+-0.3401        
   cfg-simplify                                       3.9978+-0.0154     ?      4.0095+-0.0443        ?
   chain-custom-getter                              162.8769+-7.7251     ?    165.1910+-8.6207        ? might be 1.0142x slower
   chain-getter-access                              496.4887+-4.4623     ?    500.0294+-4.4702        ?
   cmpeq-obj-to-obj-other                            12.9900+-0.5681           12.5843+-0.3278          might be 1.0322x faster
   constant-test                                      8.9836+-0.0754            8.9121+-0.0819        
   DataView-custom-properties                       125.1733+-0.8466     ?    125.8328+-0.7798        ?
   delay-tear-off-arguments-strictmode                3.6667+-0.0575            3.6482+-0.0223        
   destructuring-arguments-length                   175.3200+-0.6886     ?    177.0569+-1.3527        ?
   destructuring-arguments                            8.8796+-0.0470     ?      8.9049+-0.0861        ?
   destructuring-swap                                 8.6296+-0.0463     ?      8.6966+-0.1355        ?
   direct-arguments-getbyval                          0.8716+-0.0048     ?      0.8723+-0.0052        ?
   double-get-by-val-out-of-bounds                    7.4148+-0.0466     ?      7.4196+-0.0655        ?
   double-pollution-getbyval                         11.0170+-0.0927     ?     11.1719+-0.0850        ? might be 1.0141x slower
   double-pollution-putbyoffset                       6.0687+-0.0266     ?      6.1067+-0.0263        ?
   double-to-int32-typed-array-no-inline              2.5832+-0.0063     ?      2.5949+-0.0136        ?
   double-to-int32-typed-array                        2.2185+-0.0141     ?      2.2202+-0.0118        ?
   double-to-uint32-typed-array-no-inline             2.7575+-0.0272     ?      2.7691+-0.0202        ?
   double-to-uint32-typed-array                       2.4375+-0.0080     ?      2.4499+-0.0192        ?
   empty-string-plus-int                             10.8779+-0.0505     !     11.0598+-0.0820        ! definitely 1.0167x slower
   emscripten-cube2hash                              55.1639+-0.2063     ?     55.5609+-0.3169        ?
   emscripten-memops                               7067.7158+-40.1270        7054.3774+-1.6713        
   external-arguments-getbyval                        2.1584+-0.0293     ?      2.1614+-0.0667        ?
   external-arguments-putbyval                        3.1195+-0.0148     ^      3.0388+-0.0155        ^ definitely 1.0266x faster
   fixed-typed-array-storage-var-index                1.4068+-0.0048     ?      1.4194+-0.0303        ?
   fixed-typed-array-storage                          0.9937+-0.0027     ?      0.9950+-0.0039        ?
   Float32Array-matrix-mult                           6.6158+-0.0746            6.6064+-0.0372        
   Float32Array-to-Float64Array-set                  92.8417+-0.5009     ?     92.8499+-0.7066        ?
   Float64Array-alloc-long-lived                    103.8309+-0.7400          103.5335+-0.4317        
   Float64Array-to-Int16Array-set                   117.0383+-1.0706          116.9439+-0.9990        
   fold-double-to-int                                20.5108+-0.1719     ?     20.7280+-0.1323        ? might be 1.0106x slower
   for-of-iterate-array-entries                       8.5553+-0.0745            8.5119+-0.0720        
   for-of-iterate-array-keys                          3.5052+-0.0378            3.4844+-0.0211        
   for-of-iterate-array-values                        2.9680+-0.0553     ?      2.9943+-0.0426        ?
   function-dot-apply                                 3.1853+-0.0141            3.1780+-0.0064        
   function-test                                      4.9390+-0.0591            4.9139+-0.0500        
   get-by-id-chain-from-try-block                     8.0311+-0.1162            8.0060+-0.1155        
   get-by-id-proto-or-self                           25.9219+-0.2450     ?     25.9595+-0.2880        ?
   get-by-id-self-or-proto                           23.4556+-0.5990     ?     23.9984+-0.6704        ? might be 1.0231x slower
   get-by-val-out-of-bounds                           7.2438+-0.0433            7.2275+-0.0456        
   get_callee_monomorphic                             5.1157+-0.1093     ^      4.9187+-0.0256        ^ definitely 1.0401x faster
   get_callee_polymorphic                             4.6983+-0.0236            4.6923+-0.0329        
   global-var-const-infer-fire-from-opt               1.0288+-0.0477     ?      1.0492+-0.0519        ? might be 1.0199x slower
   global-var-const-infer                             0.8359+-0.0402            0.8113+-0.0050          might be 1.0303x faster
   HashMap-put-get-iterate-keys                      42.0051+-0.1479     ?     42.1521+-0.1572        ?
   HashMap-put-get-iterate                           53.6649+-0.1846     ?     53.7829+-0.1953        ?
   HashMap-string-put-get-iterate                    50.9827+-0.3607     ?     51.6007+-0.5001        ? might be 1.0121x slower
   imul-double-only                                  17.8529+-0.1215     ?     18.2045+-0.9517        ? might be 1.0197x slower
   imul-int-only                                     15.0211+-0.0879           14.9696+-0.1210        
   imul-mixed                                        21.8166+-0.1315     ?     21.8642+-0.1843        ?
   in-four-cases                                     26.0067+-0.2498           25.9394+-0.1608        
   in-one-case-false                                 12.1194+-0.0948           12.0979+-0.0931        
   in-one-case-true                                  12.1290+-0.1634     ?     12.1457+-0.0757        ?
   in-two-cases                                      12.9115+-0.1157     ?     12.9285+-0.1036        ?
   indexed-properties-in-objects                      4.2238+-0.0056     ?      4.2328+-0.0232        ?
   infer-closure-const-then-mov-no-inline            15.3684+-0.0197     ?     15.3769+-0.0934        ?
   infer-closure-const-then-mov                      28.8427+-0.0864     ?     28.9592+-0.1262        ?
   infer-closure-const-then-put-to-scope-no-inline   
                                                     17.8543+-0.1476           17.8237+-0.0921        
   infer-closure-const-then-put-to-scope             36.0917+-0.2513           35.9254+-0.1966        
   infer-closure-const-then-reenter-no-inline   
                                                     84.9865+-1.0257           84.3299+-0.1584        
   infer-closure-const-then-reenter                  36.1547+-0.2098     ?     36.2429+-0.2689        ?
   infer-one-time-closure-ten-vars                   29.0678+-0.1476           29.0211+-0.0148        
   infer-one-time-closure-two-vars                   28.8592+-0.1292           28.7132+-0.1253        
   infer-one-time-closure                            28.7211+-0.1216     ?     28.8351+-0.0773        ?
   infer-one-time-deep-closure                       58.6426+-0.1556           58.4432+-0.3502        
   inline-arguments-access                            1.6627+-0.0062     ?      1.6627+-0.0049        ?
   inline-arguments-local-escape                     22.9335+-0.1401     !     23.5250+-0.3041        ! definitely 1.0258x slower
   inline-get-scoped-var                              7.4548+-0.0825     ?      7.5004+-0.0814        ?
   inlined-put-by-id-transition                      15.4018+-0.2310     ?     15.4232+-0.2780        ?
   int-or-other-abs-then-get-by-val                   9.5015+-0.0227     ?      9.5634+-0.1117        ?
   int-or-other-abs-zero-then-get-by-val             37.3483+-0.2020     ?     38.0497+-0.5108        ? might be 1.0188x slower
   int-or-other-add-then-get-by-val                  10.6094+-0.0832           10.5916+-0.0569        
   int-or-other-add                                  10.9514+-0.1343     ?     11.0938+-0.0842        ? might be 1.0130x slower
   int-or-other-div-then-get-by-val                   6.3768+-0.0851     ?      6.3881+-0.0690        ?
   int-or-other-max-then-get-by-val                   8.7601+-0.1788            8.7435+-0.1414        
   int-or-other-min-then-get-by-val                   7.1698+-0.0827            7.0803+-0.0692          might be 1.0126x faster
   int-or-other-mod-then-get-by-val                   6.2127+-0.0864     ?      6.2746+-0.0136        ?
   int-or-other-mul-then-get-by-val                   6.6573+-0.0373            6.6326+-0.0786        
   int-or-other-neg-then-get-by-val                   7.9915+-0.0392            7.9713+-0.0722        
   int-or-other-neg-zero-then-get-by-val             36.9260+-0.1437     !     37.8607+-0.7512        ! definitely 1.0253x slower
   int-or-other-sub-then-get-by-val                  10.6305+-0.0398     ?     10.6693+-0.2003        ?
   int-or-other-sub                                   8.9623+-0.0544     ?      8.9938+-0.0390        ?
   int-overflow-local                                 6.4748+-0.0641            6.4732+-0.0773        
   Int16Array-alloc-long-lived                       67.5492+-0.4540     ?     67.7361+-0.6211        ?
   Int16Array-bubble-sort-with-byteLength            48.8819+-0.1475     ?     48.9307+-0.1462        ?
   Int16Array-bubble-sort                            47.8947+-0.0645     ?     47.9234+-0.0936        ?
   Int16Array-load-int-mul                            1.8128+-0.0045     ?      1.8195+-0.0175        ?
   Int16Array-to-Int32Array-set                      91.7280+-0.7889     ^     87.9221+-1.4166        ^ definitely 1.0433x faster
   Int32Array-alloc-huge-long-lived                 704.0833+-3.3333     ?    713.4588+-21.0510       ? might be 1.0133x slower
   Int32Array-alloc-huge                            811.9427+-7.7416          803.6376+-8.0320          might be 1.0103x faster
   Int32Array-alloc-large-long-lived                979.7629+-6.0312          975.5928+-8.2754        
   Int32Array-alloc-large                            45.2171+-0.8324           44.7919+-0.5213        
   Int32Array-alloc-long-lived                       80.7442+-0.4340     ?     80.8231+-0.7974        ?
   Int32Array-alloc                                   4.5234+-0.0119            4.5218+-0.0121        
   Int32Array-Int8Array-view-alloc                   15.4690+-0.3497           15.0958+-0.0495          might be 1.0247x faster
   int52-spill                                       12.7851+-0.1900     ?     12.9037+-0.1719        ?
   Int8Array-alloc-long-lived                        67.1097+-0.8682     ?     67.3375+-0.6994        ?
   Int8Array-load-with-byteLength                     5.0181+-0.0709     ?      5.0362+-0.0589        ?
   Int8Array-load                                     5.0444+-0.0668            5.0434+-0.0508        
   integer-divide                                    15.0970+-0.1186     ?     15.1750+-0.1453        ?
   integer-modulo                                     2.0859+-0.0190            2.0845+-0.0168        
   large-int-captured                                 9.7548+-0.1338            9.6921+-0.1089        
   large-int-neg                                     26.1759+-0.1713           26.1356+-0.1965        
   large-int                                         23.1457+-0.1848     ?     23.2052+-0.1715        ?
   logical-not                                       10.7148+-0.1338           10.6830+-0.1673        
   lots-of-fields                                    12.5156+-0.0956     ?     12.6589+-0.1211        ? might be 1.0114x slower
   make-indexed-storage                               4.3806+-0.0420     ?      4.3949+-0.0447        ?
   make-rope-cse                                      6.1124+-0.0799     ?      6.1400+-0.0649        ?
   marsaglia-larger-ints                            111.9167+-0.1709     ?    112.1023+-0.4333        ?
   marsaglia-osr-entry                               47.3563+-0.6066           46.9920+-0.1007        
   marsaglia                                        463.6394+-0.2430     ?    463.8329+-0.2006        ?
   method-on-number                                  29.8796+-0.4828     ?     29.8994+-0.4636        ?
   negative-zero-divide                               0.4226+-0.0021     ?      0.4252+-0.0036        ?
   negative-zero-modulo                               0.4097+-0.0046            0.4080+-0.0043        
   negative-zero-negate                               0.3998+-0.0205     ?      0.4133+-0.0263        ? might be 1.0338x slower
   nested-function-parsing-random                   380.6835+-0.2899     !    383.8564+-0.3589        ! definitely 1.0083x slower
   nested-function-parsing                           47.6788+-0.1183     ?     47.9179+-0.7056        ?
   new-array-buffer-dead                              3.7972+-0.0690            3.7572+-0.0181          might be 1.0106x faster
   new-array-buffer-push                             10.6629+-0.1391           10.6372+-0.1400        
   new-array-dead                                    28.5759+-0.3339     ?     28.6951+-0.3840        ?
   new-array-push                                     6.9562+-0.0577            6.9145+-0.0677        
   number-test                                        4.4043+-0.0174            4.3604+-0.0371          might be 1.0101x faster
   object-closure-call                               13.4375+-0.0532     ?     13.4398+-0.1073        ?
   object-test                                        4.7080+-0.0508     ?      4.7455+-0.0221        ?
   poly-stricteq                                     86.9410+-0.2549     ?     87.2935+-0.3967        ?
   polymorphic-structure                             20.5172+-0.1707     ?     21.1347+-0.9791        ? might be 1.0301x slower
   polyvariant-monomorphic-get-by-id                 11.9836+-0.1123     ?     12.0062+-0.1128        ?
   proto-custom-getter                              157.8107+-0.1160     ?    165.9059+-9.5398        ? might be 1.0513x slower
   proto-getter-access                              495.4808+-4.2091          494.9871+-4.8678        
   put-by-id                                         19.5005+-0.2528     ?     19.5198+-0.4916        ?
   put-by-val-large-index-blank-indexing-type   
                                                     21.0815+-0.4162     ?     21.5422+-0.3512        ? might be 1.0219x slower
   put-by-val-machine-int                             3.3680+-0.0202            3.3527+-0.0193        
   rare-osr-exit-on-local                            20.3211+-0.1272           20.2094+-0.1210        
   register-pressure-from-osr                        31.3528+-0.0993     ?     31.3828+-0.1441        ?
   simple-activation-demo                            35.2815+-0.1351     ?     35.3056+-0.1605        ?
   simple-custom-getter                             511.2143+-19.2674    ?    520.6592+-26.5717       ? might be 1.0185x slower
   simple-getter-access                             792.6900+-8.7511          786.8490+-6.0237        
   slow-array-profile-convergence                     4.0471+-0.0669     ?      4.1446+-0.0513        ? might be 1.0241x slower
   slow-convergence                                   4.4767+-0.0331     ?      4.4969+-0.0264        ?
   sparse-conditional                                 1.5068+-0.0413            1.4661+-0.0062          might be 1.0277x faster
   splice-to-remove                                  76.8165+-0.1263     ?     77.1012+-0.3557        ?
   stepanov_container                             10162.6873+-23.7691    ?  10180.1092+-19.0365       ?
   string-concat-object                               3.2364+-0.0287     ?      3.2374+-0.0261        ?
   string-concat-pair-object                          3.1706+-0.0299            3.1432+-0.0058        
   string-concat-pair-simple                         17.1866+-0.2869           17.0189+-0.3047        
   string-concat-simple                              17.2149+-0.2384     ?     17.2365+-0.3658        ?
   string-cons-repeat                                10.8412+-0.0394     ?     10.8530+-0.0321        ?
   string-cons-tower                                 11.3246+-0.0441           11.3228+-0.0632        
   string-equality                                   42.9110+-0.5420           42.6292+-0.1542        
   string-get-by-val-big-char                        12.6412+-0.0632     !     13.0174+-0.0557        ! definitely 1.0298x slower
   string-get-by-val-out-of-bounds-insane             5.8866+-0.0794            5.8453+-0.1574        
   string-get-by-val-out-of-bounds                    5.3389+-0.0110            5.3230+-0.0469        
   string-get-by-val                                  4.9054+-0.0367     ?      4.9126+-0.0778        ?
   string-hash                                        2.7725+-0.0019     ?      2.7839+-0.0147        ?
   string-long-ident-equality                        39.0961+-0.0927     ?     39.3818+-0.4762        ?
   string-repeat-arith                               50.1326+-0.3910     ?     50.5417+-0.6259        ?
   string-sub                                       105.3628+-0.6999          104.3914+-0.3518        
   string-test                                        4.3988+-0.0498            4.3961+-0.0332        
   string-var-equality                               70.1587+-0.1299     ?     70.4944+-0.8586        ?
   structure-hoist-over-transitions                   3.5343+-0.0211            3.5116+-0.0070        
   switch-char-constant                               3.5568+-0.0728            3.5040+-0.0172          might be 1.0150x faster
   switch-char                                        8.1912+-0.0355            8.1130+-0.1173        
   switch-constant                                    9.3946+-0.1392     ?      9.4016+-0.1343        ?
   switch-string-basic-big-var                       20.3680+-0.1033     ?     20.5570+-0.2663        ?
   switch-string-basic-big                           22.8355+-1.5174           21.8446+-1.0064          might be 1.0454x faster
   switch-string-basic-var                           20.3248+-0.0848           20.2953+-0.0998        
   switch-string-basic                               21.6143+-0.9773     ?     21.6177+-0.8661        ?
   switch-string-big-length-tower-var                29.0566+-0.1346     ?     29.1474+-0.2786        ?
   switch-string-length-tower-var                    21.9909+-0.1915           21.9248+-0.1063        
   switch-string-length-tower                        16.6782+-0.1987           16.5977+-0.0899        
   switch-string-short                               16.5967+-0.0494           16.5600+-0.1175        
   switch                                            13.6311+-0.1261     ?     13.6468+-0.1266        ?
   tear-off-arguments-simple                          2.3520+-0.0028     ?      2.4196+-0.0970        ? might be 1.0287x slower
   tear-off-arguments                                 3.6708+-0.0343            3.6443+-0.0100        
   temporal-structure                                17.1976+-0.0891     ?     17.2486+-0.0994        ?
   to-int32-boolean                                  21.5353+-0.1189     ?     21.5759+-0.1651        ?
   undefined-test                                     4.5906+-0.0425            4.5744+-0.0497        
   weird-inlining-const-prop                          2.3747+-0.0109     ?      2.4052+-0.0478        ? might be 1.0128x slower

   <arithmetic>                                     134.5332+-0.2184     ?    134.6471+-0.2635        ? might be 1.0008x slower
   <geometric> *                                     14.9033+-0.0156     ?     14.9154+-0.0177        ? might be 1.0008x slower
   <harmonic>                                         5.3338+-0.0188     ?      5.3420+-0.0259        ? might be 1.0015x slower

                                                        TipOfTree               FixPhantomArgs                                  
All benchmarks:
   <arithmetic>                                     203.7188+-0.2000     ?    203.8235+-0.3410        ? might be 1.0005x slower
   <geometric>                                       20.6652+-0.0152     ?     20.6806+-0.0194        ? might be 1.0007x slower
   <harmonic>                                         4.8559+-0.0154            4.8557+-0.0176          might be 1.0000x faster

                                                        TipOfTree               FixPhantomArgs                                  
Geomean of preferred means:
   <scaled-result>                                   49.3734+-0.0462     ?     49.3823+-0.0520        ? might be 1.0002x slower
Comment 5 Sam Weinig 2013-12-25 13:05:10 PST
Comment on attachment 219991 [details]
the patch

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

> Source/JavaScriptCore/ChangeLog:8
> +        This change dramatically rationalizes our handling of PhantomArguments (i.e.

"dramatically rationalizes" is an amazing phrase.
Comment 6 Filip Pizlo 2013-12-25 15:42:04 PST
Landed in http://trac.webkit.org/changeset/161072