[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]