1. 10 Sep, 2019 1 commit
  2. 30 Jul, 2019 1 commit
  3. 27 May, 2019 1 commit
  4. 24 May, 2019 1 commit
  5. 17 Jan, 2019 1 commit
    • Andreas Haas's avatar
      [wasm] Reschedule compilation tasks · 62fa0487
      Andreas Haas authored
      At the moment, the whole WebAssembly compilation may run in a single
      background task. On a low-end device, this can mean that the background
      thread is busy for seconds and thereby blocks other tasks, see e.g.
      https://crbug.com/914757.
      
      With this CL we re-schedule compilation tasks after every 50ms. These
      50ms are an arbitrary number. I don't want to introduce too much
      overhead, but since this is in the background we also don't have to
      make tasks super short.
      
      Tasks which are going to compile with TurboFan will be posted with
      lower priority.
      
      This change requires changes in the CancelableTaskManager. At the
      moment it is not possible that a background task posts a new task
      which is managed by the same task manager as itself. The problem is
      about how to deal with another thread which calls CancelAndWait
      concurrently. At the moment, if a new task gets posted after the call
      to CancelAndWait, then `CHECK(!canceled_)` in
      CancelableTaskManager::Register will fail. If we used a lock to
      synchronize the calls to CancelAndWait and Register, then there would
      be a deadlock, where the thread which calls CancelAndWait waits for
      the task which wants to call Register, but at the same time blocks that
      task by holding the lock.
      
      With the change here, posting a task after the call to CancelAndWait
      will just immediately cancel the new task. This matches the behavior
      you would get if CancelAndWait is called right after calling Register.
      
      Bug: chromium:914757
      Change-Id: I6d57aba161db8a915ec0d745658e0c28d25219a8
      Reviewed-on: https://chromium-review.googlesource.com/c/1411884
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58898}
      62fa0487
  6. 09 Nov, 2018 2 commits
  7. 08 Nov, 2018 1 commit
  8. 17 Sep, 2018 1 commit
  9. 02 Aug, 2017 1 commit
  10. 04 Jan, 2017 1 commit
  11. 15 Nov, 2015 1 commit
  12. 14 Nov, 2015 1 commit
    • mlippautz's avatar
      Add {CancelableTaskManager} to handle {Cancelable} concurrent tasks. · 60e7ea8a
      mlippautz authored
      This change binds each {Cancelable} task to a so-called {CancelableTaskManager},
      which is then used to handle concurrent cancelation as well as synchronizing
      shutdown for already running tasks.  Since ownership of tasks is transferred to
      the platform executing a task (destructor), handling in the manager uses integer
      ids. Note that this also mitigates (modulo integer size) the ABA problem.
      
      All handling of {Cancelable} tasks is now encapsulated into the corresponding
      manager, which is instantiated for each isolate.
      
      R=hpayer@chromium.org
      BUG=chromium:524425
      LOG=N
      CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg;tryserver.v8:v8_linux_gc_stress_dbg;tryserver.v8:v8_mac_gc_stress_dbg;tryserver.v8:v8_linux64_msan_rel;tryserver.v8:v8_linux64_tsan_rel;tryserver.v8:v8_mac64_asan_rel
      
      Review URL: https://codereview.chromium.org/1409993012
      
      Cr-Commit-Position: refs/heads/master@{#31997}
      60e7ea8a