mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
th->ec: rb_threadptr_setup_exception
* eval.c (rb_threadptr_setup_exception): renamed to rb_ec_setup_exception(). git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2d71889b6b
commit
f6c102e6a5
3 changed files with 9 additions and 10 deletions
4
eval.c
4
eval.c
|
@ -583,10 +583,10 @@ setup_exception(rb_execution_context_t *ec, int tag, volatile VALUE mesg, VALUE
|
|||
|
||||
/*! \private */
|
||||
void
|
||||
rb_threadptr_setup_exception(rb_thread_t *th, VALUE mesg, VALUE cause)
|
||||
rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause)
|
||||
{
|
||||
if (cause == Qundef) {
|
||||
cause = get_ec_errinfo(th->ec);
|
||||
cause = get_ec_errinfo(ec);
|
||||
}
|
||||
if (cause != mesg) {
|
||||
rb_ivar_set(mesg, id_cause, cause);
|
||||
|
|
14
thread.c
14
thread.c
|
@ -2112,14 +2112,12 @@ rb_threadptr_ready(rb_thread_t *th)
|
|||
rb_threadptr_interrupt(th);
|
||||
}
|
||||
|
||||
void rb_threadptr_setup_exception(rb_thread_t *th, VALUE mesg, VALUE cause);
|
||||
|
||||
static VALUE
|
||||
rb_threadptr_raise(rb_thread_t *th, int argc, VALUE *argv)
|
||||
rb_threadptr_raise(rb_thread_t *target_th, int argc, VALUE *argv)
|
||||
{
|
||||
VALUE exc;
|
||||
|
||||
if (rb_threadptr_dead(th)) {
|
||||
if (rb_threadptr_dead(target_th)) {
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
@ -2132,13 +2130,13 @@ rb_threadptr_raise(rb_thread_t *th, int argc, VALUE *argv)
|
|||
|
||||
/* making an exception object can switch thread,
|
||||
so we need to check thread deadness again */
|
||||
if (rb_threadptr_dead(th)) {
|
||||
if (rb_threadptr_dead(target_th)) {
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
rb_threadptr_setup_exception(GET_THREAD(), exc, Qundef);
|
||||
rb_threadptr_pending_interrupt_enque(th, exc);
|
||||
rb_threadptr_interrupt(th);
|
||||
rb_ec_setup_exception(GET_EC(), exc, Qundef);
|
||||
rb_threadptr_pending_interrupt_enque(target_th, exc);
|
||||
rb_threadptr_interrupt(target_th);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
|
|
|
@ -1498,6 +1498,7 @@ VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath);
|
|||
void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath);
|
||||
|
||||
int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
|
||||
void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
|
||||
|
||||
VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, VALUE block_handler);
|
||||
VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda);
|
||||
|
|
Loading…
Reference in a new issue