@@ -24,17 +24,17 @@ function signature(sigsv::SimpleVector)
24
24
end
25
25
26
26
"""
27
- sigt, lastpc = signature([interp::Interpreter=RecursiveInterpreter()], frame::Frame, pc::Int)
27
+ (mt, sigt) , lastpc = signature([interp::Interpreter=RecursiveInterpreter()], frame::Frame, pc::Int)
28
28
29
- Compute the signature-type `sigt` of a method whose definition in `frame` starts at `pc`.
29
+ Compute the method table `mt` and signature-type `sigt` of a method whose definition in `frame` starts at `pc`.
30
30
Generally, `pc` should point to the `Expr(:method, methname)` statement, in which case
31
31
`lastpc` is the final statement number in `frame` that is part of the signature
32
32
(i.e, the line above the 3-argument `:method` expression).
33
33
Alternatively, `pc` can point to the 3-argument `:method` expression,
34
34
as long as all the relevant SSAValues have been assigned.
35
35
In this case, `lastpc == pc`.
36
36
37
- If no 3-argument `:method` expression is found, `sigt ` will be `nothing `.
37
+ If no 3-argument `:method` expression is found, `nothing ` will be returned in place of `(mt, sigt) `.
38
38
"""
39
39
function signature (interp:: Interpreter , frame:: Frame , @nospecialize (stmt), pc:: Int )
40
40
mod = moduleof (frame)
@@ -620,9 +620,9 @@ function methoddef!(interp::Interpreter, signatures::Vector{MethodInfoKey}, fram
620
620
stmt = pc_expr (frame, pc) # there *should* be more statements in this frame
621
621
end
622
622
end
623
- methoddef! (interp:: Interpreter , signatures, frame:: Frame , pc:: Int ; define:: Bool = true ) =
623
+ methoddef! (interp:: Interpreter , signatures:: Vector{MethodInfoKey} , frame:: Frame , pc:: Int ; define:: Bool = true ) =
624
624
methoddef! (interp, signatures, frame, pc_expr (frame, pc), pc; define)
625
- function methoddef! (interp:: Interpreter , signatures, frame:: Frame ; define:: Bool = true )
625
+ function methoddef! (interp:: Interpreter , signatures:: Vector{MethodInfoKey} , frame:: Frame ; define:: Bool = true )
626
626
pc = frame. pc
627
627
stmt = pc_expr (frame, pc)
628
628
if ! ismethod (stmt)
@@ -631,27 +631,27 @@ function methoddef!(interp::Interpreter, signatures, frame::Frame; define::Bool=
631
631
pc === nothing && error (" pc at end of frame without finding a method" )
632
632
methoddef! (interp, signatures, frame, pc; define)
633
633
end
634
- methoddef! (signatures, frame:: Frame , pc:: Int ; define:: Bool = true ) =
634
+ methoddef! (signatures:: Vector{MethodInfoKey} , frame:: Frame , pc:: Int ; define:: Bool = true ) =
635
635
methoddef! (RecursiveInterpreter (), signatures, frame, pc_expr (frame, pc), pc; define)
636
- methoddef! (signatures, frame:: Frame ; define:: Bool = true ) =
636
+ methoddef! (signatures:: Vector{MethodInfoKey} , frame:: Frame ; define:: Bool = true ) =
637
637
methoddef! (RecursiveInterpreter (), signatures, frame; define)
638
638
639
- function methoddefs! (interp:: Interpreter , signatures, frame:: Frame , pc:: Int ; define:: Bool = true )
639
+ function methoddefs! (interp:: Interpreter , signatures:: Vector{MethodInfoKey} , frame:: Frame , pc:: Int ; define:: Bool = true )
640
640
ret = methoddef! (interp, signatures, frame, pc; define)
641
641
pc = ret === nothing ? ret : ret[1 ]
642
642
return _methoddefs! (interp, signatures, frame, pc; define)
643
643
end
644
- function methoddefs! (interp:: Interpreter , signatures, frame:: Frame ; define:: Bool = true )
644
+ function methoddefs! (interp:: Interpreter , signatures:: Vector{MethodInfoKey} , frame:: Frame ; define:: Bool = true )
645
645
ret = methoddef! (interp, signatures, frame; define)
646
646
pc = ret === nothing ? ret : ret[1 ]
647
647
return _methoddefs! (interp, signatures, frame, pc; define)
648
648
end
649
- methoddefs! (signatures, frame:: Frame , pc:: Int ; define:: Bool = true ) =
649
+ methoddefs! (signatures:: Vector{MethodInfoKey} , frame:: Frame , pc:: Int ; define:: Bool = true ) =
650
650
methoddefs! (RecursiveInterpreter (), signatures, frame, pc; define)
651
- methoddefs! (signatures, frame:: Frame ; define:: Bool = true ) =
651
+ methoddefs! (signatures:: Vector{MethodInfoKey} , frame:: Frame ; define:: Bool = true ) =
652
652
methoddefs! (RecursiveInterpreter (), signatures, frame; define)
653
653
654
- function _methoddefs! (interp:: Interpreter , signatures, frame:: Frame , pc:: Int ; define:: Bool = define)
654
+ function _methoddefs! (interp:: Interpreter , signatures:: Vector{MethodInfoKey} , frame:: Frame , pc:: Int ; define:: Bool = define)
655
655
while pc != = nothing
656
656
stmt = pc_expr (frame, pc)
657
657
if ! ismethod (stmt)
0 commit comments