- 13 Jul, 2020 1 commit
-
-
Jake Hughes authored
In order to support conservative stack scanning, we need to be able to pin pages if they're pointed to by an ambiguous pointer. This CL lets us do this by providing an IS_PINNED flag which, when enabled, prevents a page from being selected as an evacuation candidate during compaction. Bug: v8:10614 Change-Id: I45d1c74b83aad1b56e078cc270749a0aee804716 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2278465 Commit-Queue: Jake Hughes <jakehughes@google.com> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68815}
-
- 10 Jul, 2020 1 commit
-
-
Ulan Degenbaev authored
Instead allocating the bitmap with malloc, we now reserve a block at the start of the memory chunk. This CL is a partial revert of https://chromium-review.googlesource.com/c/v8/v8/+/1254125 Additionally it refactors field offset computation and moves them to MemoryChunkLayout. Having the bitmap in the memory chunk simplifies sharing of RO pages and also solves the malloc fragmentation issues. Bug: chromium:1073140 Change-Id: Ibc04f48921fc9496370858ce4c25c56b31c93c89 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2289979 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#68783}
-
- 07 Jul, 2020 1 commit
-
-
Dan Elphick authored
Adds const modifiers to several methods and their parameters in AllocationStats, BasicMemoryChunk and ReadOnlySpace. Also moves BasicMemoryChunk::OffsetToAddress to ReadOnlyPage. Bug: v8:10454 Change-Id: Ibda8f9212d95dff71ed1d8f1f985eb1c7e6087aa Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2284986 Commit-Queue: Dan Elphick <delphick@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Auto-Submit: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68721}
-
- 18 Jun, 2020 1 commit
-
-
Dan Elphick authored
This reverts commit f78d69fa. With https://chromium-review.googlesource.com/c/v8/v8/+/2243216, incorrect MemoryChunk::FromHeapObject uses are now fixed. Original change's description: > Revert "[heap] Make ReadOnlySpace use bump pointer allocation" > > This reverts commit 81c34968 and also > 490f3580 which depends on the former. > > Reason for revert: Break CFI tests in chromium https://ci.chromium.org/p/chromium/builders/ci/Linux%20CFI/17438 > Original change's description: > > [heap] Make ReadOnlySpace use bump pointer allocation > > > > This changes ReadOnlySpace to no longer be a PagedSpace but instead it > > is now a BaseSpace. BasicSpace is a new base class that Space inherits > > from and which has no allocation methods and does not dictate how the > > pages should be held. > > > > ReadOnlySpace unlike Space holds its pages as a > > std::vector<ReadOnlyPage>, where ReadOnlyPage directly subclasses > > BasicMemoryChunk, meaning they do not have prev_ and next_ pointers and > > cannot be held in a heap::List. This is desirable since with pointer > > compression we would like to remap these pages to different memory > > addresses which would be impossible with a heap::List. > > > > Since ReadOnlySpace no longer uses most of the code from the other > > Spaces it makes sense to simplify its memory allocation to use a simple > > bump pointer and always allocate a new page whenever an allocation > > exceeds the remaining space on the final page. > > > > Change-Id: Iee6d9f96cfb174b4026ee671ee4f897909b38418 > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209060 > > Commit-Queue: Dan Elphick <delphick@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#68137} > > TBR=ulan@chromium.org,delphick@chromium.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Change-Id: I68c9834872e55eb833be081f8ff99b786bfa9894 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2232552 > Commit-Queue: Dan Elphick <delphick@chromium.org> > Reviewed-by: Dan Elphick <delphick@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68211} TBR=ulan@chromium.org,delphick@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: Id5b3cce41b5dec1dca816c05848d183790b1cc05 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2250254Reviewed-by:
Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#68407}
-
- 17 Jun, 2020 1 commit
-
-
Dan Elphick authored
Since ReadOnlySpace pages will soon not be MemoryChunks, change most uses of MemoryChunk::FromHeapObject and FromAddress to use the BasicMemoryChunk variants and which use the new MemoryChunk::cast function that takes a BasicMemoryChunk and DCHECKs !InReadOnlySpace(). To enable this, it also moves into BasicMemoryChunk several MemoryChunk functions that just require a BasicMemoryChunk. Bug: v8:10454 Change-Id: I80875b2c2446937ac2c2bc9287d36e71cc050c38 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2243216 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68390}
-
- 05 Jun, 2020 1 commit
-
-
Dan Elphick authored
This reverts commit 81c34968 and also 490f3580 which depends on the former. Reason for revert: Break CFI tests in chromium https://ci.chromium.org/p/chromium/builders/ci/Linux%20CFI/17438 Original change's description: > [heap] Make ReadOnlySpace use bump pointer allocation > > This changes ReadOnlySpace to no longer be a PagedSpace but instead it > is now a BaseSpace. BasicSpace is a new base class that Space inherits > from and which has no allocation methods and does not dictate how the > pages should be held. > > ReadOnlySpace unlike Space holds its pages as a > std::vector<ReadOnlyPage>, where ReadOnlyPage directly subclasses > BasicMemoryChunk, meaning they do not have prev_ and next_ pointers and > cannot be held in a heap::List. This is desirable since with pointer > compression we would like to remap these pages to different memory > addresses which would be impossible with a heap::List. > > Since ReadOnlySpace no longer uses most of the code from the other > Spaces it makes sense to simplify its memory allocation to use a simple > bump pointer and always allocate a new page whenever an allocation > exceeds the remaining space on the final page. > > Change-Id: Iee6d9f96cfb174b4026ee671ee4f897909b38418 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209060 > Commit-Queue: Dan Elphick <delphick@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#68137} TBR=ulan@chromium.org,delphick@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Change-Id: I68c9834872e55eb833be081f8ff99b786bfa9894 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2232552 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68211}
-
- 03 Jun, 2020 2 commits
-
-
Dan Elphick authored
This changes ReadOnlySpace to no longer be a PagedSpace but instead it is now a BaseSpace. BasicSpace is a new base class that Space inherits from and which has no allocation methods and does not dictate how the pages should be held. ReadOnlySpace unlike Space holds its pages as a std::vector<ReadOnlyPage>, where ReadOnlyPage directly subclasses BasicMemoryChunk, meaning they do not have prev_ and next_ pointers and cannot be held in a heap::List. This is desirable since with pointer compression we would like to remap these pages to different memory addresses which would be impossible with a heap::List. Since ReadOnlySpace no longer uses most of the code from the other Spaces it makes sense to simplify its memory allocation to use a simple bump pointer and always allocate a new page whenever an allocation exceeds the remaining space on the final page. Change-Id: Iee6d9f96cfb174b4026ee671ee4f897909b38418 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2209060 Commit-Queue: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68137}
-
Dan Elphick authored
This moves several fields that will be needed by ReadOnlySpace pages when it stops using MemoryChunk into BasicMemoryChunk. Additionally AllocationStats is moved from spaces.h into allocation-stats.h. Bug: v8:10473, v8:10454 Change-Id: I76a66565a260126e629bd7588a5418267dfa8423 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228722Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#68134}
-
- 13 May, 2020 1 commit
-
-
Dan Elphick authored
BasicMemoryChunk will become the base class for ReadOnlySpace pages which won't be MemoryChunks. Since ReadOnlySpace pages don't participate in GC they don't need slot_set_. Also some references to BasicMemoryChunk fields that were still prefixed with MemoryChunk:: Bug: v8:10454 Change-Id: If8ce40c7ee72d1617d2a1161ad9d4b7929f8a8e7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2198988 Auto-Submit: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#67774}
-
- 30 Oct, 2019 1 commit
-
-
Dominik Inführ authored
Change SlotSet representation to a variable-sized array of pointers to buckets. The length of the array/number of buckets depends on the size of the page. Before this change the SlotSet always stored a fixed number of buckets. Large pages needed a SlotSet-Array to cover the whole object. Now both regular and large pages both use a single SlotSet object, which contains all bucket pointers. Change-Id: I2d8d62fad54b58409cd39ae7a52c64497ee7c261 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1876811Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#64635}
-
- 23 Oct, 2019 1 commit
-
-
Dominik Inführ authored
This function was only used for the write barrier since the store buffer only stored slots and needed a way to get to the object's start. Now that we insert into the remembered set directly from the write barrier this isn't an issue anymore: the write barrier knows the object start. Change-Id: I701465ea40b7c4ee20404ecbcf3750e5fa6fd219 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1876049Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#64518}
-
- 07 Oct, 2019 1 commit
-
-
Dominik Inführ authored
This CL removes the StoreBuffer and inserts slots into the RememberedSet directly from within the RecordWrite builtin. Only calls into C code when either the SlotSet-array or the bucket is not allocated. This avoids filling the store buffer up with duplicates or due to a write-heavy workload and then blocking the main thread on store buffer processing. The first CL (https://crrev.com/c/1815241) got reverted, because mksnapshot was using a different size for SlotSet than the final binary on ARM. This is fixed now, SlotSet has a standard layout. Bug: v8:9454 Change-Id: I881641f4ee08a8b42c36fdca8733138b908096bd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1842452Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#64126}
-
- 30 Sep, 2019 1 commit
-
-
Dominik Inführ authored
This reverts commit 70e07cdb. Reason for revert: Clusterfuzz found issue in chromium:1009019 Original change's description: > [heap] Insert directly into RememberedSet and remove StoreBuffer > > This CL removes the StoreBuffer and inserts slots into the > RememberedSet directly from within the RecordWrite builtin. Only calls > into C code when either the SlotSet-array or the bucket is not > allocated. This avoids filling the store buffer up with duplicates or > due to a write-heavy workload and then blocking the main thread on > store buffer processing. > > Change-Id: I05b0b0938d822cdf0e8ef086ad4527d3229c05b2 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1815241 > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#64002} TBR=ulan@chromium.org,jkummerow@chromium.org,dinfuehr@chromium.org Change-Id: I6f4cc1641965c83b05f3b3830b0f526b362beb49 Bug: chromium:1009019, chromium:1009196 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1829259Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#64043}
-
- 26 Sep, 2019 1 commit
-
-
Dominik Inführ authored
This CL removes the StoreBuffer and inserts slots into the RememberedSet directly from within the RecordWrite builtin. Only calls into C code when either the SlotSet-array or the bucket is not allocated. This avoids filling the store buffer up with duplicates or due to a write-heavy workload and then blocking the main thread on store buffer processing. Change-Id: I05b0b0938d822cdf0e8ef086ad4527d3229c05b2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1815241 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64002}
-
- 11 Jul, 2019 1 commit
-
-
Maciej Goszczycki authored
BasicMemoryChunk sits above the MemoryChunk in the chunk hierarchy and is responsible for storing the bare minimum data to identify a chunk of memory, without worrying about GC etc. This change also completes the MemoryChunk offset asserts, which were previously missing for few key properties. Bug: v8:7464 Change-Id: Id4c7716c4ed5722ceca3cbc66d668aed016c74b0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1688843 Commit-Queue: Maciej Goszczycki <goszczycki@google.com> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#62652}
-