``` diff --git a/core/src/main/java/org/jruby/runtime/callsite/CachingCallSite.java b/core/src/main/java/org/jruby/runtime/callsite/CachingCallSite.java index ea576b37c9..0d05b5c29f 100644 --- a/core/src/main/java/org/jruby/runtime/callsite/CachingCallSite.java +++ b/core/src/main/java/org/jruby/runtime/callsite/CachingCallSite.java @@ -313,7 +313,10 @@ public abstract class CachingCallSite extends CallSite { private CacheEntry cacheAndGet(IRubyObject self, RubyClass selfType, String methodName) { CacheEntry entry = selfType.searchWithCache(methodName); - if (!entry.method.isUndefined()) entry = setCache(entry, self); + if (!entry.method.isUndefined()) { + entry = setCache(entry, self); + if (entry.method.isBuiltin()) builtinCache = entry; + } return entry; } ```