Wrap text
diff --git a/kernel/bootstrap/array.rb b/kernel/bootstrap/array.rb
index 5c1ce06..530235d 100644
--- a/kernel/bootstrap/array.rb
+++ b/kernel/bootstrap/array.rb
@@ -1,4 +1,8 @@
class Array
+ def self.__allocate__
+ Ruby.primitive :allocate
+ raise PrimitiveFailure, "Array.allocate failed"
+ end
def size
@total
diff --git a/kernel/core/array.rb b/kernel/core/array.rb
index d89b6c1..fa4283d 100644
--- a/kernel/core/array.rb
+++ b/kernel/core/array.rb
@@ -30,27 +30,19 @@ class Array
def self.[](*args)
new args
end
-
- def self.new(*args, &block)
- raise ArgumentError, "Wrong number of arguments, #{args.size} for 2" if args.size > 2
-
- ary = allocate
- ary.__send__ :setup
- ary.__send__ :initialize, *args, &block
- ary
- end
# At present, @tuple.kind_of?(Tuple) is essentially an invariant for Array.
# If we relax this and ensure that every method behaves correctly if
# @tuple == nil, then we can omit initializing @tuple here. We cannot
# easily know whether #initialize is defined in a subclass when this
# method is called.
- def setup
- @start = 0
- @total = 0
- @tuple = Tuple.new 8
+ def self.allocate
+ ary = __allocate__
+ ary.start = 0
+ ary.total = 0
+ ary.tuple = Tuple.new 8
+ ary
end
- private :setup