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 )
|
||||
[ abi>> ] [ parameters>> ] [ return>> ] tri
|
||||
'[
|
||||
'[
|
||||
_ unbox-parameters
|
||||
_ prepare-struct-caller struct-return-area set
|
||||
(caller-parameters)
|
||||
|
@ -71,7 +71,7 @@ M: array dlsym-valid? '[ _ dlsym ] any? ;
|
|||
{
|
||||
{ [ dup library-dll dll-valid? not ] [
|
||||
[ 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 ] [
|
||||
drop dlerror cfg get word>> no-such-symbol-error
|
||||
|
@ -129,7 +129,7 @@ M: #alien-indirect emit-node ( node -- )
|
|||
[ caller-return ]
|
||||
bi ;
|
||||
|
||||
M: #alien-assembly emit-node
|
||||
M: #alien-assembly emit-node ( node -- )
|
||||
params>>
|
||||
[
|
||||
{
|
||||
|
@ -137,7 +137,7 @@ M: #alien-assembly emit-node
|
|||
[ prepare-caller-return ]
|
||||
[ caller-stack-frame ]
|
||||
[ quot>> ]
|
||||
} cleave <gc-map> ##alien-assembly,
|
||||
} cleave ##alien-assembly,
|
||||
]
|
||||
[ caller-return ]
|
||||
bi ;
|
||||
|
@ -160,7 +160,7 @@ M: #alien-assembly emit-node
|
|||
|
||||
: callee-parameters ( params -- vregs reps reg-outputs stack-outputs )
|
||||
[ abi>> ] [ return>> ] [ parameters>> ] tri
|
||||
'[
|
||||
'[
|
||||
_ prepare-struct-callee struct-return-area set
|
||||
_ [ base-type ] map (callee-parameters)
|
||||
] 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 ;
|
||||
|
||||
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
|
||||
literal: reg-outputs stack-outputs ;
|
||||
|
@ -834,13 +834,8 @@ UNION: conditional-branch-insn
|
|||
UNION: ##read ##slot ##slot-imm ##vm-field ##alien-global ;
|
||||
UNION: ##write ##set-slot ##set-slot-imm ##set-vm-field ;
|
||||
|
||||
UNION: alien-call-insn
|
||||
##alien-invoke
|
||||
##alien-indirect
|
||||
##alien-assembly ;
|
||||
UNION: alien-call-insn ##alien-invoke ##alien-indirect ;
|
||||
|
||||
! Instructions that contain subroutine calls to functions which
|
||||
! can callback arbitrary Factor code
|
||||
UNION: factor-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 -- )
|
||||
|
||||
! 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-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-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 -- )
|
||||
|
||||
|
|
|
@ -491,8 +491,8 @@ M:: ppc %alien-indirect ( src reg-inputs stack-inputs
|
|||
|
||||
M: ppc %alien-assembly ( reg-inputs stack-inputs reg-outputs
|
||||
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 -- )
|
||||
[ [ 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
|
||||
] emit-alien-insn ;
|
||||
|
||||
M: x86 %alien-assembly ( reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot gc-map -- )
|
||||
'[ _ _ gc-map set call( -- ) ] emit-alien-insn ;
|
||||
M: x86 %alien-assembly ( reg-inputs stack-inputs reg-outputs dead-outputs cleanup stack-size quot -- )
|
||||
'[ _ call( -- ) ] emit-alien-insn ;
|
||||
|
||||
HOOK: %begin-callback cpu ( -- )
|
||||
|
||||
|
|
Loading…
Reference in New Issue