diff options
author | Matt Loring <mattloring@google.com> | 2017-08-03 07:14:43 -0700 |
---|---|---|
committer | Anna Henningsen <anna@addaleax.net> | 2017-09-13 16:16:28 +0200 |
commit | 5976e0fac9af2370ad7b2b54b7c223c6f8b3d046 (patch) | |
tree | 9f4777b1579c240051cf1a7d66032998264fe4cc /deps/v8/src/cancelable-task.cc | |
parent | e1c37b3692773a5be9c1c1e0f959f2378fab36ef (diff) | |
download | android-node-v8-5976e0fac9af2370ad7b2b54b7c223c6f8b3d046.tar.gz android-node-v8-5976e0fac9af2370ad7b2b54b7c223c6f8b3d046.tar.bz2 android-node-v8-5976e0fac9af2370ad7b2b54b7c223c6f8b3d046.zip |
deps: backport bca8409 from upstream V8
Original commit message:
Make CancelableTask ids unique
They were only limited to 32 bit when using the internal Hashmap. Since
this has changed alreay some time ago, we can switch to 64 bit ids and
check that we never overflow.
Bug:
Change-Id: Ia6c6d02d6b5e555c6941185a79427dc4aa2a1d62
Reviewed-on: https://chromium-review.googlesource.com/598229
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#47085}
PR-URL: https://github.com/nodejs/node/pull/14001
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'deps/v8/src/cancelable-task.cc')
-rw-r--r-- | deps/v8/src/cancelable-task.cc | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/deps/v8/src/cancelable-task.cc b/deps/v8/src/cancelable-task.cc index 76056339f7..7c9cc9cb93 100644 --- a/deps/v8/src/cancelable-task.cc +++ b/deps/v8/src/cancelable-task.cc @@ -29,18 +29,17 @@ Cancelable::~Cancelable() { CancelableTaskManager::CancelableTaskManager() : task_id_counter_(0), canceled_(false) {} -uint32_t CancelableTaskManager::Register(Cancelable* task) { +CancelableTaskManager::Id CancelableTaskManager::Register(Cancelable* task) { base::LockGuard<base::Mutex> guard(&mutex_); - uint32_t id = ++task_id_counter_; - // The loop below is just used when task_id_counter_ overflows. - while (cancelable_tasks_.count(id) > 0) ++id; + CancelableTaskManager::Id id = ++task_id_counter_; + // Id overflows are not supported. + CHECK_NE(0, id); CHECK(!canceled_); cancelable_tasks_[id] = task; return id; } - -void CancelableTaskManager::RemoveFinishedTask(uint32_t id) { +void CancelableTaskManager::RemoveFinishedTask(CancelableTaskManager::Id id) { base::LockGuard<base::Mutex> guard(&mutex_); size_t removed = cancelable_tasks_.erase(id); USE(removed); @@ -49,7 +48,7 @@ void CancelableTaskManager::RemoveFinishedTask(uint32_t id) { } CancelableTaskManager::TryAbortResult CancelableTaskManager::TryAbort( - uint32_t id) { + CancelableTaskManager::Id id) { base::LockGuard<base::Mutex> guard(&mutex_); auto entry = cancelable_tasks_.find(id); if (entry != cancelable_tasks_.end()) { |