Skip to content

Converting StaticInt to a different type causes invalidations #52

Open
@DhairyaLGandhi

Description

(::Type{T})(x::StaticInt{N}) where {T<:Integer,N} = T(N)

This definition causes conversion of the types of (::Type{T})(::Integer) to be invalidated because StaticInt <: Integer. Since Flux uses ArrayInterface, it pulls in Static and shows up the invalidations.

List of invalidations as seen in a session with Flux, but most of the methods seem be in Compiler, Base and StdLibs

inserting (::Type{T})(x::Static.StaticInt{N}) where {T<:Integer, N} in Static at /home/dhairyalgandhi/.julia/packages/Static/pkxBE
/src/int.jl:26 invalidated:
   mt_backedges:  1: signature Tuple{Type{UInt64}, Integer} triggered MethodInstance for convert(::Type{UInt64}, ::Integer) (0 chi
ldren)
                  2: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for resize!(::BitVector, ::Integer) (0 childre
n)
                  3: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for findnext(::Pkg.Types.var"#23#24"{String},
::AbstractString, ::Integer) (0 children)
                  4: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for convert(::Type{Int64}, ::Integer) (0 children)
                  5: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for findprev(::InteractiveUtils.var"#34#39", ::AbstractString, ::Integer) (0 children)
                  6: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for insert!(::BitVector, ::Integer, ::Any) (0 children)
                  7: signature Tuple{Type{Int32}, Integer} triggered MethodInstance for Revise.revise_dir_queued(::String) (0 children)
                  8: signature Tuple{Type{Int32}, Integer} triggered MethodInstance for Core.Compiler.add_remark!(::GPUCompiler.GPUInterpreter, ::Core.Compiler.InferenceState, ::String) (0 children)
                  9: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for GPUCompiler.ci_cache_populate(::GPUCompiler.GPUInterpreter, ::GPUCompiler.CodeCache, ::Core.MethodTable, ::Core.MethodInstance, ::Any, ::Int32) (0 children)
                 10: signature Tuple{Type{UInt64}, Integer} triggered MethodInstance for CUDA.decode(::Vector{CUDA.CUjit_option_enum}, ::Vector{Ptr{Nothing}}) (0 children)
                 11: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for CUDA.decode(::Vector{CUDA.CUjit_option_enum}, ::Vector{Ptr{Nothing}}) (0 children)
                 12: signature Tuple{Type{UInt32}, Integer} triggered MethodInstance for VersionNumber(::Integer, ::Int64, ::Int64, ::Tuple{}, ::Tuple{}) (1 children)
                 13: signature Tuple{Type{Int32}, Integer} triggered MethodInstance for Int32(::Enum) (1 children)
                 14: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for nextind(::AbstractVector, ::Integer) (1 children)
                 15: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for Int64(::Enum) (1 children)
                 16: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for TimerOutputs.rpad(::String, ::Integer, ::C
har) (2 children)
                 17: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for TimerOutputs.rpad(::String, ::Integer, ::S
tring) (3 children)
                 18: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for LoweredCodeUtils.find_typedefs(::Core.Code
Info) (23 children)
                 19: signature Tuple{Type{Int64}, Integer} triggered MethodInstance for Base.to_shape(::Integer) (34 children)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions