- 05 Apr, 2022 1 commit
-
-
Leszek Swirski authored
Remove cctest's ability to run multiple tests (which has long been deprecated and mostly broken). We can then make platform & V8 initialisation be part of running the test's Run method. In particular, this allows us to inject custom logic into the platform initialisation, like setting up a platform wrapper. Add a TEST_WITH_PLATFORM which exercises this by registering a platform factory on the test, and wrapping the default platform using this factory. This allows these tests to guarantee that the lifetime of the platform is longer than the lifetime of the isolate. As a result of this, we can also remove the complexity around draining platform state in the TestPlatform (since it will now have a longer lifetime than the Isolate using it), and as a drive-by clean up the TestPlaform to use a CcTest-global "default platform" instead of trying to scope over the "current" platform. As another drive-by, change the linked-list of CcTests and the linear search through it into an std::map of tests. Change-Id: I610f6312fe042f29f45cc4dfba311e4184bc7759 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3569223Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#79772}
-
- 23 Mar, 2022 1 commit
-
-
Michael Lippautz authored
This fixes a general race with stack-scoped `TestPlatform` which may go out of scope while tasks on workers are still running. Add a barrier for workers, implemented through tasks, to synchronize destruction of `TestPlatform`. While this fixes general races, such short-lived platforms still break if tasks cache the global platform pointer. Bug: v8:12635 Change-Id: Ifc6ecc29f0e2b7297ca52051eae9bd81013b60ce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3536651Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/main@{#79587}
-
- 29 Jun, 2021 1 commit
-
-
Dan Elphick authored
Several headers in the large inline objects header cycle were depending on deserializer.h to access Deserializer::uninitialized_field_value(). Unfortunately this meant that a change to many snapshot headers caused a rebuild of over 1480 files. This moves the constant into smi.h which would always be included by the objects inline headers. Bug: v8:11879 Change-Id: I2efd1c42efd43e6cd4630cea7fd76dd2bd29ae3d Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2992717 Commit-Queue: Dan Elphick <delphick@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Auto-Submit: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#75439}
-
- 23 Apr, 2021 1 commit
-
-
Ulan Degenbaev authored
Change-Id: Ibfbb306d52092bc9e9564d1e1b2d1cb7f7edfbb9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2844662 Auto-Submit: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#74146}
-
- 11 Nov, 2020 1 commit
-
-
Jakob Gruber authored
* Replace deprecated Factory::NewFunction* calls with JSFunctionBuilder. * Drive-by: rename Factory::NewFunctionForTest to ..ForTesting (this is the correct suffix recognized by our tooling to ensure it's only called from tests). Tbr: clemensb@chromium.org Bug: v8:8888 Change-Id: I110063803e5b467bd91b75fe8fea2ca4174f2bcc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2529129Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#71101}
-
- 09 Oct, 2020 1 commit
-
-
Ulan Degenbaev authored
Since GC can now happen during deserialization, object fields may contain the Smi sentinel value instead of pointers. This adds the required guards to methods of NativeContextInferrer Bug: chromium:1136801 Change-Id: I7338f31bf6ee34b8dee8431b8250d2cc2978e0c2 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2461241 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#70425}
-
- 10 Jul, 2020 1 commit
-
-
Ulan Degenbaev authored
The test creates a mock platform. The bug was that the lifetime of the mock platform was shoter than the lifetime of the isolate. Even though the mock platform restores the old platfrom, a background thread may still have a pointer to the mock platform leading to UAF. Bug: v8:10690 Tbr: dinfuehr@chromium.rg Change-Id: Ic14bf408e5e3e9e7d07e01af545bb88c21462300 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2290850Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68777}
-
- 07 Jul, 2020 1 commit
-
-
Ulan Degenbaev authored
By default the v8::MeasureMemory API forces GC after some timeout. There are use cases that require low overhead measurements without forcing GC at all. Change-Id: I7d57c552d78d86800c4f37acb680c70c6422477f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2257856Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#68718}
-
- 22 Jun, 2020 1 commit
-
-
Ulan Degenbaev authored
Chrome may send memory measurement requests to multiple renderer processes at the same time. This may lead to multiple GC happening at the same time if the processes are idle. Randomization spreads out the GCs over time to reduce the load on the system. Bug: chromium:1049093 Change-Id: I5aa67fb07f8a55d0ba769bf823168b35cb3c23cb Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2208861 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#68472}
-
- 29 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
The existing legacy performance.memory API accounts external string and array buffer backing store bytes. This CL adds per-context tracking of external bytes Bug: chromium:973627 Change-Id: I2b308dc540454e7b0b66406b83a18bf8f8d55d8e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2025369Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#66018}
-
- 22 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
Bug: chromium:973627 Change-Id: Ie9b07075604451636967b69b30f276fb45bc5372 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2011824 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Cr-Commit-Position: refs/heads/master@{#65934}
-
- 19 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
This adds a new API function that can be customized by the embedder by providing a delegate that defines contexts to be measured and reports the results to JS. A memory measurement request is carried out as follows: 1) MeasureMemory(delegate) invocation enqueues a new request in MemoryMeasurement::received_ and schedules a delayed GC task. 2) At the start of the next GC (that is triggered either by the GC schedule or by the delayed task) each request in received_ moves to processing_. Per-context marking worklists are created for each native context that was selected by the delegates (using the ShouldMeasure predicate). 3) At the end of the GC the sizes of the native contexts are recorded for each request in processing_. The requests move to the done_ list and result reporting task is scheduled. 4) When the result reporting task runs it invokes the MeasurementComplete function of each delegate in done_. Bug: chromium:973627 Change-Id: I0254cae693c5b8fab7c85a9eca0a3a128210b6c4 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1981493 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65856}
-
- 13 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
This adds inference for general JSObjects to NativeContextInferrer in the case when the object is going to be attributed to the shard context. Bug: chromium:973627 Change-Id: I393e8dd16a1f8b615fb2f8dceb52f543bae33554 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1997133Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#65736}
-
- 09 Jan, 2020 1 commit
-
-
Ulan Degenbaev authored
This changes the marking worklist draining for the main thread marker and the concurrent marker to use the following algorithm in per-context mode: 1) Pop an object from the marking worklist. 2) Try to infer the native context that owns the objects. This is done using a new NativeContextInferrer class. 3) If the inference is successful, then change the active marking worklist to the worklist of the inferred native context. 4) Otherwise, keep the current active marking worklist. 5) Visit the object. Newly discovered objects will be pushed onto the active marking worklist. 6) Account the object size for the native context corresponding to the active marking worklist. This is done using a new NativeContextStats class. The main property of the algorithm is that each object for which we couldn't infer the native context is either attributed to the native context retaining it or is not attributed to any native context. Bug: chromium:973627 Change-Id: Ide4ab992275d115279f971d89ace657f4c05e176 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1981491 Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#65663}
-