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 ]
|
] when ]
|
||||||
2tri int-regs get pop ;
|
2tri int-regs get pop ;
|
||||||
|
|
||||||
M: float-rep next-reg-param
|
M: object next-reg-param
|
||||||
nip [ ?dummy-stack-params ] [ ?dummy-int-params ] bi
|
nip [ ?dummy-stack-params ] [ ?dummy-int-params ] bi
|
||||||
float-regs get pop ;
|
float-regs get pop ;
|
||||||
|
|
||||||
M: double-rep next-reg-param
|
: reg-class-full? ( reg-class odd-register? -- ? )
|
||||||
nip [ ?dummy-stack-params ] [ ?dummy-int-params ] bi
|
over length 1 = and [ dup delete-all ] when empty? ;
|
||||||
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 ;
|
|
||||||
|
|
||||||
: init-reg-class ( abi reg-class -- )
|
: init-reg-class ( abi reg-class -- )
|
||||||
[ swap param-regs at <reversed> >vector ] keep set ;
|
[ 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? -- )
|
:: next-parameter ( vreg rep on-stack? odd-register? -- )
|
||||||
vreg rep on-stack?
|
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
|
[ alloc-stack-param stack-values ] [ odd-register? swap next-reg-param reg-values ] if
|
||||||
[ 3array ] dip get push ;
|
[ 3array ] dip get push ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue