From 837fd5e494731d7d44786f29e7d6e8c27029806f Mon Sep 17 00:00:00 2001
From: ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>
Date: Thu, 26 Oct 2017 08:32:49 +0000
Subject: Use rb_execution_context_t instead of rb_thread_t to represent
 execution context [Feature #14038]

* vm_core.h (rb_thread_t): rb_thread_t::ec is now a pointer.
  There are many code using `th` to represent execution context
  (such as cfp, VM stack and so on). To access `ec`, they need to
  use `th->ec->...` (adding one indirection) so that we need to
  replace them by passing `ec` instead of `th`.

* vm_core.h (GET_EC()): introduced to access current ec. Also
  remove `ruby_current_thread` global variable.

* cont.c (rb_context_t): introduce rb_context_t::thread_ptr instead of
  rb_context_t::thread_value.

* cont.c (ec_set_vm_stack): added to update vm_stack explicitly.

* cont.c (ec_switch): added to switch ec explicitly.

* cont.c (rb_fiber_close): added to terminate fibers explicitly.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60440 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
---
 insns.def | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'insns.def')

diff --git a/insns.def b/insns.def
index ef229ddef4..e7e4ffd5ec 100644
--- a/insns.def
+++ b/insns.def
@@ -1678,8 +1678,8 @@ opt_call_c_function
     reg_cfp = (funcptr)(th, reg_cfp);
 
     if (reg_cfp == 0) {
-	VALUE err = th->ec.errinfo;
-	th->ec.errinfo = Qnil;
+	VALUE err = th->ec->errinfo;
+	th->ec->errinfo = Qnil;
 	THROW_EXCEPTION(err);
     }
 
-- 
cgit v1.2.3

