diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-10 15:49:45 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-09-10 15:49:45 +0000 |
commit | 4f0c9a5cc49cf36f15af85f644982fbb847f0dca (patch) | |
tree | acfb66f8c2b3df4b0572647f35b77a2d5b722ff0 /vm_core.h | |
parent | 83299c73f36a56442a24de26f049f1a21d724d5c (diff) | |
download | ruby-4f0c9a5cc49cf36f15af85f644982fbb847f0dca.tar.gz |
move th->machine to ec->machine.
* vm_core.h: move rb_thread_t::machine to rb_execution_context_t::machine.
* vm_core.h, gc.c (rb_gc_mark_machine_stack): accept ec instead of th.
it enables to call this func from rb_execution_context_mark() in vm.c.
* cont.c (fiber_setcontext): catch up this fix.
fiber_restore_thread() restores machine stack information too.
* gc.c: catch up structure layout changes.
* thread.c: ditto.
* thread_pthread.c: ditto.
* thread_win32.c: ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 28 |
1 files changed, 14 insertions, 14 deletions
@@ -767,6 +767,19 @@ typedef struct rb_execution_context_struct { rb_ensure_list_t *ensure_list; rb_fiber_t *fiber; + + /* for GC */ + struct { + VALUE *stack_start; + VALUE *stack_end; + size_t stack_maxsize; +#ifdef __ia64 + VALUE *register_stack_start; + VALUE *register_stack_end; + size_t register_stack_maxsize; +#endif + jmp_buf regs; + } machine; } rb_execution_context_t; typedef struct rb_thread_struct { @@ -829,19 +842,6 @@ typedef struct rb_thread_struct { VALUE first_args; VALUE (*first_func)(ANYARGS); - /* for GC */ - struct { - VALUE *stack_start; - VALUE *stack_end; - size_t stack_maxsize; -#ifdef __ia64 - VALUE *register_stack_start; - VALUE *register_stack_end; - size_t register_stack_maxsize; -#endif - jmp_buf regs; - } machine; - /* statistics data for profiler */ VALUE stat_insn_usage; @@ -1543,7 +1543,7 @@ void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE #define rb_vm_register_special_exception(sp, e, m) \ rb_vm_register_special_exception_str(sp, e, rb_usascii_str_new_static((m), (long)rb_strlen_lit(m))) -void rb_gc_mark_machine_stack(rb_thread_t *th); +void rb_gc_mark_machine_stack(const rb_execution_context_t *ec); int rb_autoloading_value(VALUE mod, ID id, VALUE* value); |