[前][次][番号順一覧][スレッド一覧][生データ]

yarv-diff:36

From: ko1 atdot.net
Date: 1 Jul 2005 02:08:17 -0000
Subject: [yarv-diff:36] r191 - trunk

Author: ko1
Date: 2005-07-01 11:08:17 +0900 (Fri, 01 Jul 2005)
New Revision: 191

Modified:
   trunk/ChangeLog
   trunk/compile.c
   trunk/compile.h
   trunk/insnhelper.h
   trunk/test.rb
Log:
	* compile.h : fix to pass VALUE type to new_insn_body

	* insnhelper.h : add cast

	* compile.c : fix getdynamic argument (0 == Qfalse -> I2F(0))



Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2005-06-30 14:36:27 UTC (rev 190)
+++ trunk/ChangeLog	2005-07-01 02:08:17 UTC (rev 191)
@@ -4,6 +4,15 @@
 #  from Mon, 03 May 2004 01:24:19 +0900
 #
 
+2005-07-01(Fri) 11:04:11 +0900  Koichi Sasada  <ko1 atdot.net>
+
+	* compile.h : fix to pass VALUE type to new_insn_body
+
+	* insnhelper.h : add cast
+
+	* compile.c : fix getdynamic argument (0 == Qfalse -> I2F(0))
+
+
 2005-06-30(Thu) 23:34:10 +0900  Koichi Sasada  <ko1 atdot.net>
 
 	* rb/eval.rb : add and fix some rules

Modified: trunk/compile.c
===================================================================
--- trunk/compile.c	2005-06-30 14:36:27 UTC (rev 190)
+++ trunk/compile.c	2005-07-01 02:08:17 UTC (rev 191)
@@ -499,7 +499,7 @@
   args[2] = iseq_filename(self);
   args[3] = parent;
   args[4] = type;
-
+  
   ret = rb_class_new_instance(5, args, cYarvISeq);
   
   debugs("[new_child_iseq]< ---------------------------------------\n");
@@ -673,7 +673,7 @@
             snprintf(buff, 0x20, "__tp%d__", idx);
             id = rb_intern(buff);
             /* idx-th param, current level*/
-            ADD_INSN2(anchor, nd_line(node), getdynamic, I2F(idx), 0);
+            ADD_INSN2(anchor, nd_line(node), getdynamic, I2F(idx), I2F(0));
             COMPILE(&anc, "set_block_local_tbl#masgn/other", nelem);
             ADD_LINKED_LIST(anchor, LAST_ELEMENT(&anc));
             rb_ary_push(vars, I2F(id));
@@ -702,7 +702,7 @@
         tid = rb_intern("__tp__");
       }
       iseqobj->argc = 1;
-      ADD_INSN2(anchor, nd_line(node), getdynamic, I2F(1), 0); /* first param, current level*/
+      ADD_INSN2(anchor, nd_line(node), getdynamic, I2F(1), I2F(0)); /* first param, current level*/
       COMPILE(&anc, "set_block_local_tbl#lasgn/dasgn", nargs);
       ADD_LINKED_LIST(anchor, POP_ELEMENT(&anc));
       rb_ary_push(vars, I2F(tid));
@@ -889,7 +889,6 @@
   int k, pos, stack_max = 0;
 
   GC_CHECK();
-
   /* set label position */
   list = FIRST_ELEMENT(anchor);
   k = pos = 0;
@@ -925,7 +924,6 @@
   insn_info_tbl = ALLOC_N(struct insn_info_struct, k);
 
   GC_CHECK();
-
   
   list = FIRST_ELEMENT(anchor);
   k = pos  = 0;
@@ -1032,6 +1030,7 @@
     }
     list = list->next;
   }
+
   {
     iseqobj->iseq = (void*)generated_iseq;
     iseqobj->size  = pos;
@@ -1626,7 +1625,7 @@
     ADD_INSN3(ret, nd_line(node), defined, I2F(DEFINED_IVAR), ID2SYM(node->nd_vid), needstr);
     return 1;
   case NODE_GVAR:
-    ADD_INSN3(ret, nd_line(node), defined, I2F(DEFINED_GVAR), ((int)node->nd_entry) | 1, needstr);
+    ADD_INSN3(ret, nd_line(node), defined, I2F(DEFINED_GVAR), ((VALUE)node->nd_entry) | 1, needstr);
     return 1;
   case NODE_CVAR:
     ADD_INSN3(ret, nd_line(node), defined, I2F(DEFINED_CVAR), ID2SYM(node->nd_vid), needstr);
@@ -1987,7 +1986,6 @@
     LABEL_OBJECT * retry_end_l = NEW_LABEL(nd_line(node));
     VALUE name = rb_str_new2("b@");
     rb_str_concat(name, iseqobj->name);
-    
     iseqobj->compile_data->current_block = NEW_CHILD_ISEQOBJ(node, name,
                                                              self, ISEQ_TYPE_BLOCK);
     ADD_LABEL(ret, retry_label);

Modified: trunk/compile.h
===================================================================
--- trunk/compile.h	2005-06-30 14:36:27 UTC (rev 190)
+++ trunk/compile.h	2005-07-01 02:08:17 UTC (rev 191)
@@ -94,7 +94,7 @@
   NEW_CHILD_ISEQOBJ(node, name, 0, type)
 
 #define NEW_CHILD_ISEQOBJ(node, name, parent, type)       \
-  new_child_iseq(self, iseqobj, node, name, parent, type)
+  new_child_iseq(self, iseqobj, node, (VALUE)name, (VALUE)parent, (VALUE)type)
 
 /* add instructions */
 #define ADD_SEQ(seq1, seq2) \
@@ -106,21 +106,26 @@
 
 /* add an instruction with label operand */
 #define ADD_INSNL(seq, line, insn, label) \
-  ADD_LINKED_LIST(seq, (struct iseq_link_element *) new_insn_body(iseqobj, line, BIN(insn), 1, label))
+  ADD_LINKED_LIST(seq, (struct iseq_link_element *) \
+                  new_insn_body(iseqobj, line, BIN(insn), 1, (VALUE)label))
 
 /* add an instruction with some operands (1, 2, 3, 5) */
 #define ADD_INSN1(seq, line, insn, op1) \
-  ADD_LINKED_LIST(seq, (struct iseq_link_element *) new_insn_body(iseqobj, line, BIN(insn), 1, op1))
+  ADD_LINKED_LIST(seq, (struct iseq_link_element *) \
+                  new_insn_body(iseqobj, line, BIN(insn), 1, (VALUE)op1))
 
 #define ADD_INSN2(seq, line, insn, op1, op2) \
-  ADD_LINKED_LIST(seq, (struct iseq_link_element *) new_insn_body(iseqobj, line, BIN(insn), 2, op1, op2))
+  ADD_LINKED_LIST(seq, (struct iseq_link_element *) \
+                  new_insn_body(iseqobj, line, BIN(insn), 2, (VALUE)op1, (VALUE)op2))
 
-#define ADD_INSN3(seq, line, insn, op1, op2, op3)             \
-  ADD_LINKED_LIST(seq, (struct iseq_link_element *) new_insn_body(iseqobj, line, BIN(insn), 3, op1, op2, op3))
+#define ADD_INSN3(seq, line, insn, op1, op2, op3) \
+  ADD_LINKED_LIST(seq, (struct iseq_link_element *) \
+                  new_insn_body(iseqobj, line, BIN(insn), 3, (VALUE)op1, (VALUE)op2, (VALUE)op3))
 
 #define ADD_INSN5(seq, line, insn, o1, o2, o3, o4, o5) \
-  ADD_LINKED_LIST(seq, (struct iseq_link_element *) new_insn_body(iseqobj, line, BIN(insn), 5, \
-                                                                  o1, o2, o3, o4, o5))
+  ADD_LINKED_LIST(seq, (struct iseq_link_element *) \
+                  new_insn_body(iseqobj, line, BIN(insn), 5, \
+                                (VALUE)o1, (VALUE)o2, (VALUE)o3, (VALUE)o4, (VALUE)o5))
 /* add label */
 #define ADD_LABEL(seq, label) \
   ADD_LINKED_LIST(seq, (struct iseq_link_element *)label)
@@ -139,10 +144,10 @@
 /* Specific Insn factory */
 
 #define ADD_SEND(seq, line, id, argc) \
-  ADD_SEND_R(seq, line, id, argc, Qfalse, I2F(0))
+  ADD_SEND_R(seq, line, id, argc, (VALUE)Qfalse, (VALUE)I2F(0))
 
 #define ADD_SEND_R(seq, line, id, argc, block, flag) \
-  ADD_INSN5(seq, line, send, id, argc, block, flag, 0)
+  ADD_INSN5(seq, line, send, id, argc, block, flag, 0);
 
 
 /* compile node */

Modified: trunk/insnhelper.h
===================================================================
--- trunk/insnhelper.h	2005-06-30 14:36:27 UTC (rev 190)
+++ trunk/insnhelper.h	2005-07-01 02:08:17 UTC (rev 191)
@@ -80,7 +80,7 @@
 /* SP */
 #define GET_SP()   (USAGE_ANALYSIS_REGISTER_HELPER(1, 0, REG_SP))
 #define SET_SP(x)  (th->sp = REG_SP  = (USAGE_ANALYSIS_REGISTER_HELPER(1, 1, (x))))
-#define INC_SP(x)  (th->sp = REG_SP += (int)(USAGE_ANALYSIS_REGISTER_HELPER(1, 1, (VALUE*)(x))))
+#define INC_SP(x)  (th->sp = REG_SP += ((VALUE)(USAGE_ANALYSIS_REGISTER_HELPER(1, 1, (VALUE)(x)))))
 #define SET_SV(x)  (*GET_SP() = (x))
   /* set current stack value as x */
 

Modified: trunk/test.rb
===================================================================
--- trunk/test.rb	2005-06-30 14:36:27 UTC (rev 190)
+++ trunk/test.rb	2005-07-01 02:08:17 UTC (rev 191)
@@ -9,6 +9,18 @@
 ###########################################################
 $prog =<<'__EOP__'
 
+sum = 0
+for x in [1, 2, 3]
+  sum += x
+end
+sum
+
+__END__
+10000000.times{|i|
+  "hoge" + "huga" + "hage"
+}
+
+__END__
 p
 p 1
 p 1,2


--
ML: yarv-diff quickml.atdot.net
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧][生データ]