- 20 Jun, 2022 1 commit
-
-
Nikolaos Papaspyrou authored
Mostly in comments, again, not much to be said... Bug: v8:12425 Change-Id: Id847447ade3100f13c5da8931fbb47d06ff1ce1f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3711883Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> Cr-Commit-Position: refs/heads/main@{#81242}
-
- 13 Jun, 2022 1 commit
-
-
Anton Bikineev authored
We don't need to reset the entire age table, but merely the pages that are known to contain young objects. This must improve memory use with generational GC enabled. The CL is a prerequisite for another CL that'll increase the size of the age-table. Bug: chromium:1029379 Change-Id: Ibb5b607af20380c3936b7396b3d9767f6f17c44b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3695268 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#81106}
-
- 10 Jun, 2022 1 commit
-
-
Anton Bikineev authored
Currently, PageAllocator assumes that FreePages(start, size) will always be called on the same region that was passed to AllocatePages(start, size). This assumption is made in: 1) leak-sanitizer (LsanPageAllocator) that checks it explicitly, 2) on Windows, FreePages() calls VirtualFree() with zero-size and MEM_RELEASE, which causes the entire reservation to be freed. The CL temporarily fixes the bot failures just by holding the unneeded half and adds a TODO to return the unneded part back to the OS. Bug: chromium:1325007 Change-Id: I2bd878876d43d693cf2138020f410ffe1615b4e9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3695363Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/main@{#81059}
-
- 09 Jun, 2022 1 commit
-
-
Anton Bikineev authored
The CL does the following: 1) Globalizes CagedHeap for all HeapBases; 2) Adds the global variable representing the cage base; 3) Changes all write-barriers to use this global variable for value/slot checks; 4) Removes no longer needed functionality introduced in previous CLs. Bug: v8:12231 Change-Id: I281a7b0bf67e349c988486fc2d43ec6d703fd292 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3688050 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#81027}
-
- 29 Apr, 2022 1 commit
-
-
Anton Bikineev authored
The CL introduces a new option --cppgc-young-generation. This option can't be enabled statically, because V8 options are parsed after heap initialization. The CL changes minor GC so that it can be enabled dynamically. The way it works is as follows: - the user calls YoungGenerationEnabler::Enable(); - a heap checks in the next atomic pause whether the flag was enabled; - if so, the heap enables young generation for itself. To avoid barrier regressions without young-generation enabled, the CL changes the meaning of the global flag is-any-incremental-or-concurrent-marking to is-barrier-enabled. The runtime option would enable us to test young generation on try- and performance-bots. Bug: chromium:1029379 Change-Id: I664cccdcd208225ffcbf9901f1284b56d088c5c3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3607993 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#80274}
-
- 26 Apr, 2022 1 commit
-
-
Anton Bikineev authored
When setting a range for a newly allocated lab, consider adjacent cards. If either is young, don't mark it as kMixed. Bug: chromium:1029379 Change-Id: If7d1d920dd5769679de68800eae61f3a8dc1eb17 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3584116Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/main@{#80175}
-
- 13 Apr, 2022 1 commit
-
-
Anton Bikineev authored
This reduces card granularity from 4096 to 512 bytes with the goal to improve write barrier filtering. Bug: chromium:1029379 Change-Id: I22e2a9c61ef4c36c3db65404370213d0a8048e08 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3582393Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/main@{#79960}
-
- 12 Oct, 2021 1 commit
-
-
Michael Lippautz authored
Adds support for double-word aligned, i.e., 8 bytes on 32-bit platforms and 16 bytes on 64-bit platforms, objects in Oilpan. Changes: - Adds generic alignment APIs and overrides. - Internal logic to support double-word aligned allocations on LABs. - Adjusts natural alignment of large objects to follow double-word. - Adds a new static_assert() that suggests users file a bug if higher alignment is required. - Statically checks that no allocations with non-default alignment target custom spaces that support compaction. Bug: v8:12295 Change-Id: I05766ce2349055d5d78b68919be00e7ee91d5505 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218150Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77348}
-
- 07 Oct, 2021 1 commit
-
-
Michael Lippautz authored
In addition, trigger the observer only every ~256KiB to avoid excessive incremental marking steps on fragemented heaps that have to set up LABs repeatedly. Bug: v8:12285 Change-Id: Id3d85d2c3f96d9d914c731f998df827898e1863d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3208810 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/main@{#77278}
-
- 16 Sep, 2021 1 commit
-
-
Michael Lippautz authored
ClusterFuzz reported a non-reproducible issue here: https://clusterfuzz.com/testcase-detail/4634185246244864 What happens here is that a LAB is replaced that is adjacent to a live object that is concurrently being marked using the object start bitmap. Bug: chromium:1056170 Change-Id: Iebc0db6b85262f2f544a76bac9b3d1c662e41d6a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162603Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#76865}
-
- 01 Sep, 2021 1 commit
-
-
Michael Lippautz authored
Drive-by: Pointer to reference conversions and other smaller cleanups. Change-Id: I83ed114e4b27d5986a389a9753333716b0e20524 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3133146Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#76615}
-
- 31 Aug, 2021 2 commits
-
-
Omer Katz authored
Replace non-null pointer in ObjectAllocator with references. Bug: chromium:1056170 Change-Id: I55124610490bb903819f88a70b1f8e0fea4e430d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3132969 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#76607}
-
Omer Katz authored
Prefinalizers have long been forbidden to allocate. This restriction often proved problematic and has caused several issues in the past. This CL adds support for allowing allocations in prefinalizers. At the start of prefinalizer invocations we clear the linear allocation buffers, such that all allocations go through the slow path for allocation. The slow path checks whether prefinalizers are currently being invoked and marks the newly allocated object if they are (i.e. black allocation during prefinalizers). The new behavior is disabled by default and can be enabled by setting the cppgc_allow_allocations_in_prefinalizers gn arg to true. Bug: chromium:1056170 Change-Id: Ib86e780dcff88fa7b0f762ac2ab83c42393d33af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3097877 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#76606}
-
- 12 Jul, 2021 2 commits
-
-
Michael Lippautz authored
Add discarded of memory on memory reducing garbage collections. In addition, add tracking of discarded memory and properly adjust the resident memory of heap dumps. - Memory is discarded during sweeping and the counter is persistent across garbage collection cycles. - Subsequent sweep calls are not supposed to touch the memory anymore. - As a simplification, discarded memory is tracked on page granularity and assumed to be fully paged in as soon as a page's free list entries are reused for allocation. Change-Id: Icfd58f49f3400c4df0d482e20326a0c43c1ca9f5 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3015563 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#75677}
-
Michael Lippautz authored
Enforcing this invariant allows for assuming that free memory is left untouched. Bug: chromium:1056170 Change-Id: Ia225a31bbe6d394b8310ce512ed4f76f78e5c177 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3017808 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#75669}
-
- 28 May, 2021 1 commit
-
-
Michael Lippautz authored
Bug: v8:11822 Change-Id: I35f3b5ce71ab5f86a5d9991bb9d729a2fe56f6dd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2919955Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74840}
-
- 26 May, 2021 1 commit
-
-
Michael Lippautz authored
Also change: - {NormalPageSpace, LargePageSpace}::From() - ObjectAllocator::* Bug: v8:11822 Change-Id: I78a1a5379e16fc1e1c95136d7aa8cc34caed0413 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917042 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74784}
-
- 25 May, 2021 1 commit
-
-
Michael Lippautz authored
Switches internals of BasePage and some getters to references that are guaranteed non-null. Bug: v8:11822 Change-Id: I484c4451720dc7e04f8b89dbe4fef03a3eaf817e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2917038Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74756}
-
- 12 May, 2021 1 commit
-
-
Omer Katz authored
Replaces Payload* terminiology with Object* terminology. HoH::ObjectSize = just the object, without the header. HoH::AllocatedSize = both the object and the header. Payload terminology is retained only for pages. Bug: chromium:1056170 Change-Id: I568a324ae8728f098be642b024493c375ec873cb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2892079 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74538}
-
- 08 Mar, 2021 1 commit
-
-
Michael Lippautz authored
Resize() may be used to adjust additional trailing bytes of an object. It is up to the embedder to ensure correctness in case of shrinking. Bug: chromium:1056170 Change-Id: I954df6c7440b77275cd62e4b802e8f5d39c06f9d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2739652 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#73277}
-
- 16 Feb, 2021 1 commit
-
-
Michael Lippautz authored
Lazy sweeping may have found a memory block not positioned at the head of the corresponding bucket. Such a block is not found during a subsequent free list allocation, as such allocations do not linearly walk the free list. Bug: chromium:1056170 Change-Id: I288b6ad768987705d86fc78d0aa6fe46e99417b9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2692822 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72770}
-
- 28 Jan, 2021 1 commit
-
-
Michael Lippautz authored
Allows for prohibiting GCs and will result in a crash in case a GC finalization event is triggered. Complements NoGarbageCollectionScope which ignores GC finalization events. Bug: chromium:1056170 Change-Id: Ie2a72a8675462b24692225af17c8f284318337ba Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2656260Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#72413}
-
- 27 Jan, 2021 1 commit
-
-
Omer Katz authored
Sweep page by page in the space until we find a slot big enough for the current allocation. Bug: chromium:1056170 Change-Id: Id6dcf2d4db20268090b4626340bbed44f67d053c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2649259 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Cr-Commit-Position: refs/heads/master@{#72369}
-
- 19 Jan, 2021 1 commit
-
-
Michael Lippautz authored
Termination GCs are used to destroy remaining C++ object on the managed heap to free potential off-heap memory. This is important for gracefully shutting down workers. Drive-by: Add guard prohibiting recursive sweeping calls on the mutator thread. Bug: chromium:1056170 Change-Id: I02ea3b632d38f5beab18cc8f077cf717ed877909 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2631504 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#72155}
-
- 30 Nov, 2020 1 commit
-
-
Omer Katz authored
Update scope names to match the new scope naming scheme we settled on. This CL also: 1) Adds high-level scopes for atomic mark/sweep/compact and incremental mark/sweep. 2) Remove scopes that will now become redundant (i.e. SweepAndCompact, UnifiedMarkingStep, etc.) The new scopes are no longer aligned with the existing telemetry code (gc_metric.html) in blink. Bug: chromium:1056170 Change-Id: I510269e24172f411b2a98c0a0a250a6e9fe58841 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2563882 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71480}
-
- 20 Nov, 2020 1 commit
-
-
Omer Katz authored
This reverts commit 64bf4c53. Reason for revert: fix in patchset 2 Original change's description: > Revert "cppgc: Use tracing scopes" > > This reverts commit 548fe208. > > Reason for revert: Issues on Mac64: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20-%20debug/31710 > > Original change's description: > > cppgc: Use tracing scopes > > > > The scopes themselves mostly have the same coverage as current scopes in > > blink. A few exception due to encapsulation exist and are highlighted as > > comments on the CL. > > > > Bug: chromium:1056170 > > Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552 > > Commit-Queue: Omer Katz <omerkatz@chromium.org> > > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#71285} > > TBR=ulan@chromium.org,mlippautz@chromium.org,omerkatz@chromium.org > > Change-Id: I20dce9309dcaeff6ea61bdc51df3a2f62c2a103f > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: chromium:1056170 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550782 > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Commit-Queue: Clemens Backes <clemensb@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71289} TBR=ulan@chromium.org,mlippautz@chromium.org,clemensb@chromium.org,omerkatz@chromium.org # Not skipping CQ checks because this is a reland. Bug: chromium:1056170 Change-Id: I9c57cdb3b0d310366cdf3e6fbcd1254fdc363163 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550666 Auto-Submit: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#71305}
-
- 19 Nov, 2020 2 commits
-
-
Clemens Backes authored
This reverts commit 548fe208. Reason for revert: Issues on Mac64: https://ci.chromium.org/p/v8/builders/ci/V8%20Mac64%20-%20debug/31710 Original change's description: > cppgc: Use tracing scopes > > The scopes themselves mostly have the same coverage as current scopes in > blink. A few exception due to encapsulation exist and are highlighted as > comments on the CL. > > Bug: chromium:1056170 > Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552 > Commit-Queue: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#71285} TBR=ulan@chromium.org,mlippautz@chromium.org,omerkatz@chromium.org Change-Id: I20dce9309dcaeff6ea61bdc51df3a2f62c2a103f No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2550782Reviewed-by:
Clemens Backes <clemensb@chromium.org> Commit-Queue: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#71289}
-
Omer Katz authored
The scopes themselves mostly have the same coverage as current scopes in blink. A few exception due to encapsulation exist and are highlighted as comments on the CL. Bug: chromium:1056170 Change-Id: I48af2cfdfd53a8caa1ab5d805d377f6f13a825bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2540552 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#71285}
-
- 20 Aug, 2020 1 commit
-
-
Omer Katz authored
Perform a small marking step whenever we allocate a new lab. Bug: chromium:1056170 Change-Id: I2a09480a254ddb1afc95bf5ef9a70ec27f512d79 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2366698 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69507}
-
- 19 Aug, 2020 1 commit
-
-
Omer Katz authored
This CL adds a basic implementation of incremental marking for standalone GC. Followup CLs include: * Use bytes instead of time as deadline * Port incremental marking schedule from blink * Mark on allocation * Guarantees for progres/termination for standalone GC * etc... Calling StartIncrementalGarbageCollection triggers StartMarking which schedules incremental marking as non-nestable tasks. For unified heap, marking will continue running until it runs out of work but it won't finalize independently. For standalone, when incremental runs out of work it will schedule a new task in which it will finalize marking and trigger the rest of the GC. Users of standalone can also force finalization before incremental marking as finished using FinalizeIncrementalGarbageCollectionIfRunning. Calling CollectGarbage would also finalize an on-going incremental GC if one exists. Otherwise it will trigger an atomic GC. See the following doc for explanation of the various methods: https://docs.google.com/document/d/1ZhJY2fOoD8sH53ZxMh2927Zl8sXqA7azJgcQTWx-YKs/edit?usp=sharing Bug: chromium:1056170 Change-Id: I75ead414eb9da9f8b7f71c4638b9830fce7708ca Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298009 Commit-Queue: Omer Katz <omerkatz@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#69480}
-
- 01 Jul, 2020 1 commit
-
-
Michael Lippautz authored
Move inlined methods to .h files accordingly, follwing style guide rule: https://google.github.io/styleguide/cppguide.html#Self_contained_Headers Bug: chromium:1056170 Change-Id: Ia6c4f82bd4352d507eece36e540ad0d318e56920 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2273858Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68627}
-
- 17 Jun, 2020 1 commit
-
-
Anton Bikineev authored
This adds the following things: - age table for 4K regions; - generational barrier for mixed 4K regions; - unmarking for major collections; - young generation flags. Bug: chromium:1029379 Change-Id: Ief1229f0dac5f90c5f06d3168c8ffb4b7d1f1b53 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2246566 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68379}
-
- 10 Jun, 2020 2 commits
-
-
Michael Lippautz authored
Unified heap support in V8 requires having another (at least internal) heap that implements a unfied garbage collection strategy. This will not re-use the already existing cppgc::Heap because there should be no way in creating such a heap externally or scheduling stand-alone garbage collections. In order to have a common token, this CL introduces AllocationHandle which can be passed to MakeGarbageCollected to allocate C++ objects. V8 (soon) and the stand-alone heap both have methods to retrieve such a handle. This works around a problem with creating diamond class hierarchies when a base class would be exposed on the public API level. Fast paths for Blink are still possible because allocation handles can be cached the same way (e.g. global, or TLS) as a heap can be cached. Tbr: yangguo@chromium.org Bug: chromium:1056170 Change-Id: I8e9472a2c24ef82d1178953e8429b1fd8a2344bc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2238027 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68310}
-
Anton Bikineev authored
This fixes two issues: - labs resetting didn't account bytes as beeing freed; - large object were not accounted. The CL introduces a single bottleneck for labs resetting in ObjectAllocator, which is aware of StatsCollector. This way NormalSpace is treated as a value object and all invariants are maintained by ObjectAllocator (and Sweeper). Bug: chromium:1056170 Change-Id: I027cc01fe5028a3dfa81905d7ea53dd12d1c1f20 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2237629 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68286}
-
- 03 Jun, 2020 1 commit
-
-
Michael Lippautz authored
This ports HeapStatsCollector (former ThreadHeapStatsCollector) from Blink. The CL only ports accounting of allocated object size which is needed for a simple growing strategy in a follow up. HeapStatsCollector is a global dependency for most sub components as it provides infrastructure for measuring time (through trace scopes) and space. The general idea of HeapStatsCollector is to act as sink where all sub components push time and space information. This information is then gathered and made available via an event that is implemented as POD. Time-dependent info is available through regular getters (pull) and observers (push). Change-Id: I40b4d76e1a40c56e5df1a7353622318cde730e26 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2225902 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#68150}
-
- 13 May, 2020 1 commit
-
-
Michael Lippautz authored
This is a reland of 3df36990 Original change's description: > cppgc: Port ObjectStartBitmap > > This ports ObjectStartBitmap from Blink. > > Bug: chromium:1056170 > Change-Id: Ib959d9ac1c5e1e34ffa6418f77956e993c570ffc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181331 > Commit-Queue: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67735} Bug: chromium:1056170 Change-Id: I6e2fd99e96bebe3060f4feb8503ab04c0d452d51 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2198986Reviewed-by:
Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67772}
-
- 12 May, 2020 2 commits
-
-
Leszek Swirski authored
This reverts commit 3df36990. Reason for revert: Breaks MSVC bot (https://cr-buildbucket.appspot.com/build/8880517266974148704) Original change's description: > cppgc: Port ObjectStartBitmap > > This ports ObjectStartBitmap from Blink. > > Bug: chromium:1056170 > Change-Id: Ib959d9ac1c5e1e34ffa6418f77956e993c570ffc > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181331 > Commit-Queue: Anton Bikineev <bikineev@chromium.org> > Reviewed-by: Omer Katz <omerkatz@chromium.org> > Reviewed-by: Michael Lippautz <mlippautz@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Cr-Commit-Position: refs/heads/master@{#67735} TBR=ulan@chromium.org,mlippautz@chromium.org,bikineev@chromium.org,omerkatz@chromium.org Change-Id: Iaea15b11c0ee7b599fe1f275aded7414bce428ac No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2196321Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#67742}
-
Anton Bikineev authored
This ports ObjectStartBitmap from Blink. Bug: chromium:1056170 Change-Id: Ib959d9ac1c5e1e34ffa6418f77956e993c570ffc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2181331 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#67735}
-
- 08 May, 2020 1 commit
-
-
Michael Lippautz authored
This patch provides infrastructure to pin object types to specific spaces. This allows embedders to create mutual exclusive arenas for certain (base) types. In future, this will also be used to provide sliding-window compaction on certain custom spaces. We mainly preserve the existing infrastructure with the difference that spaces are now slightly more dynamic than in Blink as they are kept in a vector instead of a fixed-size array. The mechanism differs from Blink in that it does not allow the user object to call allocation methods directly but instead provides a trait that can be overridden to specify a custom space. The patch preserves templatization for objects that do not go into custom spaces to safe a branch in the allocation hot path. Change-Id: I08aa6932348e2d6258e19c4a32d189865f459f02 Bug: chromium:1056170 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2187611 Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Cr-Commit-Position: refs/heads/master@{#67666}
-
- 05 May, 2020 1 commit
-
-
Anton Bikineev authored
This ports sweeper logic from Blink into a separate entity - Sweeper. Concurrent sweeping is in a followup. Bug: chromium:1056170 Change-Id: I41196225f0d882cb0ab5190d23e297ee2498df6b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2167858 Commit-Queue: Anton Bikineev <bikineev@chromium.org> Reviewed-by:
Omer Katz <omerkatz@chromium.org> Reviewed-by:
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@{#67581}
-