# File lib/Borges/Utilities/WeakIdentityKeyHash.rb, line 17 def self.make_finalizer(internal_id, hash) return proc do |id| Thread.exclusive do rids = ID_MAP[id] if rids then for rid in rids ID_REV_MAP.delete(rid) end ID_MAP.delete(id) end rid = ID_REV_MAP[id] if rid then ID_REV_MAP.delete(id) ID_MAP[rid].delete(id) ID_MAP.delete(rid) if ID_MAP[rid].empty? end end hash.delete(internal_id) unless hash.nil? end end