pub enum Callee {
Named(Symbol),
Through(Reg),
}Expand description
What a call goes to.
The whole of the difference between the two calls. Everything else about them, which is what they pass and what comes back and which registers they destroy, is the signature’s answer and is the same answer either way.
Variants§
Named(Symbol)
A name, which the linker resolves.
Through(Reg)
An address in a register, which nothing resolves because there is nothing to resolve: the value is not known until the program runs.
The register is unconstrained, and it has to be, because every register the convention does not preserve is one this instruction writes and every register an argument travels in is spoken for. What is left is the registers the callee has to put back, which is where the allocator will put the address, and it is the right answer for the same reason it is the only one.