Changeset 173062 in webkit for trunk/Source/JavaScriptCore/heap


Ignore:
Timestamp:
Aug 28, 2014, 7:22:25 AM (11 years ago)
Author:
Julien Brianceau
Message:

Correct GC length unit and prevent division by 0 in showObjectStatistics.
https://bugs.webkit.org/show_bug.cgi?id=136340

Reviewed by Mark Hahnenberg.

  • heap/HeapStatistics.cpp:

(JSC::HeapStatistics::showObjectStatistics):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/heap/HeapStatistics.cpp

    r166792 r173062  
    234234    dataLogF("size: %ldkB\n", static_cast<long>(heap->m_sizeAfterLastCollect / KB));
    235235    dataLogF("capacity: %ldkB\n", static_cast<long>(heap->capacity() / KB));
    236     dataLogF("pause time: %lfms\n\n", heap->m_lastFullGCLength);
     236    dataLogF("pause time: %lfs\n\n", heap->m_lastFullGCLength);
    237237
    238238    StorageStatistics storageStatistics;
     
    241241        heap->m_objectSpace.forEachLiveCell(iterationScope, storageStatistics);
    242242    }
    243     dataLogF("wasted .property storage: %ldkB (%ld%%)\n",
    244         static_cast<long>(
    245             (storageStatistics.storageCapacity() - storageStatistics.storageSize()) / KB),
    246         static_cast<long>(
    247             (storageStatistics.storageCapacity() - storageStatistics.storageSize()) * 100
    248                 / storageStatistics.storageCapacity()));
    249     dataLogF("objects with out-of-line .property storage: %ld (%ld%%)\n",
    250         static_cast<long>(
    251             storageStatistics.objectWithOutOfLineStorageCount()),
    252         static_cast<long>(
    253             storageStatistics.objectWithOutOfLineStorageCount() * 100
    254                 / storageStatistics.objectCount()));
     243    long wastedPropertyStorageBytes = 0;
     244    long wastedPropertyStoragePercent = 0;
     245    long objectWithOutOfLineStorageCount = 0;
     246    long objectsWithOutOfLineStoragePercent = 0;
     247    if ((storageStatistics.storageCapacity() > 0) && (storageStatistics.objectCount() > 0)) {
     248        wastedPropertyStorageBytes = static_cast<long>((storageStatistics.storageCapacity() - storageStatistics.storageSize()) / KB);
     249        wastedPropertyStoragePercent = static_cast<long>(
     250            (storageStatistics.storageCapacity() - storageStatistics.storageSize()) * 100 / storageStatistics.storageCapacity());
     251        objectWithOutOfLineStorageCount = static_cast<long>(storageStatistics.objectWithOutOfLineStorageCount());
     252        objectsWithOutOfLineStoragePercent = objectWithOutOfLineStorageCount * 100 / storageStatistics.objectCount();
     253    }
     254    dataLogF("wasted .property storage: %ldkB (%ld%%)\n", wastedPropertyStorageBytes, wastedPropertyStoragePercent);
     255    dataLogF("objects with out-of-line .property storage: %ld (%ld%%)\n", objectWithOutOfLineStorageCount, objectsWithOutOfLineStoragePercent);
    255256}
    256257
Note: See TracChangeset for help on using the changeset viewer.