I noticed that deepcopy of a vector doesn't know that the result is the 
same type.  Regular copy does, see below.  Is this intentional or a bug? 



In [24]:

v=rand(5)

@code_typed deepcopy(v)

Out[24]:

1-element Array{Any,1}:
 :($(Expr(:lambda, {:x}, 
{{:_var2,:_var3},{{:x,Array{Float64,1},0},{:_var2,(Int64,),0},{:_var3,Array{Any,1},18}},{}},
 :(begin  # deepcopy.jl, line 6:
        _var3 = top(ccall)(:jl_alloc_array_1d,$(Expr(:call1, 
:(top(apply_type)), :Array, Any, 1))::Type{Array{Any,1}},$(Expr(:call1, 
:(top(tuple)), :Any, 
:Int))::(Type{Any},Type{Int64}),Array{Any,1},0,32,0)::Array{Any,1}
        return deepcopy_internal(x::Array{Float64,1},$(Expr(:new, 
:(top(getfield)(Base,:ObjectIdDict)::Type{ObjectIdDict}), 
:(_var3::Array{Any,1})))::ObjectIdDict)
    end))))

In [25]:

@code_typed copy(v)

Out[25]:

1-element Array{Any,1}:
 :($(Expr(:lambda, {:a}, 
{{:_var1,:_var0},{{:a,Array{Float64,1},0},{:_var1,Int64,18},{:_var0,Array{Float64,1},18}},{}},
 :(begin  # abstractarray.jl, line 202:
        _var1 = arraysize(a::Array{Float64,1},1)::Int64
        _var0 = top(ccall)(:jl_alloc_array_1d,$(Expr(:call1, 
:(top(apply_type)), :Array, Float64, 1))::Type{Array{Float64,1}},$(Expr(:call1, 
:(top(tuple)), :Any, 
:Int))::(Type{Any},Type{Int64}),Array{Float64,1},0,_var1::Int64,0)::Array{Float64,1}
        return 
copy!(_var0::Array{Float64,1},1,a::Array{Float64,1},1,arraylen(a::Array{Float64,1})::Int64)::Array{Float64,1}
    end::Array{Float64,1}))))

Reply via email to