* thread.c (blocking_region_begin): define before BLOCKING_REGION.

reported by Luis Lavena.  [ruby-core:26670]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
akr 2009-11-10 23:34:03 +00:00
parent 145f07fac2
commit 6ebdf24500
2 changed files with 16 additions and 10 deletions

View File

@ -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.

View File

@ -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)