ruby-changes:39275
From: ko1 <ko1@a...>
Date: Thu, 23 Jul 2015 18:34:50 +0900 (JST)
Subject: [ruby-changes:39275] ko1:r51356 (trunk): * vm_core.h: constify rb_iseq_constant_body::iseq_encoded and
ko1 2015-07-23 18:34:31 +0900 (Thu, 23 Jul 2015) New Revision: 51356 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=51356 Log: * vm_core.h: constify rb_iseq_constant_body::iseq_encoded and rb_control_frame_t::pc. * compile.c (rb_iseq_translate_threaded_code): catch up this fix. * iseq.c: ditto. * vm_exec.c (vm_exec_core): ditto. Modified files: trunk/ChangeLog trunk/compile.c trunk/iseq.c trunk/vm_core.h trunk/vm_exec.c Index: ChangeLog =================================================================== --- ChangeLog (revision 51355) +++ ChangeLog (revision 51356) @@ -1,3 +1,14 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Thu Jul 23 17:30:43 2015 Koichi Sasada <ko1@a...> + + * vm_core.h: constify rb_iseq_constant_body::iseq_encoded and + rb_control_frame_t::pc. + + * compile.c (rb_iseq_translate_threaded_code): catch up this fix. + + * iseq.c: ditto. + + * vm_exec.c (vm_exec_core): ditto. + Thu Jul 23 10:25:46 2015 Nobuyoshi Nakada <nobu@r...> * include/ruby/ruby.h: add raw FL macros, which assume always the Index: vm_core.h =================================================================== --- vm_core.h (revision 51355) +++ vm_core.h (revision 51356) @@ -255,7 +255,7 @@ struct rb_iseq_constant_body { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L255 int local_size; unsigned int iseq_size; - VALUE *iseq_encoded; /* encoded iseq (insn addr and operands) */ + const VALUE *iseq_encoded; /* encoded iseq (insn addr and operands) */ /** * parameter information @@ -536,7 +536,7 @@ typedef struct rb_vm_struct { https://github.com/ruby/ruby/blob/trunk/vm_core.h#L536 #endif typedef struct rb_control_frame_struct { - VALUE *pc; /* cfp[0] */ + const VALUE *pc; /* cfp[0] */ VALUE *sp; /* cfp[1] */ const rb_iseq_t *iseq; /* cfp[2] */ VALUE flag; /* cfp[3] */ Index: iseq.c =================================================================== --- iseq.c (revision 51355) +++ iseq.c (revision 51356) @@ -72,10 +72,10 @@ rb_iseq_free(const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L72 if (iseq) { int i; - ruby_xfree(iseq->body->iseq_encoded); - ruby_xfree(iseq->body->line_info_table); - ruby_xfree(iseq->body->local_table); - ruby_xfree(iseq->body->is_entries); + ruby_xfree((void *)iseq->body->iseq_encoded); + ruby_xfree((void *)iseq->body->line_info_table); + ruby_xfree((void *)iseq->body->local_table); + ruby_xfree((void *)iseq->body->is_entries); if (iseq->body->callinfo_entries) { for (i=0; i<iseq->body->callinfo_size; i++) { @@ -85,11 +85,12 @@ rb_iseq_free(const rb_iseq_t *iseq) https://github.com/ruby/ruby/blob/trunk/iseq.c#L85 } ruby_xfree(iseq->body->callinfo_entries); } - ruby_xfree(iseq->body->catch_table); - ruby_xfree(iseq->body->param.opt_table); + ruby_xfree((void *)iseq->body->catch_table); + ruby_xfree((void *)iseq->body->param.opt_table); + if (iseq->body->param.keyword != NULL) { - ruby_xfree(iseq->body->param.keyword->default_values); - ruby_xfree(iseq->body->param.keyword); + ruby_xfree((void *)iseq->body->param.keyword->default_values); + ruby_xfree((void *)iseq->body->param.keyword); } compile_data_free(iseq->compile_data); ruby_xfree(iseq->variable_body->iseq); @@ -2118,7 +2119,8 @@ rb_iseqw_line_trace_each(VALUE iseqw, in https://github.com/ruby/ruby/blob/trunk/iseq.c#L2119 /* printf("line: %d\n", line); */ cont = (*func)(line, &events, data); if (current_events != events) { - iseq_original[pos+1] = iseq->body->iseq_encoded[pos+1] = + VALUE *encoded = (VALUE *)iseq->body->iseq_encoded; + iseq_original[pos+1] = encoded[pos+1] = (VALUE)(current_events | (events & RUBY_EVENT_SPECIFIED_LINE)); } } Index: compile.c =================================================================== --- compile.c (revision 51355) +++ compile.c (revision 51356) @@ -578,11 +578,12 @@ rb_iseq_translate_threaded_code(rb_iseq_ https://github.com/ruby/ruby/blob/trunk/compile.c#L578 #if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE const void * const *table = rb_vm_get_insns_address_table(); unsigned int i; + VALUE *encoded = (VALUE *)iseq->body->iseq_encoded; for (i = 0; i < iseq->body->iseq_size; /* */ ) { int insn = (int)iseq->body->iseq_encoded[i]; int len = insn_len(insn); - iseq->body->iseq_encoded[i] = (VALUE)table[insn]; + encoded[i] = (VALUE)table[insn]; i += len; } #endif Index: vm_exec.c =================================================================== --- vm_exec.c (revision 51355) +++ vm_exec.c (revision 51356) @@ -60,12 +60,12 @@ vm_exec_core(rb_thread_t *th, VALUE init https://github.com/ruby/ruby/blob/trunk/vm_exec.c#L60 #endif #if defined(__GNUC__) && defined(__i386__) - DECL_SC_REG(VALUE *, pc, "di"); + DECL_SC_REG(const VALUE *, pc, "di"); DECL_SC_REG(rb_control_frame_t *, cfp, "si"); #define USE_MACHINE_REGS 1 #elif defined(__GNUC__) && defined(__x86_64__) - DECL_SC_REG(VALUE *, pc, "14"); + DECL_SC_REG(const VALUE *, pc, "14"); # if defined(__native_client__) DECL_SC_REG(rb_control_frame_t *, cfp, "13"); # else @@ -74,13 +74,13 @@ vm_exec_core(rb_thread_t *th, VALUE init https://github.com/ruby/ruby/blob/trunk/vm_exec.c#L74 #define USE_MACHINE_REGS 1 #elif defined(__GNUC__) && defined(__powerpc64__) - DECL_SC_REG(VALUE *, pc, "14"); + DECL_SC_REG(const VALUE *, pc, "14"); DECL_SC_REG(rb_control_frame_t *, cfp, "15"); #define USE_MACHINE_REGS 1 #else register rb_control_frame_t *reg_cfp; - VALUE *reg_pc; + const VALUE *reg_pc; #endif #if USE_MACHINE_REGS -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/