compiler.cfg.builder.alien.params: refactors the next-reg-param and reg-class-full? words
							parent
							
								
									8aef16bed2
								
							
						
					
					
						commit
						e359f3fca4
					
				| 
						 | 
				
			
			@ -40,18 +40,12 @@ M: int-rep next-reg-param
 | 
			
		|||
    ] when ]
 | 
			
		||||
    2tri int-regs get pop ;
 | 
			
		||||
 | 
			
		||||
M: float-rep next-reg-param
 | 
			
		||||
M: object next-reg-param
 | 
			
		||||
    nip [ ?dummy-stack-params ] [ ?dummy-int-params ] bi
 | 
			
		||||
    float-regs get pop ;
 | 
			
		||||
 | 
			
		||||
M: double-rep next-reg-param
 | 
			
		||||
    nip [ ?dummy-stack-params ] [ ?dummy-int-params ] bi
 | 
			
		||||
    float-regs get pop ;
 | 
			
		||||
 | 
			
		||||
:: reg-class-full? ( reg-class odd-register? -- ? )
 | 
			
		||||
    reg-class get empty?
 | 
			
		||||
    reg-class get length 1 = odd-register? and
 | 
			
		||||
    dup [ reg-class get delete-all ] when or ;
 | 
			
		||||
: reg-class-full? ( reg-class odd-register? -- ? )
 | 
			
		||||
    over length 1 = and [ dup delete-all ] when empty? ;
 | 
			
		||||
 | 
			
		||||
: init-reg-class ( abi reg-class -- )
 | 
			
		||||
    [ swap param-regs at <reversed> >vector ] keep set ;
 | 
			
		||||
| 
						 | 
				
			
			@ -63,7 +57,7 @@ SYMBOLS: stack-values reg-values ;
 | 
			
		|||
 | 
			
		||||
:: next-parameter ( vreg rep on-stack? odd-register? -- )
 | 
			
		||||
    vreg rep on-stack?
 | 
			
		||||
    [ dup dup reg-class-of odd-register? reg-class-full? ] dip or
 | 
			
		||||
    [ dup dup reg-class-of get odd-register? reg-class-full? ] dip or
 | 
			
		||||
    [ alloc-stack-param stack-values ] [ odd-register? swap next-reg-param reg-values ] if
 | 
			
		||||
    [ 3array ] dip get push ;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue