From 52d3affeb8bdf1183be532704aa5f530ec739338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Mon, 8 Dec 2014 21:59:01 +0100 Subject: [PATCH] compiler.cfg.*: the ##alien-assembly instruction does not use a gc-map --- basis/compiler/cfg/builder/alien/alien.factor | 10 +++++----- basis/compiler/cfg/instructions/instructions.factor | 9 ++------- basis/cpu/architecture/architecture.factor | 5 +---- basis/cpu/ppc/ppc.factor | 4 ++-- basis/cpu/x86/x86.factor | 4 ++-- 5 files changed, 12 insertions(+), 20 deletions(-) diff --git a/basis/compiler/cfg/builder/alien/alien.factor b/basis/compiler/cfg/builder/alien/alien.factor index 2333a64e4e..fb60cd2c49 100644 --- a/basis/compiler/cfg/builder/alien/alien.factor +++ b/basis/compiler/cfg/builder/alien/alien.factor @@ -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 ##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* ; diff --git a/basis/compiler/cfg/instructions/instructions.factor b/basis/compiler/cfg/instructions/instructions.factor index fdf0dceec9..50d536d8f2 100644 --- a/basis/compiler/cfg/instructions/instructions.factor +++ b/basis/compiler/cfg/instructions/instructions.factor @@ -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 ; diff --git a/basis/cpu/architecture/architecture.factor b/basis/cpu/architecture/architecture.factor index c2242bdfb6..f783de8bbd 100644 --- a/basis/cpu/architecture/architecture.factor +++ b/basis/cpu/architecture/architecture.factor @@ -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 -- ) diff --git a/basis/cpu/ppc/ppc.factor b/basis/cpu/ppc/ppc.factor index 8a82728eb2..f15072ff4f 100644 --- a/basis/cpu/ppc/ppc.factor +++ b/basis/cpu/ppc/ppc.factor @@ -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 ] diff --git a/basis/cpu/x86/x86.factor b/basis/cpu/x86/x86.factor index 5394e36ec6..f3c8195e40 100644 --- a/basis/cpu/x86/x86.factor +++ b/basis/cpu/x86/x86.factor @@ -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 ( -- )