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

ruby-changes:70163

From: Koichi <ko1@a...>
Date: Mon, 13 Dec 2021 10:24:09 +0900 (JST)
Subject: [ruby-changes:70163] 4d0cb1a54b (master): add `method_def_aritry()`

https://git.ruby-lang.org/ruby.git/commit/?id=4d0cb1a54b

From 4d0cb1a54ba5e8e053e6acc860fd1cb9ca5e1b19 Mon Sep 17 00:00:00 2001
From: Koichi Sasada <ko1@a...>
Date: Mon, 13 Dec 2021 01:16:04 +0900
Subject: add `method_def_aritry()`

---
 proc.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/proc.c b/proc.c
index 90ecf1e59bb..6933db36d67 100644
--- a/proc.c
+++ b/proc.c
@@ -2637,10 +2637,8 @@ umethod_bind_call(int argc, VALUE *argv, VALUE method) https://github.com/ruby/ruby/blob/trunk/proc.c#L2637
  * if there is no maximum.
  */
 static int
-rb_method_entry_min_max_arity(const rb_method_entry_t *me, int *max)
+method_def_min_max_arity(const rb_method_definition_t *def, int *max)
 {
-    const rb_method_definition_t *def = me->def;
-
   again:
     if (!def) return *max = 0;
     switch (def->type) {
@@ -2696,15 +2694,21 @@ rb_method_entry_min_max_arity(const rb_method_entry_t *me, int *max) https://github.com/ruby/ruby/blob/trunk/proc.c#L2694
 	*max = UNLIMITED_ARGUMENTS;
 	return 0;
     }
-    rb_bug("rb_method_entry_min_max_arity: invalid method entry type (%d)", def->type);
+    rb_bug("method_def_min_max_arity: invalid method entry type (%d)", def->type);
     UNREACHABLE_RETURN(Qnil);
 }
 
+static int
+method_def_aritry(const rb_method_definition_t *def)
+{
+    int max, min = method_def_min_max_arity(def, &max);
+    return min == max ? min : -min-1;
+}
+
 int
 rb_method_entry_arity(const rb_method_entry_t *me)
 {
-    int max, min = rb_method_entry_min_max_arity(me, &max);
-    return min == max ? min : -min-1;
+    return method_def_aritry(me->def);
 }
 
 /*
@@ -2786,7 +2790,7 @@ method_min_max_arity(VALUE method, int *max) https://github.com/ruby/ruby/blob/trunk/proc.c#L2790
     const struct METHOD *data;
 
     TypedData_Get_Struct(method, struct METHOD, &method_data_type, data);
-    return rb_method_entry_min_max_arity(data->me, max);
+    return method_def_min_max_arity(data->me->def, max);
 }
 
 int
-- 
cgit v1.2.1


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

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