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