- 26 Oct, 2021 1 commit
-
-
Victor Gomes authored
Bug: v8:12054 Change-Id: I7edcb864e2fefe105c4da9120fbe3891822c4f85 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3240787 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77546}
-
- 19 Oct, 2021 1 commit
-
-
Igor Sheludko authored
... by explicitly passing pointer compression cage base value to various IsXXX() and map() calls in order to avoid using incorrect auto-computed cage base value when applied to objects allocated in external code space. This CL also introduces IsCodeObject(HeapObject) predicate which checks the IS_EXECUTABLE bit in the page header's flags. Bug: v8:11880 Change-Id: Ib44398c3125392e46e939044a9bd27e09d7944d5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3229368Reviewed-by:
Camillo Bruni <cbruni@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#77459}
-
- 18 Oct, 2021 3 commits
-
-
Victor Gomes authored
This is a reland of 0c459ff5 Original change's description: > [baseline] Concurrent Sparkplug n-thread with synchronised queue > > Installation in the main thread. > Design doc: https://docs.google.com/document/d/1GmEiEt2VDmhY_Ag0PiIcGWKtvQupKgNcMZUvgpfQksk/edit?resourcekey=0-seYa-QJsx1ZbjelluPG1iQ > > Change-Id: Ifc6eccd44efdf377320c64cf9957c6060334e543 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3186831 > Commit-Queue: Victor Gomes <victorgomes@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77431} Change-Id: I4ea8f3c026a0a448afcb16f57517ee75cedaf83f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3229379 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#77437}
-
Leszek Swirski authored
This reverts commit 0c459ff5. Reason for revert: breaks build on M1 (where W^X flag is RO) https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Mac%20-%20arm64%20-%20release%20builder/6999/overview Original change's description: > [baseline] Concurrent Sparkplug n-thread with synchronised queue > > Installation in the main thread. > Design doc: https://docs.google.com/document/d/1GmEiEt2VDmhY_Ag0PiIcGWKtvQupKgNcMZUvgpfQksk/edit?resourcekey=0-seYa-QJsx1ZbjelluPG1iQ > > Change-Id: Ifc6eccd44efdf377320c64cf9957c6060334e543 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3186831 > Commit-Queue: Victor Gomes <victorgomes@chromium.org> > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/main@{#77431} Change-Id: I45a952aacf0ad29ebb703a742fdc6da7b0b7c826 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3229378 Auto-Submit: Leszek Swirski <leszeks@chromium.org> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Owners-Override: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#77433}
-
Victor Gomes authored
Installation in the main thread. Design doc: https://docs.google.com/document/d/1GmEiEt2VDmhY_Ag0PiIcGWKtvQupKgNcMZUvgpfQksk/edit?resourcekey=0-seYa-QJsx1ZbjelluPG1iQ Change-Id: Ifc6eccd44efdf377320c64cf9957c6060334e543 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3186831 Commit-Queue: Victor Gomes <victorgomes@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#77431}
-
- 11 Oct, 2021 1 commit
-
-
Shu-yu Guo authored
When --shared-string-table is passed, in-place-internalizable strings are promoted into the shared old space to maintain the invariant that in-place internalization can be done without copying. Also some drive-by comment fixes and removal of unnecessary 'explicit' on multi-parameter constructors. Bug: v8:12007 Change-Id: I467d865e41934b1d5cdf85cbecc85c4befbfeb21 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3193591 Auto-Submit: Shu-yu Guo <syg@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Shu-yu Guo <syg@chromium.org> Cr-Commit-Position: refs/heads/main@{#77326}
-
- 06 Oct, 2021 1 commit
-
-
Igor Sheludko authored
... capable of computing the forwarding pointer for objects allocated outside of the main pointer compression cage. Drive-by: hoist computation of pointer compression cage base out of certain loops in GC code. Bug: v8:11880 Change-Id: I23efdffd1a237d9eedd0e2975e8e40811417ef31 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3204968Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#77244}
-
- 24 Sep, 2021 1 commit
-
-
Dominik Inführ authored
Bug: v8:12244, v8:12245 Change-Id: I718c7531a7bec24abbc1c5b23246828261d0b94b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3182221Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77048}
-
- 23 Sep, 2021 1 commit
-
-
Dominik Inführ authored
SetCodeModificationPermissions better reflects its current usage. Change-Id: Ia9b42328a2d467613736878e2b560e0d5282ad3f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3173674Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#77015}
-
- 16 Sep, 2021 1 commit
-
-
Dominik Inführ authored
Safepoints were used in Heap::AddAllocationObserversToAllSpaces and Heap::RemoveAllocationObserversFromAllSpaces as a poor man's approach to synchronization. This CL removes the safepoint and protects the potential race on the free list with a mutex in PagedSpace::DecreaseLimit. The motivation for this CL is that SafepointScope might possibly park the main thread in the future. However parking is only allowed if GCs are also allowed. GCs are not allowed when running allocation observers, so an allocation observer would not be able to add or remove additional observers as is currently done in StressConcurrentAllocationObserver. Also adding additional checks to the safepoint to ensure that we are on the main thread. Bug: v8:11708 Change-Id: I4e65a83ac4015d30b15d8c4eeaed4ea759b7c982 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3160523 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#76867}
-
- 15 Jul, 2021 1 commit
-
-
Michael Lippautz authored
Use a mutex guard when the unprotection is triggered from a compaction space in which case it is actually parallel. Main-thread only unprotection does not require acquiring the mutex. The list itself is only used from the main thread and thus the actual process does not require a mutex. The issue was introduced in https://crrev.com/c/2966382 Bug: v8:11982 Change-Id: I593c0659eb5a96c8206d0b4014f07ab13827be85 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3026705Reviewed-by:
Hannes Payer <hpayer@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75734}
-
- 11 Jun, 2021 1 commit
-
-
Dominik Inführ authored
Two DCHECKS had to updated to allow for concurrent MAP_SPACE allocations. Bug: v8:11708 Change-Id: I8a059d2e5942f511802a95ec27cf566414dd740e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2951724Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#75105}
-
- 09 Jun, 2021 2 commits
-
-
Dan Elphick authored
By moving this out of counters.h, counters.h no longer needs to depend on isolate.h. Change-Id: Ic5272e3b3a729c0a438124dc5cdc1835817f3341 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2949098 Auto-Submit: Dan Elphick <delphick@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#75055}
-
Dominik Inführ authored
IsPendingAllocation will now load the space from the object's page header first and then only check the object against the current LAB of that particular space. Previously we were looking up that object in the LABs of all spaces. This new design also makes it feasible to have one dedicated mutex for original_top/original_limit (respectively pending_object) for each space. This will reduce contention on the mutexes. Change-Id: I8e7636410259fd03b7970084bfbbaeadb2d8ba61 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2936606 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#75054}
-
- 06 Jun, 2021 1 commit
-
-
Dominik Inführ authored
This is a reland of b0c70710 The first CL got reverted because of build errors. This CL replaces the remaining usage of is_local_space() with is_compaction_space(). Supposedly this was a leftover because https://crrev.com/c/2928189 landed at roughly the same time. Original change's description: > [heap] Remove unused LocalSpace class > > LocalSpace was introduced for off-heap spaces with concurrent bytecode > compilation finalization. However, finalization ended up using > LocalHeap for concurrent allocations. LocalSpace is therefore unused > and can be removed. > > This CL removes LocalSpace and renames all mentions of local space to > compaction space. Compaction space was the only local space left. > > Change-Id: I12a8a2724f777a77ddb9957fe2d8e89febfebbaf > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2930169 > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#74914} Change-Id: I993c47fe85f4140f5d6137afde2653a48047cafb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2939983Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#74957}
-
- 02 Jun, 2021 2 commits
-
-
Clemens Backes authored
This reverts commit b0c70710. Reason for revert: Lots of compile errors. Original change's description: > [heap] Remove unused LocalSpace class > > LocalSpace was introduced for off-heap spaces with concurrent bytecode > compilation finalization. However, finalization ended up using > LocalHeap for concurrent allocations. LocalSpace is therefore unused > and can be removed. > > This CL removes LocalSpace and renames all mentions of local space to > compaction space. Compaction space was the only local space left. > > Change-Id: I12a8a2724f777a77ddb9957fe2d8e89febfebbaf > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2930169 > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#74914} Change-Id: I3a654da0ddb556c1fb8767f8401ecd3b46786bea No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2933140 Auto-Submit: Clemens Backes <clemensb@chromium.org> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Cr-Commit-Position: refs/heads/master@{#74915}
-
Dominik Inführ authored
LocalSpace was introduced for off-heap spaces with concurrent bytecode compilation finalization. However, finalization ended up using LocalHeap for concurrent allocations. LocalSpace is therefore unused and can be removed. This CL removes LocalSpace and renames all mentions of local space to compaction space. Compaction space was the only local space left. Change-Id: I12a8a2724f777a77ddb9957fe2d8e89febfebbaf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2930169Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#74914}
-
- 01 Jun, 2021 1 commit
-
-
Dominik Inführ authored
CompactionSpaces are only used during GC, so there is no need to lock pending_allocation_mutex_ for them. Locking for GC allocations actually caused multiple regressions. Bug: chromium:1214765 Change-Id: I6db4ed96deced41dc52f04b2917ec944b4ccc674 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2928189Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#74896}
-
- 27 May, 2021 1 commit
-
-
Dominik Inführ authored
Use a read-write lock for protecting original_top, original_limit and pending_object for all spaces. This way Heap::IsPendingAllocation is always guaranteed to read a consistent top/limit-pair and also the last values for those fields. The main thread will acquire an exclusive lock to update those fields. Concurrent Turbofan threads will use shared locks to read them. This may be quite expensive on the Turbofan-side, so landing this CL should help us figure out how big of a regression this simple fix would be. For main thread execution performance is supposed to be okay, since this is only used on the allocation slow path. Bug: v8:11778, chromium:1213266 Change-Id: I9464f53fd50057ec2540ab5b79f74ee52a5d7500 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2903143 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74814}
-
- 07 May, 2021 1 commit
-
-
Dominik Inführ authored
This CL changes the accounting of array buffers, such that Detach deducts the backing store immediately. Previously this was corrected in the next GC cycle. Not updating backing_store_bytes_ immediately could cause an overflow in WasmMemoryObject::Grow. Grow first detaches the backing store from the old JSArrayBuffer and then attaches it to a new one. This results in the backing store being accounted twice temporarily, this could cause overflows on 32-bit systems. Bug: chromium:1204455 Change-Id: I7cf2ca9a12bb5caf7bcffa25a34567774cf155b8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2871458 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#74429}
-
- 12 Apr, 2021 1 commit
-
-
Camillo Bruni authored
Make runtime-call-stats a compile-time flag. Disabling RCS saves roughly 1MB binary size on 64bit systems and yields minor performance improvements. Bug: v8:11299 Change-Id: Ia1db75e330a665db5251b685c164b96857e38d2d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2799766Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Michael Achenbach <machenbach@chromium.org> Reviewed-by:
Igor Sheludko <ishell@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#73910}
-
- 29 Mar, 2021 1 commit
-
-
Dominik Inführ authored
It could happen (e.g. with --stress-background-compile) that the main thread blocks for a background thread but the background thread requests a GC from the main thread. This would result in a deadlock. Avoid this by parking the main thread for potentially blocking operations and allow allocations while the main thread is parked. This CL introduces new states for the main thread: CollectionRequested and ParkedCollectionRequested. These states will force Safepoint(), Park() and Unpark() on the main thread into slow paths. The slow path can then perform a GC on the main thread - right before parking or after the main thread got unparked. Bug: v8:10315 Change-Id: If7ef31622d27320613139a0b7f79086fe3200f99 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2731528Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#73707}
-
- 09 Mar, 2021 1 commit
-
-
Dominik Inführ authored
It could happen that a background thread expands the heap by one page, but by the time the thread tries to allocate on it the space is already used by other background threads. If this happens three times in a row, V8 would crash with an OOM error. This CL prevents such situations by always allocating the object immediately at area_start(). Bug: v8:10315 Change-Id: I6390c84e742bf4105e70e930c21557ff1f4d952d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2743881Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#73305}
-
- 24 Nov, 2020 1 commit
-
-
Georg Neis authored
Apart from removing Min and Max (utils.h), this is mostly a renaming. In a few cases I had to add a cast. In a bunch of cases I had to use initializer lists to force call-by-value for static member constants because call-by-reference wouldn't compile (like in the previous CL). In a few places I used initializer lists in place of nested min/max operations. Bug: v8:11074 Change-Id: I53a5411be6334ff41e7a8517e6b87fb46f14d086 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2545523 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71380}
-
- 11 Nov, 2020 1 commit
-
-
Ulan Degenbaev authored
The new predicate allows a background thread to check if the given object was recently allocated and may potentially be unsafe to read from the background thread. The current implementation has relatively high overhead as it loads two pointers per heap space. It will be optimized in the future. Bug: v8:11148 Change-Id: I2a9dfb2c70de4b8214b8f8a35681a8bab1a63ca8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2532296 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#71130}
-
- 09 Nov, 2020 1 commit
-
-
Ulan Degenbaev authored
The function was using an non-atomic marking state to check the color of the object. This is incorrect because concurrent marking may be running while the linear allocation area is freed. Bug: chromium:1139165 Change-Id: I20ef22908dfd8dcd75858707e884e87658dcb1cb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2526391 Auto-Submit: 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@{#71057}
-
- 29 Oct, 2020 1 commit
-
-
Ulan Degenbaev authored
This allows GC to go slightly over the max heap limit in order to give NearHeapLimitCallback a chance to run and increase the limit. Based on the suggestion by Kenton Varda. Change-Id: I9c084b5a4c8fb7b9ce331b565958391c1be56add Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2505724 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#70884}
-
- 24 Sep, 2020 1 commit
-
-
Dominik Inführ authored
PagedSpace::RefillFreeList() needs to invoke wasted_memory() while holding the lock. Otherwise this races with PagedSpace::FreeLinearAllocationArea() which uses add_wasted_memory() and already holds the lock. Bug: v8:10315 Change-Id: I3a57191529cdd81d75833ec334a57f84a9a59194 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2428930Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#70126}
-
- 21 Sep, 2020 1 commit
-
-
Ulan Degenbaev authored
When a compaction space allocates a new code page, that pages needs to be added to the Isolate::code_pages_ array used for stack unwinding. Since the array is owned by the main thread, compaction thread cannot directly modify it. Because of that code pages are added upon merging of the compaction space to the main space in MergeLocalSpace. The bug was that all code pages coming from the compaction space were added to the code_pages_ array. However, some of the pages are not newly allocated but merely borrowed from the main space. This CL keeps track of all newly allocated paged by a compaction space. Bug: v8:10900 Change-Id: Iff3ff5d608df60fb752d2e0ffc29e51f2d967936 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2418718 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Cr-Commit-Position: refs/heads/master@{#70023}
-
- 18 Sep, 2020 2 commits
-
-
Maya Lekova authored
This reverts commit af5f437c. Reason for revert: Seems to break TSAN - https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20TSAN/33286? Original change's description: > [heap] Fix tracking of code pages for V8 stack unwinder > > When a compaction space allocates a new code page, that pages needs to > be added to the Isolate::code_pages_ array used for stack unwinding. > Since the array is owned by the main thread, compaction thread cannot > directly modify it. Because of that code pages are added upon merging > of the compaction space to the main spage in MergeLocalSpace. > > The bug was that all code pages coming from the compaction space > were added to the code_pages_ array. However, some of the pages are > not newly allocated but merely borrowed from the main space. > > This CL introduces a new page flag for marking pages that are borrowed > during compaction and skips them in MergeLocalSpace. > > Bug: v8:10900 > Change-Id: I786dc5747bd7c785ae58dfd8b841c00774efb15e > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2416500 > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> > Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> > Commit-Queue: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69992} TBR=ulan@chromium.org,jkummerow@chromium.org,dinfuehr@chromium.org Change-Id: I13f8b64014750af95423166152dc9bee8cec12d0 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:10900 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2418395Reviewed-by:
Maya Lekova <mslekova@chromium.org> Commit-Queue: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#69993}
-
Ulan Degenbaev authored
When a compaction space allocates a new code page, that pages needs to be added to the Isolate::code_pages_ array used for stack unwinding. Since the array is owned by the main thread, compaction thread cannot directly modify it. Because of that code pages are added upon merging of the compaction space to the main spage in MergeLocalSpace. The bug was that all code pages coming from the compaction space were added to the code_pages_ array. However, some of the pages are not newly allocated but merely borrowed from the main space. This CL introduces a new page flag for marking pages that are borrowed during compaction and skips them in MergeLocalSpace. Bug: v8:10900 Change-Id: I786dc5747bd7c785ae58dfd8b841c00774efb15e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2416500Reviewed-by:
Jakob Kummerow <jkummerow@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69992}
-
- 03 Sep, 2020 1 commit
-
-
Dominik Inführ authored
PagedSpace::CommittedPhysicalMemory() needs to use mutex when iterating chunks due to concurrent allocations. Also reorder sampling of memory statistics according to this order: 1) used memory 2) committed physical memory 3) committed memory That way, used <= committed physical <= committed should hold. Bug: v8:10315 Change-Id: Ie922ecc4846f724a09c71667a898bf74a8652220 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2390768 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69698}
-
- 14 Aug, 2020 1 commit
-
-
Leszek Swirski authored
This patch introduces a new LocalIsolate and LocalFactory, which use LocalHeap and replace OffThreadIsolate and OffThreadFactory. This allows us to remove those classes, as well as the related OffThreadSpace, OffThreadLargeObjectSpace, OffThreadHeap, and OffThreadTransferHandle. OffThreadLogger becomes LocalLogger. LocalHeap behaves more like Heap than OffThreadHeap did, so this allows us to additionally remove the concept of "Finish" and "Publish" that the OffThreadIsolate had, and allows us to internalize strings directly with the newly-concurrent string table (where the implementation can now move to FactoryBase). This patch also removes the off-thread support from the deserializer entirely, as well as removing the LocalIsolateWrapper which allowed run-time distinction between Isolate and OffThreadIsolate. LocalHeap doesn't support the reservation model used by the deserializer, and we will likely move the deserializer to use LocalIsolate unconditionally once we figure out the details of how to do this. Bug: chromium:1011762 Change-Id: I1a1a0a72952b19a8a4c167c11a863c153a1252fc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2315990 Commit-Queue: Andreas Haas <ahaas@chromium.org> Auto-Submit: Leszek Swirski <leszeks@chromium.org> Reviewed-by:
Andreas Haas <ahaas@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69397}
-
- 13 Aug, 2020 2 commits
-
-
Dominik Inführ authored
Remove allocation_mutex_ and use the already existing space_mutex to protect the free list from concurrent allocation. Bug: v8:10315 Change-Id: I8d823bcb80dfa49c6431a6db875488bc8d6ee8b6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2352783Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69384}
-
Dominik Inführ authored
Locks the allocation mutex if SupportsConcurrentAllocation() returns true. Unifies code/condition from multiple usages. Bug: v8:10315 Change-Id: I684d12284e862df5d68986841e04ff25527422eb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2352775 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69379}
-
- 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 2 commits
-
-
Dominik Inführ authored
Isolate::GetHeapStatistics uses PagedSpace::Available, which races with allocating background threads. Bug: v8:10315 Change-Id: I6e0dc37d90e0c7a3e3dd2b8bdb77f2ea82372c13 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349294Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69337}
-
Dominik Inführ authored
Now that background threads participate in sweeping, this method races because multiple threads now want to update that counter. We could either make this counter atomic or remove it entirely. This CL removes this counter since it isn't strictly necessary, it is only used when sweeper finds more garbage than markers. This happens e.g. with right-trimming but should be rare and is eventually fixed in the next GC. Bug: v8:10315 Change-Id: Iebae8937860160a3b49bedd03c2e21e41f7dfe76 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2349296Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69334}
-
- 05 Aug, 2020 1 commit
-
-
Dominik Inführ authored
PagedSpace::SizeOfObjects() then returns exactly the same value as PagedSpace::Size(). SizeOfObjects() used to deduct the current LAB, however this is now more difficult with local heaps. Accessing the main thread LAB from concurrent threads causes a data race. Also LocalHeaps have their own LAB, which should be deducted as well to be uniform with the main thread. However this would be tricky and expensive. The simpler solution is to do not deduct the main thread LAB anymore. Bug: v8:10315 Change-Id: I3c47e1a65caca9395737251aa694b295e78c7fb5 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2336090 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69245}
-
- 04 Aug, 2020 1 commit
-
-
Dominik Inführ authored
This is a reland of b354e344 This CL adds 3 fixes: * Unprotect code object before creating filler * Allows AllocationObserver::Step to add more AllocationObservers * Update limit in NewSpace::UpdateLinearAllocationArea Original change's description: > [heap] Refactor allocation observer in AllocationCounter > > Moves accounting of allocation observers into the AllocationCounter > class. This CL removes top_on_previous_step_ for counters that are > increased regularly in the slow path of the allocation functions. > > AdvanceAllocationObservers() informs the AllocationCounter about > allocated bytes, InvokeAllocationObservers() needs to be invoked when > an allocation step is reached. NextBytes() returns the number of bytes > until the next AllocationObserver::Step needs to run. > > Bug: v8:10315 > Change-Id: I8b6eb8719ab032d44ee0614d2a0f2645bfce9df6 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2320650 > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69170} Bug: v8:10315 Change-Id: I89ab4d5069a234a293471f613dab16b47d8fff89 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332805Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#69216}
-