compiler.cfg.builder.alien: simpler caller-stack-frame word
parent
dbd716cc99
commit
7ab3ebfdd5
|
@ -66,6 +66,12 @@ cpu x86.64? [
|
|||
] cfg-unit-test
|
||||
] when
|
||||
|
||||
! caller-stack-cleanup
|
||||
{ 0 } [
|
||||
alien-node-params new long >>return cdecl >>abi 25
|
||||
caller-stack-cleanup
|
||||
] unit-test
|
||||
|
||||
! prepare-caller-return
|
||||
${
|
||||
cpu x86.32? { { 1 int-rep EAX } } { { 1 int-rep RAX } } ?
|
||||
|
|
|
@ -54,9 +54,8 @@ IN: compiler.cfg.builder.alien
|
|||
: prepare-caller-return ( params -- reg-outputs )
|
||||
return>> [ { } ] [ base-type load-return ] if-void ;
|
||||
|
||||
: caller-stack-frame ( params -- cleanup stack-size )
|
||||
[ stack-params get ] dip [ return>> ] [ abi>> ] bi stack-cleanup
|
||||
stack-params get ;
|
||||
: caller-stack-cleanup ( params stack-size -- cleanup )
|
||||
swap [ return>> ] [ abi>> ] bi stack-cleanup ;
|
||||
|
||||
: check-dlsym ( symbol library -- )
|
||||
{
|
||||
|
@ -91,7 +90,7 @@ IN: compiler.cfg.builder.alien
|
|||
[ varargs?>> ]
|
||||
[ caller-parameters ]
|
||||
[ prepare-caller-return { } ]
|
||||
[ caller-stack-frame ]
|
||||
[ stack-params get [ caller-stack-cleanup ] keep ]
|
||||
} cleave ;
|
||||
|
||||
M: #alien-invoke emit-node ( block node -- block' )
|
||||
|
|
Loading…
Reference in New Issue