mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* thread.c (RB_GC_SAVE_MACHINE_CONTEXT, rb_gc_save_machine_context):
extract rb_gc_save_machine_context to RB_GC_SAVE_MACHINE_CONTEXT. NOTE: machine_regs and machine_stack_end must be set in current scope. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
f6f388a5bd
commit
c1e6052bfe
3 changed files with 19 additions and 15 deletions
|
@ -1,3 +1,9 @@
|
|||
Sun Dec 2 19:26:47 2012 Masaya Tarui <tarui@ruby-lang.org>
|
||||
|
||||
* thread.c (RB_GC_SAVE_MACHINE_CONTEXT, rb_gc_save_machine_context):
|
||||
extract rb_gc_save_machine_context to RB_GC_SAVE_MACHINE_CONTEXT.
|
||||
NOTE: machine_regs and machine_stack_end must be set in current scope.
|
||||
|
||||
Sun Dec 2 18:46:24 2012 Koichi Sasada <ko1@atdot.net>
|
||||
|
||||
* array.c, enum.c, insns.def, io.c, numeric.c, parse.y, process.c,
|
||||
|
|
27
thread.c
27
thread.c
|
@ -99,11 +99,19 @@ static inline int blocking_region_begin(rb_thread_t *th, struct rb_blocking_regi
|
|||
rb_unblock_function_t *ubf, void *arg, int fail_if_interrupted);
|
||||
static inline void blocking_region_end(rb_thread_t *th, struct rb_blocking_region_buffer *region);
|
||||
|
||||
#define RB_GC_SAVE_MACHINE_CONTEXT(th) \
|
||||
do { \
|
||||
rb_gc_save_machine_context(th); \
|
||||
SET_MACHINE_STACK_END(&(th)->machine_stack_end); \
|
||||
} while (0)
|
||||
#ifdef __ia64
|
||||
#define RB_GC_SAVE_MACHINE_REGISTER_STACK(th) \
|
||||
do{(th)->machine_register_stack_end = rb_ia64_bsp()}while(0)
|
||||
#else
|
||||
#define RB_GC_SAVE_MACHINE_REGISTER_STACK(th)
|
||||
#endif
|
||||
#define RB_GC_SAVE_MACHINE_CONTEXT(th) \
|
||||
do { \
|
||||
FLUSH_REGISTER_WINDOWS; \
|
||||
RB_GC_SAVE_MACHINE_REGISTER_STACK(th); \
|
||||
setjmp((th)->machine_regs); \
|
||||
SET_MACHINE_STACK_END(&(th)->machine_stack_end); \
|
||||
} while (0)
|
||||
|
||||
#define GVL_UNLOCK_BEGIN() do { \
|
||||
rb_thread_t *_th_stored = GET_THREAD(); \
|
||||
|
@ -3611,15 +3619,6 @@ rb_gc_set_stack_end(VALUE **stack_end_p)
|
|||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
rb_gc_save_machine_context(rb_thread_t *th)
|
||||
{
|
||||
FLUSH_REGISTER_WINDOWS;
|
||||
#ifdef __ia64
|
||||
th->machine_register_stack_end = rb_ia64_bsp();
|
||||
#endif
|
||||
setjmp(th->machine_regs);
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
|
|
|
@ -815,7 +815,6 @@ VALUE rb_name_err_mesg_new(VALUE obj, VALUE mesg, VALUE recv, VALUE method);
|
|||
void rb_vm_stack_to_heap(rb_thread_t *th);
|
||||
void ruby_thread_init_stack(rb_thread_t *th);
|
||||
|
||||
NOINLINE(void rb_gc_save_machine_context(rb_thread_t *));
|
||||
void rb_gc_mark_machine_stack(rb_thread_t *th);
|
||||
|
||||
int rb_autoloading_value(VALUE mod, ID id, VALUE* value);
|
||||
|
|
Loading…
Add table
Reference in a new issue