- 26 Jan, 2021 1 commit
-
-
Dominik Inführ authored
The number of old-to-new slots was used as a heuristic in GetMaxConcurrency() to control the number of background jobs. The calculation already caused a bug that was fixed in https://crrev.com/c/2593247 and isn't used in a major mark-compact. Reduce complexity by removing that heuristic. Change-Id: I88989974a94230b7d6f59846f5b0cce14b4118ca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649039Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#72328}
-
- 13 Jan, 2021 1 commit
-
-
Mythri A authored
This is a reland of 8aa6b15f with a fix for TSAN failures. Original change's description: > Disable bytecode flushing once we toggle coverage mode. > > Changing coverage mode generated different bytecode in some cases. > Hence it is not safe to flush bytecode once we toggle coverage mode. > > Bug: chromium:1147917 > Change-Id: I9e640aeaec664d3d4a4aaedf809c568e9ad924fc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2615020 > Commit-Queue: Mythri Alle <mythria@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71985} Bug: chromium:1147917 Change-Id: Ibd8c4feb8615ba7b92fe547c55d455958c94c526 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2624612 Commit-Queue: Mythri Alle <mythria@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#72062}
-
- 12 Jan, 2021 1 commit
-
-
Leszek Swirski authored
Add a pre-loop over transition arrays during compaction, that checks whether compaction is needed at all, and whether any of the entries are still uninitialized values as part of deserialization (and therefore no other targets can be dead). Bails out of compaction early if this is the case. Bug: v8:11305 Change-Id: I27af792a8a0bd3df17892f54ac95ed15e4bdfcc0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2622910Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#72038}
-
- 15 Dec, 2020 1 commit
-
-
Dominik Inführ authored
GetMaxConcurrency() needs to return a value greater than 0 when there is work left. When the return value is 0, no more items are processed. With Minor MC it could happen that GetMaxConcurrency() returned 0 when there were no old-to-new-slots even though there were still items left to process. This CL fixes this and adds a DCHECK to ensure this doesn't happen again. Change-Id: Ia971c232564bcb0b0d305e76371a3a8e82f46229 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2593247 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#71768}
-
- 26 Nov, 2020 1 commit
-
-
Santiago Aboy Solanes authored
Scopes in V8 are used to guarantee one or more properties during its lifetimes. If a scope is not named e.g MyClassScope(args) instead of MyClassScope scope(args) it will get created and automatically destroyed and therefore, being useless as a scope. This CL would produce a compiling warning when that happens to ward off this developer error. Follow-up to ccrev.com/2552415 in which it was introduced and implemented for Guard classes. Change-Id: Ifa0fb89cc3d9bdcdee0fd8150a2618af5ef45cbf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2555001 Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/master@{#71425}
-
- 23 Oct, 2020 1 commit
-
-
Etienne Pierre-doray authored
This CL refactors ConcurrentMarking::Stop to have explicit Join and Pause. MarkCompact updates job priority to UserBlocking before joining. Change-Id: I71cb469e35cc4df7fdb0dbd8c0cf9c1642e8f5fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2491109Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Cr-Commit-Position: refs/heads/master@{#70738}
-
- 16 Oct, 2020 1 commit
-
-
Etienne Pierre-doray authored
Replaces ItemParallelJob by std::vector to hold marking items. IndexGenerator is used to iterate over evacuation items. slots_ is moved from items to YoungGenerationMarkingTask to reduce synchronisation. Change-Id: Iac7aba215e8ba545c12a9ab6c810d343234fbbbf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440830 Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70575}
-
- 06 Oct, 2020 2 commits
-
-
Ulan Degenbaev authored
This reverts commit 969cdfe6. Reason for revert: speculative revert for crbug.com/1135472 Original change's description: > [heap] Convert WeakObjects to heap::base::Worklist > > This splits WeakObjects into explicit global and local worklists. > The latter are defined in WeakObjects::Local and are thread-local. > > The main thread local worklist is stored in > MarkCompactCollector::local_weak_objects and exists during marking > similar to local_marking_worklists. Concurrent markers create their > own local worklists that are published at the end. > > Change-Id: I093fdc580b4609ce83455b860b90a5099085beac > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440607 > Commit-Queue: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70317} TBR=ulan@chromium.org,dinfuehr@chromium.org Change-Id: I3fa3bfdcf3c359f46a3b56c19fb4e486883cde9d No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2452749Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70344}
-
Ulan Degenbaev authored
The new flags are - v8_enable_atomic_object_field_writes that makes field write operations relaxed atomic. - v8_enable_atomic_marking_state that makes the marking state and the write-barrier thread-safe. The motivation is that we want to disable atomic object fields while keeping the marking states thread-safe. This allows us to increase TSAN coverage for background compilation and streaming tasks while keeping the write-barrier used by the tasks thread-safe. Bug: v8:10988 Change-Id: I11d66954dda4bf36d24c5e6f14ee5bc7a0f86094 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2448467Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70329}
-
- 05 Oct, 2020 1 commit
-
-
Ulan Degenbaev authored
This splits WeakObjects into explicit global and local worklists. The latter are defined in WeakObjects::Local and are thread-local. The main thread local worklist is stored in MarkCompactCollector::local_weak_objects and exists during marking similar to local_marking_worklists. Concurrent markers create their own local worklists that are published at the end. Change-Id: I093fdc580b4609ce83455b860b90a5099085beac Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2440607 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#70317}
-
- 01 Oct, 2020 3 commits
-
-
Etienne Pierre-doray authored
Replaces ItemParallelJob by std::vector to hold work items. IndexGenerator is used to iterate over evacuation items. Change-Id: Id687f6696e74998c9d23ee2a2ee97c7687d13815 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2438631 Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70263}
-
Ulan Degenbaev authored
This removes custom object iteration in MarkingVerifier. Change-Id: I2e597dab6014ff4443faa60cd3d4be20a2dc1b56 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2438067Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70250}
-
Etienne Pierre-doray authored
Replaces ItemParallelJob by std::vector to hold work items. IndexGenerator is used to iterate over evacuation items. Change-Id: I63ea246f267d8cbe140c47c022b95b3873bc957a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2425339 Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70242}
-
- 24 Sep, 2020 1 commit
-
-
Ulan Degenbaev authored
Change-Id: I5d82528cd07c263bfbedfdd3a090bcd4f67ef55d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2428593Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70117}
-
- 22 Sep, 2020 1 commit
-
-
Nico Hartmann authored
This reverts commit 4a2b2b2e. Reason for revert: Speculative revert due to https://ci.chromium.org/p/chromium/builders/try/linux-rel/495075? Original change's description: > [Heap]: Marking use Jobs. > > StopRequest is removed in favor of: > COMPLETE_TASKS_FOR_TESTING -> JoinForTesting() > PREEMPT_TASKS -> Pause() > COMPLETE_ONGOING_TASKS now has the same behavior as PREEMPT_TASKS > - we should avoid waiting on the main thread as much as possible. > > Change-Id: Icceeb4f0c0fda2ed234b2f26fe308b11410fcfb7 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2376166 > Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#70037} TBR=ulan@chromium.org,etiennep@chromium.org Change-Id: I63f24bffa0f56c6ffa1d1977fc4fb8a76b6f3ba2 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2423722Reviewed-by:
Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#70049}
-
- 21 Sep, 2020 1 commit
-
-
Etienne Pierre-doray authored
StopRequest is removed in favor of: COMPLETE_TASKS_FOR_TESTING -> JoinForTesting() PREEMPT_TASKS -> Pause() COMPLETE_ONGOING_TASKS now has the same behavior as PREEMPT_TASKS - we should avoid waiting on the main thread as much as possible. Change-Id: Icceeb4f0c0fda2ed234b2f26fe308b11410fcfb7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2376166 Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#70037}
-
- 12 Aug, 2020 1 commit
-
-
Dominik Inführ authored
ArrayBufferTracker was superseded by ArrayBufferList and ArrayBufferSweeper. Now that ArrayBufferSweeper is used in production, we can remove the unused ArrayBufferTracker mechanism. Bug: v8:10064 Change-Id: I479169c76b6c5c634672024f77e689bb64a36504 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339105Reviewed-by:
Simon Zünd <szuend@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69351}
-
- 11 Aug, 2020 1 commit
-
-
Ulan Degenbaev authored
This is the first step in refactoring Worklist to allow arbitrary number of local worklists with private segments: - Introduce MarkingWorklistImpl<> which will eventually replace (and will be renamed to) Worklist. - MarkingWorklistImpl<> owns the global pool of segments but does not keep track of private segments. - MarkingWorklistImpl<>::Local owns private segments and can be constructed dynamically on background threads. - Rename the existing MarkingWorklistsHolder to MarkingWorklists. - Rename the existing MarkingWorklists to MarkingWorklists::Local. - Rename the existing marking_workists_holder to marking_worklists. - Rename the existing marking_worklists to local_marking_worklists. Design doc: https://bit.ly/2XMtjLi Bug: v8:10315 Change-Id: I9da34883ad34f4572fccd40c51e51eaf50c617bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2343330Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69330}
-
- 06 Aug, 2020 1 commit
-
-
Leszek Swirski authored
Changes the isolate's string table into an off-heap structure. This allows the string table to be resized without allocating on the V8 heap, and potentially triggering a GC. This allows existing strings to be inserted into the string table without requiring allocation. This has two important benefits: 1) It allows the deserializer to insert strings directly into the string table, rather than having to defer string insertion until deserialization completes. 2) It simplifies the concurrent string table lookup to allow resizing the table inside the write lock, therefore eliminating the race where two concurrent lookups could both resize the table. The off-heap string table has the following properties: 1) The general hashmap behaviour matches the HashTable, i.e. open addressing, power-of-two sized, quadratic probing. This could, of course, now be changed. 2) The empty and deleted sentinels are changed to Smi 0 and 1, respectively, to make those comparisons a bit cheaper and not require roots access. 3) When the HashTable is resized, the old elements array is kept alive in a linked list of previous arrays, so that concurrent lookups don't lose the data they're accessing. This linked list is cleared by the GC, as then we know that all threads are in a safepoint. 4) The GC treats the hash table entries as weak roots, and only walks them for non-live reference clearing and for evacuation. 5) Since there is no longer a FixedArray to serialize for the startup snapshot, there is now a custom serialization of the string table, and the string table root is considered unserializable during weak root iteration. As a bonus, the custom serialization is more efficient, as it skips non-string entries. As a drive-by, rename LookupStringExists_NoAllocate to TryStringToIndexOrLookupExisting, to make it clearer that it returns a non-string for the case when the string is an array index. As another drive-by, extract StringSet into a separate header. Bug: v8:10729 Change-Id: I9c990fb2d74d1fe222920408670974a70e969bca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2339104 Commit-Queue: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69270}
-
- 14 Jul, 2020 1 commit
-
-
Dominik Inführ authored
Help sweeper tasks complete sweeping sooner but do not refill free lists on shutdown. This races with allocating background threads. Background threads will refill free lists themselves if more memory is required. Bug: v8:10315 Change-Id: Ie615983229701e8c9434b4352bd055e9dbbb8671 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2297466Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#68842}
-
- 13 Jul, 2020 1 commit
-
-
Dominik Inführ authored
Instead of completely finishing sweeping in the slow path of allocation, just sweep all pages for the current PagedSpace. This will help in making main thread allocation concurrent, since there is no need anymore to lock the allocation mutexes of other PagedSpaces. Bug: v8:10315 Change-Id: I1cf76d94fa7a22e726fc71f49c2d5669e4a0598c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2292306 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68822}
-
- 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}
-
- 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 1 commit
-
-
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}
-
- 18 May, 2020 1 commit
-
-
Hannes Payer authored
Change-Id: I70328a944b78591d106d752197b096cb86c32573 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2206735 Commit-Queue: Hannes Payer <hpayer@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67876}
-
- 15 May, 2020 1 commit
-
-
Dan Elphick authored
Removes dead functions related to long removed SlotsBuffer class. Bug: v8:10506 Change-Id: I79d6e77d2305e19048b62e2bc584fe986affd111 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2202908 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@{#67833}
-
- 14 May, 2020 1 commit
-
-
Dominik Inführ authored
Experimenting with incrementing live_byte_count_ using a relaxed CAS operation. If no regression is found, we could get away with background threads increasing that counter directly, instead of using separate counters like concurrent markers. Bug: v8:10315 Change-Id: I2e7a1f941a728f59d6e1fbd686d2eeb01ea4378a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2201765Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#67809}
-
- 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}
-
- 04 May, 2020 1 commit
-
-
Dan Elphick authored
Moves ReadOnlyPage, ReadOnlyArtifacts, ReadOnlySpace and SharedReadOnlySpace out of spaces.h and into read-only-spaces.h, as well as creating a corresponding .cc file. Bug: v8:10473 Change-Id: I9d8b49d61ed643fd6e16919d571a909ab6fce407 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2171197Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#67531}
-
- 24 Jan, 2020 1 commit
-
-
Dominik Inführ authored
When ArrayBufferExtensions are enabled, sweep the extensions outside of the GC pause concurrently to the application. The following GC will make sure that the previous concurrent sweep operation is finished. This CL introduces Heap::array_buffer_sweeper() that is both responsible for tracking all extensions but also for sweeping. Bug: v8:10064 Change-Id: I113cd625445a7d59ffb7a9de8b25a15a72b02b99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2010107Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65984}
-
- 17 Jan, 2020 1 commit
-
-
Dominik Inführ authored
Split the linked list of array buffer extensions into two lists for young and old JSArrayBuffers. Process young extensions during the minor GC pause. When promoting JSArrayBuffers into the old gen, move the extension into the old linked list as well. Bug: v8:10064 Change-Id: I07275ffe7ba918c9b2d6d0648a6d1b59e4fa4891 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1997438 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#65842}
-
- 13 Jan, 2020 1 commit
-
-
Dominik Inführ authored
This CL adds the ArrayBufferExtension class, which is used to track JSArrayBuffers in a linked list. The ArrayBufferExtension is going to replace the ArrayBufferTracker in the future but is currently behind the v8_enable_array_buffer_extension feature flag. When enabled, each JSArrayBuffer has a corresponding native-heap allocated ArrayBufferExtension object. All extensions are currently tracked in a single linked list. During marking the GC not only marks the JSArrayBuffer but also its extension object. At the end of mark-compact the GC iterates all extensions and removes unmarked ones. Change-Id: I88298be255944d5ae1327c91b0d7f0fdbcd486d5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1969791Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65724}
-
- 09 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
This changes the marking worklist draining for the main thread marker and the concurrent marker to use the following algorithm in per-context mode: 1) Pop an object from the marking worklist. 2) Try to infer the native context that owns the objects. This is done using a new NativeContextInferrer class. 3) If the inference is successful, then change the active marking worklist to the worklist of the inferred native context. 4) Otherwise, keep the current active marking worklist. 5) Visit the object. Newly discovered objects will be pushed onto the active marking worklist. 6) Account the object size for the native context corresponding to the active marking worklist. This is done using a new NativeContextStats class. The main property of the algorithm is that each object for which we couldn't infer the native context is either attributed to the native context retaining it or is not attributed to any native context. Bug: chromium:973627 Change-Id: Ide4ab992275d115279f971d89ace657f4c05e176 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1981491 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65663}
-
- 20 Dec, 2019 1 commit
-
-
Ulan Degenbaev authored
These worklists are needed for accounting of objects retained by native contexts for the new memory measurement API. Bug: chromium:973627 Change-Id: I354c5ebbbac11da4d01800164e15b94a93aa654c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1943158 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65542}
-
- 11 Dec, 2019 1 commit
-
-
Ulan Degenbaev authored
This unifies marking worklists handling by the main thread marker and by the concurrent markers. A new class called MarkingWorklistsHolder owns all marking worklists: the default worklist, the on-hold worklist, and the embedder worklist. Each thread creates a local view of the marking worklists by creating an instance of MarkingWorklists. Additionally, marking visitors now work on MarkingWorklists instead of accessing each worklist individually. Besides cleaning the code up, this CL provides a bottleneck for implementing per-context worklists. Bug: chromium:973627 Change-Id: I52ad65c94bc0695287ba7bf4d8a814a9035e2888 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1941947Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#65421}
-
- 02 Dec, 2019 1 commit
-
-
Ulan Degenbaev authored
This removes object visiting logic from IncrementalMarking and makes it call the corresponding methods of MarkCompactCollector. As a result we have one place where objects are visited (on the main thread), which is necessary for implementing per-context visitation. Bug: chromium:973627 Change-Id: Ibdfbb9a910b592307bdba2bd73eada35c80a0d61 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1940154Reviewed-by:
Hannes Payer <hpayer@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#65278}
-
- 27 Nov, 2019 1 commit
-
-
Ulan Degenbaev authored
This removes the marking worklist draining loop from IncrementalMarking and makes it use the one of MarkCompactCollector. Bug: chromium:973627 Change-Id: I226b4b45be7d542a82bba20162ad210dfb419c39 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1940250 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#65212}
-
- 08 Nov, 2019 1 commit
-
-
Ulan Degenbaev authored
Now incremental marker and stop-the-world marker use the same visitor, which is derived from MarkingVisitorBase. This removes code duplication and also should reduce binary size. The marking worklist processing code also changes to not color the object black before visiting it. Instead the visitor colors the object black in ShouldVisit method. Bug: chromium:1019218 Change-Id: I57971122f3c77ad2770b6754d696b79d802ef1a4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1901271 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#64848}
-
- 04 Nov, 2019 1 commit
-
-
Ulan Degenbaev authored
Before this change large fixed arrays were visited in chunks of 32KB on the main thread. Now large fixed arrays are divided into chunks of kMaxRegularHeapObjectSize, which is consistent with large fixed array processing on concurrent threads and make more sense considering that regular fixed arrays are visited in one go. Bug: chromium:1019218 Change-Id: I0c6d9c6c7d1db7f6a75d282601b73d4819b30e80 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897886Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64746}
-