/** * Search for the named method in this class and in superclasses applying refinements from the given scope. If * found return the method; otherwise, return UndefinedMethod. * * @param name the method name * @param refinedScope the scope containing refinements to search * @return the method or UndefinedMethod */ public DynamicMethod searchWithRefinements(String name, StaticScope refinedScope) { DynamicMethod method = searchMethodWithRefinementsInner(name, refinedScope); if (method instanceof CacheableMethod) { method = ((CacheableMethod) method).getMethodForCaching(); } if (method != null) { return method; } return UndefinedMethod.INSTANCE; }
/** * Search for the named method in this class and in superclasses applying refinements from the given scope. If * found return the method; otherwise, return UndefinedMethod. * * @param name the method name * @param refinedScope the scope containing refinements to search * @return the method or UndefinedMethod */ public DynamicMethod searchWithRefinements(String name, StaticScope refinedScope) { DynamicMethod method = searchMethodWithRefinementsInner(name, refinedScope); if (method instanceof CacheableMethod) { method = ((CacheableMethod) method).getMethodForCaching(); } if (method != null) { return method; } return UndefinedMethod.INSTANCE; }
/** * Search through this module and supermodules for method definitions after {@link RubyModule#cacheHit(String)} * failed to return a result. Cache superclass definitions in this class. * * @param id The name of the method to search for * @param cacheUndef Flag for caching UndefinedMethod. This should normally be true. * @return The method, or UndefinedMethod if not found */ private CacheEntry searchWithCacheMiss(final String id, final boolean cacheUndef) { // we grab serial number first; the worst that will happen is we cache a later // update with an earlier serial number, which would just flush anyway final int token = generation; DynamicMethod method = searchMethodInner(id); if (method instanceof CacheableMethod) { method = ((CacheableMethod) method).getMethodForCaching(); } return method != null ? addToCache(id, method, token) : cacheUndef ? addToCache(id, UndefinedMethod.getInstance(), token) : cacheEntryFactory.newCacheEntry(id, method, token); }
/** * Search through this module and supermodules for method definitions after {@link RubyModule#cacheHit(String)} * failed to return a result. Cache superclass definitions in this class. * * @param id The name of the method to search for * @param cacheUndef Flag for caching UndefinedMethod. This should normally be true. * @return The method, or UndefinedMethod if not found */ private CacheEntry searchWithCacheMiss(final String id, final boolean cacheUndef) { // we grab serial number first; the worst that will happen is we cache a later // update with an earlier serial number, which would just flush anyway final int token = generation; DynamicMethod method = searchMethodInner(id); if (method instanceof CacheableMethod) { method = ((CacheableMethod) method).getMethodForCaching(); } return method != null ? addToCache(id, method, token) : cacheUndef ? addToCache(id, UndefinedMethod.getInstance(), token) : cacheEntryFactory.newCacheEntry(id, method, token); }
/** * Search through this module and supermodules for method definitions. Cache superclass definitions in this class. * * @param name The name of the method to search for * @return The method, or UndefinedMethod if not found */ public CacheEntry searchWithCache(String name) { CacheEntry entry = cacheHit(name); if (entry != null) return entry; // we grab serial number first; the worst that will happen is we cache a later // update with an earlier serial number, which would just flush anyway int token = getGeneration(); DynamicMethod method = searchMethodInner(name); if (method instanceof CacheableMethod) { method = ((CacheableMethod) method).getMethodForCaching(); } return method != null ? addToCache(name, method, token) : addToCache(name, UndefinedMethod.getInstance(), token); }
/** * Search through this module and supermodules for method definitions. Cache superclass definitions in this class. * * @param name The name of the method to search for * @return The method, or UndefinedMethod if not found */ public CacheEntry searchWithCache(String name) { CacheEntry entry = cacheHit(name); if (entry != null) return entry; // we grab serial number first; the worst that will happen is we cache a later // update with an earlier serial number, which would just flush anyway int token = getGeneration(); DynamicMethod method = searchMethodInner(name); if (method instanceof CacheableMethod) { method = ((CacheableMethod) method).getMethodForCaching(); } return method != null ? addToCache(name, method, token) : addToCache(name, UndefinedMethod.getInstance(), token); }