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

ruby-changes:25034

From: ko1 <ko1@a...>
Date: Thu, 4 Oct 2012 21:48:51 +0900 (JST)
Subject: [ruby-changes:25034] ko1:r37086 (trunk): * vm.c (vm_analysis_insn|operand|register): use st_insert

ko1	2012-10-04 21:48:35 +0900 (Thu, 04 Oct 2012)

  New Revision: 37086

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37086

  Log:
    * vm.c (vm_analysis_insn|operand|register): use st_insert
      instead of using rb_hash_aset() because rb_hash_aset()
      check $SAFE.

  Modified files:
    trunk/ChangeLog
    trunk/vm.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37085)
+++ ChangeLog	(revision 37086)
@@ -1,3 +1,9 @@
+Thu Oct  4 21:44:17 2012  Koichi Sasada  <ko1@a...>
+
+	* vm.c (vm_analysis_insn|operand|register): use st_insert
+	  instead of using rb_hash_aset() because rb_hash_aset()
+	  check $SAFE.
+
 Thu Oct  4 21:15:26 2012  Koichi Sasada  <ko1@a...>
 
 	* vm.c (VM_COLLECT_USAGE_DETAILS): make new VM usage analysis
Index: vm.c
===================================================================
--- vm.c	(revision 37085)
+++ vm.c	(revision 37086)
@@ -2304,6 +2304,8 @@
 
 #if VM_COLLECT_USAGE_DETAILS
 
+#define HASH_ASET(h, k, v) st_insert(RHASH_TBL(h), (st_data_t)(k), (st_data_t)(v))
+
 /* uh = {
  *   insn(Fixnum) => ihash(Hash)
  * }
@@ -2331,12 +2333,12 @@
     uh = rb_const_get(rb_cRubyVM, usage_hash);
     if ((ihash = rb_hash_aref(uh, INT2FIX(insn))) == Qnil) {
 	ihash = rb_hash_new();
-	rb_hash_aset(uh, INT2FIX(insn), ihash);
+	HASH_ASET(uh, INT2FIX(insn), ihash);
     }
     if ((cv = rb_hash_aref(ihash, INT2FIX(-1))) == Qnil) {
 	cv = INT2FIX(0);
     }
-    rb_hash_aset(ihash, INT2FIX(-1), INT2FIX(FIX2INT(cv) + 1));
+    HASH_ASET(ihash, INT2FIX(-1), INT2FIX(FIX2INT(cv) + 1));
 
     /* calc bigram */
     if (prev_insn != -1) {
@@ -2352,7 +2354,7 @@
 	if ((cv = rb_hash_aref(uh, bi)) == Qnil) {
 	    cv = INT2FIX(0);
 	}
-	rb_hash_aset(uh, bi, INT2FIX(FIX2INT(cv) + 1));
+	HASH_ASET(uh, bi, INT2FIX(FIX2INT(cv) + 1));
     }
     prev_insn = insn;
 }
@@ -2378,11 +2380,11 @@
     uh = rb_const_get(rb_cRubyVM, usage_hash);
     if ((ihash = rb_hash_aref(uh, INT2FIX(insn))) == Qnil) {
 	ihash = rb_hash_new();
-	rb_hash_aset(uh, INT2FIX(insn), ihash);
+	HASH_ASET(uh, INT2FIX(insn), ihash);
     }
     if ((ophash = rb_hash_aref(ihash, INT2FIX(n))) == Qnil) {
 	ophash = rb_hash_new();
-	rb_hash_aset(ihash, INT2FIX(n), ophash);
+	HASH_ASET(ihash, INT2FIX(n), ophash);
     }
     /* intern */
     valstr = insn_operand_intern(GET_THREAD()->cfp->iseq, insn, n, op, 0, 0, 0, 0);
@@ -2391,7 +2393,7 @@
     if ((cv = rb_hash_aref(ophash, valstr)) == Qnil) {
 	cv = INT2FIX(0);
     }
-    rb_hash_aset(ophash, valstr, INT2FIX(FIX2INT(cv) + 1));
+    HASH_ASET(ophash, valstr, INT2FIX(FIX2INT(cv) + 1));
 }
 
 static void
@@ -2435,9 +2437,11 @@
     if ((cv = rb_hash_aref(uh, valstr)) == Qnil) {
 	cv = INT2FIX(0);
     }
-    rb_hash_aset(uh, valstr, INT2FIX(FIX2INT(cv) + 1));
+    HASH_ASET(uh, valstr, INT2FIX(FIX2INT(cv) + 1));
 }
 
+#undef HASH_ASET
+
 void (*ruby_vm_collect_usage_func_insn)(int insn) = vm_analysis_insn;
 void (*ruby_vm_collect_usage_func_operand)(int insn, int n, VALUE op) = vm_analysis_operand;
 void (*ruby_vm_collect_usage_func_register)(int reg, int isset) = vm_analysis_register;

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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