@Override public void invalidateAll(List<Invalidator> invalidators) { // order is important; invalidate before increment super.invalidateAll(invalidators); caches.incrementConstantInvalidations(); } }
/** * Provide stats on how many method and constant invalidations have occurred globally. * * This was added for Pry in https://github.com/jruby/jruby/issues/4384 */ @JRubyMethod(name = "cache_stats", module = true) public static IRubyObject cache_stats(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; RubyHash stat = RubyHash.newHash(runtime); stat.op_aset(context, runtime.newSymbol("method_invalidation_count"), runtime.newFixnum(runtime.getCaches().getMethodInvalidationCount())); stat.op_aset(context, runtime.newSymbol("constant_invalidation_count"), runtime.newFixnum(runtime.getCaches().getConstantInvalidationCount())); return stat; }
public void invalidateCacheDescendants() { LOG.debug("{} invalidating descendants", baseName); getRuntime().getCaches().incrementMethodInvalidations(); if (includingHierarchies.isEmpty()) { // it's only us; just invalidate directly methodInvalidator.invalidate(); return; } List<Invalidator> invalidators = new ArrayList<Invalidator>(); invalidators.add(methodInvalidator); synchronized (getRuntime().getHierarchyLock()) { for (RubyClass includingHierarchy : includingHierarchies) { includingHierarchy.addInvalidatorsAndFlush(invalidators); } } methodInvalidator.invalidateAll(invalidators); }
this.jitCompiler = new JITCompiler(this); this.parserStats = new ParserStats(this); this.caches = new Caches();
/** * Provide stats on how many method and constant invalidations have occurred globally. * * This was added for Pry in https://github.com/jruby/jruby/issues/4384 */ @JRubyMethod(name = "cache_stats", module = true) public static IRubyObject cache_stats(ThreadContext context, IRubyObject self) { Ruby runtime = context.runtime; RubyHash stat = RubyHash.newHash(runtime); stat.op_aset(context, runtime.newSymbol("method_invalidation_count"), runtime.newFixnum(runtime.getCaches().getMethodInvalidationCount())); stat.op_aset(context, runtime.newSymbol("constant_invalidation_count"), runtime.newFixnum(runtime.getCaches().getConstantInvalidationCount())); return stat; }
public void invalidateCacheDescendants() { LOG.debug("{} invalidating descendants", baseName); getRuntime().getCaches().incrementMethodInvalidations(); if (includingHierarchies.isEmpty()) { // it's only us; just invalidate directly methodInvalidator.invalidate(); return; } List<Invalidator> invalidators = new ArrayList<Invalidator>(); invalidators.add(methodInvalidator); synchronized (getRuntime().getHierarchyLock()) { for (RubyClass includingHierarchy : includingHierarchies) { includingHierarchy.addInvalidatorsAndFlush(invalidators); } } methodInvalidator.invalidateAll(invalidators); }
this.jitCompiler = new JITCompiler(this); this.parserStats = new ParserStats(this); this.caches = new Caches();
@Override public void invalidateAll(List<Invalidator> invalidators) { // order is important; invalidate before increment super.invalidateAll(invalidators); caches.incrementConstantInvalidations(); } }
@Override public void invalidate() { // order is important; invalidate before increment super.invalidate(); caches.incrementConstantInvalidations(); }
@Override public void invalidate() { // order is important; invalidate before increment super.invalidate(); caches.incrementConstantInvalidations(); }