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

ruby-changes:13805

From: matz <ko1@a...>
Date: Sun, 1 Nov 2009 01:14:58 +0900 (JST)
Subject: [ruby-changes:13805] Ruby:r25603 (trunk): * enum.c (enum_count): remove optimization using #size.

matz	2009-11-01 01:14:38 +0900 (Sun, 01 Nov 2009)

  New Revision: 25603

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

  Log:
    * enum.c (enum_count): remove optimization using #size.
      revert r25560.
    
    * vm_eval.c (rb_funcall_no_recursive): remove method.

  Modified files:
    trunk/ChangeLog
    trunk/enum.c
    trunk/vm_eval.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 25602)
+++ ChangeLog	(revision 25603)
@@ -1,3 +1,10 @@
+Sat Oct 31 23:44:35 2009  Yukihiro Matsumoto  <matz@r...>
+
+	* enum.c (enum_count): remove optimization using #size.
+	  revert r25560.
+
+	* vm_eval.c (rb_funcall_no_recursive): remove method.
+
 Sat Oct 31 23:28:49 2009  Yukihiro Matsumoto  <matz@r...>
 
 	* vm_eval.c (check_funcall): logic updated according to
Index: enum.c
===================================================================
--- enum.c	(revision 25602)
+++ enum.c	(revision 25603)
@@ -119,8 +119,6 @@
     return Qnil;
 }
 
-extern VALUE rb_funcall_no_recursive(VALUE, ID, int, VALUE*, VALUE (*)());
-
 /*
  *  call-seq:
  *     enum.count                   => int
@@ -151,10 +149,6 @@
 	    func = count_iter_i;
 	}
 	else {
-	    VALUE tmp;
-	    
-	    tmp = rb_funcall_no_recursive(obj, id_size, 0, 0, enum_count);
-	    if (tmp != Qundef) return tmp;
 	    func = count_all_i;
 	}
     }
Index: vm_eval.c
===================================================================
--- vm_eval.c	(revision 25602)
+++ vm_eval.c	(revision 25603)
@@ -263,8 +263,9 @@
 }
 
 static VALUE
-check_funcall(rb_method_entry_t *me, VALUE recv, ID mid, int argc, VALUE *argv)
+check_funcall(VALUE recv, ID mid, int argc, VALUE *argv)
 {
+    rb_method_entry_t *me = rb_search_method_entry(recv, mid);
     rb_thread_t *th = GET_THREAD();
     int call_status = rb_method_call_status(th, me, CALL_FCALL, Qundef);
 
@@ -291,22 +292,9 @@
 VALUE
 rb_check_funcall(VALUE recv, ID mid, int argc, VALUE *argv)
 {
-    return check_funcall(rb_search_method_entry(recv, mid), recv, mid, argc, argv);
+    return check_funcall(recv, mid, argc, argv);
 }
 
-VALUE
-rb_funcall_no_recursive(VALUE recv, ID mid, int argc, VALUE *argv, VALUE (*func)())
-{
-    rb_method_entry_t *me = rb_search_method_entry(recv, mid);
-    int call_status;
-
-    if (!me) return Qundef;
-    if (me->def && me->def->type == VM_METHOD_TYPE_CFUNC &&
-	me->def->body.cfunc.func == func)
-	return Qundef;
-    return check_funcall(me, recv, mid, argc, argv);
-}
-
 static inline rb_method_entry_t *
 rb_search_method_entry(VALUE recv, ID mid)
 {

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

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