* cont.c (rb_context_struct): move rb_context_t::thread_ptr to
  rb_execution_context_t::thread_ptr.

* cont.c (rb_fiberptr_thread_ptr): removed.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2017-10-29 12:57:04 +00:00
Родитель c84586b785
Коммит 382aa678d0
2 изменённых файлов: 8 добавлений и 15 удалений

13
cont.c
Просмотреть файл

@ -110,7 +110,6 @@ typedef struct rb_context_struct {
rb_jmpbuf_t jmpbuf;
rb_ensure_entry_t *ensure_array;
rb_ensure_list_t *ensure_list;
rb_thread_t *thread_ptr;
} rb_context_t;
@ -267,7 +266,7 @@ NOINLINE(static VALUE cont_capture(volatile int *volatile stat));
static VALUE
cont_thread_value(const rb_context_t *cont)
{
return cont->thread_ptr->self;
return cont->saved_ec.thread_ptr->self;
}
static void
@ -396,12 +395,6 @@ cont_memsize(const void *ptr)
return size;
}
rb_thread_t *
rb_fiberptr_thread_ptr(const rb_fiber_t *fib)
{
return fib->cont.thread_ptr;
}
void
rb_fiber_mark_self(const rb_fiber_t *fib)
{
@ -550,7 +543,7 @@ cont_init(rb_context_t *cont, rb_thread_t *th)
{
/* save thread context */
cont_save_thread(cont, th);
cont->thread_ptr = th;
cont->saved_ec.thread_ptr = th;
cont->saved_ec.local_storage = NULL;
cont->saved_ec.local_storage_recursive_hash = Qnil;
cont->saved_ec.local_storage_recursive_hash_for_trace = Qnil;
@ -1474,7 +1467,7 @@ rb_threadptr_root_fiber_setup(rb_thread_t *th)
MEMZERO(fib, rb_fiber_t, 1);
fib->cont.type = ROOT_FIBER_CONTEXT;
fib->cont.saved_ec.fiber = fib;
fib->cont.thread_ptr = th;
fib->cont.saved_ec.thread_ptr = th;
fiber_status_set(fib, FIBER_RESUMED); /* skip CREATED */
th->ec = &fib->cont.saved_ec;
#if FIBER_USE_NATIVE

Просмотреть файл

@ -771,6 +771,8 @@ typedef struct rb_execution_context_struct {
/* for bmethod */
const rb_callable_method_entry_t *passed_bmethod_me;
struct rb_thread_struct *thread_ptr;
/* for GC */
struct {
VALUE *stack_start;
@ -1594,20 +1596,18 @@ RUBY_SYMBOL_EXPORT_END
#define GET_THREAD() ruby_current_thread()
#define GET_EC() ruby_current_execution_context()
rb_thread_t *rb_fiberptr_thread_ptr(const rb_fiber_t *fib);
static inline rb_thread_t *
rb_ec_thread_ptr(const rb_execution_context_t *ec)
{
return rb_fiberptr_thread_ptr(ec->fiber);
return ec->thread_ptr;
}
static inline rb_vm_t *
rb_ec_vm_ptr(const rb_execution_context_t *ec)
{
const rb_thread_t *th = rb_fiberptr_thread_ptr(ec->fiber);
const rb_thread_t *th = rb_ec_thread_ptr(ec);
if (th) {
return rb_fiberptr_thread_ptr(ec->fiber)->vm;
return th->vm;
}
else {
return NULL;