slightly reorder VarSet#deep_dup to optimize - #92

This commit is contained in:
Josh Holtrop 2019-05-08 23:16:22 -04:00
parent fa14102ba5
commit a4dec210ae

View File

@ -194,16 +194,16 @@ module Rscons
# #
# @return [Object] Deep copied value. # @return [Object] Deep copied value.
def deep_dup(obj) def deep_dup(obj)
obj_class = obj.class case obj
if obj_class == Hash when String
obj.dup
when Array
obj.map { |v| deep_dup(v) }
when Hash
obj.reduce({}) do |result, (k, v)| obj.reduce({}) do |result, (k, v)|
result[k] = deep_dup(v) result[k] = deep_dup(v)
result result
end end
elsif obj_class == Array
obj.map { |v| deep_dup(v) }
elsif obj_class == String
obj.dup
else else
obj obj
end end