diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-15 05:54:41 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-15 05:54:41 +0000 |
commit | 727a2d55a30e6a2c3fec99eee19ced9301e8a958 (patch) | |
tree | 38ba08e6dc4e9c2a6943e8dacbce63672d1c50f0 /vm_core.h | |
parent | 906ad1670a2c589c271953b08b963440d35bac9f (diff) | |
download | ruby-727a2d55a30e6a2c3fec99eee19ced9301e8a958.tar.gz |
vm_core.h (rb_thread_t): pack small fields together
On a 64-bit system, this reduces rb_thread_t from 536 to 520 bytes.
Depending on the allocation, this can reduce cacheline access
for checking the abort_on_exception, report_on_exception and
pending_interrupt_queue_checked flags.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64376 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_core.h')
-rw-r--r-- | vm_core.h | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -879,9 +879,14 @@ typedef struct rb_thread_struct { #ifdef NON_SCALAR_THREAD_ID rb_thread_id_string_t thread_id_string; #endif - enum rb_thread_status status; - int to_kill; - int priority; + BITFIELD(enum rb_thread_status) status : 2; + /* bit flags */ + unsigned int to_kill : 1; + unsigned int abort_on_exception: 1; + unsigned int report_on_exception: 1; + unsigned int pending_interrupt_queue_checked: 1; + int8_t priority; /* -3 .. 3 (RUBY_THREAD_PRIORITY_{MIN,MAX}) */ + uint32_t running_time_us; /* 12500..800000 */ native_thread_data_t native_thread_data; void *blocking_region_buffer; @@ -919,12 +924,7 @@ typedef struct rb_thread_struct { /* misc */ VALUE name; - uint32_t running_time_us; /* 12500..800000 */ - /* bit flags */ - unsigned int abort_on_exception: 1; - unsigned int report_on_exception: 1; - unsigned int pending_interrupt_queue_checked: 1; } rb_thread_t; typedef enum { |