From dcc004cba9ebb784bad46bdb35f92edcb113a115 Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 24 Feb 2015 02:05:28 +0000 Subject: [PATCH] eval.c: use the given thread * eval.c (setup_exception): use the given thread instead of implicit current thread. * load.c (rb_load_internal0): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49709 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 24 ++++++++++++------------ eval_jump.c | 4 ++-- load.c | 8 ++++---- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/eval.c b/eval.c index faa80ff5dbfd9b..19ad4ed1dc6529 100644 --- a/eval.c +++ b/eval.c @@ -167,27 +167,27 @@ ruby_cleanup(volatile int ex) rb_threadptr_interrupt(th); rb_threadptr_check_signal(th); - PUSH_TAG(); + TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { SAVE_ROOT_JMPBUF(th, { RUBY_VM_CHECK_INTS(th); }); } - POP_TAG(); + TH_POP_TAG(); errs[1] = th->errinfo; th->safe_level = 0; ruby_init_stack(&errs[STACK_UPPER(errs, 0, 1)]); - PUSH_TAG(); + TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { SAVE_ROOT_JMPBUF(th, ruby_finalize_0()); } - POP_TAG(); + TH_POP_TAG(); /* protect from Thread#raise */ th->status = THREAD_KILLED; errs[0] = th->errinfo; - PUSH_TAG(); + TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { SAVE_ROOT_JMPBUF(th, rb_thread_terminate_all()); } @@ -235,7 +235,7 @@ ruby_cleanup(volatile int ex) /* unlock again if finalizer took mutexes. */ rb_threadptr_unlock_all_locking_mutexes(GET_THREAD()); - POP_TAG(); + TH_POP_TAG(); rb_thread_stop_timer_thread(1); ruby_vm_destruct(GET_VM()); if (state) ruby_default_signal(state); @@ -252,14 +252,14 @@ ruby_exec_internal(void *n) if (!n) return 0; - PUSH_TAG(); + TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { SAVE_ROOT_JMPBUF(th, { th->base_block = 0; rb_iseq_eval_main(iseq); }); } - POP_TAG(); + TH_POP_TAG(); return state; } @@ -539,7 +539,7 @@ setup_exception(rb_thread_t *th, int tag, volatile VALUE mesg, VALUE cause) int status; mesg = e; - PUSH_TAG(); + TH_PUSH_TAG(th); if ((status = EXEC_TAG()) == 0) { th->errinfo = Qnil; e = rb_obj_as_string(mesg); @@ -557,7 +557,7 @@ setup_exception(rb_thread_t *th, int tag, volatile VALUE mesg, VALUE cause) rb_obj_class(mesg), e); } } - POP_TAG(); + TH_POP_TAG(); if (status == TAG_FATAL && th->errinfo == exception_error) { th->errinfo = mesg; } @@ -907,11 +907,11 @@ rb_ensure(VALUE (*b_proc)(ANYARGS), VALUE data1, VALUE (*e_proc)(ANYARGS), VALUE ensure_list.entry.data2 = data2; ensure_list.next = th->ensure_list; th->ensure_list = &ensure_list; - PUSH_TAG(); + TH_PUSH_TAG(th); if ((state = EXEC_TAG()) == 0) { result = (*b_proc) (data1); } - POP_TAG(); + TH_POP_TAG(); errinfo = th->errinfo; th->ensure_list=ensure_list.next; (*ensure_list.entry.e_proc)(ensure_list.entry.data2); diff --git a/eval_jump.c b/eval_jump.c index 5443ed224e5cbd..88fc5a2f359d1f 100644 --- a/eval_jump.c +++ b/eval_jump.c @@ -116,7 +116,7 @@ rb_exec_end_proc(void) rb_thread_t *th = GET_THREAD(); volatile VALUE errinfo = th->errinfo; - PUSH_TAG(); + TH_PUSH_TAG(th); if ((status = EXEC_TAG()) == 0) { again: exec_end_procs_chain(&ephemeral_end_procs); @@ -130,7 +130,7 @@ rb_exec_end_proc(void) TH_REPUSH_TAG(); goto again; } - POP_TAG(); + TH_POP_TAG(); rb_set_safe_level_force(safe); th->errinfo = errinfo; diff --git a/load.c b/load.c index 65017c9895d4b3..86cf73513c6f49 100644 --- a/load.c +++ b/load.c @@ -600,7 +600,7 @@ rb_load_internal0(rb_thread_t *th, VALUE fname, int wrap) } mild_compile_error = th->mild_compile_error; - PUSH_TAG(); + TH_PUSH_TAG(th); state = EXEC_TAG(); if (state == 0) { NODE *node; @@ -613,7 +613,7 @@ rb_load_internal0(rb_thread_t *th, VALUE fname, int wrap) th->mild_compile_error--; rb_iseq_eval(iseq); } - POP_TAG(); + TH_POP_TAG(); #if !defined __GNUC__ th = th0; @@ -965,7 +965,7 @@ rb_require_internal(VALUE fname, int safe) rb_sourceline()); } - PUSH_TAG(); + TH_PUSH_TAG(th); saved.safe = rb_safe_level(); if ((state = EXEC_TAG()) == 0) { VALUE path; @@ -1015,7 +1015,7 @@ rb_require_internal(VALUE fname, int safe) } } } - POP_TAG(); + TH_POP_TAG(); load_unlock(ftptr, !state); rb_set_safe_level_force(saved.safe);