From d776342a8e51667b9655bf99c7b8209bc6f19b0f Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Thu, 6 Feb 2025 09:07:01 -0600 Subject: [PATCH 1/7] Ref ptr fix --- src/Tracing.jl | 23 ++++++++++++++++++++--- test/tracing.jl | 5 +++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index 207968d186..b5e9c16b98 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -366,14 +366,31 @@ end for P in (Ptr, Core.LLVMPtr, Base.RefValue) @eval Base.@nospecializeinfer function traced_type_inner( - @nospecialize(PT::Type{<:$P}), + @nospecialize(PT::Type{$P}), seen, mode::TraceMode, @nospecialize(track_numbers::Type) ) - T = eltype(PT) - return $P{traced_type_inner(T, seen, mode, track_numbers)} + return $P end + @eval Base.@nospecializeinfer function traced_type_inner( + @nospecialize(PT::Type{$P{T}}), + seen, + mode::TraceMode, + @nospecialize(track_numbers::Type) + ) where T + return $P{traced_type_inner(PT.parameters[1], seen, mode, track_numbers)} + end +end + +@eval Base.@nospecializeinfer function traced_type_inner( + @nospecialize(PT::Type{Core.LLVMPtr{T, A}}) + seen, + mode::TraceMode, + @nospecialize(track_numbers::Type) +) where {T, A} + return Core.LLVMPtr{traced_type_inner(PT.parameters[1], seen, mode, track_numbers), A} +} end Base.@nospecializeinfer function traced_type_inner( diff --git a/test/tracing.jl b/test/tracing.jl index 4953a30239..80c60734e9 100644 --- a/test/tracing.jl +++ b/test/tracing.jl @@ -165,6 +165,11 @@ end NTuple{nsteps,SpectralVariable3D} where {nsteps,SpectralVariable3D}, NTuple{nsteps,SpectralVariable3D} where {nsteps,SpectralVariable3D}, ), + ( + Base.RefValue{A} where A, + Base.RefValue{A} where A, + Base.RefValue{A} where A, + ), (Wrapper{Symbol,Symbol}, Wrapper{Symbol,Symbol}, Wrapper{Symbol,Symbol}), ( Wrapper{Float64,Vector{Float64}}, From 650f6a4a8a883dbe1b1a8106fde1e3c43a1c7a35 Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Thu, 6 Feb 2025 09:20:37 -0600 Subject: [PATCH 2/7] remove eval --- src/Tracing.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index b5e9c16b98..ad32a156bd 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -383,7 +383,7 @@ for P in (Ptr, Core.LLVMPtr, Base.RefValue) end end -@eval Base.@nospecializeinfer function traced_type_inner( +Base.@nospecializeinfer function traced_type_inner( @nospecialize(PT::Type{Core.LLVMPtr{T, A}}) seen, mode::TraceMode, From 9b9e6c370494e6a54b8c1553d5e01c57808f8b51 Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Thu, 6 Feb 2025 09:25:36 -0600 Subject: [PATCH 3/7] Fix comma --- src/Tracing.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index ad32a156bd..5ca3302338 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -384,7 +384,7 @@ for P in (Ptr, Core.LLVMPtr, Base.RefValue) end Base.@nospecializeinfer function traced_type_inner( - @nospecialize(PT::Type{Core.LLVMPtr{T, A}}) + @nospecialize(PT::Type{Core.LLVMPtr{T, A}}), seen, mode::TraceMode, @nospecialize(track_numbers::Type) From bd6570879cea6cd1ad4b6abda1984c7df3f8d783 Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Thu, 6 Feb 2025 09:56:01 -0600 Subject: [PATCH 4/7] syntax fix --- src/Tracing.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index 5ca3302338..88fbb9bd75 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -390,7 +390,6 @@ Base.@nospecializeinfer function traced_type_inner( @nospecialize(track_numbers::Type) ) where {T, A} return Core.LLVMPtr{traced_type_inner(PT.parameters[1], seen, mode, track_numbers), A} -} end Base.@nospecializeinfer function traced_type_inner( From c68f4f73ca0ebf83790498697f118a23bbb50f34 Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Thu, 6 Feb 2025 10:06:00 -0600 Subject: [PATCH 5/7] fix --- src/Tracing.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index 88fbb9bd75..035ea005fe 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -379,7 +379,7 @@ for P in (Ptr, Core.LLVMPtr, Base.RefValue) mode::TraceMode, @nospecialize(track_numbers::Type) ) where T - return $P{traced_type_inner(PT.parameters[1], seen, mode, track_numbers)} + return $P{traced_type_inner(PT.body.parameters[1], seen, mode, track_numbers)} end end From 9acb7e1d4a0e4d60c9d516defd78ddd4b9f8641c Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Thu, 6 Feb 2025 10:45:34 -0600 Subject: [PATCH 6/7] fix --- src/Tracing.jl | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index 035ea005fe..61f7a7ab76 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -373,16 +373,26 @@ for P in (Ptr, Core.LLVMPtr, Base.RefValue) ) return $P end +end +for P in (Ptr, Base.RefValue) @eval Base.@nospecializeinfer function traced_type_inner( @nospecialize(PT::Type{$P{T}}), seen, mode::TraceMode, @nospecialize(track_numbers::Type) ) where T - return $P{traced_type_inner(PT.body.parameters[1], seen, mode, track_numbers)} + return $P{traced_type_inner(PT.parameters[1], seen, mode, track_numbers)} end end +Base.@nospecializeinfer function traced_type_inner( + @nospecialize(PT::Type{Core.LLVMPtr{T}}), + seen, + mode::TraceMode, + @nospecialize(track_numbers::Type) +) where T + return Core.LLVMPtr{traced_type_inner(PT.body.parameters[1], seen, mode, track_numbers)} +end Base.@nospecializeinfer function traced_type_inner( @nospecialize(PT::Type{Core.LLVMPtr{T, A}}), seen, From d6fd0d6710c44164e7dc87d2fccfaffd4d85375f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mos=C3=A8=20Giordano?= <765740+giordano@users.noreply.github.com> Date: Thu, 6 Feb 2025 17:04:17 +0000 Subject: [PATCH 7/7] Apply formatting suggestions from code review Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- src/Tracing.jl | 10 +++++----- test/tracing.jl | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Tracing.jl b/src/Tracing.jl index 61f7a7ab76..ee024d95a1 100644 --- a/src/Tracing.jl +++ b/src/Tracing.jl @@ -380,7 +380,7 @@ for P in (Ptr, Base.RefValue) seen, mode::TraceMode, @nospecialize(track_numbers::Type) - ) where T + ) where {T} return $P{traced_type_inner(PT.parameters[1], seen, mode, track_numbers)} end end @@ -390,16 +390,16 @@ Base.@nospecializeinfer function traced_type_inner( seen, mode::TraceMode, @nospecialize(track_numbers::Type) -) where T +) where {T} return Core.LLVMPtr{traced_type_inner(PT.body.parameters[1], seen, mode, track_numbers)} end Base.@nospecializeinfer function traced_type_inner( - @nospecialize(PT::Type{Core.LLVMPtr{T, A}}), + @nospecialize(PT::Type{Core.LLVMPtr{T,A}}), seen, mode::TraceMode, @nospecialize(track_numbers::Type) -) where {T, A} - return Core.LLVMPtr{traced_type_inner(PT.parameters[1], seen, mode, track_numbers), A} +) where {T,A} + return Core.LLVMPtr{traced_type_inner(PT.parameters[1], seen, mode, track_numbers),A} end Base.@nospecializeinfer function traced_type_inner( diff --git a/test/tracing.jl b/test/tracing.jl index 80c60734e9..a6e14c816e 100644 --- a/test/tracing.jl +++ b/test/tracing.jl @@ -166,9 +166,9 @@ end NTuple{nsteps,SpectralVariable3D} where {nsteps,SpectralVariable3D}, ), ( - Base.RefValue{A} where A, - Base.RefValue{A} where A, - Base.RefValue{A} where A, + Base.RefValue{A} where {A}, + Base.RefValue{A} where {A}, + Base.RefValue{A} where {A}, ), (Wrapper{Symbol,Symbol}, Wrapper{Symbol,Symbol}, Wrapper{Symbol,Symbol}), (