| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 payload + allocation_point, freed_size); | 525 payload + allocation_point, freed_size); |
| 526 } | 526 } |
| 527 } | 527 } |
| 528 | 528 |
| 529 // Return available pages to the free page pool, decommitting them from | 529 // Return available pages to the free page pool, decommitting them from |
| 530 // the pagefile. | 530 // the pagefile. |
| 531 BasePage* available_pages = context.available_pages_; | 531 BasePage* available_pages = context.available_pages_; |
| 532 while (available_pages) { | 532 while (available_pages) { |
| 533 size_t page_size = available_pages->size(); | 533 size_t page_size = available_pages->size(); |
| 534 #if DEBUG_HEAP_COMPACTION | 534 #if DEBUG_HEAP_COMPACTION |
| 535 if (!freedPageCount) | 535 if (!freed_page_count) |
| 536 LOG_HEAP_COMPACTION("Releasing:"); | 536 LOG_HEAP_COMPACTION("Releasing:"); |
| 537 LOG_HEAP_COMPACTION(" [%p, %p]", availablePages, availablePages + pageSize); | 537 LOG_HEAP_COMPACTION(" [%p, %p]", available_pages, |
| 538 available_pages + page_size); |
| 538 #endif | 539 #endif |
| 539 freed_size += page_size; | 540 freed_size += page_size; |
| 540 freed_page_count++; | 541 freed_page_count++; |
| 541 BasePage* next_page; | 542 BasePage* next_page; |
| 542 available_pages->Unlink(&next_page); | 543 available_pages->Unlink(&next_page); |
| 543 #if !(DCHECK_IS_ON() || defined(LEAK_SANITIZER) || \ | 544 #if !(DCHECK_IS_ON() || defined(LEAK_SANITIZER) || \ |
| 544 defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER)) | 545 defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER)) |
| 545 // Clear out the page before adding it to the free page pool, which | 546 // Clear out the page before adding it to the free page pool, which |
| 546 // decommits it. Recommitting the page must find a zeroed page later. | 547 // decommits it. Recommitting the page must find a zeroed page later. |
| 547 // We cannot assume that the OS will hand back a zeroed page across | 548 // We cannot assume that the OS will hand back a zeroed page across |
| (...skipping 634 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1182 size_t FreeList::FreeListSize() const { | 1183 size_t FreeList::FreeListSize() const { |
| 1183 size_t free_size = 0; | 1184 size_t free_size = 0; |
| 1184 for (unsigned i = 0; i < kBlinkPageSizeLog2; ++i) { | 1185 for (unsigned i = 0; i < kBlinkPageSizeLog2; ++i) { |
| 1185 FreeListEntry* entry = free_lists_[i]; | 1186 FreeListEntry* entry = free_lists_[i]; |
| 1186 while (entry) { | 1187 while (entry) { |
| 1187 free_size += entry->size(); | 1188 free_size += entry->size(); |
| 1188 entry = entry->Next(); | 1189 entry = entry->Next(); |
| 1189 } | 1190 } |
| 1190 } | 1191 } |
| 1191 #if DEBUG_HEAP_FREELIST | 1192 #if DEBUG_HEAP_FREELIST |
| 1192 if (freeSize) { | 1193 if (free_size) { |
| 1193 LOG_HEAP_FREELIST_VERBOSE("FreeList(%p): %zu\n", this, freeSize); | 1194 LOG_HEAP_FREELIST_VERBOSE("FreeList(%p): %zu\n", this, free_size); |
| 1194 for (unsigned i = 0; i < blinkPageSizeLog2; ++i) { | 1195 for (unsigned i = 0; i < kBlinkPageSizeLog2; ++i) { |
| 1195 FreeListEntry* entry = m_freeLists[i]; | 1196 FreeListEntry* entry = free_lists_[i]; |
| 1196 size_t bucket = 0; | 1197 size_t bucket = 0; |
| 1197 size_t count = 0; | 1198 size_t count = 0; |
| 1198 while (entry) { | 1199 while (entry) { |
| 1199 bucket += entry->size(); | 1200 bucket += entry->size(); |
| 1200 count++; | 1201 count++; |
| 1201 entry = entry->next(); | 1202 entry = entry->Next(); |
| 1202 } | 1203 } |
| 1203 if (bucket) { | 1204 if (bucket) { |
| 1204 LOG_HEAP_FREELIST_VERBOSE("[%d, %d]: %zu (%zu)\n", 0x1 << i, | 1205 LOG_HEAP_FREELIST_VERBOSE("[%d, %d]: %zu (%zu)\n", 0x1 << i, |
| 1205 0x1 << (i + 1), bucket, count); | 1206 0x1 << (i + 1), bucket, count); |
| 1206 } | 1207 } |
| 1207 } | 1208 } |
| 1208 } | 1209 } |
| 1209 #endif | 1210 #endif |
| 1210 return free_size; | 1211 return free_size; |
| 1211 } | 1212 } |
| (...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1839 | 1840 |
| 1840 has_entries_ = true; | 1841 has_entries_ = true; |
| 1841 size_t index = GetHash(address); | 1842 size_t index = GetHash(address); |
| 1842 DCHECK(!(index & 1)); | 1843 DCHECK(!(index & 1)); |
| 1843 Address cache_page = RoundToBlinkPageStart(address); | 1844 Address cache_page = RoundToBlinkPageStart(address); |
| 1844 entries_[index + 1] = entries_[index]; | 1845 entries_[index + 1] = entries_[index]; |
| 1845 entries_[index] = cache_page; | 1846 entries_[index] = cache_page; |
| 1846 } | 1847 } |
| 1847 | 1848 |
| 1848 } // namespace blink | 1849 } // namespace blink |
| OLD | NEW |