From a9c7629ece428e1de9119137a1b3f2e899b9d9e7 Mon Sep 17 00:00:00 2001 From: normal Date: Sat, 26 Jul 2014 07:30:26 +0000 Subject: [PATCH] rb_iseq_t: reduce to (280 bytes from 288 bytes) on 64-bit iseq_size and line_info_size may be 32-bit. 4GB instruction sequences should be big enough for anyone. Other existing line info counters are 32-bit, and nobody should need all that. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46957 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ compile.c | 2 +- iseq.c | 5 +++-- vm_core.h | 5 +++-- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1890b465ac..f66e2639b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sat Jul 26 16:28:06 2014 Eric Wong + + * vm_core.h (struct rb_iseq_struct): reduce to 280 bytes + (from 288 bytes) on 64-bit + Sat Jul 26 06:44:43 2014 Eric Wong * parse.y (struct parse_params): shrink to 320 to 304 bytes on 64-bit diff --git a/compile.c b/compile.c index 6af1dfda58..7dfaa81f47 100644 --- a/compile.c +++ b/compile.c @@ -567,7 +567,7 @@ rb_iseq_translate_threaded_code(rb_iseq_t *iseq) { #if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE const void * const *table = rb_vm_get_insns_address_table(); - unsigned long i; + unsigned int i; iseq->iseq_encoded = ALLOC_N(VALUE, iseq->iseq_size); MEMCPY(iseq->iseq_encoded, iseq->iseq, VALUE, iseq->iseq_size); diff --git a/iseq.c b/iseq.c index fdfd3b5f13..aadb28b8ee 100644 --- a/iseq.c +++ b/iseq.c @@ -1379,7 +1379,7 @@ rb_iseq_disasm(VALUE self) VALUE *iseq; VALUE str = rb_str_new(0, 0); VALUE child = rb_ary_new(); - unsigned long size; + unsigned int size; int i; long l; ID *tbl; @@ -2144,7 +2144,8 @@ int rb_iseq_line_trace_each(VALUE iseqval, int (*func)(int line, rb_event_flag_t *events_ptr, void *d), void *data) { int trace_num = 0; - size_t pos, insn; + unsigned int pos; + size_t insn; rb_iseq_t *iseq; int cont = 1; GetISeqPtr(iseqval, iseq); diff --git a/vm_core.h b/vm_core.h index 5baf60faf5..970efec837 100644 --- a/vm_core.h +++ b/vm_core.h @@ -214,13 +214,14 @@ struct rb_iseq_struct { VALUE *iseq; /* iseq (insn number and operands) */ VALUE *iseq_encoded; /* encoded iseq */ - unsigned long iseq_size; + unsigned int iseq_size; + unsigned int line_info_size; + const VALUE mark_ary; /* Array: includes operands which should be GC marked */ const VALUE coverage; /* coverage array */ /* insn info, must be freed */ struct iseq_line_info_entry *line_info_table; - size_t line_info_size; ID *local_table; /* must free */ int local_table_size;