1. 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