From 5b27469d1940e25096375942a4d9ac4e153559de Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 27 Jun 2024 09:24:34 +0900 Subject: [PATCH] numeric.c (mrb_cmp): check the first argument if it's int or float To avoid the cost of `mrb_type(obj1)`. --- src/numeric.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/numeric.c b/src/numeric.c index 783f50789..f67ce3339 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -2043,6 +2043,9 @@ mrb_cmp(mrb_state *mrb, mrb_value obj1, mrb_value obj2) { mrb_value v; + if (mrb_fixnum_p(obj1) || mrb_float_p(obj1)) { + return cmpnum(mrb, obj1, obj2); + } switch (mrb_type(obj1)) { case MRB_TT_INTEGER: case MRB_TT_FLOAT: