diff options
| author | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-10 23:34:03 +0000 |
|---|---|---|
| committer | akr <akr@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-11-10 23:34:03 +0000 |
| commit | 752d1deaebf4d7c7d5fe023e79ef1ab080930c16 (patch) | |
| tree | 447ab063bafa70724a437d10cdd48beb87f91095 | |
| parent | da20d998197e91d6c768c369b7c00e587b3eceda (diff) | |
| download | ruby-752d1deaebf4d7c7d5fe023e79ef1ab080930c16.tar.gz ruby-752d1deaebf4d7c7d5fe023e79ef1ab080930c16.tar.xz ruby-752d1deaebf4d7c7d5fe023e79ef1ab080930c16.zip | |
* thread.c (blocking_region_begin): define before BLOCKING_REGION.
reported by Luis Lavena. [ruby-core:26670]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@25713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | thread.c | 21 |
2 files changed, 16 insertions, 10 deletions
@@ -1,3 +1,8 @@ +Wed Nov 11 08:32:45 2009 Tanaka Akira <akr@fsij.org> + + * thread.c (blocking_region_begin): define before BLOCKING_REGION. + reported by Luis Lavena. [ruby-core:26670] + Wed Nov 11 08:22:19 2009 Tanaka Akira <akr@fsij.org> * util.c (ruby_strtod): use dval() consistently. @@ -122,6 +122,17 @@ static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_regio GVL_UNLOCK_END(); \ } while(0); +#define blocking_region_begin(th, region, func, arg) \ + do { \ + (region)->prev_status = (th)->status; \ + (th)->blocking_region_buffer = (region); \ + set_unblock_function((th), (func), (arg), &(region)->oldubf); \ + (th)->status = THREAD_STOPPED; \ + thread_debug("enter blocking region (%p)\n", (void *)(th)); \ + RB_GC_SAVE_MACHINE_CONTEXT(th); \ + native_mutex_unlock(&(th)->vm->global_vm_lock); \ + } while (0) + #define BLOCKING_REGION(exec, ubf, ubfarg) do { \ rb_thread_t *__th = GET_THREAD(); \ struct rb_blocking_region_buffer __region; \ @@ -987,16 +998,6 @@ rb_thread_schedule(void) } /* blocking region */ -#define blocking_region_begin(th, region, func, arg) \ - do { \ - (region)->prev_status = (th)->status; \ - (th)->blocking_region_buffer = (region); \ - set_unblock_function((th), (func), (arg), &(region)->oldubf); \ - (th)->status = THREAD_STOPPED; \ - thread_debug("enter blocking region (%p)\n", (void *)(th)); \ - RB_GC_SAVE_MACHINE_CONTEXT(th); \ - native_mutex_unlock(&(th)->vm->global_vm_lock); \ - } while (0) static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region) |
