cpu.x86.32: clean up %unary/binary-float-function

db4
Slava Pestov 2010-05-17 04:03:13 -04:00
parent 7ff309d50e
commit db5b33977b
1 changed files with 10 additions and 17 deletions

View File

@ -186,34 +186,27 @@ M: x86.32 %end-callback ( -- )
0 save-vm-ptr 0 save-vm-ptr
"end_callback" f %alien-invoke ; "end_callback" f %alien-invoke ;
GENERIC: float-function-param ( stack-slot dst src -- ) GENERIC: float-function-param ( n dst src -- )
M:: spill-slot float-function-param ( stack-slot dst src -- ) M:: spill-slot float-function-param ( n dst src -- )
! We can clobber dst here since its going to contain the ! We can clobber dst here since its going to contain the
! final result ! final result
dst src double-rep %copy dst src double-rep %copy
stack-slot dst double-rep %copy ; dst n double-rep %store-stack-param ;
M: register float-function-param M:: register float-function-param ( n dst src -- )
nip double-rep %copy ; src n double-rep %store-stack-param ;
: float-function-return ( reg -- )
ESP [] FSTPL
ESP [] MOVSD
ESP 16 ADD ;
M:: x86.32 %unary-float-function ( dst src func -- ) M:: x86.32 %unary-float-function ( dst src func -- )
ESP -16 [+] dst src float-function-param 0 dst src float-function-param
ESP 16 SUB
func "libm" load-library %alien-invoke func "libm" load-library %alien-invoke
dst float-function-return ; dst double-rep %load-return ;
M:: x86.32 %binary-float-function ( dst src1 src2 func -- ) M:: x86.32 %binary-float-function ( dst src1 src2 func -- )
ESP -16 [+] dst src1 float-function-param 0 dst src1 float-function-param
ESP -8 [+] dst src2 float-function-param 8 dst src2 float-function-param
ESP 16 SUB
func "libm" load-library %alien-invoke func "libm" load-library %alien-invoke
dst float-function-return ; dst double-rep %load-return ;
: funny-large-struct-return? ( return abi -- ? ) : funny-large-struct-return? ( return abi -- ? )
#! MINGW ABI incompatibility disaster #! MINGW ABI incompatibility disaster