[前][次][番号順一覧][スレッド一覧]

ruby-changes:35104

From: normal <ko1@a...>
Date: Fri, 15 Aug 2014 09:25:39 +0900 (JST)
Subject: [ruby-changes:35104] normal:r47186 (trunk): rb_{thread, context, fiber}_struct: trivial packing

normal	2014-08-15 09:25:34 +0900 (Fri, 15 Aug 2014)

  New Revision: 47186

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=47186

  Log:
    rb_{thread,context,fiber}_struct: trivial packing
    
    * vm_core.h (rb_thread_struct): reorder to pack
    * cont.c (rb_context_struct, rb_fiber_struct): ditto
      On x86-64, these changes reduces:
      rb_thread_struct to 1000 bytes (from 1016)
      rb_context_struct to 1288 bytes (from 1312)
      rb_fiber_struct to 2272 bytes (from 2304)

  Modified files:
    trunk/ChangeLog
    trunk/cont.c
    trunk/vm_core.h
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 47185)
+++ ChangeLog	(revision 47186)
@@ -1,3 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Fri Aug 15 09:22:12 2014  Eric Wong  <e@8...>
+
+	* vm_core.h (rb_thread_struct): reorder to pack
+	* cont.c (rb_context_struct, rb_fiber_struct): ditto
+	  On x86-64, these changes reduces:
+	  rb_thread_struct to 1000 bytes (from 1016)
+	  rb_context_struct to 1288 bytes (from 1312)
+	  rb_fiber_struct to 2272 bytes (from 2304)
+
 Fri Aug 15 09:06:31 2014  Eric Wong  <e@8...>
 
 	* thread_pthread.h: define RB_NATIVETHREAD_LOCK_INIT and
Index: vm_core.h
===================================================================
--- vm_core.h	(revision 47185)
+++ vm_core.h	(revision 47186)
@@ -599,6 +599,7 @@ typedef struct rb_thread_struct { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L599
     enum rb_thread_status status;
     int to_kill;
     int priority;
+    int mark_stack_len;
 
     native_thread_data_t native_thread_data;
     void *blocking_region_buffer;
@@ -616,8 +617,8 @@ typedef struct rb_thread_struct { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L617
 
     /* async errinfo queue */
     VALUE pending_interrupt_queue;
-    int pending_interrupt_queue_checked;
     VALUE pending_interrupt_mask_stack;
+    int pending_interrupt_queue_checked;
 
     rb_atomic_t interrupt_flag;
     unsigned long interrupt_mask;
@@ -665,7 +666,6 @@ typedef struct rb_thread_struct { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L666
 #endif
 	jmp_buf regs;
     } machine;
-    int mark_stack_len;
 
     /* statistics data for profiler */
     VALUE stat_insn_usage;
Index: cont.c
===================================================================
--- cont.c	(revision 47185)
+++ cont.c	(revision 47186)
@@ -89,8 +89,8 @@ enum context_type { https://github.com/ruby/ruby/blob/trunk/cont.c#L89
 
 typedef struct rb_context_struct {
     enum context_type type;
-    VALUE self;
     int argc;
+    VALUE self;
     VALUE value;
     VALUE *vm_stack;
 #ifdef CAPTURE_JUST_VALID_VM_STACK
@@ -134,14 +134,14 @@ typedef struct rb_fiber_struct { https://github.com/ruby/ruby/blob/trunk/cont.c#L134
     rb_context_t cont;
     VALUE prev;
     enum fiber_status status;
-    struct rb_fiber_struct *prev_fiber;
-    struct rb_fiber_struct *next_fiber;
     /* If a fiber invokes "transfer",
      * then this fiber can't "resume" any more after that.
      * You shouldn't mix "transfer" and "resume".
      */
     int transfered;
 
+    struct rb_fiber_struct *prev_fiber;
+    struct rb_fiber_struct *next_fiber;
 #if FIBER_USE_NATIVE
 #ifdef _WIN32
     void *fib_handle;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]