Re-implement `Array#_inspect` and `Hash#_inspect` without blocks.
To reduce the env object allocation; ref
MODIFY
mrblib/array.rb
mrblib/array.rb
@@ -84,8 +84,15 @@ class Array
end
def _inspect
- return "[]" if self.size == 0
- "["+self.map{|x|x.inspect}.join(", ")+"]"
+ size = self.size
+ return "[]" if size == 0
+ ary=[]
+ i=0
+ while i<size
+ ary<<self[i].inspect
+ i+=1
+ end
+ "["+ary.join(", ")+"]"
end
##
# Return the contents of this array as a string.

MODIFY
mrblib/hash.rb
mrblib/hash.rb
@@ -194,9 +194,16 @@ class Hash
# internal method for Hash inspection
def _inspect
return "{}" if self.size == 0
- "{"+self.map {|k,v|
- k._inspect + "=>" + v._inspect
- }.join(", ")+"}"
+ ary=[]
+ keys=self.keys
+ size=keys.size
+ i=0
+ while i<size
+ k=keys[i]
+ ary<<(k._inspect + "=>" + self[k]._inspect)
+ i+=1
+ end
+ "{"+ary.join(", ")+"}"
end
##
# Return the contents of this hash as a string.

Re-implement `Array#_inspect` and `Hash#_inspect` without blocks.

To reduce the env object allocation; ref #4143