aboutsummaryrefslogtreecommitdiffstats
path: root/thread_sync.c
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-17 19:59:56 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-03-17 19:59:56 +0000
commita5a777dc0aa1a198db307a1f9bb3668e4d3c76d5 (patch)
treed5cced02e3e1a3e9a89ff0862f83ee5bdb35f658 /thread_sync.c
parenteae1520a6d1ea4c312a1aa3905af6a17daefdab7 (diff)
downloadruby-a5a777dc0aa1a198db307a1f9bb3668e4d3c76d5.tar.gz
remove branches in dmark and dfree GC callbacks
dmark and dfree callbacks are never called in gc.c for NULL DATA_PTR values, not even for zombie objects. * compile.c (ibf_loader_mark): remove branch for pointer validity * compile.c (ibf_loader_free): ditto * cont.c (cont_free): ditto * cont.c (fiber_free): ditto * dir.c (dir_free): ditto * ext/stringio/stringio.c (strio_mark): ditto * proc.c (binding_free): ditto * thread_sync.c (mutex_free): ditto * vm.c (thread_free): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58006 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread_sync.c')
-rw-r--r--thread_sync.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/thread_sync.c b/thread_sync.c
index 152995fac0..c3311da5fc 100644
--- a/thread_sync.c
+++ b/thread_sync.c
@@ -54,16 +54,14 @@ static const char* rb_mutex_unlock_th(rb_mutex_t *mutex, rb_thread_t volatile *t
static void
mutex_free(void *ptr)
{
- if (ptr) {
- rb_mutex_t *mutex = ptr;
- if (mutex->th) {
- /* rb_warn("free locked mutex"); */
- const char *err = rb_mutex_unlock_th(mutex, mutex->th);
- if (err) rb_bug("%s", err);
- }
- native_mutex_destroy(&mutex->lock);
- native_cond_destroy(&mutex->cond);
+ rb_mutex_t *mutex = ptr;
+ if (mutex->th) {
+ /* rb_warn("free locked mutex"); */
+ const char *err = rb_mutex_unlock_th(mutex, mutex->th);
+ if (err) rb_bug("%s", err);
}
+ native_mutex_destroy(&mutex->lock);
+ native_cond_destroy(&mutex->cond);
ruby_xfree(ptr);
}