Module: Cond::CondPrivate::SymbolGenerator

Included in:
CodeSection, ThreadLocal
Defined in:
lib/cond/cond_private/symbol_generator.rb

Class Method Summary collapse

Class Method Details

.gensymObject



16
17
18
19
20
21
22
23
24
25
# File 'lib/cond/cond_private/symbol_generator.rb', line 16

def gensym
  @mutex.synchronize {
    if @recycled.empty?
      @count.succ!
      :"|#{@count}"
    else
      @recycled.shift
    end
  }
end

.recycle(syms) ⇒ Object



27
28
29
30
31
# File 'lib/cond/cond_private/symbol_generator.rb', line 27

def recycle(syms)
  @mutex.synchronize {
    @recycled.concat(syms)
  }
end

.track(object, syms) ⇒ Object



33
34
35
36
37
38
# File 'lib/cond/cond_private/symbol_generator.rb', line 33

def track(object, syms)
  @mutex.synchronize {
    @object_id_to_sym_list[object.object_id] = syms.dup
    ObjectSpace.define_finalizer(object, @finalizer)
  }
end