Revert "fixed bug in lib/thread Queue"
[rbx.git] / kernel / bootstrap / weakref.rb
blob7372696753142cc37ce66658a20a39713743acd1
1 class WeakRef
2   
3   class RefError < RuntimeError; end
4   
5   def self.create_weakref(obj)
6     Ruby.primitive :make_weak_ref
7     raise PrimitiveFailure, "unable to make weak reference"
8   end
9   
10   def initialize(object)
11     @wr = self.class.create_weakref(object)
12   end
14   def inspect
15     "#<WeakRef:0x#{object_id.to_s(16)} object=#{@wr.at(0).inspect}>"
16   end
17   
18   def weakref_alive?
19     !@wr.at(0).nil?
20   end
21   
22   def object
23     obj = @wr.at(0)
24     raise RefError, "Object has been collected as garbage" unless obj
25     return obj
26   end
27   
28 end