v8/test/cctest/heap
Ulan Degenbaev 51e6ecb9df Reland "Fix invalidation of old-to-old slots after object trimming."
This reverts commit 5b434929a3.

Changes after the original CL:
- Right-trimming registers the array as an object with invalidated
  slots.
- Left-trimming moves the array start in the invalidated slots map.

Original change's description:
> Fix invalidation of old-to-old slots after object trimming.
>
> A recorded old-to-old slot may be overwritten with a pointer to a new
> space object. If the object containing the slot is trimmed later on,
> then the mark-compactor may crash on a stale pointer to new space.
>
> This patch ensures that:
> 1) On trimming of an object we add it to the invalidated_slots sets.
> 2) The InvalidatedSlotsFilter::IsValid returns false for slots outside
>    the invalidated object unless the page was already swept.
>
> Array left-trimming is handled as a special case because object start
> moves and cannot be added to the invalidated set. Instead, we clear
> the freed memory so that the recorded slots contain Smi values.
>
> Bug: chromium:870226,chromium:816426
> Change-Id: Iffc05a58fcf52ece45fdb085b5d1fd4b3acb5d53
> Reviewed-on: https://chromium-review.googlesource.com/1163784
> Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Hannes Payer <hpayer@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#54953}

Change-Id: I1f1080f680196c581f62aef8d3a00a595f9bb9b0
Reviewed-on: https://chromium-review.googlesource.com/1165555
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Hannes Payer <hpayer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55066}
2018-08-11 08:35:39 +00:00
..
heap-tester.h Reland "Fix invalidation of old-to-old slots after object trimming." 2018-08-11 08:35:39 +00:00
heap-utils.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
heap-utils.h [heap] Exclude the owner of the linear allocation area from evacuation. 2016-11-03 12:13:23 +00:00
test-alloc.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-array-buffer-tracker.cc Reland: [iwyu] Remove sfi-inl.h -> wasm include 2018-07-25 14:54:37 +00:00
test-compaction.cc [explicit isolates] Make Heap::InNewSpace static 2018-07-10 08:52:29 +00:00
test-concurrent-marking.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-embedder-tracing.cc [cleanup] Split off api-inl.h from api.h to make latter self contained 2018-07-23 16:03:49 +00:00
test-external-string-tracker.cc [heap] Fix ThinString promotion counters. 2018-07-30 19:08:57 +00:00
test-heap.cc [interpreter][runtime] Avoid AllocationSites for oneshot code 2018-08-10 13:34:13 +00:00
test-incremental-marking.cc [V8 Platform] Make CallOnWorkerThread use std::unique_ptr 2018-03-26 17:43:22 +00:00
test-invalidated-slots.cc Reland "Fix invalidation of old-to-old slots after object trimming." 2018-08-11 08:35:39 +00:00
test-lab.cc [ubsan] Change Address typedef to uintptr_t 2018-04-14 01:25:28 +00:00
test-mark-compact.cc [explicit isolates] Remove various GetIsolates 2018-07-17 11:56:37 +00:00
test-page-promotion.cc [heap] Added NewToOld page promotion test using JSArrayBuffers. 2018-06-25 13:26:09 +00:00
test-spaces.cc [explicit isolates] Convert src/* to ReadOnlyRoots 2018-07-04 10:29:45 +00:00
test-unmapper.cc [V8Platform] Remove deprecated Background threads APIs and make new APIs pure virtual. 2018-05-16 23:27:02 +00:00
test-weak-references.cc [in-place weak refs] Make WeakArrayList::RemoveOne more efficient 2018-08-02 15:15:38 +00:00