fixed vm ptr passing to box_small_struct
parent
888eae9554
commit
1b92721660
|
@ -74,10 +74,22 @@ M: x86.64 %prepare-unbox ( -- )
|
||||||
param-reg-1 R14 [] MOV
|
param-reg-1 R14 [] MOV
|
||||||
R14 cell SUB ;
|
R14 cell SUB ;
|
||||||
|
|
||||||
|
M: x86.64 %vm-invoke-1st-arg ( function -- )
|
||||||
|
param-reg-1 0 MOV rc-absolute-cell rt-vm rel-fixup
|
||||||
|
f %alien-invoke ;
|
||||||
|
|
||||||
: %vm-invoke-2nd-arg ( function -- )
|
: %vm-invoke-2nd-arg ( function -- )
|
||||||
param-reg-2 0 MOV rc-absolute-cell rt-vm rel-fixup
|
param-reg-2 0 MOV rc-absolute-cell rt-vm rel-fixup
|
||||||
f %alien-invoke ;
|
f %alien-invoke ;
|
||||||
|
|
||||||
|
M: x86.64 %vm-invoke-3rd-arg ( function -- )
|
||||||
|
param-reg-3 0 MOV rc-absolute-cell rt-vm rel-fixup
|
||||||
|
f %alien-invoke ;
|
||||||
|
|
||||||
|
: %vm-invoke-4th-arg ( function -- )
|
||||||
|
int-regs param-regs fourth 0 MOV rc-absolute-cell rt-vm rel-fixup
|
||||||
|
f %alien-invoke ;
|
||||||
|
|
||||||
|
|
||||||
M:: x86.64 %unbox ( n rep func -- )
|
M:: x86.64 %unbox ( n rep func -- )
|
||||||
! Call the unboxer
|
! Call the unboxer
|
||||||
|
@ -153,7 +165,7 @@ M: x86.64 %box-small-struct ( c-type -- )
|
||||||
[ param-reg-3 swap heap-size MOV ] bi
|
[ param-reg-3 swap heap-size MOV ] bi
|
||||||
param-reg-1 0 box-struct-field@ MOV
|
param-reg-1 0 box-struct-field@ MOV
|
||||||
param-reg-2 1 box-struct-field@ MOV
|
param-reg-2 1 box-struct-field@ MOV
|
||||||
"box_small_struct" f %alien-invoke
|
"box_small_struct" %vm-invoke-4th-arg
|
||||||
] with-return-regs ;
|
] with-return-regs ;
|
||||||
|
|
||||||
: struct-return@ ( n -- operand )
|
: struct-return@ ( n -- operand )
|
||||||
|
@ -180,14 +192,6 @@ M: x86.64 %alien-invoke
|
||||||
rc-absolute-cell rel-dlsym
|
rc-absolute-cell rel-dlsym
|
||||||
R11 CALL ;
|
R11 CALL ;
|
||||||
|
|
||||||
M: x86.64 %vm-invoke-1st-arg ( function -- )
|
|
||||||
param-reg-1 0 MOV rc-absolute-cell rt-vm rel-fixup
|
|
||||||
f %alien-invoke ;
|
|
||||||
|
|
||||||
|
|
||||||
M: x86.64 %vm-invoke-3rd-arg ( function -- )
|
|
||||||
param-reg-3 0 MOV rc-absolute-cell rt-vm rel-fixup
|
|
||||||
f %alien-invoke ;
|
|
||||||
|
|
||||||
M: x86.64 %prepare-alien-indirect ( -- )
|
M: x86.64 %prepare-alien-indirect ( -- )
|
||||||
"unbox_alien" f %alien-invoke
|
"unbox_alien" f %alien-invoke
|
||||||
|
|
Loading…
Reference in New Issue