summaryrefslogtreecommitdiff
path: root/vm_core.h
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-07-29 01:32:37 (GMT)
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-07-29 01:32:37 (GMT)
commitc5a5563dbe48497fd00a14de82ec359204b06365 (patch)
treeb97472c577d13f89869164f99026d5798ab0110e /vm_core.h
parent63ae1e3cb5d302e5229143c00152328166d26780 (diff)
repack structs
Repack rb_thread_struct, rb_execution_context_struct, args_info and iseq_compile_data to save 1 word per struct. re_pattern_buffer remains unpacked due to the possible binary compatibility. [Fix GH-1907] Based on the patch From: Lourens Naudé <lourens@bearmetal.eu> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64096 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_core.h')
-rw-r--r--vm_core.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/vm_core.h b/vm_core.h
index 73ef51d..67c384c 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -807,7 +807,6 @@ typedef struct rb_execution_context_struct {
struct rb_vm_tag *tag;
struct rb_vm_protect_tag *protect_tag;
- int raised_flag;
/* interrupt flags */
rb_atomic_t interrupt_flag;
@@ -835,6 +834,7 @@ typedef struct rb_execution_context_struct {
VALUE errinfo;
VALUE passed_block_handler; /* for rb_iterate */
const rb_callable_method_entry_t *passed_bmethod_me; /* for bmethod */
+ int raised_flag;
enum method_missing_reason method_missing_reason;
VALUE private_const_reference;
@@ -893,7 +893,6 @@ typedef struct rb_thread_struct {
/* async errinfo queue */
VALUE pending_interrupt_queue;
VALUE pending_interrupt_mask_stack;
- int pending_interrupt_queue_checked;
/* interrupt management */
rb_nativethread_lock_t interrupt_lock;
@@ -915,10 +914,13 @@ typedef struct rb_thread_struct {
rb_jmpbuf_t root_jmpbuf;
/* misc */
+ VALUE name;
+ uint32_t running_time_us; /* 12500..800000 */
+
+ /* bit flags */
unsigned int abort_on_exception: 1;
unsigned int report_on_exception: 1;
- uint32_t running_time_us; /* 12500..800000 */
- VALUE name;
+ unsigned int pending_interrupt_queue_checked: 1;
} rb_thread_t;
typedef enum {