1. 06 May, 2020 1 commit
    • Andreas Haas's avatar
      [predictable] Run worker task on the foreground task runner · d6a02c02
      Andreas Haas authored
      On the PredictablePlatform, worker tasks were executed immediately
      instead of posting them in a task queue first. This approach caused
      problems because the execution of the worker task blocked progress of
      the posting task, and the worker task was always executed in the
      context of the posting task, e.g. with an already open HandleScope.
      
      With this CL, worker tasks get posted into the foreground task queue
      of the nullptr isolate instead of executing them immediately.
      The tasks of the nullptr isolate are then executed after a task of
      some other task queue is executed. As the worker tasks are thereby
      executed on the same thread as foreground tasks, the behavior is
      deterministic.
      
      A consequence of this approach is that each pumping the message loop
      of an Isolate may also execute other Isolate's background tasks.
      
      This approach is needed because we don't have a BackgroundTaskRunner but
      merely a CallOnWorkerThread method that doesn't know which Isolate the
      task corresponds to.
      
      R=clemensb@chromium.org, mlippautz@chromium.org
      
      Bug: v8:9670
      Change-Id: I6847ae042146431bc2376d27280be8829f529b95
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2182453
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#67616}
      d6a02c02
  2. 15 May, 2019 1 commit
  3. 09 Oct, 2018 1 commit
    • Clemens Hammacher's avatar
      [d8] Add --stress-delay-tasks flag · 7c2aef08
      Clemens Hammacher authored
      This flag stresses different interleavings of background and foreground
      tasks by delaying the execution of each task by a random value between
      0 and 100ms (with a quadratic distribution favoring smaller delayes).
      
      The implementation is encapsulated in the new {DelayedTasksPlatform}
      class, which wraps each task in a {DelayedTask} which first sleeps for
      the given number of microseconds, then executes the actual task.
      
      Both the old {PredictablePlatform} and the new {DelayedTasksPlatform}
      are moved to the new d8-platforms.cc file with an interface to create
      them in d8-platforms.h.
      
      R=yangguo@chromium.org, mslekova@chromium.org
      
      Bug: v8:8278
      Change-Id: I5847fb2da31ffde773195da7ad3f56a0390cc05b
      Reviewed-on: https://chromium-review.googlesource.com/c/1270592
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#56496}
      7c2aef08