Skip to content

Commit 80581f0

Browse files
committed
Use MethodInfoKey from CodeTracking
1 parent 4d713f1 commit 80581f0

File tree

4 files changed

+10
-7
lines changed

4 files changed

+10
-7
lines changed

src/LoweredCodeUtils.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ module LoweredCodeUtils
99
# This somewhat unusual structure is in place to support
1010
# the VS Code extension integration.
1111

12+
using CodeTracking: MethodInfoKey
13+
1214
using JuliaInterpreter
1315
using JuliaInterpreter: SSAValue, SlotNumber, Frame
1416
using JuliaInterpreter: @lookup, moduleof, pc_expr, step_expr!, is_global_ref, is_global_ref_egal, is_quotenode_egal, whichtt,

src/packagedef.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Base.Experimental.@optlevel 1
22

3-
using Core: SimpleVector, MethodTable
3+
using Core: SimpleVector
44
using Core.IR: CodeInfo, GotoIfNot, GotoNode, IR, MethodInstance, ReturnNode
55
@static if isdefined(Core.IR, :EnterNode)
66
using Core.IR: EnterNode

src/signatures.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ function signature(@nospecialize(recurse), frame::Frame, @nospecialize(stmt), pc
5656
mt = extract_method_table(frame, stmt; eval = false)
5757
sigsv = @lookup(frame, stmt.args[2])::SimpleVector
5858
sigt = signature(sigsv)
59-
return Pair{Union{Nothing,MethodTable},Any}(mt, sigt), lastpc
59+
return MethodInfoKey(mt, sigt), lastpc
6060
end
6161
signature(@nospecialize(recurse), frame::Frame, pc) = signature(recurse, frame, pc_expr(frame, pc), pc)
6262
signature(frame::Frame, pc) = signature(finish_and_return!, frame, pc)
@@ -534,7 +534,7 @@ occurs for "empty method" expressions, e.g., `:(function foo end)`. `pc` will be
534534
By default the method will be defined (evaluated). You can prevent this by setting `define=false`.
535535
This is recommended if you are simply extracting signatures from code that has already been evaluated.
536536
"""
537-
function methoddef!(@nospecialize(recurse), signatures::Vector{Pair{Union{Nothing,MethodTable},Any}}, frame::Frame, @nospecialize(stmt), pc::Int; define::Bool=true)
537+
function methoddef!(@nospecialize(recurse), signatures::Vector{MethodInfoKey}, frame::Frame, @nospecialize(stmt), pc::Int; define::Bool=true)
538538
framecode, pcin = frame.framecode, pc
539539
if ismethod3(stmt)
540540
pc3 = pc

test/signatures.jl

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Signatures
22

33
using LoweredCodeUtils
44
using InteractiveUtils
5+
using CodeTracking: MethodInfoKey
56
using JuliaInterpreter
67
using JuliaInterpreter: finish_and_return!
78
using Core: CodeInfo
@@ -34,7 +35,7 @@ bodymethtest4(x, y=1) = 4
3435
bodymethtest5(x, y=Dict(1=>2)) = 5
3536

3637
@testset "Signatures" begin
37-
signatures = Set{Any}()
38+
signatures = MethodInfoKey[]
3839
newcode = CodeInfo[]
3940
for ex in (:(f(x::Int8; y=0) = y),
4041
:(f(x::Int16; y::Int=0) = 2),
@@ -139,7 +140,7 @@ bodymethtest5(x, y=Dict(1=>2)) = 5
139140
@test g(3) == 6
140141

141142
# Don't be deceived by inner methods
142-
signatures = []
143+
signatures = MethodInfoKey[]
143144
ex = quote
144145
function fouter(x)
145146
finner(::Float16) = 2x
@@ -168,7 +169,7 @@ bodymethtest5(x, y=Dict(1=>2)) = 5
168169
ex = :(max_values(T::Union{map(X -> Type{X}, Base.BitIntegerSmall_types)...}) = 1 << (8*sizeof(T))) # base/abstractset.jl
169170
frame = Frame(Base, ex)
170171
rename_framemethods!(frame)
171-
signatures = Set{Any}()
172+
signatures = MethodInfoKey[]
172173
methoddef!(signatures, frame; define=false)
173174
@test length(signatures) == 1
174175
mt, sig = first(signatures)
@@ -507,7 +508,7 @@ end
507508
@testset "Support for external method tables" begin
508509
ExternalMT = Module()
509510
Core.eval(ExternalMT, :(Base.Experimental.@MethodTable method_table))
510-
signatures = []
511+
signatures = MethodInfoKey[]
511512

512513
ex = :(Base.sin(::Float64) = "sin")
513514
Core.eval(ExternalMT, ex)

0 commit comments

Comments
 (0)