Handbook
Glossary
##unbox-any-c-ptr
Basic block instructions
Prev:
##unbox-alien
Next:
##unbox-long-long
Vocabulary
compiler
.
cfg
.
instructions
Class description
Instruction that unboxes a pointer in a register so that it can be fed to a C FFI function. For example, if 'src' points to a
byte-array
, then in 'dst' will be put a pointer to the first byte of that byte array.
dst
Destination register.
src
Source register.
See also
%unbox-any-c-ptr
Definition
IN:
compiler.cfg.instructions
TUPLE:
##unbox-any-c-ptr
<
foldable-insn
dst src insn#
;
Methods
USING:
accessors
compiler.cfg.gvn.avail
compiler.cfg.instructions
kernel
;
M:
##unbox-any-c-ptr
>avail-insn-defs
[
]
change-dst
drop
;
USING:
accessors
compiler.cfg.gvn.avail
compiler.cfg.instructions
kernel
;
M:
##unbox-any-c-ptr
>avail-insn-uses
[
dup
>avail-vreg
or*
]
change-src
drop
;
USING:
accessors
arrays
compiler.cfg.gvn.expressions
compiler.cfg.gvn.graph
compiler.cfg.instructions
kernel
sequences.private
;
M:
##unbox-any-c-ptr
>expr
\
##unbox-any-c-ptr
swap
[
src>>
vreg>vn
]
keep
drop
2
f
<array>
1
swap
[
set-array-nth
]
keep
0
swap
[
set-array-nth
]
keep
;
USING:
accessors
arrays
compiler.cfg.instructions
compiler.cfg.value-numbering.expressions
compiler.cfg.value-numbering.graph
kernel
sequences.private
;
M:
##unbox-any-c-ptr
>expr
\
##unbox-any-c-ptr
swap
[
src>>
vreg>vn
]
keep
drop
2
f
<array>
1
swap
[
set-array-nth
]
keep
0
swap
[
set-array-nth
]
keep
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.linear-scan.assignment
kernel
;
M:
##unbox-any-c-ptr
assign-insn-defs
[
vreg>reg
]
change-dst
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.linear-scan.assignment
kernel
;
M:
##unbox-any-c-ptr
assign-insn-uses
[
vreg>reg
]
change-src
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.representations.rewrite
kernel
;
M:
##unbox-any-c-ptr
convert-insn-defs
[
converted-value
]
change-dst
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.representations.rewrite
kernel
;
M:
##unbox-any-c-ptr
convert-insn-uses
[
converted-value
]
change-src
drop
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.preferred
cpu.architecture
kernel
;
M:
##unbox-any-c-ptr
defs-vreg-reps
drop
{
int-rep
}
;
USING:
accessors
arrays
compiler.cfg.def-use
compiler.cfg.instructions
;
M:
##unbox-any-c-ptr
defs-vregs
dst>>
1array
;
USING:
accessors
compiler.cfg.instructions
compiler.codegen
cpu.architecture
kernel
;
M:
##unbox-any-c-ptr
generate-insn
[
dst>>
]
keep
[
src>>
]
keep
drop
%unbox-any-c-ptr
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.liveness
kernel
;
M:
##unbox-any-c-ptr
lookup-base-pointer*
nip
src>>
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.renaming
kernel
;
M:
##unbox-any-c-ptr
rename-insn-defs
[
rename-value
]
change-dst
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.renaming
kernel
;
M:
##unbox-any-c-ptr
rename-insn-uses
[
rename-value
]
change-src
drop
;
USING:
compiler.cfg.gvn.alien
compiler.cfg.gvn.rewrite
compiler.cfg.instructions
;
M:
##unbox-any-c-ptr
rewrite
rewrite-unbox-any-c-ptr
;
USING:
compiler.cfg.instructions
compiler.cfg.value-numbering.alien
compiler.cfg.value-numbering.rewrite
;
M:
##unbox-any-c-ptr
rewrite
rewrite-unbox-any-c-ptr
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.ssa.construction.private
kernel
;
M:
##unbox-any-c-ptr
ssa-rename-insn-defs
[
gen-name
]
change-dst
drop
;
USING:
accessors
compiler.cfg.instructions
compiler.cfg.ssa.construction.private
kernel
;
M:
##unbox-any-c-ptr
ssa-rename-insn-uses
[
top-name
]
change-src
drop
;
USING:
compiler.cfg.instructions
compiler.cfg.representations.preferred
cpu.architecture
kernel
;
M:
##unbox-any-c-ptr
uses-vreg-reps
drop
{
tagged-rep
}
;
USING:
accessors
arrays
compiler.cfg.def-use
compiler.cfg.instructions
;
M:
##unbox-any-c-ptr
uses-vregs
src>>
1array
;