@@ -393,58 +393,9 @@ Base.@nospecializeinfer @inline function active_reg_inner(
393393 return ty
394394end
395395
396- const ActivityCache = Dict {Tuple{Type, Bool, Bool, Bool}, ActivityState} ()
397-
398- const ActivityWorldCache = Ref (0 )
399-
400- const ActivityMethodCache = Core. MethodMatch[]
401- # given the current worldage of compilation, check if there are any methods
402- # of inactive_type which may invalidate the cache, and if so clear it.
403- function check_activity_cache_invalidations (world:: UInt )
404- # We've already guaranteed that this world doesn't have any stale caches
405- if world <= ActivityWorldCache[]
406- return
407- end
408-
409- invalid = true
410-
411- tt = Tuple{typeof (EnzymeRules. inactive_type), Type}
412-
413- methods = Core. MethodMatch[]
414- matches = Base. _methods_by_ftype (tt, - 1 , world)
415- if matches === nothing
416- @assert ActivityCache. size () == 0
417- return
418- end
419-
420- methods = Core. MethodMatch[]
421- for match in matches:: Vector
422- push! (methods, match:: Core.MethodMatch )
423- end
424-
425- if methods == ActivityMethodCache
426- return
427- end
428-
429- empty! (ActivityCache)
430- empty! (ActivityMethodCache)
431- for match in matches:: Vector
432- push! (ActivityMethodCache, match:: Core.MethodMatch )
433- end
434-
435- ActivityWorldCache[] = world
436-
437- end
438-
439396Base. @nospecializeinfer @inline function active_reg (@nospecialize (ST:: Type ), world:: UInt ; justActive= false , UnionSret = false , AbstractIsMixed = false )
440- key = (ST, justActive, UnionSret, AbstractIsMixed)
441- if haskey (ActivityCache, key)
442- return ActivityCache[key]
443- end
444397 set = Base. IdSet {Type} ()
445- result = active_reg_inner (ST, set, world, justActive, UnionSret, AbstractIsMixed)
446- ActivityCache[key] = result
447- return result
398+ return active_reg_inner (ST, set, world, justActive, UnionSret, AbstractIsMixed)
448399end
449400
450401function active_reg_nothrow_generator (world:: UInt , source:: LineNumberNode , T, self, _)
@@ -462,7 +413,6 @@ function active_reg_nothrow_generator(world::UInt, source::LineNumberNode, T, se
462413 Core. Compiler. LineInfoNode (@__MODULE__ , :active_reg_nothrow , source. file, Int32 (source. line), Int32 (0 ))
463414 ]
464415 end
465- check_activity_cache_invalidations (world)
466416 ci. min_world = world
467417 ci. max_world = typemax (UInt)
468418
0 commit comments