Fix PowerPC compiler backend for recent changes
parent
eb0a28aa54
commit
c4719b7f5f
|
@ -193,7 +193,7 @@ USERENV: jit-if 29
|
||||||
USERENV: jit-epilog 30
|
USERENV: jit-epilog 30
|
||||||
USERENV: jit-return 31
|
USERENV: jit-return 31
|
||||||
USERENV: jit-profiling 32
|
USERENV: jit-profiling 32
|
||||||
USERENV: jit-push-immediate 33
|
USERENV: jit-push 33
|
||||||
USERENV: jit-dip-word 34
|
USERENV: jit-dip-word 34
|
||||||
USERENV: jit-dip 35
|
USERENV: jit-dip 35
|
||||||
USERENV: jit-2dip-word 36
|
USERENV: jit-2dip-word 36
|
||||||
|
|
|
@ -21,7 +21,7 @@ CONSTANT: rs-reg 14
|
||||||
: next-save ( -- n ) stack-frame bootstrap-cell - ;
|
: next-save ( -- n ) stack-frame bootstrap-cell - ;
|
||||||
: xt-save ( -- n ) stack-frame 2 bootstrap-cells - ;
|
: xt-save ( -- n ) stack-frame 2 bootstrap-cells - ;
|
||||||
|
|
||||||
: jit-conditional* ( test-quot true-quot -- )
|
: jit-conditional* ( test-quot false-quot -- )
|
||||||
[ '[ bootstrap-cell /i 1 + @ ] ] dip jit-conditional ; inline
|
[ '[ bootstrap-cell /i 1 + @ ] ] dip jit-conditional ; inline
|
||||||
|
|
||||||
: jit-save-context ( -- )
|
: jit-save-context ( -- )
|
||||||
|
@ -53,14 +53,14 @@ CONSTANT: rs-reg 14
|
||||||
[
|
[
|
||||||
0 3 LOAD32 rc-absolute-ppc-2/2 rt-literal jit-rel
|
0 3 LOAD32 rc-absolute-ppc-2/2 rt-literal jit-rel
|
||||||
3 ds-reg 4 STWU
|
3 ds-reg 4 STWU
|
||||||
] jit-push-immediate jit-define
|
] jit-push jit-define
|
||||||
|
|
||||||
[
|
[
|
||||||
jit-save-context
|
jit-save-context
|
||||||
4 0 swap LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel
|
0 3 LOAD32 rc-absolute-ppc-2/2 rt-vm jit-rel
|
||||||
0 5 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel
|
0 4 LOAD32 rc-absolute-ppc-2/2 rt-primitive jit-rel
|
||||||
5 MTCTR
|
4 MTLR
|
||||||
BCTR
|
BLRL
|
||||||
] jit-primitive jit-define
|
] jit-primitive jit-define
|
||||||
|
|
||||||
[ 0 BL rc-relative-ppc-3 rt-xt-pic jit-rel ] jit-word-call jit-define
|
[ 0 BL rc-relative-ppc-3 rt-xt-pic jit-rel ] jit-word-call jit-define
|
||||||
|
@ -235,7 +235,7 @@ CONSTANT: rs-reg 14
|
||||||
[
|
[
|
||||||
3 ds-reg 0 LWZ
|
3 ds-reg 0 LWZ
|
||||||
ds-reg dup 4 SUBI
|
ds-reg dup 4 SUBI
|
||||||
4 0 swap LOAD32 0 jit-parameter rc-absolute-ppc-2/2 rt-vm jit-rel
|
0 4 LOAD32 0 rc-absolute-ppc-2/2 jit-vm
|
||||||
5 3 quot-xt-offset LWZ
|
5 3 quot-xt-offset LWZ
|
||||||
]
|
]
|
||||||
[ 5 MTLR BLRL ]
|
[ 5 MTLR BLRL ]
|
||||||
|
@ -502,35 +502,39 @@ CONSTANT: rs-reg 14
|
||||||
: jit-inline-cache-miss ( -- )
|
: jit-inline-cache-miss ( -- )
|
||||||
jit-save-context
|
jit-save-context
|
||||||
3 6 MR
|
3 6 MR
|
||||||
4 0 LOAD32 0 rc-absolute-ppc-2/2 jit-vm
|
0 4 LOAD32 0 rc-absolute-ppc-2/2 jit-vm
|
||||||
5 0 LOAD32 "inline_cache_miss" f rc-absolute-ppc-2/2 jit-dlsym ;
|
0 5 LOAD32 "inline_cache_miss" f rc-absolute-ppc-2/2 jit-dlsym
|
||||||
|
5 MTLR
|
||||||
|
BLRL ;
|
||||||
|
|
||||||
[ jit-load-return-address jit-inline-cache-miss ]
|
[ jit-load-return-address jit-inline-cache-miss ]
|
||||||
[ 5 MTLR BLRL ]
|
[ 3 MTLR BLRL ]
|
||||||
[ 5 MTCTR BCTR ]
|
[ 3 MTCTR BCTR ]
|
||||||
\ inline-cache-miss define-sub-primitive*
|
\ inline-cache-miss define-sub-primitive*
|
||||||
|
|
||||||
[ jit-inline-cache-miss ]
|
[ jit-inline-cache-miss ]
|
||||||
[ 5 MTLR BLRL ]
|
[ 3 MTLR BLRL ]
|
||||||
[ 5 MTCTR BCTR ]
|
[ 3 MTCTR BCTR ]
|
||||||
\ inline-cache-miss-tail define-sub-primitive*
|
\ inline-cache-miss-tail define-sub-primitive*
|
||||||
|
|
||||||
! Overflowing fixnum arithmetic
|
! Overflowing fixnum arithmetic
|
||||||
:: jit-overflow ( insn func -- )
|
:: jit-overflow ( insn func -- )
|
||||||
jit-save-context
|
jit-save-context
|
||||||
3 ds-reg 0 LWZ
|
3 ds-reg -4 LWZ
|
||||||
4 ds-reg -4 LWZ
|
4 ds-reg 0 LWZ
|
||||||
ds-reg ds-reg 4 SUBI
|
ds-reg ds-reg 4 SUBI
|
||||||
0 0 LI
|
0 0 LI
|
||||||
0 MTXER
|
0 MTXER
|
||||||
6 3 4 insn call( d a s -- )
|
6 4 3 insn call( d a s -- )
|
||||||
6 ds-reg 0 STW
|
6 ds-reg 0 STW
|
||||||
[ BNO ]
|
[ BNO ]
|
||||||
[
|
[
|
||||||
0 5 LOAD32 0 rc-absolute-ppc-2/2 jit-vm
|
0 5 LOAD32 0 rc-absolute-ppc-2/2 jit-vm
|
||||||
0 6 LOAD32 func f rc-absolute-ppc-2/2 jit-dlsym
|
0 6 LOAD32 func f rc-absolute-ppc-2/2 jit-dlsym
|
||||||
|
6 MTLR
|
||||||
|
BLRL
|
||||||
]
|
]
|
||||||
jit-conditional ;
|
jit-conditional* ;
|
||||||
|
|
||||||
[ [ ADDO. ] "overflow_fixnum_add" jit-overflow ] \ fixnum+ define-sub-primitive
|
[ [ ADDO. ] "overflow_fixnum_add" jit-overflow ] \ fixnum+ define-sub-primitive
|
||||||
|
|
||||||
|
@ -554,7 +558,7 @@ CONSTANT: rs-reg 14
|
||||||
6 MTLR
|
6 MTLR
|
||||||
BLRL
|
BLRL
|
||||||
]
|
]
|
||||||
jit-conditional
|
jit-conditional*
|
||||||
] \ fixnum* define-sub-primitive
|
] \ fixnum* define-sub-primitive
|
||||||
|
|
||||||
[ "bootstrap.ppc" forget-vocab ] with-compilation-unit
|
[ "bootstrap.ppc" forget-vocab ] with-compilation-unit
|
||||||
|
|
|
@ -28,7 +28,7 @@ big-endian off
|
||||||
ds-reg bootstrap-cell ADD
|
ds-reg bootstrap-cell ADD
|
||||||
! store literal on datastack
|
! store literal on datastack
|
||||||
ds-reg [] temp0 MOV
|
ds-reg [] temp0 MOV
|
||||||
] jit-push-immediate jit-define
|
] jit-push jit-define
|
||||||
|
|
||||||
[
|
[
|
||||||
temp3 0 MOV rc-absolute-cell rt-here jit-rel
|
temp3 0 MOV rc-absolute-cell rt-here jit-rel
|
||||||
|
|
Loading…
Reference in New Issue