Handbook
Glossary
##alien-indirect
Basic block instructions
Prev:
##alien-assembly
Next:
##alien-invoke
Vocabulary
compiler
.
cfg
.
instructions
Class description
An instruction representing an indirect alien call. The first item on the datastack is a pointer to the function to call and the parameters follows. It has the following slots:
src
Spill slot containing the function pointer.
reg-outputs
Sequence of output values passed in registers.
See also
alien-indirect
,
%alien-indirect
Definition
IN:
compiler.cfg.instructions
TUPLE:
##alien-indirect
<
vreg-insn
src varargs? reg-inputs stack-inputs reg-outputs
dead-outputs cleanup stack-size gc-map insn#
;
Methods
USING:
accessors
compiler.cfg.gvn.avail
compiler.cfg.instructions
generic
kernel
;
M:
##alien-indirect
>avail-insn-uses
[
dup
>avail-vreg
or*
]
change-src
M\
##alien-indirect
>avail-insn-uses
(call-next-method)
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.linear-scan.assignment
generic
;
M:
##alien-indirect
assign-insn-uses
[
vreg>reg
]
change-src
M\
##alien-indirect
assign-insn-uses
(call-next-method)
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.representations.rewrite
generic
;
M:
##alien-indirect
convert-insn-uses
[
converted-value
]
change-src
M\
##alien-indirect
convert-insn-uses
(call-next-method)
;
USING:
accessors
compiler.cfg.instructions
compiler.codegen
cpu.architecture
kernel
;
M:
##alien-indirect
generate-insn
[
src>>
]
keep
[
varargs?>>
]
keep
[
reg-inputs>>
]
keep
[
stack-inputs>>
]
keep
[
reg-outputs>>
]
keep
[
dead-outputs>>
]
keep
[
cleanup>>
]
keep
[
stack-size>>
]
keep
[
gc-map>>
]
keep
drop
%alien-indirect
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.renaming
generic
;
M:
##alien-indirect
rename-insn-uses
[
rename-value
]
change-src
M\
##alien-indirect
rename-insn-uses
(call-next-method)
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.ssa.construction.private
generic
;
M:
##alien-indirect
ssa-rename-insn-uses
[
top-name
]
change-src
M\
##alien-indirect
ssa-rename-insn-uses
(call-next-method)
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.preferred
cpu.architecture
generic
sequences
;
M:
##alien-indirect
uses-vreg-reps
M\
##alien-indirect
uses-vreg-reps
(call-next-method)
int-rep
prefix
;
USING:
accessors
compiler.cfg.def-use
compiler.cfg.instructions
generic
kernel
sequences
;
M:
##alien-indirect
uses-vregs
[
M\
##alien-indirect
uses-vregs
(call-next-method)
]
[
src>>
]
bi
prefix
;