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
This commit is contained in:
parent
98c9581b03
commit
a9c7629ece
@ -1,3 +1,8 @@
|
|||||||
|
Sat Jul 26 16:28:06 2014 Eric Wong <e@80x24.org>
|
||||||
|
|
||||||
|
* 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 <e@80x24.org>
|
Sat Jul 26 06:44:43 2014 Eric Wong <e@80x24.org>
|
||||||
|
|
||||||
* parse.y (struct parse_params): shrink to 320 to 304 bytes on 64-bit
|
* parse.y (struct parse_params): shrink to 320 to 304 bytes on 64-bit
|
||||||
|
@ -567,7 +567,7 @@ rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
|
|||||||
{
|
{
|
||||||
#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
|
#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
|
||||||
const void * const *table = rb_vm_get_insns_address_table();
|
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);
|
iseq->iseq_encoded = ALLOC_N(VALUE, iseq->iseq_size);
|
||||||
MEMCPY(iseq->iseq_encoded, iseq->iseq, VALUE, iseq->iseq_size);
|
MEMCPY(iseq->iseq_encoded, iseq->iseq, VALUE, iseq->iseq_size);
|
||||||
|
5
iseq.c
5
iseq.c
@ -1379,7 +1379,7 @@ rb_iseq_disasm(VALUE self)
|
|||||||
VALUE *iseq;
|
VALUE *iseq;
|
||||||
VALUE str = rb_str_new(0, 0);
|
VALUE str = rb_str_new(0, 0);
|
||||||
VALUE child = rb_ary_new();
|
VALUE child = rb_ary_new();
|
||||||
unsigned long size;
|
unsigned int size;
|
||||||
int i;
|
int i;
|
||||||
long l;
|
long l;
|
||||||
ID *tbl;
|
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)
|
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;
|
int trace_num = 0;
|
||||||
size_t pos, insn;
|
unsigned int pos;
|
||||||
|
size_t insn;
|
||||||
rb_iseq_t *iseq;
|
rb_iseq_t *iseq;
|
||||||
int cont = 1;
|
int cont = 1;
|
||||||
GetISeqPtr(iseqval, iseq);
|
GetISeqPtr(iseqval, iseq);
|
||||||
|
@ -214,13 +214,14 @@ struct rb_iseq_struct {
|
|||||||
|
|
||||||
VALUE *iseq; /* iseq (insn number and operands) */
|
VALUE *iseq; /* iseq (insn number and operands) */
|
||||||
VALUE *iseq_encoded; /* encoded iseq */
|
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 mark_ary; /* Array: includes operands which should be GC marked */
|
||||||
const VALUE coverage; /* coverage array */
|
const VALUE coverage; /* coverage array */
|
||||||
|
|
||||||
/* insn info, must be freed */
|
/* insn info, must be freed */
|
||||||
struct iseq_line_info_entry *line_info_table;
|
struct iseq_line_info_entry *line_info_table;
|
||||||
size_t line_info_size;
|
|
||||||
|
|
||||||
ID *local_table; /* must free */
|
ID *local_table; /* must free */
|
||||||
int local_table_size;
|
int local_table_size;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user