aboutsummaryrefslogtreecommitdiffstats
path: root/ractor_core.h
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2020-12-20 01:44:41 +0900
committerKoichi Sasada <ko1@atdot.net>2020-12-22 00:03:00 +0900
commit02d9524cdaca1754718bf1d591408d377e6b383a (patch)
treea88d9042c69513af9fe6e3a6f1f74505e5955a15 /ractor_core.h
parenta2950369bd8a5866092f6badf59b0811653a6092 (diff)
downloadruby-02d9524cdaca1754718bf1d591408d377e6b383a.tar.gz
separate rb_ractor_pub from rb_ractor_t
separate some fields from rb_ractor_t to rb_ractor_pub and put it at the beggining of rb_ractor_t and declare it in vm_core.h so vm_core.h can access rb_ractor_pub fields. Now rb_ec_ractor_hooks() is a complete inline function and no MJIT related issue.
Diffstat (limited to 'ractor_core.h')
-rw-r--r--ractor_core.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/ractor_core.h b/ractor_core.h
index 88b1126546..1f1e7aacf0 100644
--- a/ractor_core.h
+++ b/ractor_core.h
@@ -79,6 +79,8 @@ struct rb_ractor_sync {
};
struct rb_ractor_struct {
+ struct rb_ractor_pub pub;
+
struct rb_ractor_sync sync;
VALUE receiving_mutex;
bool yield_atexit;
@@ -98,9 +100,6 @@ struct rb_ractor_struct {
} threads;
VALUE thgroup_default;
- // identity
- VALUE self;
- uint32_t id;
VALUE name;
VALUE loc;
@@ -138,8 +137,6 @@ struct rb_ractor_struct {
VALUE verbose;
VALUE debug;
- rb_hook_list_t event_hooks;
-
struct {
struct RVALUE *freelist;
struct heap_page *using_page;
@@ -152,9 +149,15 @@ struct rb_ractor_struct {
} *mfd;
}; // rb_ractor_t is defined in vm_core.h
+
+static inline VALUE
+rb_ractor_self(const rb_ractor_t *r)
+{
+ return r->pub.self;
+}
+
rb_ractor_t *rb_ractor_main_alloc(void);
void rb_ractor_main_setup(rb_vm_t *vm, rb_ractor_t *main_ractor, rb_thread_t *main_thread);
-VALUE rb_ractor_self(const rb_ractor_t *g);
void rb_ractor_atexit(rb_execution_context_t *ec, VALUE result);
void rb_ractor_atexit_exception(rb_execution_context_t *ec);
void rb_ractor_teardown(rb_execution_context_t *ec);
@@ -276,7 +279,11 @@ rb_ractor_set_current_ec(rb_ractor_t *cr, rb_execution_context_t *ec)
void rb_vm_ractor_blocking_cnt_inc(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
void rb_vm_ractor_blocking_cnt_dec(rb_vm_t *vm, rb_ractor_t *cr, const char *file, int line);
-uint32_t rb_ractor_id(const rb_ractor_t *r);
+static inline uint32_t
+rb_ractor_id(const rb_ractor_t *r)
+{
+ return r->pub.id;
+}
#if RACTOR_CHECK_MODE > 0
uint32_t rb_ractor_current_id(void);