Module: RaceGuard::SharedState::MemoRegistry
- Defined in:
- lib/race_guard/shared_state/memo_registry.rb
Overview
Static memo sites + one-shot reports when multi-threaded (Epic 6.4).
Constant Summary collapse
- DETECTOR =
'shared_state:memoization'- MODULE_MUTEX =
Mutex.new
Class Method Summary collapse
Class Method Details
.flush_pending! ⇒ Object
40 41 42 |
# File 'lib/race_guard/shared_state/memo_registry.rb', line 40 def flush_pending! MODULE_MUTEX.synchronize { flush_pending_unlocked! } end |
.reset! ⇒ Object
13 14 15 16 17 18 |
# File 'lib/race_guard/shared_state/memo_registry.rb', line 13 def reset! MODULE_MUTEX.synchronize do @sites = [] @reported_keys = Set.new end end |
.sites ⇒ Object
20 21 22 |
# File 'lib/race_guard/shared_state/memo_registry.rb', line 20 def sites MODULE_MUTEX.synchronize { @sites.dup } end |
.sync_from_configuration! ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/race_guard/shared_state/memo_registry.rb', line 24 def sync_from_configuration! cfg = RaceGuard.configuration globs = cfg.shared_state_memo_globs MODULE_MUTEX.synchronize do @sites = [] Array(globs).each do |pattern| Dir.glob(pattern).each do |path| next unless File.file?(path) @sites.concat(MemoScanner.scan_file(path)) end end flush_pending_unlocked! if SharedState.multi_threaded? end end |