File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed
Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -39,13 +39,13 @@ def initialize(orig)
3939 when true , false , nil
4040 @delegate_sd_obj = orig
4141 else
42- @@__map [ self ] = orig
42+ weakref_map [ self ] = orig
4343 end
4444 super
4545 end
4646
4747 def __getobj__ # :nodoc:
48- @@__map [ self ] or defined? ( @delegate_sd_obj ) ? @delegate_sd_obj :
48+ weakref_map [ self ] or defined? ( @delegate_sd_obj ) ? @delegate_sd_obj :
4949 Kernel ::raise ( RefError , "Invalid Reference - probably recycled" , Kernel ::caller ( 2 ) )
5050 end
5151
@@ -56,6 +56,18 @@ def __setobj__(obj) # :nodoc:
5656 # Returns true if the referenced object is still alive.
5757
5858 def weakref_alive?
59- @@__map . key? ( self ) or defined? ( @delegate_sd_obj )
59+ weakref_map . key? ( self ) or defined? ( @delegate_sd_obj )
6060 end
61+
62+ def weakref_map
63+ if defined? ( ::Object ::Ractor )
64+ if Ractor . current [ :__WeakRef_map__ ] . nil?
65+ Ractor . current [ :__WeakRef_map__ ] = ::ObjectSpace ::WeakMap . new
66+ end
67+ Ractor . current [ :__WeakRef_map__ ]
68+ else
69+ @@__map
70+ end
71+ end
72+ private :weakref_map
6173end
You can’t perform that action at this time.
0 commit comments