1. 05 Apr, 2022 1 commit
    • Leszek Swirski's avatar
      [test] Make cctest run one test, with maybe custom platform · 49c507dc
      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: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79772}
      49c507dc
  2. 23 Mar, 2022 1 commit
  3. 29 Jun, 2021 1 commit
  4. 23 Apr, 2021 1 commit
  5. 11 Nov, 2020 1 commit
  6. 09 Oct, 2020 1 commit
  7. 10 Jul, 2020 1 commit
  8. 07 Jul, 2020 1 commit
  9. 22 Jun, 2020 1 commit
  10. 29 Jan, 2020 1 commit
  11. 22 Jan, 2020 1 commit
  12. 19 Jan, 2020 1 commit
    • Ulan Degenbaev's avatar
      [api] New v8::Isolate::MeasureMemory API with per-context sizes · 80242048
      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: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65856}
      80242048
  13. 13 Jan, 2020 1 commit
  14. 09 Jan, 2020 1 commit
    • Ulan Degenbaev's avatar
      [heap] Implement per-context marking worklist draining · e27e6fd6
      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: 's avatarDominik Inführ <dinfuehr@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#65663}
      e27e6fd6