aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-07-13 07:46:46 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2014-07-13 07:46:46 +0000
commitc7fbc29605799818d9afc9f3deec7512ed2b6348 (patch)
tree09fc6a132396f6e966151fd7d4d117efa2de8fba
parentf0a698300a7d390b07121959b3ebb266818a94ec (diff)
downloadruby-c7fbc29605799818d9afc9f3deec7512ed2b6348.tar.gz
vm_core.h (struct rb_call_info_struct): improve packing
* vm_core.h (struct rb_call_info_struct): improve packing On x86-64, it goes from 112 to 104 bytes. This results in ~20K of savings from just "./ruby -e exit" git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--vm_core.h5
2 files changed, 7 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 788724739c..59058d5e1c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sun Jul 13 16:44:56 2014 Eric Wong <e@80x24.org>
+
+ * vm_core.h (struct rb_call_info_struct): improve packing
+
Sun Jul 13 15:53:25 2014 Eric Wong <e@80x24.org>
* vm_core.h (struct rb_iseq_struct): stack_max is uint32_t
diff --git a/vm_core.h b/vm_core.h
index c71b83c70d..8a8ceeb981 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -141,8 +141,10 @@ typedef struct rb_call_info_struct {
/* fixed at compile time */
ID mid;
VALUE flag;
- int orig_argc;
rb_iseq_t *blockiseq;
+ int orig_argc;
+
+ int argc; /* temporary for method calling */
/* inline cache: keys */
rb_serial_t method_state;
@@ -154,7 +156,6 @@ typedef struct rb_call_info_struct {
VALUE defined_class;
/* temporary values for method calling */
- int argc;
struct rb_block_struct *blockptr;
VALUE recv;
union {