OLD | NEW |
---|---|
1 /* | 1 /* |
2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) | 2 Copyright (C) 1998 Lars Knoll (knoll@mpi-hd.mpg.de) |
3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) | 3 Copyright (C) 2001 Dirk Mueller (mueller@kde.org) |
4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) | 4 Copyright (C) 2002 Waldo Bastian (bastian@kde.org) |
5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) | 5 Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) |
6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. | 6 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved. |
7 | 7 |
8 This library is free software; you can redistribute it and/or | 8 This library is free software; you can redistribute it and/or |
9 modify it under the terms of the GNU Library General Public | 9 modify it under the terms of the GNU Library General Public |
10 License as published by the Free Software Foundation; either | 10 License as published by the Free Software Foundation; either |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
514 if (cacheType == CachedMetadataHandler::SendToPlatform) | 514 if (cacheType == CachedMetadataHandler::SendToPlatform) |
515 Platform::current()->cacheMetadata(m_response.url(), m_response.response Time(), 0, 0); | 515 Platform::current()->cacheMetadata(m_response.url(), m_response.response Time(), 0, 0); |
516 } | 516 } |
517 | 517 |
518 bool Resource::canDelete() const | 518 bool Resource::canDelete() const |
519 { | 519 { |
520 return !hasClients() && !m_loader && !m_preloadCount && hasRightHandleCountA partFromCache(0) | 520 return !hasClients() && !m_loader && !m_preloadCount && hasRightHandleCountA partFromCache(0) |
521 && !m_protectorCount; | 521 && !m_protectorCount; |
522 } | 522 } |
523 | 523 |
524 String Resource::reasonNotDeletable() const | |
525 { | |
526 StringBuilder builder; | |
527 if (hasClients()) { | |
528 builder.append("hasClients("); | |
529 builder.appendNumber(m_clients.size()); | |
530 if (!m_clientsAwaitingCallback.isEmpty()) { | |
531 builder.append(", AwaitingCallback="); | |
532 builder.appendNumber(m_clientsAwaitingCallback.size()); | |
533 } | |
534 if (!m_finishedClients.isEmpty()) { | |
535 builder.append(", Finished="); | |
536 builder.appendNumber(m_finishedClients.size()); | |
537 } | |
538 builder.append(")"); | |
539 } | |
540 if (m_loader) { | |
541 if (!builder.isEmpty()) | |
542 builder.append(' '); | |
543 builder.append("m_loader"); | |
ssid
2015/10/30 07:00:31
Can we get rid of m_ and display more useful info
hiroshige
2015/10/30 07:34:33
I made the names to directly corresponding to the
kinuko
2015/11/02 07:41:57
Either looks fine with me given that it seems diff
ssid
2015/11/04 12:12:57
Sorry for the late reply. It is fine as it is, sin
| |
544 } | |
545 if (m_preloadCount) { | |
546 if (!builder.isEmpty()) | |
547 builder.append(' '); | |
548 builder.append("m_preloadCount("); | |
ssid
2015/10/30 07:00:31
preloaded_with_count or just preloaded, and simila
| |
549 builder.appendNumber(m_preloadCount); | |
550 builder.append(")"); | |
551 } | |
552 if (!hasRightHandleCountApartFromCache(0)) { | |
553 if (!builder.isEmpty()) | |
554 builder.append(' '); | |
555 builder.append("m_handleCount("); | |
556 builder.appendNumber(m_handleCount); | |
557 builder.append(")"); | |
558 } | |
559 if (m_protectorCount) { | |
560 if (!builder.isEmpty()) | |
561 builder.append(' '); | |
562 builder.append("m_protectorCount("); | |
563 builder.appendNumber(m_protectorCount); | |
564 builder.append(")"); | |
565 } | |
566 if (memoryCache()->contains(this)) { | |
567 if (!builder.isEmpty()) | |
568 builder.append(' '); | |
569 builder.append("memoryCache"); | |
ssid
2015/10/30 07:00:31
reason_not_deletable : memoryCache -> in_memory_ca
hiroshige
2015/10/30 07:34:33
Acknowledged.
hiroshige
2015/11/09 20:53:58
Done.
| |
570 } | |
571 return builder.toString(); | |
572 } | |
573 | |
524 bool Resource::hasOneHandle() const | 574 bool Resource::hasOneHandle() const |
525 { | 575 { |
526 return hasRightHandleCountApartFromCache(1); | 576 return hasRightHandleCountApartFromCache(1); |
527 } | 577 } |
528 | 578 |
529 CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const | 579 CachedMetadata* Resource::cachedMetadata(unsigned dataTypeID) const |
530 { | 580 { |
531 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) | 581 if (!m_cachedMetadata || m_cachedMetadata->dataTypeID() != dataTypeID) |
532 return nullptr; | 582 return nullptr; |
533 return m_cachedMetadata.get(); | 583 return m_cachedMetadata.get(); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
731 | 781 |
732 void Resource::prune() | 782 void Resource::prune() |
733 { | 783 { |
734 destroyDecodedDataIfPossible(); | 784 destroyDecodedDataIfPossible(); |
735 unlock(); | 785 unlock(); |
736 } | 786 } |
737 | 787 |
738 void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebProcess MemoryDump* memoryDump) const | 788 void Resource::onMemoryDump(WebMemoryDumpLevelOfDetail levelOfDetail, WebProcess MemoryDump* memoryDump) const |
739 { | 789 { |
740 static const size_t kMaxURLReportLength = 128; | 790 static const size_t kMaxURLReportLength = 128; |
791 static const int kMaxResourceClientToShowInMemoryInfra = 10; | |
741 | 792 |
742 const String dumpName = getMemoryDumpName(); | 793 const String dumpName = getMemoryDumpName(); |
743 WebMemoryAllocatorDump* dump = memoryDump->createMemoryAllocatorDump(dumpNam e); | 794 WebMemoryAllocatorDump* dump = memoryDump->createMemoryAllocatorDump(dumpNam e); |
744 dump->addScalar("encoded_size", "bytes", m_encodedSize); | 795 dump->addScalar("encoded_size", "bytes", m_encodedSize); |
745 if (canDelete()) { | 796 if (canDelete()) { |
746 dump->addScalar("dead_size", "bytes", m_encodedSize); | 797 dump->addScalar("dead_size", "bytes", m_encodedSize); |
747 } else { | 798 } else { |
748 dump->addScalar("live_size", "bytes", m_encodedSize); | 799 dump->addScalar("live_size", "bytes", m_encodedSize); |
749 } | 800 } |
750 | 801 |
751 if (m_data) { | 802 if (m_data) { |
752 dump->addScalar("purgeable_size", "bytes", isPurgeable() && !wasPurged() ? encodedSize() + overheadSize() : 0); | 803 dump->addScalar("purgeable_size", "bytes", isPurgeable() && !wasPurged() ? encodedSize() + overheadSize() : 0); |
753 m_data->onMemoryDump(dumpName, memoryDump); | 804 m_data->onMemoryDump(dumpName, memoryDump); |
754 } | 805 } |
755 | 806 |
756 if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed) { | 807 if (levelOfDetail == WebMemoryDumpLevelOfDetail::Detailed) { |
757 String urlToReport = url().string(); | 808 String urlToReport = url().string(); |
758 if (urlToReport.length() > kMaxURLReportLength) { | 809 if (urlToReport.length() > kMaxURLReportLength) { |
759 urlToReport.truncate(kMaxURLReportLength); | 810 urlToReport.truncate(kMaxURLReportLength); |
760 urlToReport = urlToReport + "..."; | 811 urlToReport = urlToReport + "..."; |
761 } | 812 } |
762 dump->addString("url", "", urlToReport); | 813 dump->addString("url", "", urlToReport); |
814 | |
815 dump->addString("not_deletable_because", "", reasonNotDeletable()); | |
ssid
2015/10/30 07:00:31
I think it is better to show "reason_not_deletable
hiroshige
2015/11/09 20:53:58
Done.
| |
816 | |
817 Vector<String> clientNames; | |
818 ResourceClientWalker<ResourceClient> w(m_clients); | |
819 while (ResourceClient* c = w.next()) | |
820 clientNames.append(c->debugName()); | |
821 ResourceClientWalker<ResourceClient> w2(m_clientsAwaitingCallback); | |
822 while (ResourceClient* c = w2.next()) | |
823 clientNames.append("(awaiting) " + c->debugName()); | |
824 ResourceClientWalker<ResourceClient> w3(m_finishedClients); | |
825 while (ResourceClient* c = w3.next()) | |
826 clientNames.append("(finished) " + c->debugName()); | |
827 std::sort(clientNames.begin(), clientNames.end(), codePointCompareLessTh an); | |
828 | |
829 StringBuilder builder; | |
830 for (size_t i = 0; i < clientNames.size() && i < kMaxResourceClientToSho wInMemoryInfra; ++i) { | |
831 if (i > 0) | |
832 builder.append(" / "); | |
833 builder.append(clientNames[i]); | |
834 } | |
835 if (clientNames.size() > kMaxResourceClientToShowInMemoryInfra) { | |
836 builder.append(" / and "); | |
837 builder.appendNumber(clientNames.size() - kMaxResourceClientToShowIn MemoryInfra); | |
838 builder.append(" more"); | |
839 } | |
840 dump->addString("ResourceClient", "", builder.toString()); | |
763 } | 841 } |
764 | 842 |
765 const String overheadName = dumpName + "/metadata"; | 843 const String overheadName = dumpName + "/metadata"; |
766 WebMemoryAllocatorDump* overheadDump = memoryDump->createMemoryAllocatorDump (overheadName); | 844 WebMemoryAllocatorDump* overheadDump = memoryDump->createMemoryAllocatorDump (overheadName); |
767 overheadDump->addScalar("size", "bytes", overheadSize()); | 845 overheadDump->addScalar("size", "bytes", overheadSize()); |
768 memoryDump->addSuballocation(overheadDump->guid(), String(WTF::Partitions::k AllocatedObjectPoolName)); | 846 memoryDump->addSuballocation(overheadDump->guid(), String(WTF::Partitions::k AllocatedObjectPoolName)); |
769 } | 847 } |
770 | 848 |
771 String Resource::getMemoryDumpName() const | 849 String Resource::getMemoryDumpName() const |
772 { | 850 { |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1064 return "ImportResource"; | 1142 return "ImportResource"; |
1065 case Resource::Media: | 1143 case Resource::Media: |
1066 return "Media"; | 1144 return "Media"; |
1067 } | 1145 } |
1068 ASSERT_NOT_REACHED(); | 1146 ASSERT_NOT_REACHED(); |
1069 return "Unknown"; | 1147 return "Unknown"; |
1070 } | 1148 } |
1071 #endif // !LOG_DISABLED | 1149 #endif // !LOG_DISABLED |
1072 | 1150 |
1073 } // namespace blink | 1151 } // namespace blink |
OLD | NEW |