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

.sitesObject



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