Bug 144300

Summary: Allow CreateActivation sinking
Product: WebKit Reporter: Basile Clement <basile_clement>
Component: JavaScriptCoreAssignee: Basile Clement <basile_clement>
Status: RESOLVED FIXED    
Severity: Normal CC: commit-queue, fpizlo, ggaren, kling, mark.lam, msaboff
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
WIP
none
Seems to be working
none
Remove spurious assertion
none
Patch fpizlo: review+

Description Basile Clement 2015-04-27 17:54:04 PDT
Created attachment 251798 [details]
WIP

Currently we sink object allocation & function allocation.
This will allow to sink activation allocation as well.

Attached patch is a WIP and still needs more testing.
Comment 1 Basile Clement 2015-04-28 18:26:32 PDT
Created attachment 251910 [details]
Seems to be working

Still need to run the full benchmarks + write ChangeLog entry
Comment 2 Basile Clement 2015-04-29 10:09:59 PDT
Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, JSRegress, AsmBench, and CompressionBench on Basiles-Mac-Pro (MacPro6,1).

VMs tested:
"Baseline" at /Volumes/Data/primary/OpenSource/WebKitBuild/Release/jsc
"SinkCreateActivation" at /Volumes/Data/primary/OpenSource/WebKitBuild/SinkCreateActivation/Release/jsc

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

                                                         Baseline            SinkCreateActivation                               
SunSpider:
   3d-cube                                           15.2308+-0.2606     ?     15.3732+-0.2779        ?
   3d-morph                                          16.8042+-0.0985     ?     16.8384+-0.3182        ?
   3d-raytrace                                       19.4455+-0.7497           19.0424+-0.1963          might be 1.0212x faster
   access-binary-trees                                6.6882+-0.2881            6.6045+-0.2820          might be 1.0127x faster
   access-fannkuch                                   17.8009+-0.4887           17.3639+-0.1420          might be 1.0252x faster
   access-nbody                                       8.4720+-0.0432            8.4393+-0.0524        
   access-nsieve                                     10.1578+-0.1661     ?     10.1596+-0.2037        ?
   bitops-3bit-bits-in-byte                           4.6283+-0.1024     ?      4.6600+-0.0800        ?
   bitops-bits-in-byte                                9.6589+-0.0962     ?      9.6752+-0.0524        ?
   bitops-bitwise-and                                 6.3514+-0.0313            6.3483+-0.0450        
   bitops-nsieve-bits                                 9.6525+-0.0521     ?      9.6761+-0.1023        ?
   controlflow-recursive                              6.6254+-0.2120            6.5560+-0.0603          might be 1.0106x faster
   crypto-aes                                        13.3934+-0.2093     ?     13.4657+-0.4751        ?
   crypto-md5                                         7.8489+-0.1196            7.7206+-0.1449          might be 1.0166x faster
   crypto-sha1                                        7.2194+-0.0991     ?      7.2682+-0.0436        ?
   date-format-tofte                                 27.5433+-0.2852           27.4781+-0.4237        
   date-format-xparb                                 16.5758+-0.2804     ?     17.0672+-0.9329        ? might be 1.0296x slower
   math-cordic                                        9.1323+-0.2523            9.0755+-0.0807        
   math-partial-sums                                 15.5910+-0.2883     ?     15.6965+-0.1812        ?
   math-spectral-norm                                 5.7548+-0.1556            5.5647+-0.0635          might be 1.0342x faster
   regexp-dna                                        21.6370+-0.4686     ?     21.6921+-0.2880        ?
   string-base64                                     13.5455+-0.1669           13.4997+-0.0765        
   string-fasta                                      19.2194+-0.1661           19.1816+-0.0597        
   string-tagcloud                                   27.8363+-0.2504           27.5601+-0.1739          might be 1.0100x faster
   string-unpack-code                                57.0535+-0.4747     !     58.0085+-0.4252        ! definitely 1.0167x slower
   string-validate-input                             14.1135+-0.4711           13.9809+-0.1779        

   <arithmetic>                                      14.9223+-0.0618     ?     14.9229+-0.0366        ? might be 1.0000x slower

                                                         Baseline            SinkCreateActivation                               
LongSpider:
   3d-cube                                         2605.8180+-5.5153     !   2619.3201+-6.3255        ! definitely 1.0052x slower
   3d-morph                                        4684.6396+-3.9522     ?   4690.7627+-5.1025        ?
   3d-raytrace                                     2256.9155+-17.0795        2235.4811+-10.1420       
   access-binary-trees                             2677.4224+-7.1810     !   2695.9914+-9.2173        ! definitely 1.0069x slower
   access-fannkuch                                 1001.2788+-19.2084    ?   1002.4358+-16.7375       ?
   access-nbody                                    1863.4218+-2.0027     !   1869.9792+-1.9519        ! definitely 1.0035x slower
   access-nsieve                                   1943.4358+-9.0243     ?   1952.3350+-16.7100       ?
   bitops-3bit-bits-in-byte                         139.7401+-0.8997     ?    140.2193+-1.2893        ?
   bitops-bits-in-byte                              279.5860+-9.0475          278.6299+-3.9369        
   bitops-nsieve-bits                              2005.1554+-10.5537        2000.0580+-5.8653        
   controlflow-recursive                           1501.2905+-2.0802     !   1526.7780+-2.5516        ! definitely 1.0170x slower
   crypto-aes                                      1987.7439+-15.6631    ?   2000.2041+-9.4531        ?
   crypto-md5                                      1568.7516+-14.5682        1556.8435+-5.6473        
   crypto-sha1                                     1888.8077+-9.5359     ^   1865.0993+-5.2576        ^ definitely 1.0127x faster
   date-format-tofte                               2173.8532+-17.4089    ?   2210.2321+-29.0635       ? might be 1.0167x slower
   date-format-xparb                               2238.7920+-71.0694    ?   2295.0495+-73.4851       ? might be 1.0251x slower
   math-cordic                                     1807.6766+-2.4152     ?   1807.8344+-2.9796        ?
   math-partial-sums                               1549.7797+-4.2439     ?   1550.3994+-3.9295        ?
   math-spectral-norm                              1724.2199+-2.9488         1722.3521+-1.4815        
   string-base64                                   1035.4383+-3.8513     ?   1039.8466+-12.0856       ?
   string-fasta                                    1292.6444+-6.7018         1283.0874+-7.1106        
   string-tagcloud                                  658.8303+-5.7542          653.0769+-2.6994        

   <geometric>                                     1455.1527+-4.1435     ?   1457.9673+-2.4997        ? might be 1.0019x slower

                                                         Baseline            SinkCreateActivation                               
V8Spider:
   crypto                                           151.8524+-0.3259          151.8375+-0.7479        
   deltablue                                        195.1786+-1.9764     ?    198.5157+-2.7638        ? might be 1.0171x slower
   earley-boyer                                     127.8052+-1.0097     ?    129.4010+-1.8085        ? might be 1.0125x slower
   raytrace                                          90.1626+-1.7616           89.7376+-1.1651        
   regexp                                           236.2794+-0.8874     ?    238.3618+-2.1157        ?
   richards                                         216.9584+-2.3612     ?    218.4007+-0.8912        ?
   splay                                            105.0519+-3.9272          104.0003+-3.2986          might be 1.0101x faster

   <geometric>                                      151.5705+-0.5961     ?    152.2237+-0.9720        ? might be 1.0043x slower

                                                         Baseline            SinkCreateActivation                               
Octane:
   encrypt                                           0.67941+-0.00526    ?     0.68721+-0.00689       ? might be 1.0115x slower
   decrypt                                          11.90240+-0.06020    ?    11.90918+-0.05915       ?
   deltablue                                x2       0.61107+-0.00966    ?     0.61883+-0.01743       ? might be 1.0127x slower
   earley                                            1.38153+-0.01007    ^     1.31915+-0.00942       ^ definitely 1.0473x faster
   boyer                                            19.80787+-0.06570    ?    19.85438+-0.03163       ?
   navier-stokes                            x2      15.90604+-0.02342    ?    15.91019+-0.02697       ?
   raytrace                                 x2       3.78965+-0.16599    ?     3.91482+-0.22869       ? might be 1.0330x slower
   richards                                 x2       0.35523+-0.00245          0.35363+-0.00322       
   splay                                    x2       1.02838+-0.01377          1.02741+-0.02745       
   regexp                                   x2      90.29128+-0.36288         90.18459+-0.15549       
   pdfjs                                    x2     139.83003+-1.61314        138.84315+-0.21660       
   mandreel                                 x2     202.51934+-1.07573        201.86519+-0.83204       
   gbemu                                    x2     191.47769+-4.54699        191.00860+-4.75776       
   closure                                           1.77573+-0.01011          1.76225+-0.01348       
   jquery                                           23.33940+-0.27919         23.22411+-0.17876       
   box2d                                    x2      51.24721+-0.20734    ?    51.29475+-0.11463       ?
   zlib                                     x2    1127.39315+-4.65331    ?  1127.85461+-4.76934       ?
   typescript                               x2    2374.48250+-36.66609      2358.93408+-35.57490      

   <geometric>                                      21.33608+-0.07907         21.33288+-0.13985         might be 1.0002x faster

                                                         Baseline            SinkCreateActivation                               
Kraken:
   ai-astar                                         1082.391+-17.304          1063.232+-16.671          might be 1.0180x faster
   audio-beat-detection                              371.812+-3.696            370.834+-1.832         
   audio-dft                                         423.334+-7.608            419.590+-5.866         
   audio-fft                                         230.597+-1.381      ?     230.821+-1.156         ?
   audio-oscillator                                  625.774+-0.382            625.518+-0.361         
   imaging-darkroom                                  318.562+-5.888            318.119+-2.398         
   imaging-desaturate                                195.524+-1.360      ?     196.746+-1.215         ?
   imaging-gaussian-blur                             341.756+-15.437           336.412+-0.530           might be 1.0159x faster
   json-parse-financial                              136.365+-1.411            135.615+-0.690         
   json-stringify-tinderbox                          168.725+-0.275      !     171.985+-0.164         ! definitely 1.0193x slower
   stanford-crypto-aes                               187.195+-1.443      ?     187.397+-2.588         ?
   stanford-crypto-ccm                               162.675+-1.748      ?     163.403+-1.725         ?
   stanford-crypto-pbkdf2                            510.317+-2.943            509.687+-3.692         
   stanford-crypto-sha256-iterative                  165.924+-1.778      ?     166.958+-1.323         ?

   <arithmetic>                                      351.496+-1.389            349.737+-1.240           might be 1.0050x faster

                                                         Baseline            SinkCreateActivation                               
JSRegress:
   abs-boolean                                        7.6620+-0.0517            7.6601+-0.0768        
   adapt-to-double-divide                            48.4624+-0.6026     ?     48.7999+-0.1906        ?
   aliased-arguments-getbyval                         3.7690+-0.0598     ?      3.9327+-0.1345        ? might be 1.0434x slower
   allocate-big-object                                7.1575+-0.1440     ?      7.4318+-0.3009        ? might be 1.0383x slower
   arguments-named-and-reflective                    34.3776+-0.2985     ?     34.4915+-0.1452        ?
   arguments-out-of-bounds                           42.4955+-0.1753     ?     42.5774+-0.2522        ?
   arguments-strict-mode                             31.5420+-0.3011     ?     31.8964+-0.2322        ? might be 1.0112x slower
   arguments                                         27.8750+-0.5124           27.7136+-0.0620        
   arity-mismatch-inlining                            2.6956+-0.0664            2.6816+-0.1170        
   array-access-polymorphic-structure                18.5507+-0.1944           18.3924+-0.1667        
   array-nonarray-polymorhpic-access                102.8219+-4.3148          102.5087+-3.7613        
   array-prototype-every                            251.5081+-1.8193     !    258.8390+-0.4801        ! definitely 1.0291x slower
   array-prototype-forEach                          245.9705+-0.2645     !    263.0199+-0.7505        ! definitely 1.0693x slower
   array-prototype-map                              271.3571+-2.0051     !    281.7268+-2.8361        ! definitely 1.0382x slower
   array-prototype-some                             251.0243+-1.3578     !    258.3754+-0.1397        ! definitely 1.0293x slower
   array-splice-contiguous                          125.7358+-0.8322     ^    123.8507+-0.8114        ^ definitely 1.0152x faster
   array-with-double-add                             11.8885+-0.0631           11.8005+-0.0520        
   array-with-double-increment                        9.4525+-0.0506     ^      9.3014+-0.0965        ^ definitely 1.0162x faster
   array-with-double-mul-add                         14.5861+-0.0508     !     14.6913+-0.0503        ! definitely 1.0072x slower
   array-with-double-sum                              9.5109+-0.0199     ?      9.5290+-0.1281        ?
   array-with-int32-add-sub                          19.0627+-0.0939     ?     19.1482+-0.0933        ?
   array-with-int32-or-double-sum                     9.7362+-0.2885            9.5729+-0.0561          might be 1.0171x faster
   ArrayBuffer-DataView-alloc-large-long-lived   
                                                     89.5254+-5.8153     !    104.9825+-0.4825        ! definitely 1.1727x slower
   ArrayBuffer-DataView-alloc-long-lived             44.4746+-6.0281     !     54.4758+-3.8476        ! definitely 1.2249x slower
   ArrayBuffer-Int32Array-byteOffset                 11.2135+-0.0799     ?     11.3538+-0.0926        ? might be 1.0125x slower
   ArrayBuffer-Int8Array-alloc-large-long-lived   
                                                     90.8363+-1.1122     ?     94.8100+-5.2131        ? might be 1.0437x slower
   ArrayBuffer-Int8Array-alloc-long-lived-buffer   
                                                     65.0555+-1.6419     ?     67.3167+-4.6640        ? might be 1.0348x slower
   ArrayBuffer-Int8Array-alloc-long-lived            37.2546+-0.9107     ?     39.0086+-4.2124        ? might be 1.0471x slower
   ArrayBuffer-Int8Array-alloc                       31.0621+-0.2093     ?     33.8400+-4.1187        ? might be 1.0894x slower
   asmjs_bool_bug                                    22.3575+-0.4179     ?     22.3695+-0.1910        ?
   assign-custom-setter-polymorphic                   9.0293+-0.1958     ?      9.6794+-0.5932        ? might be 1.0720x slower
   assign-custom-setter                              12.2419+-0.0607     !     13.1855+-0.0591        ! definitely 1.0771x slower
   basic-set                                         25.1545+-1.0421           24.5030+-0.1395          might be 1.0266x faster
   big-int-mul                                       11.9106+-0.8976           11.5823+-0.0520          might be 1.0283x faster
   boolean-test                                       8.8280+-0.0241     ?      8.9140+-0.0698        ?
   branch-fold                                       10.7896+-0.1599           10.7455+-0.1488        
   by-val-generic                                    22.5245+-0.1370           22.4190+-0.1320        
   call-spread-apply                                 83.4627+-2.6047     ?     83.5333+-0.9949        ?
   call-spread-call                                  69.4841+-0.4586     ?     70.2646+-0.4773        ? might be 1.0112x slower
   captured-assignments                               1.4035+-0.0118            1.3854+-0.0298          might be 1.0131x faster
   cast-int-to-double                                15.1476+-0.0678           15.1217+-0.0944        
   cell-argument                                     23.9282+-0.1676     ?     23.9354+-0.3385        ?
   cfg-simplify                                       8.5890+-0.3270     ?      8.6691+-0.3046        ?
   chain-getter-access                               28.5352+-0.3303     ?     28.6180+-0.3082        ?
   cmpeq-obj-to-obj-other                            28.8628+-0.3170     ^     27.7098+-0.0853        ^ definitely 1.0416x faster
   constant-test                                     14.3040+-0.1065           14.2166+-0.0417        
   create-lots-of-functions                          27.8652+-0.2748     ?     28.0523+-0.3293        ?
   DataView-custom-properties                       104.2128+-5.8340     !    121.1982+-1.4448        ! definitely 1.1630x slower
   deconstructing-parameters-overridden-by-function   
                                                      1.4757+-0.0371     ?      1.4922+-0.0614        ? might be 1.0112x slower
   delay-tear-off-arguments-strictmode               39.3905+-0.1302     ?     40.1134+-0.8425        ? might be 1.0184x slower
   deltablue-varargs                                580.3584+-3.3911     ^    573.7974+-2.1380        ^ definitely 1.0114x faster
   destructuring-arguments                           44.7935+-0.4037     ?     44.9631+-0.2772        ?
   destructuring-swap                                14.6549+-0.0524           14.4786+-0.1370          might be 1.0122x faster
   direct-arguments-getbyval                          3.8108+-0.1756            3.7918+-0.2137        
   div-boolean-double                                15.0802+-0.3650           14.9481+-0.1036        
   div-boolean                                       22.4364+-0.0451     ?     22.4636+-0.0477        ?
   double-get-by-val-out-of-bounds                   12.3687+-0.2761           12.2115+-0.0706          might be 1.0129x faster
   double-pollution-getbyval                         26.1724+-1.2495           25.7424+-0.1574          might be 1.0167x faster
   double-pollution-putbyoffset                      12.3289+-0.1430     ?     12.4875+-0.1387        ? might be 1.0129x slower
   double-to-int32-typed-array-no-inline              6.5521+-0.1455            6.5322+-0.0717        
   double-to-int32-typed-array                        5.7159+-0.0776     ?      5.7320+-0.0413        ?
   double-to-uint32-typed-array-no-inline             6.6697+-0.1272     ?      6.7008+-0.0537        ?
   double-to-uint32-typed-array                       5.9235+-0.1042            5.8881+-0.0763        
   elidable-new-object-dag                          107.4023+-1.5049          106.2279+-1.5121          might be 1.0111x faster
   elidable-new-object-roflcopter                   119.3927+-0.7580          118.9171+-1.2160        
   elidable-new-object-then-call                     99.8843+-3.1136     ?    100.0874+-3.5336        ?
   elidable-new-object-tree                         113.3365+-1.3235     ?    113.4227+-1.2815        ?
   empty-string-plus-int                             15.3570+-0.1868           15.2655+-0.1105        
   emscripten-cube2hash                             106.7234+-0.7513     ?    107.5250+-0.6766        ?
   exit-length-on-plain-object                       38.9550+-0.6398     ?     39.6525+-1.1237        ? might be 1.0179x slower
   external-arguments-getbyval                        3.6904+-0.1075            3.6735+-0.0869        
   external-arguments-putbyval                        6.6482+-0.1063            6.5704+-0.1519          might be 1.0118x faster
   fixed-typed-array-storage-var-index                3.7124+-0.0344     ?      3.7171+-0.0801        ?
   fixed-typed-array-storage                          2.9018+-0.0923     ?      2.9773+-0.0640        ? might be 1.0260x slower
   Float32Array-matrix-mult                          13.2521+-0.0767     ?     13.2524+-0.0734        ?
   Float32Array-to-Float64Array-set                 167.0979+-0.4091     ^    156.0801+-0.4926        ^ definitely 1.0706x faster
   Float64Array-alloc-long-lived                    184.3547+-0.7093          183.7322+-0.6190        
   Float64Array-to-Int16Array-set                   210.6015+-0.4701     ^    205.3070+-0.5772        ^ definitely 1.0258x faster
   fold-double-to-int                                41.4299+-0.0446           41.3328+-0.1039        
   fold-get-by-id-to-multi-get-by-offset-rare-int   
                                                     23.5845+-0.6024     ?     23.5899+-0.5094        ?
   fold-get-by-id-to-multi-get-by-offset             20.1393+-0.6586           20.0421+-0.3849        
   fold-multi-get-by-offset-to-get-by-offset   
                                                     18.6449+-1.2593     ?     19.5591+-0.2194        ? might be 1.0490x slower
   fold-multi-get-by-offset-to-poly-get-by-offset   
                                                     19.1177+-1.8788           19.0630+-1.4070        
   fold-multi-put-by-offset-to-poly-put-by-offset   
                                                     17.8298+-0.2832     ?     17.8652+-0.2499        ?
   fold-multi-put-by-offset-to-put-by-offset   
                                                     13.7298+-0.1744           13.5667+-0.9915          might be 1.0120x faster
   fold-multi-put-by-offset-to-replace-or-transition-put-by-offset   
                                                     28.0477+-1.8488           27.9576+-1.0303        
   fold-put-by-id-to-multi-put-by-offset             19.4270+-0.3417           19.1707+-0.2431          might be 1.0134x faster
   fold-put-structure                                12.1548+-1.3867           11.6137+-0.3997          might be 1.0466x faster
   for-of-iterate-array-entries                      13.0157+-0.1600     ^     12.7634+-0.0855        ^ definitely 1.0198x faster
   for-of-iterate-array-keys                         10.3339+-0.1426           10.2268+-0.1386          might be 1.0105x faster
   for-of-iterate-array-values                       10.1624+-0.2469     ?     10.6329+-0.4679        ? might be 1.0463x slower
   fround                                            56.2403+-0.5572           54.9210+-1.3099          might be 1.0240x faster
   ftl-library-inlining-dataview                    202.9241+-1.9870     ^    194.6668+-1.0657        ^ definitely 1.0424x faster
   ftl-library-inlining                             211.8142+-39.0227    ?    243.0648+-69.4401       ? might be 1.1475x slower
   function-dot-apply                                 6.4801+-0.0934     ?      6.5144+-0.0958        ?
   function-test                                      9.7388+-0.0909            9.6450+-0.0352        
   function-with-eval                               287.0354+-4.2671          282.3612+-1.8735          might be 1.0166x faster
   gcse-poly-get-less-obvious                        53.6429+-1.5351     !     60.4338+-5.0574        ! definitely 1.1266x slower
   gcse-poly-get                                     73.7610+-8.5911           70.2148+-8.3355          might be 1.0505x faster
   gcse                                              12.4730+-0.0469     ?     12.4916+-0.0359        ?
   get-by-id-bimorphic-check-structure-elimination-simple   
                                                      7.9631+-0.0948     ?      8.0218+-0.1494        ?
   get-by-id-bimorphic-check-structure-elimination   
                                                     17.9161+-0.1372     ?     17.9169+-0.4513        ?
   get-by-id-chain-from-try-block                    19.6722+-0.1365     !     20.0253+-0.0668        ! definitely 1.0180x slower
   get-by-id-check-structure-elimination             15.0345+-0.1165           15.0129+-0.0650        
   get-by-id-proto-or-self                           50.0388+-2.2341           49.4788+-1.4120          might be 1.0113x faster
   get-by-id-quadmorphic-check-structure-elimination-simple   
                                                      8.4809+-0.0630     ?      8.5191+-0.0359        ?
   get-by-id-self-or-proto                           50.9825+-1.2637           49.2923+-0.8574          might be 1.0343x faster
   get-by-val-out-of-bounds                          11.9576+-0.2027           11.9283+-0.1083        
   get_callee_monomorphic                             7.0100+-0.1343            6.8885+-0.1011          might be 1.0176x faster
   get_callee_polymorphic                            10.3989+-0.1554           10.3543+-0.1695        
   getter-no-activation                              13.8000+-0.0739     ?     13.8722+-0.1722        ?
   getter-richards                                  267.9701+-2.7306     ?    273.0392+-3.1261        ? might be 1.0189x slower
   getter                                            15.1411+-0.0796     ?     15.1647+-0.0826        ?
   global-var-const-infer-fire-from-opt               3.0994+-0.3742     ?      3.1920+-0.2459        ? might be 1.0299x slower
   global-var-const-infer                             2.3979+-0.0460            2.3970+-0.0668        
   HashMap-put-get-iterate-keys                      76.5017+-0.9554           76.1044+-1.0110        
   HashMap-put-get-iterate                           75.8674+-0.5097           75.4397+-0.8793        
   HashMap-string-put-get-iterate                    71.4384+-0.7470           71.3312+-0.9392        
   hoist-make-rope                                   33.2646+-1.7834           32.4360+-3.3899          might be 1.0255x faster
   hoist-poly-check-structure-effectful-loop   
                                                     14.4287+-0.1482     ?     14.4838+-0.2783        ?
   hoist-poly-check-structure                        10.8219+-0.2709           10.6787+-0.0578          might be 1.0134x faster
   imul-double-only                                  23.9904+-2.4356     ^     21.3295+-0.1705        ^ definitely 1.1247x faster
   imul-int-only                                     27.4099+-1.1416           27.2009+-0.5331        
   imul-mixed                                        21.8000+-0.2002     ?     22.1077+-0.9228        ? might be 1.0141x slower
   in-four-cases                                     60.2956+-0.1717     ?     60.4297+-0.1220        ?
   in-one-case-false                                 28.9259+-1.3318           28.4379+-0.3937          might be 1.0172x faster
   in-one-case-true                                  28.9437+-1.2913           28.2461+-0.1050          might be 1.0247x faster
   in-two-cases                                      29.4427+-0.0478     ^     29.1007+-0.0755        ^ definitely 1.0118x faster
   indexed-properties-in-objects                      8.3516+-0.0951     ?      8.3780+-0.0348        ?
   infer-closure-const-then-mov-no-inline            11.6923+-0.0565     ?     11.8330+-0.0932        ? might be 1.0120x slower
   infer-closure-const-then-mov                      57.8680+-0.8780           57.2691+-0.2509          might be 1.0105x faster
   infer-closure-const-then-put-to-scope-no-inline   
                                                     40.4451+-0.1807           40.3698+-0.1736        
   infer-closure-const-then-put-to-scope             66.5392+-1.5651           66.0340+-0.3896        
   infer-closure-const-then-reenter-no-inline   
                                                    195.8131+-0.3759     ?    195.9125+-0.4343        ?
   infer-closure-const-then-reenter                  67.1307+-1.2089           66.6642+-1.0258        
   infer-constant-global-property                    90.0964+-0.1499     ?     90.5408+-1.3832        ?
   infer-constant-property                            7.7470+-0.0667     ?      7.7537+-0.0142        ?
   infer-one-time-closure-ten-vars                   35.1518+-0.2975     ?     35.2921+-0.0877        ?
   infer-one-time-closure-two-vars                   34.2609+-0.0393           34.2204+-0.0929        
   infer-one-time-closure                            33.9464+-0.2414     ?     34.0379+-0.2428        ?
   infer-one-time-deep-closure                       60.4379+-0.3067     ?     61.0626+-1.2542        ? might be 1.0103x slower
   inline-arguments-access                           11.6501+-0.1811           11.5446+-0.1533        
   inline-arguments-aliased-access                   11.6898+-0.3650           11.6298+-0.2133        
   inline-arguments-local-escape                     11.5908+-0.2394     ?     11.6827+-0.2759        ?
   inline-get-scoped-var                             13.7388+-0.2763           13.5427+-0.1285          might be 1.0145x faster
   inlined-put-by-id-transition                      28.7412+-1.3737           28.5433+-1.7657        
   int-or-other-abs-then-get-by-val                  13.6032+-0.2948           13.5238+-0.0243        
   int-or-other-abs-zero-then-get-by-val             51.1622+-0.2671     ^     50.4635+-0.3243        ^ definitely 1.0138x faster
   int-or-other-add-then-get-by-val                  12.4114+-0.2828     ?     12.4683+-0.0692        ?
   int-or-other-add                                  15.2410+-0.1027     ?     15.3905+-0.3374        ?
   int-or-other-div-then-get-by-val                  12.3795+-0.0346           12.3244+-0.0358        
   int-or-other-max-then-get-by-val                  12.4672+-0.0809     ?     12.5608+-0.1893        ?
   int-or-other-min-then-get-by-val                  12.8033+-0.0938           12.7994+-0.0370        
   int-or-other-mod-then-get-by-val                  11.4681+-0.1165     ?     11.7581+-0.4203        ? might be 1.0253x slower
   int-or-other-mul-then-get-by-val                  11.5080+-0.0802     ?     11.5335+-0.0582        ?
   int-or-other-neg-then-get-by-val                  12.8645+-0.0511           12.8332+-0.0876        
   int-or-other-neg-zero-then-get-by-val             51.6731+-0.1948     !     53.6154+-0.7744        ! definitely 1.0376x slower
   int-or-other-sub-then-get-by-val                  13.0435+-0.1024     ?     13.1975+-0.1462        ? might be 1.0118x slower
   int-or-other-sub                                  10.2081+-0.0801     ?     10.2421+-0.0711        ?
   int-overflow-local                                12.8851+-0.1616           12.8139+-0.2362        
   Int16Array-alloc-long-lived                      135.9182+-0.3270     ?    136.3630+-0.9432        ?
   Int16Array-bubble-sort-with-byteLength            58.9623+-1.7533     ?     60.2675+-0.2316        ? might be 1.0221x slower
   Int16Array-bubble-sort                            57.5298+-0.2604     ?     58.1921+-1.0643        ? might be 1.0115x slower
   Int16Array-load-int-mul                            4.3961+-0.0267     ?      4.4248+-0.0522        ?
   Int16Array-to-Int32Array-set                     152.4517+-0.2189     !    164.9148+-0.1712        ! definitely 1.0818x slower
   Int32Array-alloc-large                            47.2921+-0.5193           46.6580+-0.5149          might be 1.0136x faster
   Int32Array-alloc-long-lived                      147.5621+-0.3060     ?    148.0221+-0.8888        ?
   Int32Array-alloc                                   8.0203+-0.1220     ?      8.1903+-0.3951        ? might be 1.0212x slower
   Int32Array-Int8Array-view-alloc                   19.8201+-0.5111     ?     19.8759+-0.2788        ?
   int52-spill                                       18.2853+-0.4403           18.1938+-0.1116        
   Int8Array-alloc-long-lived                       123.7491+-0.8435     ?    124.0025+-0.5760        ?
   Int8Array-load-with-byteLength                     9.6685+-0.0616     ?      9.6951+-0.0367        ?
   Int8Array-load                                     9.8639+-0.3912            9.7605+-0.1023          might be 1.0106x faster
   integer-divide                                    33.0208+-0.1981     ?     33.0500+-0.4051        ?
   integer-modulo                                     6.1027+-0.1733            5.9552+-0.2416          might be 1.0248x faster
   large-int-captured                                12.1128+-0.2747           11.8653+-0.1364          might be 1.0209x faster
   large-int-neg                                     48.7351+-0.1619     ?     49.1566+-1.3577        ?
   large-int                                         44.4617+-0.1576     ?     44.5871+-0.2475        ?
   logical-not                                       12.9229+-0.0361     !     13.1654+-0.1450        ! definitely 1.0188x slower
   lots-of-fields                                    36.9848+-0.3840     ^     36.3975+-0.1834        ^ definitely 1.0161x faster
   make-indexed-storage                               8.9414+-0.2396            8.8816+-0.2263        
   make-rope-cse                                     10.8508+-0.3164           10.7957+-0.2175        
   marsaglia-larger-ints                            116.3401+-0.9307          116.0645+-0.3253        
   marsaglia-osr-entry                               66.2720+-0.8914           65.8291+-0.3552        
   max-boolean                                        7.3114+-0.0688            7.2548+-0.0317        
   method-on-number                                  49.9460+-0.1181     !     51.4511+-0.3396        ! definitely 1.0301x slower
   min-boolean                                        7.2399+-0.0522     ?      7.3323+-0.0764        ? might be 1.0128x slower
   minus-boolean-double                               9.1364+-0.0442     ?      9.2869+-0.3683        ? might be 1.0165x slower
   minus-boolean                                      6.7251+-0.0814     ?      6.7642+-0.0818        ?
   misc-strict-eq                                   115.6286+-8.1606          109.9266+-0.9909          might be 1.0519x faster
   mod-boolean-double                                31.7781+-0.0524     ?     31.9400+-0.2997        ?
   mod-boolean                                       22.6789+-0.0964           22.6306+-0.0995        
   mul-boolean-double                                10.9664+-0.4122           10.8712+-0.1407        
   mul-boolean                                        8.2827+-0.0484     ?      8.3007+-0.0395        ?
   neg-boolean                                        9.3094+-0.2533            9.1842+-0.0506          might be 1.0136x faster
   negative-zero-divide                               1.1173+-0.0343            1.0994+-0.0397          might be 1.0162x faster
   negative-zero-modulo                               1.0922+-0.0395     ?      1.1011+-0.0267        ?
   negative-zero-negate                               1.0473+-0.0252            1.0264+-0.0646          might be 1.0203x faster
   nested-function-parsing                          105.7433+-0.8008     ?    106.1260+-0.2793        ?
   new-array-buffer-dead                            264.2049+-1.1614     ?    265.0650+-2.3259        ?
   new-array-buffer-push                             17.0548+-0.1825           17.0049+-0.4835        
   new-array-dead                                    49.3835+-0.6031           48.7193+-0.5683          might be 1.0136x faster
   new-array-push                                    11.0400+-0.5696           10.6129+-0.3324          might be 1.0402x faster
   no-inline-constructor                            294.4546+-0.6961          294.1088+-0.8979        
   number-test                                        8.7254+-0.0265            8.6595+-0.0554        
   object-closure-call                               16.2690+-0.1582           16.1757+-0.0454        
   object-test                                        9.2719+-0.1455            9.1250+-0.0301          might be 1.0161x faster
   obvious-sink-pathology-taken                     321.0143+-1.2035     ?    323.3907+-4.5582        ?
   obvious-sink-pathology                           296.0666+-1.3152          295.9920+-3.0555        
   obviously-elidable-new-object                     88.5094+-0.3127     ?     89.2810+-1.0037        ?
   plus-boolean-arith                                 7.2931+-0.0341     ^      7.2242+-0.0315        ^ definitely 1.0095x faster
   plus-boolean-double                                9.1996+-0.0400     ?      9.2386+-0.0506        ?
   plus-boolean                                       6.9266+-0.0457            6.8630+-0.0591        
   poly-chain-access-different-prototypes-simple   
                                                      9.3943+-0.1587     ?      9.4539+-0.0816        ?
   poly-chain-access-different-prototypes             7.5176+-0.0424     ?      7.5404+-0.0504        ?
   poly-chain-access-simpler                          9.4884+-0.0541     ?      9.4907+-0.1147        ?
   poly-chain-access                                  7.4156+-0.0791     ?      7.4586+-0.0593        ?
   poly-stricteq                                    179.6989+-0.1857     !    182.3080+-0.2917        ! definitely 1.0145x slower
   polymorphic-array-call                             3.8124+-0.1113     ?      3.8146+-0.0829        ?
   polymorphic-get-by-id                              8.9845+-0.0540     ?      9.0819+-0.0830        ? might be 1.0108x slower
   polymorphic-put-by-id                             84.2749+-1.4661           83.2251+-1.7442          might be 1.0126x faster
   polymorphic-structure                             43.8951+-0.0758           43.8202+-0.0836        
   polyvariant-monomorphic-get-by-id                 24.5911+-0.0823           24.5141+-0.1548        
   proto-getter-access                               28.3467+-0.3269     ?     28.4851+-0.2582        ?
   put-by-id-replace-and-transition                  23.1250+-0.2727     ?     23.5296+-1.3504        ? might be 1.0175x slower
   put-by-id-slightly-polymorphic                     8.4618+-0.1427            8.4038+-0.1244        
   put-by-id                                         30.0135+-0.3198           29.9806+-0.4333        
   put-by-val-direct                                  1.4324+-0.0167     ?      1.4338+-0.0769        ?
   put-by-val-large-index-blank-indexing-type   
                                                     15.7154+-0.2938           15.4337+-0.0926          might be 1.0182x faster
   put-by-val-machine-int                             7.6047+-0.0977     ?      7.6169+-0.0393        ?
   rare-osr-exit-on-local                            43.4412+-0.3447     ?     43.6281+-0.3752        ?
   register-pressure-from-osr                        63.5993+-0.0608     ?     63.6130+-0.1285        ?
   setter                                            14.7920+-0.0802     ?     14.8224+-0.0819        ?
   simple-activation-demo                            74.4618+-0.0970     ^     73.4409+-0.1715        ^ definitely 1.0139x faster
   simple-getter-access                              36.9210+-0.4142     ?     37.0903+-0.3159        ?
   simple-poly-call-nested                           23.0267+-0.0722     ?     23.0742+-0.3014        ?
   simple-poly-call                                   3.9438+-0.0823     ?      3.9850+-0.0412        ? might be 1.0104x slower
   sin-boolean                                       55.2064+-0.5721           54.2591+-0.7384          might be 1.0175x faster
   singleton-scope                                  203.2908+-0.2872     ?    203.4205+-0.6000        ?
   sink-function                                     29.7449+-0.7619     ?     30.4408+-0.1972        ? might be 1.0234x slower
   sink-huge-activation                             123.0638+-1.1308     ^     54.2304+-0.9366        ^ definitely 2.2693x faster
   sinkable-new-object-dag                          184.7625+-1.0179          184.4036+-1.0183        
   sinkable-new-object-taken                        143.8718+-6.0718     ?    147.5629+-0.9146        ? might be 1.0257x slower
   sinkable-new-object                              100.1865+-0.5050           99.7485+-1.1617        
   slow-array-profile-convergence                     8.4369+-0.1111     ?      8.4779+-0.2329        ?
   slow-convergence                                   8.2096+-0.0654     ?      8.3198+-0.1674        ? might be 1.0134x slower
   sorting-benchmark                                 68.7975+-0.4356     ?     69.1812+-0.3512        ?
   sparse-conditional                                 3.5444+-0.0481            3.4974+-0.0654          might be 1.0134x faster
   splice-to-remove                                  48.5801+-1.6886           48.1400+-0.3261        
   string-char-code-at                               50.0061+-0.6567     ?     50.9496+-1.9182        ? might be 1.0189x slower
   string-concat-object                               6.3930+-0.0818     ?      6.4228+-0.0654        ?
   string-concat-pair-object                          6.2679+-0.0899            6.2014+-0.1183          might be 1.0107x faster
   string-concat-pair-simple                         28.8054+-0.3988     ?     28.8437+-0.2365        ?
   string-concat-simple                              30.0162+-0.3486           29.9775+-0.2836        
   string-cons-repeat                                19.4403+-0.1311     ?     19.4470+-0.2547        ?
   string-cons-tower                                 19.9930+-0.1673     ?     20.0734+-0.1724        ?
   string-equality                                   51.1470+-0.2283           51.0605+-0.2516        
   string-get-by-val-big-char                        20.1984+-0.1497           20.0289+-0.1419        
   string-get-by-val-out-of-bounds-insane            10.5433+-0.0545     ?     10.5955+-0.1090        ?
   string-get-by-val-out-of-bounds                   15.3539+-0.0566           15.3385+-0.0690        
   string-get-by-val                                  9.8325+-0.1003            9.7847+-0.0458        
   string-hash                                        6.0237+-0.0391     ?      6.1511+-0.2674        ? might be 1.0211x slower
   string-long-ident-equality                        44.9926+-0.7027           44.7404+-0.5588        
   string-out-of-bounds                              42.5635+-0.0825     ?     42.6453+-0.1747        ?
   string-repeat-arith                               94.1613+-1.4568     ?     95.4966+-1.0622        ? might be 1.0142x slower
   string-sub                                       186.9157+-1.3190     ?    187.3490+-1.8970        ?
   string-test                                        8.5170+-0.0584            8.4194+-0.0736          might be 1.0116x faster
   string-var-equality                               93.3132+-0.1071     ^     90.4244+-0.1571        ^ definitely 1.0319x faster
   structure-hoist-over-transitions                   7.0398+-0.2649     ?      7.1287+-0.1115        ? might be 1.0126x slower
   substring-concat-weird                           110.9452+-2.3532     ?    111.4346+-0.7395        ?
   substring-concat                                 115.5950+-0.9632     ?    116.6056+-0.3403        ?
   substring                                        130.4111+-0.1561     !    132.1442+-0.2143        ! definitely 1.0133x slower
   switch-char-constant                               7.8115+-0.0527     ?      7.8312+-0.0451        ?
   switch-char                                       19.2902+-0.1192     ^     17.9503+-0.1860        ^ definitely 1.0746x faster
   switch-constant                                   20.9967+-0.6714           20.9110+-0.6290        
   switch-string-basic-big-var                       43.8611+-0.1310     !     44.2351+-0.1264        ! definitely 1.0085x slower
   switch-string-basic-big                           42.1224+-1.2674           41.6464+-0.3607          might be 1.0114x faster
   switch-string-basic-var                           42.1107+-0.1228     ?     42.3090+-0.0850        ?
   switch-string-basic                               39.5096+-0.5287     ?     40.1369+-1.2311        ? might be 1.0159x slower
   switch-string-big-length-tower-var                59.1930+-0.1165     !     64.7406+-0.0607        ! definitely 1.0937x slower
   switch-string-length-tower-var                    44.9130+-0.1733     !     47.9149+-0.0601        ! definitely 1.0668x slower
   switch-string-length-tower                        38.1860+-0.1352           38.1499+-0.1041        
   switch-string-short                               37.7227+-0.3523           37.6655+-0.1381        
   switch                                            33.3985+-0.2190     ?     33.5409+-0.1760        ?
   tear-off-arguments-simple                          9.1493+-0.1825     ?      9.2774+-0.2868        ? might be 1.0140x slower
   tear-off-arguments                                12.4542+-0.1781           12.3560+-0.2337        
   temporal-structure                                35.8898+-0.1797           35.8828+-0.1177        
   to-int32-boolean                                  40.1351+-0.0609     ?     40.1740+-0.0966        ?
   try-catch-get-by-val-cloned-arguments             40.9102+-1.9425           40.0435+-0.4453          might be 1.0216x faster
   try-catch-get-by-val-direct-arguments             17.5958+-0.1410     ?     17.6675+-0.1267        ?
   try-catch-get-by-val-scoped-arguments             20.7968+-0.1145     ?     20.9679+-0.4513        ?
   typed-array-get-set-by-val-profiling              99.5628+-1.5471           99.2157+-1.4219        
   undefined-property-access                       1074.4853+-3.7086         1071.1611+-2.2087        
   undefined-test                                     8.9370+-0.0487            8.8221+-0.1301          might be 1.0130x faster
   unprofiled-licm                                   64.8498+-0.0960     ?     65.3367+-0.7200        ?
   varargs-call                                      44.0732+-0.3173     ?     44.8562+-1.9066        ? might be 1.0178x slower
   varargs-construct-inline                          57.9690+-0.5250     ?     58.2108+-0.4130        ?
   varargs-construct                                 92.6334+-0.5716           92.4602+-0.4416        
   varargs-inline                                    29.0239+-0.1350     ?     29.0962+-0.1104        ?
   varargs-strict-mode                               32.8340+-0.1008     ?     32.8591+-0.0862        ?
   varargs                                           32.8878+-0.0681           32.8826+-0.0509        
   weird-inlining-const-prop                          6.3550+-0.3409     ?      6.4132+-0.2528        ?

   <geometric>                                       24.7422+-0.0717     ?     24.7579+-0.0357        ? might be 1.0006x slower

                                                         Baseline            SinkCreateActivation                               
AsmBench:
   bigfib.cpp                                      1457.2151+-4.6330     ?   1460.1446+-4.1808        ?
   cray.c                                          1282.9488+-4.9647         1279.8468+-6.7348        
   dry.c                                           1513.8826+-2.3240         1496.0722+-39.7165         might be 1.0119x faster
   FloatMM.c                                       2176.4851+-3.2265     ?   2178.0837+-2.4934        ?
   gcc-loops.cpp                                  12749.4106+-61.9160    ?  12761.5954+-35.8184       ?
   n-body.c                                        2986.6520+-3.5163     ?   2988.5298+-3.1884        ?
   Quicksort.c                                     1275.7349+-15.8471    ?   1285.2440+-2.8445        ?
   stepanov_container.cpp                         11398.1800+-59.5739       11386.5594+-25.4641       
   Towers.c                                         771.6058+-1.3150     ?    771.8465+-1.4953        ?

   <geometric>                                     2398.9638+-4.6744         2398.0603+-7.6695          might be 1.0004x faster

                                                         Baseline            SinkCreateActivation                               
CompressionBench:
   huffman                                         1099.5950+-4.7945         1096.7447+-7.2399        
   arithmetic-simple                               1196.9718+-5.3095     ^   1180.8057+-0.6146        ^ definitely 1.0137x faster
   arithmetic-precise                               892.5842+-4.2372          889.7998+-3.1880        
   arithmetic-complex-precise                       886.0932+-4.1485          880.5936+-2.6883        
   arithmetic-precise-order-0                      1262.0122+-11.2782        1258.8899+-12.2288       
   arithmetic-precise-order-1                       975.6801+-6.4488          972.4573+-4.5266        
   arithmetic-precise-order-2                      1106.2924+-7.7605         1105.5647+-6.3905        
   arithmetic-simple-order-1                       1260.6795+-1.8141         1260.2292+-2.5709        
   arithmetic-simple-order-2                       1426.7262+-2.8138     ?   1429.3348+-5.0903        ?
   lz-string                                        907.3435+-69.7552         888.7523+-5.3549          might be 1.0209x faster

   <geometric>                                     1087.3129+-9.6442         1081.9614+-1.4801          might be 1.0049x faster

                                                         Baseline            SinkCreateActivation                               
Geomean of preferred means:
   <scaled-result>                                  188.4836+-0.2607          188.4000+-0.3730          might be 1.0004x faster
Comment 3 Filip Pizlo 2015-04-29 10:11:22 PDT
Smaller speed-up than what I would have expected.  But, I'll take 4% on Octane/earley. :-)
Comment 4 Geoffrey Garen 2015-04-29 10:59:06 PDT
(In reply to comment #3)
> Smaller speed-up than what I would have expected.  But, I'll take 4% on
> Octane/earley. :-)

I believe the original earley slow-down from removing bytecode activation sinking was on the order of 30%. It's probably worth investigating why this patch doesn't win bigger.
Comment 5 Filip Pizlo 2015-04-29 11:00:11 PDT
(In reply to comment #4)
> (In reply to comment #3)
> > Smaller speed-up than what I would have expected.  But, I'll take 4% on
> > Octane/earley. :-)
> 
> I believe the original earley slow-down from removing bytecode activation
> sinking was on the order of 30%. It's probably worth investigating why this
> patch doesn't win bigger.

The megapatch also made activations a *lot* cheaper to allocate.

We should check where this patch puts us relative to where we were before the original earley slow-down.
Comment 6 Geoffrey Garen 2015-04-29 11:00:54 PDT
> We should check where this patch puts us relative to where we were before
> the original earley slow-down.

Good idea. Should be doable with a spade build or a webkit nightly.
Comment 7 Basile Clement 2015-04-30 17:50:24 PDT
Created attachment 252123 [details]
Remove spurious assertion
Comment 8 Basile Clement 2015-05-04 16:01:20 PDT
Created attachment 252344 [details]
Patch
Comment 9 WebKit Commit Bot 2015-05-04 16:04:19 PDT
Attachment 252344 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:842:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 10 Filip Pizlo 2015-05-04 19:37:11 PDT
Comment on attachment 252344 [details]
Patch

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

> Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:-576
> -                        ASSERT(target->isPhantomObjectAllocation());

Maybe assert that it's isPhantomAllocation()?
Comment 11 Basile Clement 2015-05-04 21:59:24 PDT
Comment on attachment 252344 [details]
Patch

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

>> Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:-576
>> -                        ASSERT(target->isPhantomObjectAllocation());
> 
> Maybe assert that it's isPhantomAllocation()?

That would make sense, I will add that before landing.
Comment 12 Basile Clement 2015-05-05 09:35:40 PDT
Committed r183812: <http://trac.webkit.org/changeset/183812>
Comment 13 Andreas Kling 2015-05-05 10:27:49 PDT
This looks pretty assert-y on debug bots:

https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/r183813%20(4375)/results.html

Example stack:

Thread 19 Crashed:: FTL Worklist Worker Thread
0   com.apple.JavaScriptCore      	0x000000010fefa957 WTFCrash + 39
1   com.apple.JavaScriptCore      	0x000000010f6b6db5 JSC::DFG::Node::objectMaterializationData() + 69
2   com.apple.JavaScriptCore      	0x000000010f6b33e3 JSC::DFG::ObjectAllocationSinkingPhase::populateMaterialize(JSC::DFG::BasicBlock*, JSC::DFG::Node*, JSC::DFG::Node*) + 1043
3   com.apple.JavaScriptCore      	0x000000010f6b1b75 JSC::DFG::ObjectAllocationSinkingPhase::promoteSunkenFields() + 3413
4   com.apple.JavaScriptCore      	0x000000010f6adc8c JSC::DFG::ObjectAllocationSinkingPhase::performSinking() + 428
5   com.apple.JavaScriptCore      	0x000000010f6ada31 JSC::DFG::ObjectAllocationSinkingPhase::run() + 145
6   com.apple.JavaScriptCore      	0x000000010f6ac365 bool JSC::DFG::runAndLog<JSC::DFG::ObjectAllocationSinkingPhase>(JSC::DFG::ObjectAllocationSinkingPhase&) + 21
7   com.apple.JavaScriptCore      	0x000000010f6ac2ee bool JSC::DFG::runPhase<JSC::DFG::ObjectAllocationSinkingPhase>(JSC::DFG::Graph&) + 46
8   com.apple.JavaScriptCore      	0x000000010f6ac2a8 JSC::DFG::performObjectAllocationSinking(JSC::DFG::Graph&) + 40
9   com.apple.JavaScriptCore      	0x000000010f840c1a JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&) + 4602
10  com.apple.JavaScriptCore      	0x000000010f83f6a1 JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&, JSC::DFG::ThreadData*) + 417
11  com.apple.JavaScriptCore      	0x000000010f90b230 JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 720
12  com.apple.JavaScriptCore      	0x000000010f909814 JSC::DFG::Worklist::threadFunction(void*) + 36
13  com.apple.JavaScriptCore      	0x000000010ff512a9 WTF::createThread(void (*)(void*), void*, char const*)::$_0::operator()() const + 25
14  com.apple.JavaScriptCore      	0x000000010ff5127c std::__1::__function::__func<WTF::createThread(void (*)(void*), void*, char const*)::$_0, std::__1::allocator<WTF::createThread(void (*)(void*), void*, char const*)::$_0>, void ()>::operator()() + 60
15  com.apple.JavaScriptCore      	0x000000010fa2ab7a std::__1::function<void ()>::operator()() const + 26
16  com.apple.JavaScriptCore      	0x000000010ff500ce WTF::threadEntryPoint(void*) + 158
17  com.apple.JavaScriptCore      	0x000000010ff51891 WTF::wtfThreadEntryPoint(void*) + 289
18  libsystem_pthread.dylib       	0x00007fff8fd40268 _pthread_body + 131
19  libsystem_pthread.dylib       	0x00007fff8fd401e5 _pthread_start + 176
20  libsystem_pthread.dylib       	0x00007fff8fd3e41d thread_start + 13
Comment 14 Basile Clement 2015-05-05 10:50:04 PDT
(In reply to comment #13)
> This looks pretty assert-y on debug bots:
> 
> https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
> r183813%20(4375)/results.html
> 
> Example stack:
> 
> Thread 19 Crashed:: FTL Worklist Worker Thread
> 0   com.apple.JavaScriptCore      	0x000000010fefa957 WTFCrash + 39
> 1   com.apple.JavaScriptCore      	0x000000010f6b6db5
> JSC::DFG::Node::objectMaterializationData() + 69
> 2   com.apple.JavaScriptCore      	0x000000010f6b33e3
> JSC::DFG::ObjectAllocationSinkingPhase::populateMaterialize(JSC::DFG::
> BasicBlock*, JSC::DFG::Node*, JSC::DFG::Node*) + 1043
> 3   com.apple.JavaScriptCore      	0x000000010f6b1b75
> JSC::DFG::ObjectAllocationSinkingPhase::promoteSunkenFields() + 3413
> 4   com.apple.JavaScriptCore      	0x000000010f6adc8c
> JSC::DFG::ObjectAllocationSinkingPhase::performSinking() + 428
> 5   com.apple.JavaScriptCore      	0x000000010f6ada31
> JSC::DFG::ObjectAllocationSinkingPhase::run() + 145
> 6   com.apple.JavaScriptCore      	0x000000010f6ac365 bool
> JSC::DFG::runAndLog<JSC::DFG::ObjectAllocationSinkingPhase>(JSC::DFG::
> ObjectAllocationSinkingPhase&) + 21
> 7   com.apple.JavaScriptCore      	0x000000010f6ac2ee bool
> JSC::DFG::runPhase<JSC::DFG::ObjectAllocationSinkingPhase>(JSC::DFG::Graph&)
> + 46
> 8   com.apple.JavaScriptCore      	0x000000010f6ac2a8
> JSC::DFG::performObjectAllocationSinking(JSC::DFG::Graph&) + 40
> 9   com.apple.JavaScriptCore      	0x000000010f840c1a
> JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&) + 4602
> 10  com.apple.JavaScriptCore      	0x000000010f83f6a1
> JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&,
> JSC::DFG::ThreadData*) + 417
> 11  com.apple.JavaScriptCore      	0x000000010f90b230
> JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 720
> 12  com.apple.JavaScriptCore      	0x000000010f909814
> JSC::DFG::Worklist::threadFunction(void*) + 36
> 13  com.apple.JavaScriptCore      	0x000000010ff512a9 WTF::createThread(void
> (*)(void*), void*, char const*)::$_0::operator()() const + 25
> 14  com.apple.JavaScriptCore      	0x000000010ff5127c
> std::__1::__function::__func<WTF::createThread(void (*)(void*), void*, char
> const*)::$_0, std::__1::allocator<WTF::createThread(void (*)(void*), void*,
> char const*)::$_0>, void ()>::operator()() + 60
> 15  com.apple.JavaScriptCore      	0x000000010fa2ab7a
> std::__1::function<void ()>::operator()() const + 26
> 16  com.apple.JavaScriptCore      	0x000000010ff500ce
> WTF::threadEntryPoint(void*) + 158
> 17  com.apple.JavaScriptCore      	0x000000010ff51891
> WTF::wtfThreadEntryPoint(void*) + 289
> 18  libsystem_pthread.dylib       	0x00007fff8fd40268 _pthread_body + 131
> 19  libsystem_pthread.dylib       	0x00007fff8fd401e5 _pthread_start + 176
> 20  libsystem_pthread.dylib       	0x00007fff8fd3e41d thread_start + 13

Yeah, this seems to be due to MaterializeCreateActivation not being treated as having materialization data by DFG::Node::hasObjectMaterializationData(), thus triggering an assertion failure in DFG::Node::objectMaterializationData(). This works in releases builds because the materialization data is actually present.
I remember fixing this due to assertions failures locally, but I apparently lost that change somewhere along the road.
Comment 15 Basile Clement 2015-05-05 11:01:44 PDT
(In reply to comment #14)
> (In reply to comment #13)
> > This looks pretty assert-y on debug bots:
> > 
> > https://build.webkit.org/results/Apple%20Yosemite%20Debug%20WK1%20(Tests)/
> > r183813%20(4375)/results.html
> > 
> > Example stack:
> > 
> > Thread 19 Crashed:: FTL Worklist Worker Thread
> > 0   com.apple.JavaScriptCore      	0x000000010fefa957 WTFCrash + 39
> > 1   com.apple.JavaScriptCore      	0x000000010f6b6db5
> > JSC::DFG::Node::objectMaterializationData() + 69
> > 2   com.apple.JavaScriptCore      	0x000000010f6b33e3
> > JSC::DFG::ObjectAllocationSinkingPhase::populateMaterialize(JSC::DFG::
> > BasicBlock*, JSC::DFG::Node*, JSC::DFG::Node*) + 1043
> > 3   com.apple.JavaScriptCore      	0x000000010f6b1b75
> > JSC::DFG::ObjectAllocationSinkingPhase::promoteSunkenFields() + 3413
> > 4   com.apple.JavaScriptCore      	0x000000010f6adc8c
> > JSC::DFG::ObjectAllocationSinkingPhase::performSinking() + 428
> > 5   com.apple.JavaScriptCore      	0x000000010f6ada31
> > JSC::DFG::ObjectAllocationSinkingPhase::run() + 145
> > 6   com.apple.JavaScriptCore      	0x000000010f6ac365 bool
> > JSC::DFG::runAndLog<JSC::DFG::ObjectAllocationSinkingPhase>(JSC::DFG::
> > ObjectAllocationSinkingPhase&) + 21
> > 7   com.apple.JavaScriptCore      	0x000000010f6ac2ee bool
> > JSC::DFG::runPhase<JSC::DFG::ObjectAllocationSinkingPhase>(JSC::DFG::Graph&)
> > + 46
> > 8   com.apple.JavaScriptCore      	0x000000010f6ac2a8
> > JSC::DFG::performObjectAllocationSinking(JSC::DFG::Graph&) + 40
> > 9   com.apple.JavaScriptCore      	0x000000010f840c1a
> > JSC::DFG::Plan::compileInThreadImpl(JSC::DFG::LongLivedState&) + 4602
> > 10  com.apple.JavaScriptCore      	0x000000010f83f6a1
> > JSC::DFG::Plan::compileInThread(JSC::DFG::LongLivedState&,
> > JSC::DFG::ThreadData*) + 417
> > 11  com.apple.JavaScriptCore      	0x000000010f90b230
> > JSC::DFG::Worklist::runThread(JSC::DFG::ThreadData*) + 720
> > 12  com.apple.JavaScriptCore      	0x000000010f909814
> > JSC::DFG::Worklist::threadFunction(void*) + 36
> > 13  com.apple.JavaScriptCore      	0x000000010ff512a9 WTF::createThread(void
> > (*)(void*), void*, char const*)::$_0::operator()() const + 25
> > 14  com.apple.JavaScriptCore      	0x000000010ff5127c
> > std::__1::__function::__func<WTF::createThread(void (*)(void*), void*, char
> > const*)::$_0, std::__1::allocator<WTF::createThread(void (*)(void*), void*,
> > char const*)::$_0>, void ()>::operator()() + 60
> > 15  com.apple.JavaScriptCore      	0x000000010fa2ab7a
> > std::__1::function<void ()>::operator()() const + 26
> > 16  com.apple.JavaScriptCore      	0x000000010ff500ce
> > WTF::threadEntryPoint(void*) + 158
> > 17  com.apple.JavaScriptCore      	0x000000010ff51891
> > WTF::wtfThreadEntryPoint(void*) + 289
> > 18  libsystem_pthread.dylib       	0x00007fff8fd40268 _pthread_body + 131
> > 19  libsystem_pthread.dylib       	0x00007fff8fd401e5 _pthread_start + 176
> > 20  libsystem_pthread.dylib       	0x00007fff8fd3e41d thread_start + 13
> 
> Yeah, this seems to be due to MaterializeCreateActivation not being treated
> as having materialization data by DFG::Node::hasObjectMaterializationData(),
> thus triggering an assertion failure in
> DFG::Node::objectMaterializationData(). This works in releases builds
> because the materialization data is actually present.
> I remember fixing this due to assertions failures locally, but I apparently
> lost that change somewhere along the road.

Fixed in r183819 <http://trac.webkit.org/changeset/183819>