diff --git a/basis/cpu/x86/32/32.factor b/basis/cpu/x86/32/32.factor index 72590846c7..d914c85f9a 100755 --- a/basis/cpu/x86/32/32.factor +++ b/basis/cpu/x86/32/32.factor @@ -186,34 +186,27 @@ M: x86.32 %end-callback ( -- ) 0 save-vm-ptr "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 ! final result dst src double-rep %copy - stack-slot dst double-rep %copy ; + dst n double-rep %store-stack-param ; -M: register float-function-param - nip double-rep %copy ; - -: float-function-return ( reg -- ) - ESP [] FSTPL - ESP [] MOVSD - ESP 16 ADD ; +M:: register float-function-param ( n dst src -- ) + src n double-rep %store-stack-param ; M:: x86.32 %unary-float-function ( dst src func -- ) - ESP -16 [+] dst src float-function-param - ESP 16 SUB + 0 dst src float-function-param 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 -- ) - ESP -16 [+] dst src1 float-function-param - ESP -8 [+] dst src2 float-function-param - ESP 16 SUB + 0 dst src1 float-function-param + 8 dst src2 float-function-param func "libm" load-library %alien-invoke - dst float-function-return ; + dst double-rep %load-return ; : funny-large-struct-return? ( return abi -- ? ) #! MINGW ABI incompatibility disaster