Handbook
Glossary
##load-reference
Basic block instructions
Prev:
##load-integer
Next:
##load-tagged
Vocabulary
compiler
.
cfg
.
instructions
Class description
An instruction for loading a pointer to an object into a register. It has the following slots:
dst
Register to load the pointer into.
obj
A Factor object.
Definition
IN:
compiler.cfg.instructions
TUPLE:
##load-reference
<
foldable-insn
dst obj insn#
;
Methods
USING:
accessors
byte-arrays
combinators
compiler.cfg.instructions
compiler.cfg.representations.selection
cpu.architecture
kernel
math
;
M:
##load-reference
(collect-vreg-reps)
[
dst>>
]
[
obj>>
]
bi
{
{
[
dup
float?
]
[
drop
{
float-rep
double-rep
}
]
}
{
[
dup
byte-array?
]
[
drop
vector-reps
]
}
[
drop
{
}
]
}
cond
handle-def
;
USING:
accessors
compiler.cfg.gvn.avail
compiler.cfg.instructions
kernel
;
M:
##load-reference
>avail-insn-defs
[
]
change-dst
drop
;
USING:
accessors
compiler.cfg.gvn.expressions
compiler.cfg.instructions
;
M:
##load-reference
>expr
obj>>
<reference-expr>
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.value-numbering.expressions
;
M:
##load-reference
>expr
obj>>
<reference-expr>
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.linear-scan.assignment
kernel
;
M:
##load-reference
assign-insn-defs
[
vreg>reg
]
change-dst
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.representations.rewrite
kernel
;
M:
##load-reference
convert-insn-defs
[
converted-value
]
change-dst
drop
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.preferred
cpu.architecture
kernel
;
M:
##load-reference
defs-vreg-reps
drop
{
tagged-rep
}
;
USING:
accessors
arrays
compiler.cfg.def-use
compiler.cfg.instructions
;
M:
##load-reference
defs-vregs
dst>>
1array
;
USING:
accessors
compiler.cfg.instructions
compiler.codegen
cpu.architecture
kernel
;
M:
##load-reference
generate-insn
[
dst>>
]
keep
[
obj>>
]
keep
drop
%load-reference
;
USING:
accessors
compiler.cfg.gvn.rewrite
compiler.cfg.instructions
;
M:
##load-reference
insn>literal
obj>>
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.value-numbering.rewrite
;
M:
##load-reference
insn>literal
obj>>
;
USING:
accessors
combinators
compiler.cfg.instructions
compiler.cfg.registers
compiler.cfg.representations.peephole
generic
kernel
;
M:
##load-reference
optimize-insn
{
{
[
dup
convert-to-load-float?
]
[
[
dst>>
]
[
obj>>
]
bi
##load-float,
here
]
}
{
[
dup
convert-to-load-double?
]
[
[
dst>>
]
[
obj>>
]
bi
##load-double,
here
]
}
{
[
dup
convert-to-zero-vector?
]
[
dst>>
dup
rep-of
##zero-vector,
here
]
}
{
[
dup
convert-to-fill-vector?
]
[
dst>>
dup
rep-of
##fill-vector,
here
]
}
{
[
dup
convert-to-load-vector?
]
[
[
dst>>
]
[
obj>>
]
[
dst>>
rep-of
]
tri
##load-vector,
here
]
}
[
M\
##load-reference
optimize-insn
(call-next-method)
]
}
cond
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.renaming
kernel
;
M:
##load-reference
rename-insn-defs
[
rename-value
]
change-dst
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.ssa.construction.private
kernel
;
M:
##load-reference
ssa-rename-insn-defs
[
gen-name
]
change-dst
drop
;