summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix
diff options
context:
space:
mode:
authorSaúl Ibarra Corretgé <saghul@gmail.com>2015-09-22 22:00:38 +0200
committercjihrig <cjihrig@gmail.com>2015-10-01 10:40:39 -0400
commit07a43eb1297109a4aad6fb410e3320bcaf1d90aa (patch)
tree6f367e13f5b0686331aec4adf0a2317a71d16635 /deps/uv/src/unix
parenta6aab430936c4c2791dbb29d8adec9d9a12f9376 (diff)
downloadandroid-node-v8-07a43eb1297109a4aad6fb410e3320bcaf1d90aa.tar.gz
android-node-v8-07a43eb1297109a4aad6fb410e3320bcaf1d90aa.tar.bz2
android-node-v8-07a43eb1297109a4aad6fb410e3320bcaf1d90aa.zip
deps: upgrade libuv to 1.7.5
PR-URL: https://github.com/nodejs/node/pull/3010 Reviewed-By: Rod Vagg <rod@vagg.org> Reviewed-By: Trevor Norris <trev.norris@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/uv/src/unix')
-rw-r--r--deps/uv/src/unix/atomic-ops.h12
-rw-r--r--deps/uv/src/unix/darwin.c6
-rw-r--r--deps/uv/src/unix/thread.c30
3 files changed, 34 insertions, 14 deletions
diff --git a/deps/uv/src/unix/atomic-ops.h b/deps/uv/src/unix/atomic-ops.h
index 7e4e64beda..8fb157dcc6 100644
--- a/deps/uv/src/unix/atomic-ops.h
+++ b/deps/uv/src/unix/atomic-ops.h
@@ -33,6 +33,10 @@ UV_UNUSED(static int cmpxchgi(int* ptr, int oldval, int newval)) {
: "r" (newval), "0" (oldval)
: "memory");
return out;
+#elif defined(_AIX) && defined(__xlC__)
+ const int out = (*(volatile int*) ptr);
+ __compare_and_swap(ptr, &oldval, newval);
+ return out;
#else
return __sync_val_compare_and_swap(ptr, oldval, newval);
#endif
@@ -46,6 +50,14 @@ UV_UNUSED(static long cmpxchgl(long* ptr, long oldval, long newval)) {
: "r" (newval), "0" (oldval)
: "memory");
return out;
+#elif defined(_AIX) && defined(__xlC__)
+ const long out = (*(volatile int*) ptr);
+# if defined(__64BIT__)
+ __compare_and_swaplp(ptr, &oldval, newval);
+# else
+ __compare_and_swap(ptr, &oldval, newval);
+# endif /* if defined(__64BIT__) */
+ return out;
#else
return __sync_val_compare_and_swap(ptr, oldval, newval);
#endif
diff --git a/deps/uv/src/unix/darwin.c b/deps/uv/src/unix/darwin.c
index 718a81e4c1..dab6ca999d 100644
--- a/deps/uv/src/unix/darwin.c
+++ b/deps/uv/src/unix/darwin.c
@@ -199,8 +199,10 @@ int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
}
*cpu_infos = uv__malloc(numcpus * sizeof(**cpu_infos));
- if (!(*cpu_infos))
- return -ENOMEM; /* FIXME(bnoordhuis) Deallocate info? */
+ if (!(*cpu_infos)) {
+ vm_deallocate(mach_task_self(), (vm_address_t)info, msg_type);
+ return -ENOMEM;
+ }
*count = numcpus;
diff --git a/deps/uv/src/unix/thread.c b/deps/uv/src/unix/thread.c
index 6080cf5f73..c56a317025 100644
--- a/deps/uv/src/unix/thread.c
+++ b/deps/uv/src/unix/thread.c
@@ -124,14 +124,14 @@ void uv_mutex_lock(uv_mutex_t* mutex) {
int uv_mutex_trylock(uv_mutex_t* mutex) {
int err;
- /* FIXME(bnoordhuis) EAGAIN means recursive lock limit reached. Arguably
- * a bug, should probably abort rather than return -EAGAIN.
- */
err = pthread_mutex_trylock(mutex);
- if (err && err != EBUSY && err != EAGAIN)
- abort();
+ if (err) {
+ if (err != EBUSY && err != EAGAIN)
+ abort();
+ return -EBUSY;
+ }
- return -err;
+ return 0;
}
@@ -162,10 +162,13 @@ int uv_rwlock_tryrdlock(uv_rwlock_t* rwlock) {
int err;
err = pthread_rwlock_tryrdlock(rwlock);
- if (err && err != EBUSY && err != EAGAIN)
- abort();
+ if (err) {
+ if (err != EBUSY && err != EAGAIN)
+ abort();
+ return -EBUSY;
+ }
- return -err;
+ return 0;
}
@@ -185,10 +188,13 @@ int uv_rwlock_trywrlock(uv_rwlock_t* rwlock) {
int err;
err = pthread_rwlock_trywrlock(rwlock);
- if (err && err != EBUSY && err != EAGAIN)
- abort();
+ if (err) {
+ if (err != EBUSY && err != EAGAIN)
+ abort();
+ return -EBUSY;
+ }
- return -err;
+ return 0;
}