summaryrefslogtreecommitdiff
path: root/deps/v8/src/cancelable-task.cc
diff options
context:
space:
mode:
authorMatt Loring <mattloring@google.com>2017-08-03 07:14:43 -0700
committerAnna Henningsen <anna@addaleax.net>2017-09-13 16:16:28 +0200
commit5976e0fac9af2370ad7b2b54b7c223c6f8b3d046 (patch)
tree9f4777b1579c240051cf1a7d66032998264fe4cc /deps/v8/src/cancelable-task.cc
parente1c37b3692773a5be9c1c1e0f959f2378fab36ef (diff)
downloadandroid-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.cc13
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()) {