finish elimination of list usage from x86 backend
parent
fe991f4aee
commit
895de95355
|
@ -43,7 +43,7 @@ M: %dispatch generate-node ( vop -- )
|
||||||
! Add to jump table base
|
! Add to jump table base
|
||||||
dup HEX: ffff ADD just-compiled >r 0 0 rel-address
|
dup HEX: ffff ADD just-compiled >r 0 0 rel-address
|
||||||
! Jump to jump table entry
|
! Jump to jump table entry
|
||||||
unit JMP
|
1array JMP
|
||||||
! Align for better performance
|
! Align for better performance
|
||||||
compile-aligned
|
compile-aligned
|
||||||
! Fix up jump table pointer
|
! Fix up jump table pointer
|
||||||
|
|
|
@ -11,7 +11,7 @@ M: %slot generate-node ( vop -- )
|
||||||
! compute slot address in 0 vop-out
|
! compute slot address in 0 vop-out
|
||||||
dupd ADD
|
dupd ADD
|
||||||
! load slot value in 0 vop-out
|
! load slot value in 0 vop-out
|
||||||
dup unit MOV ;
|
dup 1array MOV ;
|
||||||
|
|
||||||
M: %fast-slot generate-node ( vop -- )
|
M: %fast-slot generate-node ( vop -- )
|
||||||
dup 0 vop-in swap 0 vop-out v>operand tuck >r 2array r>
|
dup 0 vop-in swap 0 vop-out v>operand tuck >r 2array r>
|
||||||
|
@ -33,7 +33,7 @@ M: %set-slot generate-node ( vop -- )
|
||||||
! compute slot address in 1 vop-in
|
! compute slot address in 1 vop-in
|
||||||
dupd ADD
|
dupd ADD
|
||||||
! store new slot value
|
! store new slot value
|
||||||
>r 0 vop-in v>operand r> unit swap MOV ;
|
>r 0 vop-in v>operand r> 1array swap MOV ;
|
||||||
|
|
||||||
M: %fast-set-slot generate-node ( vop -- )
|
M: %fast-set-slot generate-node ( vop -- )
|
||||||
dup 2 vop-in over 1 vop-in v>operand
|
dup 2 vop-in over 1 vop-in v>operand
|
||||||
|
@ -44,9 +44,9 @@ M: %fast-set-slot generate-node ( vop -- )
|
||||||
|
|
||||||
M: %getenv generate-node ( vop -- )
|
M: %getenv generate-node ( vop -- )
|
||||||
dup 0 vop-out v>operand swap 0 vop-in
|
dup 0 vop-out v>operand swap 0 vop-in
|
||||||
[ userenv@ unit MOV ] keep 0 rel-userenv ;
|
[ userenv@ 1array MOV ] keep 0 rel-userenv ;
|
||||||
|
|
||||||
M: %setenv generate-node ( vop -- )
|
M: %setenv generate-node ( vop -- )
|
||||||
dup 1 vop-in
|
dup 1 vop-in
|
||||||
[ userenv@ unit swap 0 vop-in v>operand MOV ] keep
|
[ userenv@ 1array swap 0 vop-in v>operand MOV ] keep
|
||||||
0 rel-userenv ;
|
0 rel-userenv ;
|
||||||
|
|
|
@ -27,7 +27,7 @@ M: %immediate generate-node ( vop -- )
|
||||||
dup 0 vop-out v>operand swap 0 vop-in address MOV ;
|
dup 0 vop-out v>operand swap 0 vop-in address MOV ;
|
||||||
|
|
||||||
: load-indirect ( dest literal -- )
|
: load-indirect ( dest literal -- )
|
||||||
add-literal unit MOV 0 0 rel-address ;
|
add-literal 1array MOV 0 0 rel-address ;
|
||||||
|
|
||||||
M: %indirect generate-node ( vop -- )
|
M: %indirect generate-node ( vop -- )
|
||||||
#! indirect load of a literal through a table
|
#! indirect load of a literal through a table
|
||||||
|
|
Loading…
Reference in New Issue