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

ruby-changes:2637

From: ko1@a...
Date: 7 Dec 2007 15:04:20 +0900
Subject: [ruby-changes:2637] nobu - Ruby:r14128 (trunk): * thread.c (recursive_pop): use object ID.

nobu	2007-12-07 15:04:03 +0900 (Fri, 07 Dec 2007)

  New Revision: 14128

  Modified files:
    trunk/ChangeLog
    trunk/thread.c

  Log:
    * thread.c (recursive_pop): use object ID.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14128&r2=14127
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/thread.c?r1=14128&r2=14127

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14127)
+++ ChangeLog	(revision 14128)
@@ -1,4 +1,4 @@
-Fri Dec  7 12:27:18 2007  Nobuyoshi Nakada  <nobu@r...>
+Fri Dec  7 15:04:01 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* array.c (flatten): some performance improvements, based on a patch
 	  from Yusuke ENDOH <mame AT tsg.ne.jp> in [ruby-core:13877].
@@ -7,6 +7,8 @@
 	* thread.c (rb_exec_recursive): use Hash instead of Array for
 	  performance improvement.  [ruby-core:13898]
 
+	* thread.c (recursive_pop): use object ID.
+
 Thu Dec  6 19:52:50 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* parse.y (arg): typo fixed ("!" -> "|") in the ripper code.
Index: thread.c
===================================================================
--- thread.c	(revision 14127)
+++ thread.c	(revision 14128)
@@ -2593,7 +2593,7 @@
 
 	if (NIL_P(list) || TYPE(list) != T_HASH)
 	    return Qfalse;
-	if (NIL_P(rb_hash_lookup(list, rb_obj_id(obj))))
+	if (NIL_P(rb_hash_lookup(list, obj)))
 	    return Qfalse;
 	return Qtrue;
     }
@@ -2617,7 +2617,7 @@
 	list = rb_hash_new();
 	rb_hash_aset(hash, sym, list);
     }
-    rb_hash_aset(list, rb_obj_id(obj), Qtrue);
+    rb_hash_aset(list, obj, Qtrue);
     return hash;
 }
 
@@ -2650,21 +2650,22 @@
 rb_exec_recursive(VALUE (*func) (VALUE, VALUE, int), VALUE obj, VALUE arg)
 {
     VALUE hash = rb_thread_local_aref(rb_thread_current(), recursive_key);
+    VALUE objid = rb_obj_id(obj);
 
-    if (recursive_check(hash, obj)) {
+    if (recursive_check(hash, objid)) {
 	return (*func) (obj, arg, Qtrue);
     }
     else {
 	VALUE result = Qundef;
 	int state;
 
-	hash = recursive_push(hash, obj);
+	hash = recursive_push(hash, objid);
 	PUSH_TAG();
 	if ((state = EXEC_TAG()) == 0) {
 	    result = (*func) (obj, arg, Qfalse);
 	}
 	POP_TAG();
-	recursive_pop(hash, obj);
+	recursive_pop(hash, objid);
 	if (state)
 	    JUMP_TAG(state);
 	return result;

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

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