- 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}
-
- 06 May, 2020 1 commit
-
-
Junliang Yan authored
Bug: v8:7703 Change-Id: If2d5c2da1d653247f49e5dfb2e50850b97119b20 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2170798Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Junliang Yan <jyan@ca.ibm.com> Cr-Commit-Position: refs/heads/master@{#67629}
-
- 26 Feb, 2020 1 commit
-
-
Dominik Inführ authored
When iterating objects on a page add CHECKs that we actually load a map and ensure the object ends within the current chunk. Bug: chromium:1055252 Change-Id: I8f2d5f08229cb1a2fce64af6e22988de87d1b572 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2072744Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#66456}
-
- 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}
-
- 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}
-
- 05 Nov, 2019 1 commit
-
-
Ulan Degenbaev authored
This removes the usage of retaining_path_mode template parameter in main thread marking visitor and makes the incremental visitor identical to the stop-the-world visitor. Subsequent CL will switch these visitors to MarkingVisitorBase. Bug: chromium:1019218 Change-Id: I00e3ef190d8f2ac821cb63b02c402aad5ea49e9c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897538Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64757}
-
- 04 Nov, 2019 1 commit
-
-
Ulan Degenbaev authored
This makes the stop-the-world marking visitor the same as incremental visitor for processing large fixed arrays. Bug: chromium:1020982 Change-Id: Ie3b4ea7ad397ea0ae00000875aca0d142f672a3f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1897828Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64743}
-
- 30 Oct, 2019 1 commit
-
-
Ulan Degenbaev authored
This is the first step in unification of concurrent and main thread marking visitors. The new MarkingVisitorBase will become a base class for all marking visitors and will remove the existing code duplication. This is a refactoring without behavior change. Subsequent CL will change the main thread marking visitor to derive from the new base class. Bug: chromium:1019218 Change-Id: I3d47030d396e0ba6706882fbd922bbcac46181b2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1886920Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64632}
-
- 28 Oct, 2019 1 commit
-
-
Seth Brenith authored
This change begins making use of the fact that Torque now knows about the relationship between classes and instance types, to replace a few repetitive lists: - Instance type checkers (single and range), defined in src/objects/instance-type.h - Verification dispatch in src/diagnostics/objects-debug.cc - Printer dispatch in src/diagnostics/objects-printer.cc - Postmortem object type detection in tools/debug_helper/get-object-properties.cc Torque is updated to generate four macro lists for the instance types, representing all of the classes separated in two dimensions: classes that correspond to a single instance type versus those that have a range, and classes that are fully defined in Torque (with fields and methods inside '{}') versus those that are only declared. The latter distinction is useful because fully-defined classes are guaranteed to correspond to real C++ classes, whereas only-declared classes are not. A few other changes were required to make the lists above work: - Renamed IsFiller to IsFreeSpaceOrFiller to better reflect what it does and avoid conflicts with the new macro-generated IsFiller method. This is the part I'm most worried about: I think the new name is an improvement for clarity and consistency, but I could imagine someone typing IsFiller out of habit and introducing a bug. If we'd prefer to keep the name IsFiller, my other idea is to rename FreeSpace to VariableSizeFiller and Filler to FixedSizeFiller. - Made Tuple3 extend from Struct, not Tuple2, because IsTuple2 is expected to check for only TUPLE2_TYPE and not include TUPLE3_TYPE. - Normalized the dispatched behavior for BigIntBase and HeapNumber. - Added a few new object printers. Bug: v8:7793 Change-Id: I5462bb105f8a314baa59bd6ab6ab6215df6f313c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1860314 Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Dan Elphick <delphick@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#64597}
-
- 16 Oct, 2019 1 commit
-
-
Jakob Kummerow authored
for "entries", i.e. indices into the backing store (as opposed to "public indices" going into the hash function). This improves consistency and compiler-enforced type safety; no change in behavior is intended. Change-Id: I25e57e3ddcf18a406e2dfbd66786b6980c4e9615 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1852768 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#64317}
-
- 25 Sep, 2019 1 commit
-
-
Dominik Inführ authored
Since https://crrev.com/c/1771783 the mutator owns the old-to-new remembered set, while the sweeper modifies the sweeping-slot-set. This allows us to update the old-to-new remembered set non-atomically. In this CL the mutator now inserts non-atomically into the remembered set. The AccessMode is now explicit for Insert-operations as well. Bug: v8:9454 Change-Id: I94730345f7dd34fe309839969330687c94b3080b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1803652 Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#63971}
-
- 23 May, 2019 1 commit
-
-
Clemens Hammacher authored
This CL was generated by an automatic clang AST rewriter using this matcher expression: callExpr( callee( cxxMethodDecl( hasName("operator->"), ofClass(isSameOrDerivedFrom("v8::internal::Object")) ) ), argumentCountIs(1) ) The "->" at the expression location was then rewritten to ".". R=jkummerow@chromium.org TBR=mstarzinger@chromium.org,verwaest@chromium.org,yangguo@chromium.org Bug: v8:9183, v8:3770 No-Try: true No-Tree-Checks: true Change-Id: I0a7ecabdeafe51d0cf427f5280af0c7cab96869e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1624209Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#61764}
-
- 21 May, 2019 1 commit
-
-
Yang Guo authored
Bug: v8:9247 TBR=bmeurer@chromium.org,neis@chromium.org NOPRESUBMIT=true Change-Id: Ia1e49d1aac09c4ff9e05d58fab9d08dd71198878 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1621931Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Commit-Queue: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#61682}
-
- 20 May, 2019 1 commit
-
-
Yang Guo authored
Code that is being moved primarily deal with layout of a JSObject, accessing properties and elements, and map transitions. NOTREECHECKS=true NOTRY=true Bug: v8:9247 Change-Id: Ibce5d5926ac4021c8d40c4dd109948775ce1da58 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1613994 Commit-Queue: Yang Guo <yangguo@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#61638}
-
- 02 May, 2019 1 commit
-
-
Ulan Degenbaev authored
This is a reland of 7c426286 Original change's description: > [heap] Use normal marking write barrier for fixed array elements > > This simplifies the marking write barrier for elements to mark the > values instead of revisiting the array. > > Bug: chromium:918485 > > Change-Id: Id5da0d5b9ff8385a256fe14f4bf7171f9f6343e1 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588459 > 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@{#61125} Bug: chromium:918485 Change-Id: I8075e0333b3a05bc6193eb4bc030bfdcd72e64d8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1593088Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#61170}
-
- 30 Apr, 2019 3 commits
-
-
Clemens Hammacher authored
This reverts commit 7c426286. Reason for revert: Compile error on cfi: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20cfi/20196 Original change's description: > [heap] Use normal marking write barrier for fixed array elements > > This simplifies the marking write barrier for elements to mark the > values instead of revisiting the array. > > Bug: chromium:918485 > > Change-Id: Id5da0d5b9ff8385a256fe14f4bf7171f9f6343e1 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588459 > 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@{#61125} TBR=ulan@chromium.org,hpayer@chromium.org,mlippautz@chromium.org Change-Id: I8576fe00b19db906aa80ca9cb54c3b8cc95e3d97 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:918485 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1590076Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#61128}
-
Ulan Degenbaev authored
This simplifies the marking write barrier for elements to mark the values instead of revisiting the array. Bug: chromium:918485 Change-Id: Id5da0d5b9ff8385a256fe14f4bf7171f9f6343e1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588459 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@{#61125}
-
Mike Stanton authored
Failure addressed by not exposing the new test to the jitless environment. (jgruber@ on TBR). New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support compressed pointers in generated code. Enum name EMBEDDED_OBJECT changed to FULL_EMBEDDED_OBJECT. RelocInfo::[set_]target_object() abstract away the difference between FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT. Compressed embedded objects can only be created at this time on x64 with pointer compression turned on. Arm64 constant pools don't support compressed objects at this time. NOPRESUBMIT=true Bug: v8:7703 TBR: jgruber@chromium.org Change-Id: Ifff53b041bab09b4b8c3e16085e5df4aa2b99f4f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588461Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#61104}
-
- 29 Apr, 2019 2 commits
-
-
Ross McIlroy authored
This reverts commit b5da9fcb. Reason for revert: Breaks pointer compression bot: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20-%20pointer%20compression/3098 Original change's description: > [ptr-compr] New RelocInfo for compressed pointers. > > New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support > compressed pointers in generated code. Enum name EMBEDDED_OBJECT > changed to FULL_EMBEDDED_OBJECT. > > RelocInfo::[set_]target_object() abstract away the difference between > FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT. > > Compressed embedded objects can only be created at this time on > x64 with pointer compression turned on. Arm64 constant pools don't > support compressed objects at this time. > > Bug: v8:7703 > Change-Id: I03bfd84effa33c65cf9bcefa5df680ab7eace9dd > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547661 > Commit-Queue: Michael Stanton <mvstanton@chromium.org> > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#61076} TBR=ulan@chromium.org,mvstanton@chromium.org,mstarzinger@chromium.org,jgruber@chromium.org,ishell@chromium.org Change-Id: I262b2b98315fa987c5a66b1050dc726563ccdb2d No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:7703 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1588135Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#61087}
-
Mike Stanton authored
New enum RelocInfo::COMPRESSED_EMBEDDED_OBJECT created to support compressed pointers in generated code. Enum name EMBEDDED_OBJECT changed to FULL_EMBEDDED_OBJECT. RelocInfo::[set_]target_object() abstract away the difference between FULL_EMBEDDED_OBJECT and COMPRESSED_EMBEDDED_OBJECT. Compressed embedded objects can only be created at this time on x64 with pointer compression turned on. Arm64 constant pools don't support compressed objects at this time. Bug: v8:7703 Change-Id: I03bfd84effa33c65cf9bcefa5df680ab7eace9dd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1547661 Commit-Queue: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#61076}
-
- 01 Apr, 2019 1 commit
-
-
Mythri A authored
It is not safe to access flags from concurrent marking visitor. We access FLAG_flush_bytecode and FLAG_stress_flush_bytecode when visiting SharedFunctionInfo and JSFunction to decide if we need to collect bytecode. This cl adds a bytecode_flushing_mode which will be initialized when creating the visitor. This way we can avoid accessing flags. Bug: v8:9045 Change-Id: I84bf09ec2dd1543abad54bd87f8bf953830b89e7 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1541108Reviewed-by: Hannes Payer <hpayer@chromium.org> Commit-Queue: Mythri Alle <mythria@chromium.org> Cr-Commit-Position: refs/heads/master@{#60553}
-
- 21 Mar, 2019 1 commit
-
-
Michael Lippautz authored
FixedArray object in LO space are processed incrementally in ranges of slots size kProgressBarScanningChunk to reduce latency when returning to the processing loop is critical. A progress bar stores how much slots have been processed already. In the case of regular concurrent marking there was a guarantee that the object was only processed by one thread (main *or* concurrent marking thread) at the same time. However, some optimizations that avoid write barriers for each individual write operation emit a batched write barrier that requires re-visiting the FixedArray for the marking barrier. In such cases, the progress bar would be reset using relaxed stores which is problematic as the concurrent marking thread could race on setting its own progress on the progress bar. As a result, the array would only be re-scanned partially. The fix involves using CAS to set the progress bar and bail out in the case an inconsistent state was observed. In the following: MT... main thread CM... concurrent marking thread The interesting cases are: 1. MT *or* CM processes the array without interfering: Progress bar is updated monotonically without failing. 3. MT interferes with itself: The progress bar is just reset and the main thread will restart scanning from index 0. The object is added twice to the marking worklist and processed each time one of the entries is retrieved from the worklist. 4. MT interferes with CM: 4.a.: CM processes a range of slots and re-adds the left overs by setting the progress bar and re-adding the array to the worklist. In this case CM *and* MT process the array from index 0. The first time the CAS for setting the progress bar fails on either of the threads, the looser will bail out and leave processing for the winner. 4.b.: CM is interrupted while processing a range of the array and fails in setting the progress bar for the left overs. In this case the CM bails out right away and the main thread starts processing from index 0. In addition, there is a transition from index 0 to the index of the first actual slot. This transition makes it possible to observe a reset while processing the first actual chunk of slots. Bug: chromium:942699 Change-Id: I0b06f47ee075030dadfc959528cd77b6b69bbec2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1532325Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#60385}
-
- 18 Mar, 2019 1 commit
-
-
Maciej Goszczycki authored
Change-Id: I626340e61e9c1a46e0d1c882cc4fa86454d93e8a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1526013 Commit-Queue: Mythri Alle <mythria@chromium.org> Commit-Queue: Maciej Goszczycki <goszczycki@google.com> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#60293}
-
- 15 Feb, 2019 1 commit
-
-
Jakob Kummerow authored
This takes heap-inl.h out of the "Giant Include Cluster". Naturally, that means adding a bunch of explicit includes in a bunch of places that relied on transitively including them before. As of this patch, no header file outside src/heap/ includes heap-inl.h. Bug: v8:8562,v8:8499 Change-Id: I65fa763f90e66afc30d105b9277792721f05a6d4 Reviewed-on: https://chromium-review.googlesource.com/c/1459659 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59617}
-
- 30 Jan, 2019 1 commit
-
-
Marja Hölttä authored
This replaces WeakFactory with FinalizationGroup. New API is here: https://weakrefs.netlify.com/ BUG=v8:8179 Change-Id: I8c1c4a70deb42581d17117423dd29d93bdd35cb0 Reviewed-on: https://chromium-review.googlesource.com/c/1435938Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#59204}
-
- 29 Jan, 2019 1 commit
-
-
Ulan Degenbaev authored
This replaces InNewSpace with InYoungGeneration, which is a prerequisite for young large objects. Additional changes: - FROM_SPACE, TO_SPACE flags are renamed to FROM_PAGE, TO_PAGE. - A new LARGE_PAGE flag is added. - The external string table is refactored to track young string instead of new space strings. Bug: chromium:924547 Change-Id: Ia4e3ba1b72995c3400257a1f98559f091533e811 Reviewed-on: https://chromium-review.googlesource.com/c/1437274Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#59156}
-
- 22 Jan, 2019 1 commit
-
-
Ross McIlroy authored
This is a reland of f5729f1c TBR=ulan@chromium.org Original change's description: > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC. > > When bytecode is flushed from a SFI, the JSFunctions still retain their > FeedbackVector's and point to the interpreter entry trampoline. They are > reset if re-executed, however if not they could hold onto the feedback > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that > need to be reset, and performs the reset at the end of GC. > > BUG=v8:8395 > > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519 > Reviewed-on: https://chromium-review.googlesource.com/c/1393292 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58775} Bug: v8:8395 Change-Id: If9580b25ba32e4065e20d86cb8ed22a3280d59e9 Reviewed-on: https://chromium-review.googlesource.com/c/1424860Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#59001}
-
- 18 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
This reverts commit d5e63b03. Reason for revert: Fails gc-stress: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Mac64%20GC%20Stress/5312 Original change's description: > Reland "[GC] Ensure JSFunctions with flushed bytecode are flushed during GC." > > This is a reland of f5729f1c > > TBR=ulan@chromium.org > > Original change's description: > > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC. > > > > When bytecode is flushed from a SFI, the JSFunctions still retain their > > FeedbackVector's and point to the interpreter entry trampoline. They are > > reset if re-executed, however if not they could hold onto the feedback > > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that > > need to be reset, and performs the reset at the end of GC. > > > > BUG=v8:8395 > > > > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519 > > Reviewed-on: https://chromium-review.googlesource.com/c/1393292 > > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#58775} > > Bug: v8:8395 > Change-Id: I9bc84b62332575a080561c51f08b699b91e41e4a > Reviewed-on: https://chromium-review.googlesource.com/c/1414859 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58924} TBR=ulan@chromium.org,rmcilroy@chromium.org Change-Id: I5d3012d4c7277ae792b0488780ff426d51dd602f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8395 Reviewed-on: https://chromium-review.googlesource.com/c/1421838Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58925}
-
Ross McIlroy authored
This is a reland of f5729f1c TBR=ulan@chromium.org Original change's description: > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC. > > When bytecode is flushed from a SFI, the JSFunctions still retain their > FeedbackVector's and point to the interpreter entry trampoline. They are > reset if re-executed, however if not they could hold onto the feedback > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that > need to be reset, and performs the reset at the end of GC. > > BUG=v8:8395 > > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519 > Reviewed-on: https://chromium-review.googlesource.com/c/1393292 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58775} Bug: v8:8395 Change-Id: I9bc84b62332575a080561c51f08b699b91e41e4a Reviewed-on: https://chromium-review.googlesource.com/c/1414859 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#58924}
-
- 15 Jan, 2019 1 commit
-
-
Jakob Kummerow authored
It is slightly faster than Page::FromAddress(o->address()) (saves one instruction), and more concise than Page::FromAddress(o->ptr()). Same for MemoryChunk::FromHeapObject(). Bug: v8:8562 Change-Id: I9dc2b787aed5cad2d4087850dfa2e8eb157ad225 Reviewed-on: https://chromium-review.googlesource.com/c/1405031 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58806}
-
- 14 Jan, 2019 2 commits
-
-
Clemens Hammacher authored
This reverts commit f5729f1c. Reason for revert: GC Stress failures, e.g. https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/23549 Original change's description: > [GC] Ensure JSFunctions with flushed bytecode are flushed during GC. > > When bytecode is flushed from a SFI, the JSFunctions still retain their > FeedbackVector's and point to the interpreter entry trampoline. They are > reset if re-executed, however if not they could hold onto the feedback > vector indefinetly. This CL adds a pass the GC to detect JSFunctions that > need to be reset, and performs the reset at the end of GC. > > BUG=v8:8395 > > Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519 > Reviewed-on: https://chromium-review.googlesource.com/c/1393292 > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58775} TBR=ulan@chromium.org,rmcilroy@chromium.org Change-Id: I1ba0a190e54bb84b9e2c52ae73d19eb5afc02a4b No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8395 Reviewed-on: https://chromium-review.googlesource.com/c/1408993Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58778}
-
Ross McIlroy authored
When bytecode is flushed from a SFI, the JSFunctions still retain their FeedbackVector's and point to the interpreter entry trampoline. They are reset if re-executed, however if not they could hold onto the feedback vector indefinetly. This CL adds a pass the GC to detect JSFunctions that need to be reset, and performs the reset at the end of GC. BUG=v8:8395 Change-Id: I3de8655aff9ff80f912b4fd51dee43eb98cfd519 Reviewed-on: https://chromium-review.googlesource.com/c/1393292 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58775}
-
- 11 Jan, 2019 2 commits
-
-
Ross McIlroy authored
Forced GCs are performed during memory benchmarking to record memory usage, and as such, should not age the bytecode and cause it to be prematurely flushed. BUG=v8:8395 Change-Id: I75c16d8fec29963e49d70738c6a399fd826f6e8b Reviewed-on: https://chromium-review.googlesource.com/c/1393298 Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58749}
-
Ulan Degenbaev authored
This fixes two places that used the marking write barrier for elements instead of the new marking write barrier for descriptor array. This also ensures that revisited objects are marked black. Bug: v8:8651,chromium:917794 Change-Id: Ifc17ff89686f32ccf61d4b3f764b0ab536c42912 Reviewed-on: https://chromium-review.googlesource.com/c/1406670Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#58742}
-
- 09 Jan, 2019 1 commit
-
-
Jakob Kummerow authored
Now that we no longer have ObjectPtr and Object* return types, one way to load the slot's contents is enough. Bug: v8:3770 Change-Id: I5acaeed22e68595b0e0ba036fcc4ac3d15c57462 Reviewed-on: https://chromium-review.googlesource.com/c/1400416 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#58678}
-
- 28 Dec, 2018 1 commit
-
-
Ulan Degenbaev authored
Currently the concurrent marker visits any fixed array in one go ignoring the progress bar and does not expect seeing black arrays in the worklist. For this reason, if the main thread marker starts visiting a large array with the progress bar, then it has to re-push the array in the bailout worklist. So all subsequent visitations of the array happen on the main thread. This patch makes the progress bar thread-safe and allows the concurrent marker to visit arrays in chunks. Change-Id: I5e8867077ed2908b7f9c5d8bde34d0401f7fe446 Reviewed-on: https://chromium-review.googlesource.com/c/1385164 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#58484}
-
- 26 Dec, 2018 1 commit
-
-
Jakob Kummerow authored
Tbr: ahaas@chromium.org,leszeks@chromium.org,verwaest@chromium.org Bug: v8:3770 Change-Id: Ia6530fbb70dac05e9972283781c3550d8b50e1eb Reviewed-on: https://chromium-review.googlesource.com/c/1390116 Commit-Queue: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org> Reviewed-by: Alexei Filippov <alph@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58470}
-
- 24 Dec, 2018 1 commit
-
-
Ulan Degenbaev authored
The concurrent marker can now visit maps and mark the subset of descriptors that a map requires. Bug: v8:8486 Change-Id: I184442ec90a8f60c73cfe16d6e9d66f4efa92a01 Reviewed-on: https://chromium-review.googlesource.com/c/1384320 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#58466}
-
- 21 Dec, 2018 2 commits
-
-
Sigurd Schneider authored
This is a reland of f63a657e Original change's description: > [deoptimizer] Refactor GenerateDeoptimizationEntries > > This reduces preprocessor-expanded source size by 64,359 from > > gen ( 21 files): 71,570 to 1,613,100 ( 23x) > src ( 624 files): 367,830 to 52,964,659 ( 144x) > test ( 392 files): 490,924 to 37,360,916 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1521 files): 1,184,093 to 102,461,098 ( 87x) > > to > > gen ( 21 files): 71,570 to 1,613,100 ( 23x) > src ( 624 files): 367,837 to 52,919,005 ( 144x) > test ( 392 files): 490,924 to 37,342,211 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1521 files): 1,184,100 to 102,396,739 ( 86x) > > Bug: v8:8562 > Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a > Reviewed-on: https://chromium-review.googlesource.com/c/1384091 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58424} TBR=jarin@chromium.org,ulan@chromium.org Bug: v8:8562 Change-Id: I7a8a350414941f49c6155ff43e36e0cb0b2006e5 Reviewed-on: https://chromium-review.googlesource.com/c/1387497Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58437}
-
Sigurd Schneider authored
This reverts commit f63a657e. Reason for revert: breaks compile on lite mode: https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8926535782549686576/+/steps/build/0/steps/compile/0/stdout Original change's description: > [deoptimizer] Refactor GenerateDeoptimizationEntries > > This reduces preprocessor-expanded source size by 64,359 from > > gen ( 21 files): 71,570 to 1,613,100 ( 23x) > src ( 624 files): 367,830 to 52,964,659 ( 144x) > test ( 392 files): 490,924 to 37,360,916 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1521 files): 1,184,093 to 102,461,098 ( 87x) > > to > > gen ( 21 files): 71,570 to 1,613,100 ( 23x) > src ( 624 files): 367,837 to 52,919,005 ( 144x) > test ( 392 files): 490,924 to 37,342,211 ( 76x) > third_party ( 432 files): 239,085 to 9,547,902 ( 40x) > total ( 1521 files): 1,184,100 to 102,396,739 ( 86x) > > Bug: v8:8562 > Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a > Reviewed-on: https://chromium-review.googlesource.com/c/1384091 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> > Commit-Queue: Sigurd Schneider <sigurds@chromium.org> > Cr-Commit-Position: refs/heads/master@{#58424} TBR=ulan@chromium.org,jarin@chromium.org,sigurds@chromium.org Change-Id: I06e6f95255a3cea6a428713e9e841781425dffe8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:8562 Reviewed-on: https://chromium-review.googlesource.com/c/1387494Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#58425}
-