From fbaa5db44a3b0622e2755fd00e0519a603aa9bcb Mon Sep 17 00:00:00 2001 From: John Hawthorn Date: Thu, 15 Dec 2022 10:46:24 -0800 Subject: Use a BOP for Hash#default On a hash miss we need to call default if it is redefined in order to return the default value to be used. Previously we checked this with rb_method_basic_definition_p, which avoids the method call but requires a method lookup. This commit replaces the previous check with BASIC_OP_UNREDEFINED_P and a new BOP_DEFAULT. We still need to fall back to rb_method_basic_definition_p when called on a subclasss of hash. | |compare-ruby|built-ruby| |:---------------|-----------:|---------:| |hash_aref_miss | 2.692| 3.531| | | -| 1.31x| Co-authored-by: Daniel Colson Co-authored-by: "Ian C. Anderson" Co-authored-by: Jack McCracken --- defs/id.def | 1 + 1 file changed, 1 insertion(+) (limited to 'defs') diff --git a/defs/id.def b/defs/id.def index a3a383f532..ebf00506ea 100644 --- a/defs/id.def +++ b/defs/id.def @@ -76,6 +76,7 @@ firstline, predefined = __LINE__+1, %[\ "/*NULL*/" NULL empty? eql? + default respond_to? Respond_to respond_to_missing? Respond_to_missing -- cgit v1.2.3