about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2015-01-10 03:24:42 +0000
committerEric Wong <e@80x24.org>2015-01-10 03:24:42 +0000
commit851855c73f5ea3b1a7117af99b63e8348bc3b2d8 (patch)
tree0f0feb187b1b819dfe4e7098df2b47793e75a9b0
parentd9b267dbb9ccfda420b3c6f37a323f7c51ef8c8d (diff)
downloadruby_io_splice-851855c73f5ea3b1a7117af99b63e8348bc3b2d8.tar.gz
This reduces stack usage in some places, perhaps providing a
miniscule improvement in GC performance.

struct          before  after   difference
splice_args	48	40	8
vmsplice_args	32	24	8
-rw-r--r--ext/io_splice/io_splice_ext.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/io_splice/io_splice_ext.c b/ext/io_splice/io_splice_ext.c
index 2e2caec..276f3a6 100644
--- a/ext/io_splice/io_splice_ext.c
+++ b/ext/io_splice/io_splice_ext.c
@@ -125,8 +125,8 @@ static void * WITHOUT_GVL(rb_blocking_function_t *func, void *data1,
 
 struct splice_args {
         int fd_in;
-        off_t *off_in;
         int fd_out;
+        off_t *off_in;
         off_t *off_out;
         size_t len;
         unsigned flags;
@@ -402,9 +402,9 @@ static VALUE trytee(int argc, VALUE *argv, VALUE self)
 
 struct vmsplice_args {
         int fd;
+        unsigned flags;
         struct iovec *iov;
         unsigned long nr_segs;
-        unsigned flags;
 };
 
 static void * nogvl_vmsplice(void *ptr)