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