aboutsummaryrefslogtreecommitdiffstats
path: root/thread.c
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-16 20:42:43 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-07-16 20:42:43 +0000
commit4fd244358016913ccb4e2e6840ea8dc3459c4fb7 (patch)
treec120482753ed7da03cb06d68d6d077bcf1a10cad /thread.c
parent5d59a808ced5fd56e5a5f341c7ce922f27f1877d (diff)
downloadruby-4fd244358016913ccb4e2e6840ea8dc3459c4fb7.tar.gz
avoid redundant GET_THREAD() calls
This reduces binary size slightly on my 32-bit system: text data bss dec hex filename 2847705 12360 30632 2890697 2c1bc9 ruby.orig 2847641 12360 30632 2890633 2c1b89 ruby * iseq.c (rb_iseq_compile_with_option): reuse result of previous GET_THREAD() call * thread.c (thread_create_core): ditto (rb_mutex_trylock): ditto (rb_mutex_lock): ditto * process.c (rb_waitpid): avoid multiple eval from RUBY_VM_CHECK_INTS * thread.c (rb_thread_check_ints): ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'thread.c')
-rw-r--r--thread.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/thread.c b/thread.c
index 644dfe2f31..69cd673674 100644
--- a/thread.c
+++ b/thread.c
@@ -670,7 +670,7 @@ thread_create_core(VALUE thval, VALUE args, VALUE (*fn)(ANYARGS))
rb_thread_t *th, *current_th = GET_THREAD();
int err;
- if (OBJ_FROZEN(GET_THREAD()->thgroup)) {
+ if (OBJ_FROZEN(current_th->thgroup)) {
rb_raise(rb_eThreadError,
"can't start a new thread (frozen ThreadGroup)");
}
@@ -1173,7 +1173,8 @@ rb_thread_wait_for(struct timeval time)
void
rb_thread_check_ints(void)
{
- RUBY_VM_CHECK_INTS_BLOCKING(GET_THREAD());
+ rb_thread_t *th = GET_THREAD();
+ RUBY_VM_CHECK_INTS_BLOCKING(th);
}
/*
@@ -4258,10 +4259,11 @@ rb_mutex_trylock(VALUE self)
native_mutex_lock(&mutex->lock);
if (mutex->th == 0) {
- mutex->th = GET_THREAD();
+ rb_thread_t *th = GET_THREAD();
+ mutex->th = th;
locked = Qtrue;
- mutex_locked(GET_THREAD(), self);
+ mutex_locked(th, self);
}
native_mutex_unlock(&mutex->lock);
@@ -4345,7 +4347,7 @@ rb_mutex_lock(VALUE self)
}
if (rb_mutex_trylock(self) == Qfalse) {
- if (mutex->th == GET_THREAD()) {
+ if (mutex->th == th) {
rb_raise(rb_eThreadError, "deadlock; recursive locking");
}