• Ulan Degenbaev's avatar
    [heap] Make assert in Page::ShrinkToHighWaterMark more robust. · 5bc1d291
    Ulan Degenbaev authored
    Currently Page::ShrinkToHighWaterMark checks that there is only one
    filler in the to-be-freed area at the end of the page. This does not
    hold if an allocation observer is active.
    
    We should instead check that the to-be-freed area does not contain
    allocated objects and will not contain allocated objects:
    1) Following chain of fillers we arrive at the end of the page.
    2) The free list of the page is empty.
    
    This patch also changes PagedSpace::ResetFreeList to evict free list
    entries of each page, instead of just reseting the global free list.
    
    It also removes invalidation of free list categories.
    Now FreeList::EvictFreeListItems simply evicts free list entries without
    invalidating free list categories.
    
    Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng
    Change-Id: I6051578ec2c91c9614d14c7a6ce188d2db5ace3b
    Reviewed-on: https://chromium-review.googlesource.com/822571
    Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#50040}
    5bc1d291
test-spaces.cc 26 KB