compiler.cfg.builder.alien.params: refactors the next-reg-param and reg-class-full? words

char-rename
Björn Lindqvist 2016-08-01 21:34:58 +02:00
parent 8aef16bed2
commit e359f3fca4
1 changed files with 4 additions and 10 deletions

View File

@ -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 ;