Revert "fixed bug in lib/thread Queue"
[rbx.git] / kernel / bootstrap / array.rb
blob1233d2b6b111a2cd724d97655400312ee8715b07
1 class Array
2   ivar_as_index :total => 0, :tuple => 1, :start => 2, :shared => 3
4   def total    ; @total ; end
5   def tuple    ; @tuple ; end
6   def start    ; @start ; end
7   def __ivars__; nil    ; end
9   def size
10     @total
11   end
13   # THIS MUST NOT BE REMOVED. the kernel requires a simple
14   # Array#[] to work while parts of the kernel boot.
15   def [](idx)    
16     if idx >= @total
17       return nil
18     end
20     @tuple.at(@start + idx)
21   end
23   def []=(idx, ent)
24     if idx >= @tuple.fields
25       nt = Tuple.new(idx + 10)
26       nt.copy_from @tuple, @start, 0
27       @tuple = nt
28     end
30     @tuple.put @start + idx, ent
31     if idx >= @total - 1
32       @total = idx + 1
33     end
34     return ent
35   end
37   # Runtime method to support case when *foo syntax
38   def __matches_when__(receiver)
39     i = @start
40     tot = @total + @start
41     while i < tot
42       return true if @tuple.at(i) === receiver
43       i = i + 1
44     end
45     false
46   end
47 end