27 lines
		
	
	
		
			964 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			964 B
		
	
	
	
		
			Factor
		
	
	
USING: help.markup help.syntax literals make multiline sequences
 | 
						|
stack-checker.alien ;
 | 
						|
IN: compiler.cfg.builder.alien
 | 
						|
 | 
						|
<<
 | 
						|
STRING: ex-caller-return
 | 
						|
USING: compiler.cfg.builder.alien make prettyprint ;
 | 
						|
[
 | 
						|
    T{ ##alien-invoke { reg-outputs { { 1 int-rep RAX } } } } ,
 | 
						|
    T{ alien-invoke-params { return pointer: void } }  caller-return
 | 
						|
] { } make  .
 | 
						|
{
 | 
						|
    T{ ##alien-invoke { reg-outputs { { 1 int-rep RAX } } } }
 | 
						|
    T{ ##box-alien { dst 116 } { src 1 } { temp 115 } }
 | 
						|
}
 | 
						|
;
 | 
						|
>>
 | 
						|
 | 
						|
HELP: caller-return
 | 
						|
{ $values { "params" alien-node-params } }
 | 
						|
{ $description "If the last alien call returns a value, then this word will emit an instruction to the current sequence being constructed by " { $link make } " that boxes it." }
 | 
						|
{ $examples { $unchecked-example $[ ex-caller-return ] } } ;
 | 
						|
 | 
						|
HELP: unbox-parameters
 | 
						|
{ $values { "parameters" sequence } { "vregs" sequence } { "reps" sequence } }
 | 
						|
{ $description "Unboxes a sequence of parameters to send to an ffi function." } ;
 |