RESOLVED FIXED 198023
[JSC] UnlinkedCodeBlock should be eventually jettisoned in VM mini mode
https://bugs.webkit.org/show_bug.cgi?id=198023
Summary [JSC] UnlinkedCodeBlock should be eventually jettisoned in VM mini mode
Yusuke Suzuki
Reported 2019-05-18 17:11:42 PDT
Otherwise, so long as we have a reachable path to that UnlinkedCodeBlock, we still retain it. Since UnlinkedCodeBlock holds InstructionStream and UnlinkedMetadataTable, it is not so cheap. We could have some mechanism similar to ScriptExecutable -> CodeBlock (logically) weak reference.
Attachments
Patch (4.17 KB, patch)
2019-05-20 17:00 PDT, Yusuke Suzuki
no flags
Patch (31.94 KB, patch)
2019-06-04 18:48 PDT, Yusuke Suzuki
no flags
Patch (14.37 KB, patch)
2019-06-05 17:14 PDT, Yusuke Suzuki
no flags
Patch (19.16 KB, patch)
2019-06-05 22:06 PDT, Yusuke Suzuki
no flags
Patch (19.16 KB, patch)
2019-06-05 22:07 PDT, Yusuke Suzuki
no flags
Patch (19.41 KB, patch)
2019-06-05 22:15 PDT, Yusuke Suzuki
no flags
Patch (22.76 KB, patch)
2019-06-06 22:18 PDT, Yusuke Suzuki
no flags
Patch (24.35 KB, patch)
2019-06-06 22:51 PDT, Yusuke Suzuki
no flags
Patch (24.35 KB, patch)
2019-06-07 00:07 PDT, Yusuke Suzuki
no flags
Patch (28.00 KB, patch)
2019-06-07 16:14 PDT, Yusuke Suzuki
saam: review+
Yusuke Suzuki
Comment 1 2019-05-20 11:04:59 PDT
Now I think this would be very profitable. CodeBlock -> UnlinkedCodeBlock should be strong ref. But UnlinkedFunctionExecutable -> UnlinkedCodeBlock can be (special) weak ref as ScriptExecutable -> CodeBlock ref is.
Yusuke Suzuki
Comment 2 2019-05-20 11:09:44 PDT
I’ll prototype it quickly to see the potential impact on Gmail.
Yusuke Suzuki
Comment 3 2019-05-20 14:37:02 PDT
Simply making them Weak<> like thing reduces Gmail memory footprint by ~8% in my MBP.
Yusuke Suzuki
Comment 4 2019-05-20 17:00:33 PDT
Created attachment 370283 [details] Patch WIP
Yusuke Suzuki
Comment 5 2019-05-22 22:53:04 PDT
Interesting results RAMification 0.28% progression Speedometer 0.69% regression JetStream2 1.31% progression
Yusuke Suzuki
Comment 6 2019-05-28 19:44:07 PDT
UnlinkedCodeBlock investigation in Gmail. The following numbers are not taken at the same time, so it is just a rough sketch of the memory usage. But it is enough I think. Total number = 24219 Actually live = 2208 Baseline or upper + live = 4994 DFG or upper + live = 2532
Yusuke Suzuki
Comment 7 2019-05-28 19:45:12 PDT
(In reply to Yusuke Suzuki from comment #6) > UnlinkedCodeBlock investigation in Gmail. The following numbers are not > taken at the same time, so it is just a rough sketch of the memory usage. > But it is enough I think. > > > Total number = 24219 > Actually live = 2208 > Baseline or upper + live = 4994 > DFG or upper + live = 2532 The above says there are 20000 non-live LLInt UnlinkedCodeBlock.
Yusuke Suzuki
Comment 8 2019-05-28 19:46:05 PDT
(In reply to Yusuke Suzuki from comment #7) > (In reply to Yusuke Suzuki from comment #6) > > UnlinkedCodeBlock investigation in Gmail. The following numbers are not > > taken at the same time, so it is just a rough sketch of the memory usage. > > But it is enough I think. > > > > > > Total number = 24219 > > Actually live = 2208 > > Baseline or upper + live = 4994 > > DFG or upper + live = 2532 > > The above says there are 20000 non-live LLInt UnlinkedCodeBlock. LLInt UnlinkedCodeBlock means that CodeBlock belonging to this UnlinkedCodeBlock does not get Baseline or upper so far.
Yusuke Suzuki
Comment 9 2019-05-30 11:55:38 PDT
Discussed with Saam. Basically dropping UnlinkedCodeBlock can cause PLT / Speedometer2 regression. These UnlinkedCodeBlock can be reused once the same page is loaded. This is the same when we are using Safari and navigating to the page in the same domain (typically loading many same scripts again). On the other hand, keeping these UnlinkedCodeBlock (almost) forever until we fill up CodeCache completely takes huge amount of memory in SPA web pages. One example is Gmail. We do not navigate to the other pages in Gmail, we stay the same page for a very long time. In this case, keeping UnlinkedCodeBlock is much worthless compared to the non-SPA page navigation story. We can accelerate reload of the Gmail, but it is not frequent compared to navigation in non-SPA pages while it takes fair amount of memory. Maybe, we should discard these UnlinkedCodeBlocks only when it is not used soooooooooooo long time? Or once we get Bytecode disk caching, we could try more aggressive eviction policy? Anyway, we could try various things. And at least for mini mode VM, we should discard these things eagerly because we are incentivize memory reduction more on mini mode.
Yusuke Suzuki
Comment 10 2019-05-30 12:48:34 PDT
Yusuke Suzuki
Comment 11 2019-06-04 18:34:10 PDT
(In reply to Yusuke Suzuki from comment #10) > <rdar://problem/51192115> Let's do it for mini mode VM first. And I'm also considering whether we can make UnlinkedCodeBlock back to cached bytecode. I think we can do it easily. But we should get some space to saving decoder and offsets :P (I have one idea anyway, so I think we can do it maybe).
Yusuke Suzuki
Comment 12 2019-06-04 18:48:45 PDT
Yusuke Suzuki
Comment 13 2019-06-05 17:14:42 PDT
Yusuke Suzuki
Comment 14 2019-06-05 22:06:32 PDT
Yusuke Suzuki
Comment 15 2019-06-05 22:07:38 PDT
Yusuke Suzuki
Comment 16 2019-06-05 22:15:23 PDT
Created attachment 371474 [details] Patch WIP
Yusuke Suzuki
Comment 17 2019-06-06 18:26:51 PDT
OK, we could have several problems. But as a first step, I'll go with a simple patch, and after that improving heuristics based on the workload.
Yusuke Suzuki
Comment 18 2019-06-06 21:46:17 PDT
Heuristics data. I think AGE = 7 case would be a good starting point. AGE = 0 can reduce much memory, but it almost always requires reparsing 400 functions per scene change. AGE = INFINITY, many = 0 WebKit Using System Malloc_0xe334000 18.5M 1040K 1040K 16K 5592 853K 203K 20% 32 WebKit Using System Malloc_0xe334000 21.7M 3760K 3760K 2368K 20566 5921K 207K 4% 195 WebKit Using System Malloc_0xe334000 22.8M 4928K 4912K 2944K 25225 7826K 30K 1% 204 WebKit Using System Malloc_0xe334000 22.8M 1024K 1024K 6832K 25225 7826K 30K 1% 204 WebKit Using System Malloc_0xe334000 22.8M 992K 992K 6864K 25225 7826K 30K 1% 204 WebKit Using System Malloc_0xe334000 21.7M 6960K 6736K 128K 21587 5918K 946K 14% 209 WebKit Using System Malloc_0xe334000 21.7M 6960K 6736K 128K 21587 5918K 946K 14% 209 WebKit Using System Malloc_0xe334000 21.7M 6960K 6736K 128K 21587 5918K 946K 14% 209 WebKit Using System Malloc_0xe334000 21.8M 6960K 6848K 128K 23709 6428K 548K 8% 208 WebKit Using System Malloc_0xe334000 21.8M 6960K 6848K 128K 23709 6428K 548K 8% 208 WebKit Using System Malloc_0xe334000 21.8M 6960K 6848K 128K 23709 6428K 548K 8% 208 WebKit Using System Malloc_0xe334000 21.6M 6848K 6672K 128K 23213 6149K 651K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6848K 6672K 128K 23213 6149K 651K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6848K 6672K 128K 23213 6149K 651K 10% 202 WebKit Using System Malloc_0xe334000 22.0M 7184K 7008K 128K 23801 6652K 484K 7% 208 WebKit Using System Malloc_0xe334000 22.0M 7184K 7008K 128K 23801 6652K 484K 7% 208 WebKit Using System Malloc_0xe334000 21.7M 6912K 6752K 128K 24338 6457K 423K 7% 209 WebKit Using System Malloc_0xe334000 21.7M 6912K 6752K 128K 24338 6457K 423K 7% 209 WebKit Using System Malloc_0xe334000 21.7M 6912K 6752K 128K 24338 6457K 423K 7% 209 WebKit Using System Malloc_0xe334000 22.7M 7760K 7616K 128K 24202 7503K 241K 4% 205 WebKit Using System Malloc_0xe334000 22.7M 7760K 7616K 128K 24202 7503K 241K 4% 205 WebKit Using System Malloc_0xe334000 23.6M 8656K 8528K 128K 24683 8502K 154K 2% 206 WebKit Using System Malloc_0xe334000 22.7M 7712K 7568K 128K 24431 7472K 224K 3% 203 WebKit Using System Malloc_0xe334000 22.7M 7712K 7568K 128K 24431 7472K 224K 3% 203 WebKit Using System Malloc_0xe334000 22.0M 7248K 7104K 128K 25206 6787K 445K 7% 220 WebKit Using System Malloc_0xe334000 21.8M 6992K 6784K 144K 24012 6362K 566K 9% 212 WebKit Using System Malloc_0xe334000 21.8M 6288K 6096K 832K 24012 6362K 566K 9% 212 WebKit Using System Malloc_0xe334000 21.8M 6416K 6240K 720K 24330 6410K 550K 8% 213 WebKit Using System Malloc_0xe334000 21.6M 6784K 6592K 144K 23254 6018K 718K 11% 199 WebKit Using System Malloc_0xe334000 21.6M 6800K 6608K 144K 23708 6135K 617K 10% 200 WebKit Using System Malloc_0xe334000 21.7M 6880K 6656K 144K 23418 6101K 699K 11% 204 WebKit Using System Malloc_0xe334000 21.7M 6880K 6656K 144K 23418 6101K 699K 11% 204 WebKit Using System Malloc_0xe334000 21.7M 6880K 6656K 144K 23758 6140K 660K 10% 204 WebKit Using System Malloc_0xe334000 21.7M 6848K 6656K 144K 24031 6282K 518K 8% 205 WebKit Using System Malloc_0xe334000 21.7M 6848K 6656K 144K 24031 6282K 518K 8% 205 WebKit Using System Malloc_0xe334000 21.1M 6400K 6160K 144K 21961 5288K 1016K 17% 191 WebKit Using System Malloc_0xe334000 21.5M 6720K 6544K 144K 23923 6141K 547K 9% 196 WebKit Using System Malloc_0xe334000 21.5M 6720K 6544K 144K 23923 6141K 547K 9% 196 WebKit Using System Malloc_0xe334000 21.5M 6720K 6544K 144K 23923 6141K 547K 9% 196 WebKit Using System Malloc_0xe334000 21.5M 6592K 6528K 176K 24226 6191K 513K 8% 197 WebKit Using System Malloc_0xe334000 21.6M 6480K 6432K 304K 23179 5959K 777K 12% 199 WebKit Using System Malloc_0xe334000 21.6M 6480K 6432K 304K 23179 5959K 777K 12% 199 WebKit Using System Malloc_0xe334000 21.6M 6480K 6432K 304K 23179 5959K 777K 12% 199 WebKit Using System Malloc_0xe334000 21.6M 6480K 6432K 304K 23590 6047K 689K 11% 199 WebKit Using System Malloc_0xe334000 21.7M 6576K 6544K 304K 23581 6205K 643K 10% 203 WebKit Using System Malloc_0xe334000 21.7M 6704K 6688K 272K 24688 6518K 442K 7% 205 WebKit Using System Malloc_0xe334000 21.7M 6704K 6688K 272K 24688 6518K 442K 7% 205 WebKit Using System Malloc_0xe334000 21.7M 6704K 6688K 272K 24881 6532K 428K 7% 205 WebKit Using System Malloc_0xe334000 21.6M 6656K 6576K 256K 23405 6087K 745K 11% 203 WebKit Using System Malloc_0xe334000 21.6M 6656K 6576K 256K 23405 6087K 745K 11% 203 WebKit Using System Malloc_0xe334000 21.2M 6304K 6176K 256K 22167 5452K 980K 16% 198 WebKit Using System Malloc_0xe334000 21.6M 6624K 6592K 256K 24300 6293K 555K 9% 199 WebKit Using System Malloc_0xe334000 21.6M 6624K 6592K 256K 24300 6293K 555K 9% 199 WebKit Using System Malloc_0xe334000 21.6M 6624K 6592K 256K 24300 6293K 555K 9% 199 WebKit Using System Malloc_0xe334000 22.7M 7584K 7536K 256K 24654 7475K 317K 5% 206 WebKit Using System Malloc_0xe334000 22.7M 7584K 7536K 256K 24654 7475K 317K 5% 206 WebKit Using System Malloc_0xe334000 21.7M 6800K 6768K 256K 24456 6516K 508K 8% 208 WebKit Using System Malloc_0xe334000 21.7M 6752K 6704K 224K 23692 6228K 700K 11% 204 WebKit Using System Malloc_0xe334000 21.7M 6752K 6704K 224K 23692 6228K 700K 11% 204 WebKit Using System Malloc_0xe334000 21.8M 6864K 6800K 224K 24316 6447K 577K 9% 210 WebKit Using System Malloc_0xe334000 21.8M 6864K 6800K 224K 24316 6447K 577K 9% 210 WebKit Using System Malloc_0xe334000 22.0M 7040K 6976K 224K 25357 6817K 383K 6% 214 WebKit Using System Malloc_0xe334000 21.9M 6944K 6864K 224K 23736 6450K 638K 10% 202 WebKit Using System Malloc_0xe334000 22.1M 7104K 7072K 224K 25123 6991K 305K 5% 209 WebKit Using System Malloc_0xe334000 22.1M 7104K 7072K 224K 25123 6991K 305K 5% 209 WebKit Using System Malloc_0xe334000 21.7M 6768K 6704K 224K 23713 6228K 700K 11% 205 WebKit Using System Malloc_0xe334000 21.7M 6768K 6704K 224K 23713 6228K 700K 11% 205 WebKit Using System Malloc_0xe334000 21.7M 6768K 6704K 224K 23713 6228K 700K 11% 205 WebKit Using System Malloc_0xe334000 21.7M 6768K 6704K 224K 23713 6228K 700K 11% 205 WebKit Using System Malloc_0xe334000 21.7M 6752K 6736K 224K 24168 6341K 619K 9% 206 WebKit Using System Malloc_0xe334000 22.0M 7008K 6944K 208K 24214 6588K 564K 8% 206 WebKit Using System Malloc_0xe334000 22.0M 7008K 6944K 208K 24214 6588K 564K 8% 206 WebKit Using System Malloc_0xe334000 21.5M 6560K 6464K 208K 24012 6087K 585K 9% 195 WebKit Using System Malloc_0xe334000 21.5M 6560K 6464K 208K 24012 6087K 585K 9% 195 WebKit Using System Malloc_0xe334000 21.5M 6560K 6480K 208K 24464 6174K 514K 8% 195 WebKit Using System Malloc_0xe334000 21.3M 6400K 6272K 208K 23097 5647K 833K 13% 198 WebKit Using System Malloc_0xe334000 21.3M 6416K 6304K 208K 23459 5718K 794K 13% 199 WebKit Using System Malloc_0xe334000 21.7M 6816K 6768K 208K 24583 6431K 545K 8% 202 WebKit Using System Malloc_0xe334000 21.7M 6816K 6768K 208K 24583 6431K 545K 8% 202 WebKit Using System Malloc_0xe334000 21.7M 6816K 6768K 208K 24994 6506K 470K 7% 202 WebKit Using System Malloc_0xe334000 21.6M 6752K 6640K 208K 24091 6214K 634K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6752K 6640K 208K 24091 6214K 634K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6752K 6640K 208K 24091 6214K 634K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6752K 6640K 208K 24091 6214K 634K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6752K 6640K 208K 24083 6214K 634K 10% 202 WebKit Using System Malloc_0xe334000 21.6M 6752K 6640K 208K 24083 6214K 634K 10% 202 WebKit Using System Malloc_0xe334000 21.9M 7008K 6928K 208K 25427 6689K 447K 7% 208 WebKit Using System Malloc_0xe334000 21.9M 6928K 6832K 208K 24402 6492K 548K 8% 213 WebKit Using System Malloc_0xe334000 21.6M 6720K 6656K 208K 24338 6326K 538K 8% 200 WebKit Using System Malloc_0xe334000 21.6M 6720K 6656K 208K 24651 6360K 504K 8% 200 WebKit Using System Malloc_0xe334000 21.6M 6720K 6576K 208K 22579 5837K 947K 14% 202 WebKit Using System Malloc_0xe334000 21.6M 6720K 6576K 208K 22579 5837K 947K 14% 202 WebKit Using System Malloc_0xe334000 21.7M 6768K 6656K 192K 23838 6107K 741K 11% 205 WebKit Using System Malloc_0xe334000 21.8M 2960K 2960K 4064K 25182 6591K 433K 7% 208 WebKit Using System Malloc_0xe334000 21.8M 2304K 2304K 4720K 25178 6591K 433K 7% 208 WebKit Using System Malloc_0xe334000 21.8M 2240K 2240K 4784K 25178 6591K 433K 7% 208 WebKit Using System Malloc_0xe334000 21.8M 6192K 6192K 832K 25264 6597K 427K 7% 208 WebKit Using System Malloc_0xe334000 21.4M 6448K 6336K 304K 24644 5907K 733K 12% 199 WebKit Using System Malloc_0xe334000 21.5M 6576K 6528K 256K 24572 6160K 624K 10% 209 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25466 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25466 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25466 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25466 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 WebKit Using System Malloc_0xe334000 21.8M 6800K 6784K 256K 25458 6625K 415K 6% 212 AGE = 7, many = 100, most case, 1-2, ~20 WebKit Using System Malloc_0xcde8000 18.1M 384K 384K 0K 1003 166K 218K 57% 8 WebKit Using System Malloc_0xcde8000 20.6M 4336K 4336K 320K 15585 4297K 359K 8% 145 WebKit Using System Malloc_0xcde8000 21.7M 560K 560K 5632K 20572 5969K 223K 4% 198 WebKit Using System Malloc_0xcde8000 21.7M 3728K 3728K 2512K 21058 6045K 195K 4% 199 WebKit Using System Malloc_0xcde8000 22.5M 7232K 7216K 208K 24548 7444K 0K 0% 194 WebKit Using System Malloc_0xcde8000 22.5M 6432K 6416K 1008K 24548 7444K 0K 0% 194 WebKit Using System Malloc_0xcde8000 22.5M 6432K 6416K 1008K 24548 7444K 0K 0% 194 WebKit Using System Malloc_0xcde8000 21.5M 6672K 6608K 64K 21630 5980K 692K 11% 194 WebKit Using System Malloc_0xcde8000 21.5M 6672K 6608K 64K 21630 5980K 692K 11% 194 WebKit Using System Malloc_0xcde8000 21.3M 6496K 6400K 32K 20408 5602K 830K 13% 187 WebKit Using System Malloc_0xcde8000 21.3M 6496K 6400K 32K 20408 5602K 830K 13% 187 WebKit Using System Malloc_0xcde8000 21.7M 6944K 6816K 32K 19647 5952K 896K 14% 197 WebKit Using System Malloc_0xcde8000 21.7M 6944K 6816K 32K 19647 5952K 896K 14% 197 WebKit Using System Malloc_0xcde8000 22.2M 7376K 7184K 32K 20153 6551K 665K 10% 203 WebKit Using System Malloc_0xcde8000 21.7M 6016K 5920K 688K 19197 5813K 795K 13% 189 WebKit Using System Malloc_0xcde8000 21.7M 5632K 5600K 1024K 19681 5916K 708K 11% 189 WebKit Using System Malloc_0xcde8000 21.4M 6432K 6400K 112K 19851 5678K 834K 13% 194 WebKit Using System Malloc_0xcde8000 21.4M 6432K 6400K 112K 19851 5678K 834K 13% 194 WebKit Using System Malloc_0xcde8000 21.5M 6448K 6416K 112K 20149 5720K 808K 13% 195 WebKit Using System Malloc_0xcde8000 21.2M 6208K 6128K 112K 19604 5385K 855K 14% 183 WebKit Using System Malloc_0xcde8000 21.2M 6208K 6128K 112K 19604 5385K 855K 14% 183 WebKit Using System Malloc_0xcde8000 21.2M 6208K 6128K 112K 19604 5385K 855K 14% 183 WebKit Using System Malloc_0xcde8000 21.2M 6208K 6128K 112K 19600 5385K 855K 14% 183 WebKit Using System Malloc_0xcde8000 22.4M 7360K 7296K 96K 20700 6952K 440K 6% 193 WebKit Using System Malloc_0xcde8000 22.4M 7360K 7296K 96K 20700 6952K 440K 6% 193 WebKit Using System Malloc_0xcde8000 22.5M 7392K 7328K 96K 20995 7009K 415K 6% 195 WebKit Using System Malloc_0xcde8000 22.1M 7280K 7184K 64K 19834 6329K 919K 13% 205 WebKit Using System Malloc_0xcde8000 22.1M 7280K 7184K 64K 19834 6329K 919K 13% 205 WebKit Using System Malloc_0xcde8000 21.5M 6608K 6496K 64K 19019 5674K 886K 14% 197 WebKit Using System Malloc_0xcde8000 21.5M 6608K 6496K 64K 19019 5674K 886K 14% 197 WebKit Using System Malloc_0xcde8000 21.5M 6608K 6496K 64K 19019 5674K 886K 14% 197 WebKit Using System Malloc_0xcde8000 21.5M 6640K 6512K 64K 18002 5373K 1203K 19% 200 WebKit Using System Malloc_0xcde8000 21.5M 6640K 6512K 64K 18002 5373K 1203K 19% 200 WebKit Using System Malloc_0xcde8000 21.3M 6464K 6352K 64K 19455 5581K 835K 14% 188 WebKit Using System Malloc_0xcde8000 21.3M 6464K 6352K 64K 19455 5581K 835K 14% 188 WebKit Using System Malloc_0xcde8000 21.6M 6784K 6640K 32K 19785 5849K 823K 13% 192 WebKit Using System Malloc_0xcde8000 21.6M 6768K 6624K 48K 19785 5849K 823K 13% 192 WebKit Using System Malloc_0xcde8000 21.6M 6768K 6624K 48K 19785 5849K 823K 13% 192 WebKit Using System Malloc_0xcde8000 21.6M 6768K 6624K 48K 19785 5849K 823K 13% 192 WebKit Using System Malloc_0xcde8000 21.3M 6464K 6304K 48K 19829 5566K 786K 13% 186 WebKit Using System Malloc_0xcde8000 21.3M 6464K 6304K 48K 19829 5566K 786K 13% 186 WebKit Using System Malloc_0xcde8000 21.3M 6480K 6320K 48K 20153 5614K 754K 12% 187 WebKit Using System Malloc_0xcde8000 21.6M 6768K 6560K 48K 20087 5709K 899K 14% 196 WebKit Using System Malloc_0xcde8000 21.5M 6688K 6592K 32K 21280 5974K 650K 10% 203 WebKit Using System Malloc_0xcde8000 21.5M 6688K 6592K 32K 21280 5974K 650K 10% 203 WebKit Using System Malloc_0xcde8000 21.5M 6688K 6592K 32K 21568 5999K 625K 10% 203 WebKit Using System Malloc_0xcde8000 21.4M 6576K 6400K 32K 19929 5480K 952K 15% 194 WebKit Using System Malloc_0xcde8000 21.4M 6576K 6400K 32K 19929 5480K 952K 15% 194 WebKit Using System Malloc_0xcde8000 21.0M 6256K 6016K 32K 18947 4963K 1085K 18% 189 WebKit Using System Malloc_0xcde8000 21.3M 6464K 6288K 32K 20115 5529K 791K 13% 184 WebKit Using System Malloc_0xcde8000 21.3M 6464K 6288K 32K 20115 5529K 791K 13% 184 WebKit Using System Malloc_0xcde8000 21.9M 7024K 6880K 32K 21624 6375K 537K 8% 203 WebKit Using System Malloc_0xcde8000 21.9M 7024K 6880K 32K 21624 6375K 537K 8% 203 WebKit Using System Malloc_0xcde8000 21.2M 6448K 6256K 32K 20089 5491K 797K 13% 194 WebKit Using System Malloc_0xcde8000 21.5M 6656K 6464K 32K 20399 5825K 671K 11% 196 WebKit Using System Malloc_0xcde8000 21.4M 6544K 6336K 32K 19118 5523K 845K 14% 193 WebKit Using System Malloc_0xcde8000 21.4M 6544K 6336K 32K 19118 5523K 845K 14% 193 AGE = 3, many = 120 WebKit Using System Malloc_0xe6dc000 18.5M 1072K 1072K 16K 5731 866K 222K 21% 32 WebKit Using System Malloc_0xe6dc000 21.8M 4384K 4384K 1952K 20571 6063K 273K 5% 204 WebKit Using System Malloc_0xe6dc000 22.8M 7920K 7856K 32K 25183 7885K 2752 1% 208 WebKit Using System Malloc_0xe6dc000 22.8M 1872K 1808K 6080K 25183 7885K 2752 1% 208 WebKit Using System Malloc_0xe6dc000 23.6M 7264K 7264K 1440K 26203 8818K 0K 0% 222 WebKit Using System Malloc_0xe6dc000 23.4M 7072K 7072K 1408K 26196 8593K 0K 0% 221 WebKit Using System Malloc_0xe6dc000 21.3M 6608K 6464K 48K 18779 5478K 1034K 16% 188 WebKit Using System Malloc_0xe6dc000 21.3M 6592K 6448K 64K 18779 5478K 1034K 16% 188 WebKit Using System Malloc_0xe6dc000 21.5M 6736K 6592K 64K 19472 5722K 934K 15% 190 WebKit Using System Malloc_0xe6dc000 21.7M 6976K 6640K 48K 17424 5587K 1101K 17% 197 WebKit Using System Malloc_0xe6dc000 21.9M 7072K 6768K 32K 19847 6187K 613K 10% 199 WebKit Using System Malloc_0xe6dc000 21.9M 7072K 6768K 32K 19847 6187K 613K 10% 199 WebKit Using System Malloc_0xe6dc000 22.1M 7248K 6944K 32K 20741 6485K 491K 8% 203 WebKit Using System Malloc_0xe6dc000 21.5M 6816K 6400K 32K 18207 5371K 1061K 17% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6784K 6464K 32K 20197 5835K 661K 11% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6784K 6464K 32K 20197 5835K 661K 11% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6768K 6464K 32K 20197 5835K 661K 11% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6768K 6464K 32K 20514 5866K 630K 10% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6768K 6464K 32K 20510 5865K 631K 10% 202 WebKit Using System Malloc_0xe6dc000 21.7M 6944K 6480K 32K 18054 5580K 932K 15% 200 WebKit Using System Malloc_0xe6dc000 21.7M 6976K 6528K 16K 18558 5702K 842K 13% 201 WebKit Using System Malloc_0xe6dc000 21.5M 6816K 6496K 16K 21109 5989K 523K 9% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6816K 6496K 16K 21109 5989K 523K 9% 202 WebKit Using System Malloc_0xe6dc000 21.5M 6832K 6512K 16K 21397 6030K 498K 8% 203 WebKit Using System Malloc_0xe6dc000 21.4M 6656K 6272K 16K 19838 5591K 697K 12% 191 WebKit Using System Malloc_0xe6dc000 21.4M 5936K 5904K 400K 18999 5542K 762K 13% 195 WebKit Using System Malloc_0xe6dc000 21.4M 5936K 5904K 400K 18999 5542K 762K 13% 195 WebKit Using System Malloc_0xe6dc000 21.4M 5936K 5904K 400K 19302 5572K 732K 12% 195 WebKit Using System Malloc_0xe6dc000 21.4M 6320K 6192K 32K 17450 5109K 1115K 18% 195 WebKit Using System Malloc_0xe6dc000 21.6M 6512K 6416K 32K 18932 5611K 837K 13% 199 WebKit Using System Malloc_0xe6dc000 21.5M 6432K 6400K 64K 19556 5770K 694K 11% 199 WebKit Using System Malloc_0xe6dc000 21.5M 6432K 6400K 64K 19556 5770K 694K 11% 199 WebKit Using System Malloc_0xe6dc000 21.3M 6320K 6224K 48K 19044 5517K 755K 13% 189 WebKit Using System Malloc_0xe6dc000 21.3M 6320K 6224K 48K 19044 5517K 755K 13% 189 WebKit Using System Malloc_0xe6dc000 21.3M 6320K 6224K 48K 19044 5517K 755K 13% 189 WebKit Using System Malloc_0xe6dc000 22.5M 7360K 7312K 16K 19896 6823K 505K 7% 197 WebKit Using System Malloc_0xe6dc000 22.5M 7360K 7312K 16K 19896 6823K 505K 7% 197 WebKit Using System Malloc_0xe6dc000 22.7M 7648K 7584K 0K 19878 7080K 504K 7% 208 WebKit Using System Malloc_0xe6dc000 22.7M 7648K 7584K 0K 19878 7080K 504K 7% 208 WebKit Using System Malloc_0xe6dc000 22.7M 7648K 7584K 0K 19878 7080K 504K 7% 208 WebKit Using System Malloc_0xe6dc000 22.7M 7648K 7584K 0K 19878 7080K 504K 7% 208 WebKit Using System Malloc_0xe6dc000 22.7M 7648K 7584K 0K 20102 7100K 484K 7% 208 WebKit Using System Malloc_0xe6dc000 23.1M 8080K 8032K 0K 21106 7741K 291K 4% 216 WebKit Using System Malloc_0xe6dc000 21.8M 6992K 6784K 0K 19033 5962K 822K 13% 204 WebKit Using System Malloc_0xe6dc000 21.8M 6992K 6784K 0K 19033 5962K 822K 13% 204 WebKit Using System Malloc_0xe6dc000 21.8M 6960K 6784K 0K 19033 5962K 822K 13% 204 WebKit Using System Malloc_0xe6dc000 21.8M 6960K 6784K 0K 19033 5962K 822K 13% 204 WebKit Using System Malloc_0xe6dc000 21.9M 6928K 6720K 0K 20143 6220K 500K 8% 198 WebKit Using System Malloc_0xe6dc000 21.9M 6928K 6720K 0K 20143 6220K 500K 8% 198 WebKit Using System Malloc_0xe6dc000 21.9M 6928K 6720K 0K 20143 6220K 500K 8% 198 WebKit Using System Malloc_0xe6dc000 21.4M 6528K 6224K 0K 17839 5237K 987K 16% 191 WebKit Using System Malloc_0xe6dc000 21.4M 6528K 6224K 0K 17839 5237K 987K 16% 191 WebKit Using System Malloc_0xe6dc000 21.4M 6560K 6320K 0K 20185 5719K 601K 10% 195 WebKit Using System Malloc_0xe6dc000 21.4M 6560K 6320K 0K 20185 5719K 601K 10% 195 WebKit Using System Malloc_0xe6dc000 21.4M 6576K 6240K 0K 18642 5461K 779K 13% 197 WebKit Using System Malloc_0xe6dc000 21.5M 6624K 6384K 0K 18825 5570K 814K 13% 196 WebKit Using System Malloc_0xe6dc000 21.5M 6624K 6384K 0K 18825 5570K 814K 13% 196 WebKit Using System Malloc_0xe6dc000 21.5M 6624K 6384K 0K 18825 5570K 814K 13% 196 WebKit Using System Malloc_0xe6dc000 21.5M 6624K 6384K 0K 18825 5570K 814K 13% 196 WebKit Using System Malloc_0xe6dc000 21.5M 6624K 6384K 0K 18817 5570K 814K 13% 196 WebKit Using System Malloc_0xe6dc000 21.8M 6848K 6592K 0K 19694 6009K 583K 9% 194 WebKit Using System Malloc_0xe6dc000 21.8M 6848K 6592K 0K 19694 6009K 583K 9% 194 WebKit Using System Malloc_0xe6dc000 21.8M 6848K 6592K 0K 19694 6009K 583K 9% 194 WebKit Using System Malloc_0xe6dc000 21.8M 6848K 6592K 0K 19694 6009K 583K 9% 194 WebKit Using System Malloc_0xe6dc000 21.8M 6848K 6592K 0K 19686 6008K 584K 9% 194 WebKit Using System Malloc_0xe6dc000 21.8M 6928K 6768K 0K 20095 6098K 670K 10% 200 WebKit Using System Malloc_0xe6dc000 21.8M 6928K 6768K 0K 20095 6098K 670K 10% 200 WebKit Using System Malloc_0xe6dc000 21.5M 6656K 6512K 0K 19821 5727K 785K 13% 197 WebKit Using System Malloc_0xe6dc000 21.5M 6656K 6512K 0K 19821 5727K 785K 13% 197 WebKit Using System Malloc_0xe6dc000 21.5M 6656K 6512K 0K 19821 5727K 785K 13% 197 WebKit Using System Malloc_0xe6dc000 21.4M 6624K 6368K 0K 18165 5313K 1055K 17% 196 WebKit Using System Malloc_0xe6dc000 21.4M 6624K 6368K 0K 18165 5313K 1055K 17% 196 WebKit Using System Malloc_0xe6dc000 22.5M 7520K 7344K 0K 20049 6865K 479K 7% 197 WebKit Using System Malloc_0xe6dc000 22.5M 7520K 7344K 0K 20049 6865K 479K 7% 197 WebKit Using System Malloc_0xe6dc000 22.5M 7520K 7344K 0K 20049 6865K 479K 7% 197 WebKit Using System Malloc_0xe6dc000 22.5M 7520K 7344K 0K 20049 6865K 479K 7% 197 WebKit Using System Malloc_0xe6dc000 22.5M 7536K 7360K 0K 20332 6906K 454K 7% 198 WebKit Using System Malloc_0xe6dc000 22.5M 7616K 7408K 0K 19998 6931K 477K 7% 200 WebKit Using System Malloc_0xe6dc000 22.5M 7616K 7408K 0K 19998 6931K 477K 7% 200 WebKit Using System Malloc_0xe6dc000 21.4M 6624K 6240K 0K 17495 5188K 1052K 17% 197 WebKit Using System Malloc_0xe6dc000 21.4M 6624K 6240K 0K 17963 5260K 980K 16% 197 WebKit Using System Malloc_0xe6dc000 21.7M 6912K 6528K 0K 19835 5752K 776K 12% 207 WebKit Using System Malloc_0xe6dc000 22.5M 7648K 7536K 0K 21923 7255K 281K 4% 201 WebKit Using System Malloc_0xe6dc000 22.5M 7648K 7536K 0K 21923 7255K 281K 4% 201 WebKit Using System Malloc_0xe6dc000 22.9M 7968K 7888K 0K 22831 7672K 216K 3% 216 WebKit Using System Malloc_0xe6dc000 21.6M 6816K 6608K 0K 19419 5674K 934K 15% 207 WebKit Using System Malloc_0xe6dc000 21.6M 6816K 6608K 0K 19419 5674K 934K 15% 207 WebKit Using System Malloc_0xe6dc000 21.6M 6816K 6608K 0K 19893 5776K 832K 13% 207 WebKit Using System Malloc_0xe6dc000 21.5M 6720K 6560K 0K 18873 5627K 933K 15% 202 AGE = 2, many = 200 WebKit Using System Malloc_0xac28000 18.1M 176K 176K 240K 1003 166K 250K 61% 8 WebKit Using System Malloc_0xac28000 20.3M 4112K 4080K 112K 13902 3774K 418K 10% 138 WebKit Using System Malloc_0xac28000 21.7M 1712K 1712K 4448K 20565 5921K 239K 4% 195 WebKit Using System Malloc_0xac28000 21.7M 656K 656K 5504K 20565 5921K 239K 4% 195 WebKit Using System Malloc_0xac28000 21.7M 4128K 4128K 2096K 21050 5997K 227K 4% 196 WebKit Using System Malloc_0xac28000 22.3M 6672K 6608K 208K 18484 6425K 391K 6% 184 WebKit Using System Malloc_0xac28000 22.3M 6800K 6752K 112K 19704 6602K 262K 4% 185 WebKit Using System Malloc_0xac28000 23.0M 7616K 7568K 16K 20873 7503K 81K 2% 206 WebKit Using System Malloc_0xac28000 23.0M 7632K 7584K 16K 21121 7536K 64K 1% 207 WebKit Using System Malloc_0xac28000 21.4M 6320K 6208K 0K 18072 5385K 823K 14% 194 WebKit Using System Malloc_0xac28000 21.4M 6320K 6208K 0K 18072 5385K 823K 14% 194 WebKit Using System Malloc_0xac28000 21.4M 6336K 6240K 0K 18713 5520K 720K 12% 195 WebKit Using System Malloc_0xac28000 21.3M 6240K 6160K 0K 19277 5570K 590K 10% 188 WebKit Using System Malloc_0xac28000 21.6M 6496K 6416K 0K 18618 5710K 706K 12% 189 WebKit Using System Malloc_0xac28000 21.6M 6496K 6416K 0K 18618 5710K 706K 12% 189 WebKit Using System Malloc_0xac28000 21.7M 6624K 6544K 0K 18994 5841K 703K 11% 197 WebKit Using System Malloc_0xac28000 21.7M 6624K 6544K 0K 18994 5841K 703K 11% 197 WebKit Using System Malloc_0xac28000 21.4M 6320K 6240K 0K 19107 5516K 724K 12% 191 WebKit Using System Malloc_0xac28000 21.4M 6320K 6240K 0K 19365 5545K 695K 12% 191 WebKit Using System Malloc_0xac28000 21.7M 6608K 6496K 0K 18847 5681K 815K 13% 200 WebKit Using System Malloc_0xac28000 21.2M 6112K 6064K 0K 21036 5650K 414K 7% 183 WebKit Using System Malloc_0xac28000 21.4M 6304K 6208K 0K 18908 5500K 708K 12% 189 WebKit Using System Malloc_0xac28000 21.4M 6304K 6208K 0K 18908 5500K 708K 12% 189 WebKit Using System Malloc_0xac28000 21.4M 6368K 6288K 0K 18769 5450K 838K 14% 193 WebKit Using System Malloc_0xac28000 21.4M 6368K 6288K 0K 18769 5450K 838K 14% 193 WebKit Using System Malloc_0xac28000 21.4M 6368K 6288K 0K 18769 5450K 838K 14% 193 WebKit Using System Malloc_0xac28000 21.8M 6640K 6608K 16K 20304 6100K 524K 8% 198 WebKit Using System Malloc_0xac28000 21.8M 6640K 6608K 16K 20304 6100K 524K 8% 198 WebKit Using System Malloc_0xac28000 21.5M 6416K 6384K 16K 20165 5811K 589K 10% 196 WebKit Using System Malloc_0xac28000 21.5M 6416K 6384K 16K 20165 5811K 589K 10% 196 WebKit Using System Malloc_0xac28000 21.5M 6480K 6368K 0K 18235 5386K 982K 16% 200 WebKit Using System Malloc_0xac28000 21.5M 6480K 6368K 0K 18235 5386K 982K 16% 200 WebKit Using System Malloc_0xac28000 21.6M 6528K 6464K 0K 19342 5778K 686K 11% 188 WebKit Using System Malloc_0xac28000 21.6M 6528K 6464K 0K 19342 5778K 686K 11% 188 WebKit Using System Malloc_0xac28000 21.6M 6528K 6464K 0K 19342 5778K 686K 11% 188 WebKit Using System Malloc_0xac28000 21.7M 6688K 6464K 0K 17059 5579K 885K 14% 197 WebKit Using System Malloc_0xac28000 21.7M 6688K 6464K 0K 17059 5579K 885K 14% 197 WebKit Using System Malloc_0xac28000 21.7M 6704K 6512K 0K 18455 5782K 730K 12% 198 AGE = 1, WebKit Using System Malloc_0xebe4000 18.1M 400K 400K 0K 1003 166K 234K 59% 8 WebKit Using System Malloc_0xebe4000 20.3M 3984K 3984K 256K 13785 3765K 475K 12% 138 WebKit Using System Malloc_0xebe4000 21.7M 4480K 4464K 1680K 20572 5953K 191K 4% 197 WebKit Using System Malloc_0xebe4000 21.7M 752K 752K 5392K 20572 5953K 191K 4% 197 WebKit Using System Malloc_0xebe4000 21.7M 656K 656K 5488K 20572 5953K 191K 4% 197 WebKit Using System Malloc_0xebe4000 21.7M 4032K 4016K 2176K 21057 6029K 163K 3% 198 WebKit Using System Malloc_0xebe4000 21.1M 5168K 5056K 688K 17601 5074K 670K 12% 174 WebKit Using System Malloc_0xebe4000 21.2M 5376K 5280K 528K 18837 5284K 524K 10% 177 WebKit Using System Malloc_0xebe4000 21.0M 5824K 5680K 64K 18864 5156K 588K 11% 187 WebKit Using System Malloc_0xebe4000 21.0M 5824K 5696K 64K 19331 5216K 544K 10% 187 WebKit Using System Malloc_0xebe4000 21.6M 6272K 6096K 48K 17801 5609K 535K 9% 184 WebKit Using System Malloc_0xebe4000 21.6M 6272K 6096K 48K 17801 5609K 535K 9% 184 WebKit Using System Malloc_0xebe4000 21.6M 6272K 6096K 48K 17801 5609K 535K 9% 184 WebKit Using System Malloc_0xebe4000 20.8M 5648K 5488K 32K 15781 4414K 1106K 21% 181 WebKit Using System Malloc_0xebe4000 22.4M 7152K 6944K 32K 20470 6812K 164K 3% 193 WebKit Using System Malloc_0xebe4000 22.4M 7152K 6944K 32K 20467 6811K 165K 3% 193 WebKit Using System Malloc_0xebe4000 22.3M 7056K 6832K 32K 19811 6640K 224K 4% 187 WebKit Using System Malloc_0xebe4000 22.3M 7056K 6832K 32K 19811 6640K 224K 4% 187 WebKit Using System Malloc_0xebe4000 22.3M 7296K 7008K 32K 18605 6592K 448K 7% 188 WebKit Using System Malloc_0xebe4000 22.6M 7552K 7328K 16K 20547 7119K 225K 4% 196 WebKit Using System Malloc_0xebe4000 22.9M 7872K 7680K 16K 21021 7554K 142K 2% 204 WebKit Using System Malloc_0xebe4000 22.9M 7872K 7680K 16K 21021 7554K 142K 2% 204 WebKit Using System Malloc_0xebe4000 22.9M 7872K 7680K 16K 21013 7553K 143K 2% 204 WebKit Using System Malloc_0xebe4000 23.0M 7904K 7712K 16K 21256 7602K 126K 2% 206 WebKit Using System Malloc_0xebe4000 21.3M 6416K 6160K 0K 17579 5252K 908K 15% 185 WebKit Using System Malloc_0xebe4000 21.3M 6464K 6256K 0K 18954 5474K 782K 13% 187 WebKit Using System Malloc_0xebe4000 21.4M 6496K 6336K 0K 19661 5694K 642K 11% 192 WebKit Using System Malloc_0xebe4000 21.4M 6496K 6336K 0K 19661 5694K 642K 11% 192 WebKit Using System Malloc_0xebe4000 21.4M 6512K 6352K 0K 19952 5735K 617K 10% 193 WebKit Using System Malloc_0xebe4000 21.6M 6704K 6352K 0K 17214 5427K 925K 15% 190 WebKit Using System Malloc_0xebe4000 21.8M 6864K 6608K 0K 19874 6125K 483K 8% 195 WebKit Using System Malloc_0xebe4000 21.8M 6864K 6608K 0K 19874 6125K 483K 8% 195 WebKit Using System Malloc_0xebe4000 21.8M 6864K 6608K 0K 19874 6125K 483K 8% 195 WebKit Using System Malloc_0xebe4000 21.8M 6864K 6608K 0K 19874 6125K 483K 8% 195 WebKit Using System Malloc_0xebe4000 21.8M 6864K 6608K 0K 19874 6125K 483K 8% 195 WebKit Using System Malloc_0xebe4000 21.8M 6864K 6608K 0K 19866 6125K 483K 8% 195 WebKit Using System Malloc_0xebe4000 21.4M 6576K 6208K 0K 16702 5126K 1082K 18% 195 WebKit Using System Malloc_0xebe4000 21.4M 6576K 6208K 0K 16702 5126K 1082K 18% 195 WebKit Using System Malloc_0xebe4000 21.4M 6576K 6208K 0K 16702 5126K 1082K 18% 195 WebKit Using System Malloc_0xebe4000 21.4M 6576K 6208K 0K 16702 5126K 1082K 18% 195 WebKit Using System Malloc_0xebe4000 21.2M 6352K 6128K 0K 18710 5320K 808K 14% 182 WebKit Using System Malloc_0xebe4000 21.2M 6352K 6128K 0K 18710 5320K 808K 14% 182 WebKit Using System Malloc_0xebe4000 21.2M 6352K 6128K 0K 18710 5320K 808K 14% 182 WebKit Using System Malloc_0xebe4000 21.6M 6736K 6336K 0K 16805 5372K 964K 16% 189 WebKit Using System Malloc_0xebe4000 21.6M 6736K 6336K 0K 16805 5372K 964K 16% 189 WebKit Using System Malloc_0xebe4000 21.5M 6656K 6496K 0K 20502 5891K 605K 10% 197 WebKit Using System Malloc_0xebe4000 21.5M 6656K 6496K 0K 20502 5891K 605K 10% 197 WebKit Using System Malloc_0xebe4000 21.5M 6656K 6496K 0K 20498 5891K 605K 10% 197 WebKit Using System Malloc_0xebe4000 21.5M 6656K 6496K 0K 20498 5891K 605K 10% 197 WebKit Using System Malloc_0xebe4000 21.5M 6656K 6496K 0K 20494 5891K 605K 10% 197 WebKit Using System Malloc_0xebe4000 21.7M 6832K 6672K 0K 21280 6179K 493K 8% 201 WebKit Using System Malloc_0xebe4000 21.4M 6544K 6192K 0K 17040 5289K 903K 15% 193 WebKit Using System Malloc_0xebe4000 21.4M 6528K 6192K 0K 17040 5289K 903K 15% 193 WebKit Using System Malloc_0xebe4000 21.4M 6528K 6192K 0K 17040 5289K 903K 15% 193 WebKit Using System Malloc_0xebe4000 21.8M 6784K 6576K 0K 20108 6089K 487K 8% 190 WebKit Using System Malloc_0xebe4000 21.8M 6784K 6576K 0K 20108 6089K 487K 8% 190 WebKit Using System Malloc_0xebe4000 21.8M 6784K 6576K 0K 20108 6089K 487K 8% 190 WebKit Using System Malloc_0xebe4000 21.8M 6784K 6576K 0K 20108 6089K 487K 8% 190 WebKit Using System Malloc_0xebe4000 21.8M 6784K 6576K 0K 20100 6089K 487K 8% 190 WebKit Using System Malloc_0xebe4000 21.3M 6400K 6048K 0K 17563 5127K 921K 16% 187 WebKit Using System Malloc_0xebe4000 21.3M 6400K 6048K 0K 17563 5127K 921K 16% 187 WebKit Using System Malloc_0xebe4000 21.3M 6400K 6048K 0K 17563 5127K 921K 16% 187 WebKit Using System Malloc_0xebe4000 21.3M 6400K 6048K 0K 17563 5127K 921K 16% 187 WebKit Using System Malloc_0xebe4000 20.9M 6096K 5456K 0K 12619 4203K 1253K 23% 183 WebKit Using System Malloc_0xebe4000 21.5M 6672K 6144K 0K 18345 5460K 684K 12% 196 WebKit Using System Malloc_0xebe4000 21.2M 6400K 6144K 0K 20052 5526K 618K 11% 184 WebKit Using System Malloc_0xebe4000 21.2M 6400K 6144K 0K 20052 5526K 618K 11% 184 WebKit Using System Malloc_0xebe4000 21.2M 6400K 6144K 0K 20052 5526K 618K 11% 184 WebKit Using System Malloc_0xebe4000 22.3M 7376K 7152K 0K 18897 6615K 537K 8% 188 WebKit Using System Malloc_0xebe4000 22.3M 7376K 7152K 0K 18897 6615K 537K 8% 188 WebKit Using System Malloc_0xebe4000 22.3M 7376K 7152K 0K 18897 6615K 537K 8% 188 WebKit Using System Malloc_0xebe4000 22.3M 7376K 7152K 0K 18897 6615K 537K 8% 188 WebKit Using System Malloc_0xebe4000 22.3M 7376K 7152K 0K 18897 6615K 537K 8% 188 WebKit Using System Malloc_0xebe4000 22.4M 7408K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7408K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7408K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7408K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7408K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 19860 6784K 416K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 22.4M 7328K 7200K 0K 20082 6799K 401K 6% 190 WebKit Using System Malloc_0xebe4000 23.1M 7952K 7856K 0K 21373 7686K 170K 3% 212 WebKit Using System Malloc_0xebe4000 21.3M 6336K 6128K 0K 15738 4967K 1161K 19% 188 WebKit Using System Malloc_0xebe4000 21.3M 6336K 6128K 0K 15738 4967K 1161K 19% 188 WebKit Using System Malloc_0xebe4000 21.3M 6368K 6160K 0K 17123 5187K 973K 16% 190 WebKit Using System Malloc_0xebe4000 21.2M 6272K 6064K 0K 17541 5192K 872K 15% 182 WebKit Using System Malloc_0xebe4000 21.2M 6272K 6064K 0K 17541 5192K 872K 15% 182 WebKit Using System Malloc_0xebe4000 21.2M 6272K 6064K 0K 17541 5192K 872K 15% 182 WebKit Using System Malloc_0xebe4000 21.2M 6272K 6064K 0K 17541 5192K 872K 15% 182 WebKit Using System Malloc_0xebe4000 21.3M 6448K 6128K 0K 16562 5069K 1059K 18% 187 WebKit Using System Malloc_0xebe4000 21.3M 6448K 6128K 0K 16562 5069K 1059K 18% 187 WebKit Using System Malloc_0xebe4000 21.0M 6208K 5680K 0K 14159 4545K 1135K 20% 184 WebKit Using System Malloc_0xebe4000 21.2M 6368K 6016K 0K 19274 5438K 578K 10% 181 WebKit Using System Malloc_0xebe4000 21.2M 6368K 6016K 0K 19274 5438K 578K 10% 181 AGE = 0, many = 300 WebKit Using System Malloc_0xabec000 18.1M 400K 400K 0K 1003 166K 234K 59% 8 WebKit Using System Malloc_0xabec000 20.3M 4272K 4112K 48K 13342 3677K 483K 12% 135 WebKit Using System Malloc_0xabec000 21.7M 5136K 5104K 1072K 20586 5956K 220K 4% 197 WebKit Using System Malloc_0xabec000 21.7M 912K 912K 5264K 20586 5956K 220K 4% 197 WebKit Using System Malloc_0xabec000 21.7M 4144K 4144K 2096K 21071 6031K 209K 4% 198 WebKit Using System Malloc_0xabec000 21.1M 5968K 5760K 0K 17877 5104K 656K 12% 174 WebKit Using System Malloc_0xabec000 21.1M 2608K 2496K 3264K 17877 5104K 656K 12% 174 WebKit Using System Malloc_0xabec000 21.1M 2608K 2496K 3264K 17877 5104K 656K 12% 174 WebKit Using System Malloc_0xabec000 21.1M 4416K 4416K 1424K 19108 5298K 542K 10% 176 WebKit Using System Malloc_0xabec000 21.0M 5936K 5824K 0K 17267 4896K 928K 16% 171 WebKit Using System Malloc_0xabec000 21.0M 5408K 5328K 496K 17267 4896K 928K 16% 171 WebKit Using System Malloc_0xabec000 21.1M 5504K 5424K 416K 17757 4976K 864K 15% 172 WebKit Using System Malloc_0xabec000 21.4M 6384K 6256K 16K 18092 5466K 806K 13% 178 WebKit Using System Malloc_0xabec000 21.4M 6384K 6256K 16K 18092 5466K 806K 13% 178 WebKit Using System Malloc_0xabec000 21.4M 6400K 6288K 16K 19342 5644K 660K 11% 179 WebKit Using System Malloc_0xabec000 21.5M 6480K 6368K 16K 18440 5548K 836K 14% 177 WebKit Using System Malloc_0xabec000 21.5M 6480K 6368K 16K 18440 5548K 836K 14% 177 WebKit Using System Malloc_0xabec000 21.4M 6640K 6272K 16K 15547 5086K 1202K 20% 189 WebKit Using System Malloc_0xabec000 21.4M 6640K 6272K 16K 15547 5086K 1202K 20% 189 WebKit Using System Malloc_0xabec000 21.4M 6640K 6272K 16K 15547 5086K 1202K 20% 189 WebKit Using System Malloc_0xabec000 21.0M 6368K 5712K 16K 14778 4612K 1116K 20% 185 WebKit Using System Malloc_0xabec000 21.1M 6368K 6000K 16K 18995 5249K 767K 13% 175 WebKit Using System Malloc_0xabec000 21.1M 6368K 6000K 16K 18995 5249K 767K 13% 175 WebKit Using System Malloc_0xabec000 21.1M 6368K 6000K 16K 19365 5286K 730K 13% 175 WebKit Using System Malloc_0xabec000 21.5M 6864K 6160K 16K 16593 5281K 895K 15% 193 WebKit Using System Malloc_0xabec000 21.2M 6384K 6160K 16K 21100 5620K 556K 10% 178 WebKit Using System Malloc_0xabec000 21.2M 6384K 6160K 16K 21100 5620K 556K 10% 178 WebKit Using System Malloc_0xabec000 21.2M 5584K 5568K 608K 21100 5620K 556K 10% 178 WebKit Using System Malloc_0xabec000 21.1M 6080K 5856K 80K 18276 5151K 785K 14% 177 WebKit Using System Malloc_0xabec000 21.1M 6080K 5856K 80K 18276 5151K 785K 14% 177 WebKit Using System Malloc_0xabec000 21.1M 6080K 5856K 80K 18276 5151K 785K 14% 177
Yusuke Suzuki
Comment 19 2019-06-06 21:46:42 PDT
(In reply to Yusuke Suzuki from comment #18) > Heuristics data. I think AGE = 7 case would be a good starting point. > AGE = 0 can reduce much memory, but it almost always requires reparsing 400 > functions per scene change. Not 400, 300. But still too large.
Yusuke Suzuki
Comment 20 2019-06-06 22:18:55 PDT
Created attachment 371560 [details] Patch WIP
Yusuke Suzuki
Comment 21 2019-06-06 22:51:35 PDT
Yusuke Suzuki
Comment 22 2019-06-07 00:07:23 PDT
Saam Barati
Comment 23 2019-06-07 00:31:44 PDT
Comment on attachment 371569 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=371569&action=review > Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295 > + if (VM::isInMiniMode() && !m_isGeneratedFromCache && !isBuiltinFunction()) { Can we add a different switch here to turn this feature on so we can test it in non mini mode? Maybe something like: “VM::useUnlinkedCodeBlockJettisoning()” By default, it will be true in mini mode. And we can also key that off a runtime option that you can set for some of our stress tests? Do some of our stress tests run in mini mode? > Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:310 > + vm.unlinkedFunctionExecutableSpace.set.remove(this); Where do you add to this set?
Yusuke Suzuki
Comment 24 2019-06-07 01:04:20 PDT
Comment on attachment 371569 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=371569&action=review >> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295 >> + if (VM::isInMiniMode() && !m_isGeneratedFromCache && !isBuiltinFunction()) { > > Can we add a different switch here to turn this feature on so we can test it in non mini mode? > > Maybe something like: “VM::useUnlinkedCodeBlockJettisoning()” > > By default, it will be true in mini mode. > > And we can also key that off a runtime option that you can set for some of our stress tests? > > Do some of our stress tests run in mini mode? Sounds nice. Added. >> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:310 >> + vm.unlinkedFunctionExecutableSpace.set.remove(this); > > Where do you add to this set? UnlinkedFunctionExecutable::unlinkedCodeBlockFor adds |this| to this set if it sets UnlinkedFunctionCodeBlock. This set is maintained before this patch.
EWS Watchlist
Comment 25 2019-06-07 02:09:24 PDT
Comment on attachment 371569 [details] Patch Attachment 371569 [details] did not pass jsc-ews (mac): Output: https://webkit-queues.webkit.org/results/12403825 New failing tests: mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases apiTests
Yusuke Suzuki
Comment 26 2019-06-07 16:14:49 PDT
Saam Barati
Comment 27 2019-06-09 13:06:12 PDT
Comment on attachment 371624 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=371624&action=review Nice! r=me > Source/JavaScriptCore/ChangeLog:54 > + UnlinkedCodeBlock link weak. We also use execution counter information to reset this age: CodeBlock will reset undelying UnlinkedCodeBlock's age if it has some > + execution. While this heuristic is quite simple, it has some effect in practice. Basically what happens with this heuristic is that UnlinkedFunctionExecutable -> "if it has some execution" -> "if it has executed" > Source/JavaScriptCore/ChangeLog:67 > + memory footprint of our target application from about 6.5 MB to about 5.9 MB. nice! > Source/JavaScriptCore/bytecode/CodeBlock.cpp:1377 > + if (!VM::isInMiniMode()) should call useUnlinkedCodeBlockJettisoning instead of miniMode. > Source/JavaScriptCore/bytecode/CodeBlock.cpp:1392 > + case JITType::DFGJIT: Doesn't the DFG have an execution counter? > Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:432 > + unsigned m_age : 3; nit: maybe static_assert (1 << 3 >= maxAge) ? > Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:151 > + // We also keep builtin functions. The builtin functions are foundamental library for JavaScript, which means that they can be used in random places of > + // the client scripts. It is safe to assume that builtin functions are used relatively frequently from many call sites. Are we sure this is the case? Wouldn't this be captured by your executionCount logic? > Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295 > + if (VM::useUnlinkedCodeBlockJettisoning() && !m_isGeneratedFromCache && !isBuiltinFunction()) { nit: You have this logic exactly in visitChildren too. Can you instead make it a helper method on UnlinkedFunctionExecutable? Maybe "codeBlockEdgeMayBeWeak" or "shouldConsiderCodeBlockEdgeAsWeak"
Yusuke Suzuki
Comment 28 2019-06-10 12:24:48 PDT
Comment on attachment 371624 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=371624&action=review Thank you for your review! >> Source/JavaScriptCore/ChangeLog:54 >> + execution. While this heuristic is quite simple, it has some effect in practice. Basically what happens with this heuristic is that UnlinkedFunctionExecutable -> > > "if it has some execution" -> "if it has executed" Fixed. >> Source/JavaScriptCore/ChangeLog:67 >> + memory footprint of our target application from about 6.5 MB to about 5.9 MB. > > nice! Fixed. >> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1377 >> + if (!VM::isInMiniMode()) > > should call useUnlinkedCodeBlockJettisoning instead of miniMode. Yeah, fixed. >> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1392 >> + case JITType::DFGJIT: > > Doesn't the DFG have an execution counter? DFG has the counter too. I thought that DFG and FTL are optimizing layer so that we do not need to handle ages here. But for now, we can do the same thing for DFG too. Fixed. >> Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:432 >> + unsigned m_age : 3; > > nit: maybe static_assert (1 << 3 >= maxAge) ? Added, nice. >> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:151 >> + // the client scripts. It is safe to assume that builtin functions are used relatively frequently from many call sites. > > Are we sure this is the case? Wouldn't this be captured by your executionCount logic? This flag is not added based on the empirical measurement, so as you said, maybe our aging mechanism covers this well. Removed. >> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295 >> + if (VM::useUnlinkedCodeBlockJettisoning() && !m_isGeneratedFromCache && !isBuiltinFunction()) { > > nit: You have this logic exactly in visitChildren too. Can you instead make it a helper method on UnlinkedFunctionExecutable? Maybe "codeBlockEdgeMayBeWeak" or "shouldConsiderCodeBlockEdgeAsWeak" Yeah, nice. Fixed.
Yusuke Suzuki
Comment 29 2019-06-10 12:50:04 PDT
Yusuke Suzuki
Comment 30 2019-06-10 13:02:34 PDT
Yusuke Suzuki
Comment 31 2019-06-10 13:10:43 PDT
Yusuke Suzuki
Comment 32 2019-06-10 13:11:48 PDT
I'll create a follow-up patch in https://bugs.webkit.org/show_bug.cgi?id=198727
Guillaume Emont
Comment 33 2019-06-12 07:51:40 PDT
This change might be what made stress/ftl-gettypedarrayoffset-wasteful.js slow to a point it times out on arm/linux. Reported on Bug 198754 and skipped the test for now.
Note You need to log in before you can comment on or make changes to this bug.