20 lines
		
	
	
		
			522 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			20 lines
		
	
	
		
			522 B
		
	
	
	
		
			Factor
		
	
	
|  | 
 | ||
|  | : spill-integer-base ( -- n )
 | ||
|  |     stack-frame get spill-counts>> double-float-regs swap at
 | ||
|  |     double-float-regs reg-size * ;
 | ||
|  | 
 | ||
|  | : spill-integer@ ( n -- offset )
 | ||
|  |     cells spill-integer-base + param@ ;
 | ||
|  | 
 | ||
|  | : spill-float@ ( n -- offset )
 | ||
|  |     double-float-regs reg-size * param@ ;
 | ||
|  | 
 | ||
|  | : (stack-frame-size) ( stack-frame -- n )
 | ||
|  |     [ | ||
|  |         { | ||
|  |             [ spill-counts>> [ swap reg-size * ] { } assoc>map sum ] | ||
|  |             [ gc-roots>> cells ] | ||
|  |             [ params>> ] | ||
|  |             [ return>> ] | ||
|  |         } cleave
 | ||
|  |     ] sum-outputs ;
 |