compiler.cfg.*: the ##alien-assembly instruction does not use a gc-map
parent
17d12ffaea
commit
52d3affeb8
|
@ -48,7 +48,7 @@ IN: compiler.cfg.builder.alien
|
||||||
|
|
||||||
: caller-parameters ( params -- reg-inputs stack-inputs )
|
: caller-parameters ( params -- reg-inputs stack-inputs )
|
||||||
[ abi>> ] [ parameters>> ] [ return>> ] tri
|
[ abi>> ] [ parameters>> ] [ return>> ] tri
|
||||||
'[
|
'[
|
||||||
_ unbox-parameters
|
_ unbox-parameters
|
||||||
_ prepare-struct-caller struct-return-area set
|
_ prepare-struct-caller struct-return-area set
|
||||||
(caller-parameters)
|
(caller-parameters)
|
||||||
|
@ -71,7 +71,7 @@ M: array dlsym-valid? '[ _ dlsym ] any? ;
|
||||||
{
|
{
|
||||||
{ [ dup library-dll dll-valid? not ] [
|
{ [ dup library-dll dll-valid? not ] [
|
||||||
[ library-dll dll-path ] [ dlerror>> ] bi
|
[ library-dll dll-path ] [ dlerror>> ] bi
|
||||||
cfg get word>> no-such-library-error drop
|
cfg get word>> no-such-library-error drop
|
||||||
] }
|
] }
|
||||||
{ [ 2dup library-dll dlsym-valid? not ] [
|
{ [ 2dup library-dll dlsym-valid? not ] [
|
||||||
drop dlerror cfg get word>> no-such-symbol-error
|
drop dlerror cfg get word>> no-such-symbol-error
|
||||||
|
@ -129,7 +129,7 @@ M: #alien-indirect emit-node ( node -- )
|
||||||
[ caller-return ]
|
[ caller-return ]
|
||||||
bi ;
|
bi ;
|
||||||
|
|
||||||
M: #alien-assembly emit-node
|
M: #alien-assembly emit-node ( node -- )
|
||||||
params>>
|
params>>
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -137,7 +137,7 @@ M: #alien-assembly emit-node
|
||||||
[ prepare-caller-return ]
|
[ prepare-caller-return ]
|
||||||
[ caller-stack-frame ]
|
[ caller-stack-frame ]
|
||||||
[ quot>> ]
|
[ quot>> ]
|
||||||
} cleave <gc-map> ##alien-assembly,
|
} cleave ##alien-assembly,
|
||||||
]
|
]
|
||||||
[ caller-return ]
|
[ caller-return ]
|
||||||
bi ;
|
bi ;
|
||||||
|
@ -160,7 +160,7 @@ M: #alien-assembly emit-node
|
||||||
|
|
||||||
: callee-parameters ( params -- vregs reps reg-outputs stack-outputs )
|
: callee-parameters ( params -- vregs reps reg-outputs stack-outputs )
|
||||||
[ abi>> ] [ return>> ] [ parameters>> ] tri
|
[ abi>> ] [ return>> ] [ parameters>> ] tri
|
||||||
'[
|
'[
|
||||||
_ prepare-struct-callee struct-return-area set
|
_ prepare-struct-callee struct-return-area set
|
||||||
_ [ base-type ] map (callee-parameters)
|
_ [ base-type ] map (callee-parameters)
|
||||||
] with-param-regs* ;
|
] with-param-regs* ;
|
||||||
|
|
|
@ -673,7 +673,7 @@ use: src/int-rep
|
||||||
literal: reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size gc-map ;
|
literal: reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size gc-map ;
|
||||||
|
|
||||||
VREG-INSN: ##alien-assembly
|
VREG-INSN: ##alien-assembly
|
||||||
literal: reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot gc-map ;
|
literal: reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot ;
|
||||||
|
|
||||||
VREG-INSN: ##callback-inputs
|
VREG-INSN: ##callback-inputs
|
||||||
literal: reg-outputs stack-outputs ;
|
literal: reg-outputs stack-outputs ;
|
||||||
|
@ -834,13 +834,8 @@ UNION: conditional-branch-insn
|
||||||
UNION: ##read ##slot ##slot-imm ##vm-field ##alien-global ;
|
UNION: ##read ##slot ##slot-imm ##vm-field ##alien-global ;
|
||||||
UNION: ##write ##set-slot ##set-slot-imm ##set-vm-field ;
|
UNION: ##write ##set-slot ##set-slot-imm ##set-vm-field ;
|
||||||
|
|
||||||
UNION: alien-call-insn
|
UNION: alien-call-insn ##alien-invoke ##alien-indirect ;
|
||||||
##alien-invoke
|
|
||||||
##alien-indirect
|
|
||||||
##alien-assembly ;
|
|
||||||
|
|
||||||
! Instructions that contain subroutine calls to functions which
|
|
||||||
! can callback arbitrary Factor code
|
|
||||||
UNION: factor-call-insn
|
UNION: factor-call-insn
|
||||||
alien-call-insn ;
|
alien-call-insn ;
|
||||||
|
|
||||||
|
|
|
@ -590,9 +590,6 @@ HOOK: %unbox-long-long cpu ( dst1 dst2 src func -- )
|
||||||
|
|
||||||
HOOK: %local-allot cpu ( dst size align offset -- )
|
HOOK: %local-allot cpu ( dst size align offset -- )
|
||||||
|
|
||||||
! Call a function to convert a value into a tagged pointer,
|
|
||||||
! possibly allocating a bignum, float, or alien instance,
|
|
||||||
! which is then pushed on the data stack
|
|
||||||
HOOK: %box cpu ( dst src func rep gc-map -- )
|
HOOK: %box cpu ( dst src func rep gc-map -- )
|
||||||
|
|
||||||
HOOK: %box-long-long cpu ( dst src1 src2 func gc-map -- )
|
HOOK: %box-long-long cpu ( dst src1 src2 func gc-map -- )
|
||||||
|
@ -605,7 +602,7 @@ HOOK: %alien-invoke cpu ( reg-inputs stack-inputs reg-outputs dead-outputs clean
|
||||||
|
|
||||||
HOOK: %alien-indirect cpu ( src reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size gc-map -- )
|
HOOK: %alien-indirect cpu ( src reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size gc-map -- )
|
||||||
|
|
||||||
HOOK: %alien-assembly cpu ( reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot gc-map -- )
|
HOOK: %alien-assembly cpu ( reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot -- )
|
||||||
|
|
||||||
HOOK: %callback-inputs cpu ( reg-outputs stack-outputs -- )
|
HOOK: %callback-inputs cpu ( reg-outputs stack-outputs -- )
|
||||||
|
|
||||||
|
|
|
@ -491,8 +491,8 @@ M:: ppc %alien-indirect ( src reg-inputs stack-inputs
|
||||||
|
|
||||||
M: ppc %alien-assembly ( reg-inputs stack-inputs reg-outputs
|
M: ppc %alien-assembly ( reg-inputs stack-inputs reg-outputs
|
||||||
dead-outputs cleanup stack-size quot
|
dead-outputs cleanup stack-size quot
|
||||||
gc-map -- )
|
-- )
|
||||||
'[ _ _ gc-map set call( -- ) ] emit-alien-insn ;
|
'[ _ call( -- ) ] emit-alien-insn ;
|
||||||
|
|
||||||
M: ppc %callback-inputs ( reg-outputs stack-outputs -- )
|
M: ppc %callback-inputs ( reg-outputs stack-outputs -- )
|
||||||
[ [ first3 load-reg-param ] each ]
|
[ [ first3 load-reg-param ] each ]
|
||||||
|
|
|
@ -665,8 +665,8 @@ M:: x86 %alien-indirect ( src reg-inputs stack-inputs reg-outputs dead-outputs c
|
||||||
gc-map gc-map-here
|
gc-map gc-map-here
|
||||||
] emit-alien-insn ;
|
] emit-alien-insn ;
|
||||||
|
|
||||||
M: x86 %alien-assembly ( reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot gc-map -- )
|
M: x86 %alien-assembly ( reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot -- )
|
||||||
'[ _ _ gc-map set call( -- ) ] emit-alien-insn ;
|
'[ _ call( -- ) ] emit-alien-insn ;
|
||||||
|
|
||||||
HOOK: %begin-callback cpu ( -- )
|
HOOK: %begin-callback cpu ( -- )
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue