diff --git a/library/compiler/basic-blocks.factor b/library/compiler/basic-blocks.factor index 0279533a5b..63001fd349 100644 --- a/library/compiler/basic-blocks.factor +++ b/library/compiler/basic-blocks.factor @@ -1,6 +1,10 @@ IN: compiler-backend USING: arrays hashtables kernel lists math namespaces sequences ; +: vop-in ( vop n -- input ) swap vop-inputs nth ; +: set-vop-in ( input vop n -- ) swap vop-inputs set-nth ; +: vop-out ( vop n -- input ) swap vop-outputs nth ; + : (split-blocks) ( n linear -- ) 2dup length = [ dup like , drop diff --git a/library/compiler/ppc/alien.factor b/library/compiler/ppc/alien.factor index 5bf87b5cb4..21dbbacf96 100644 --- a/library/compiler/ppc/alien.factor +++ b/library/compiler/ppc/alien.factor @@ -4,7 +4,7 @@ IN: compiler-backend USING: alien assembler kernel math ; M: %alien-invoke generate-node ( vop -- ) - dup 0 vop-in swap 1 vop-in load-library compile-c-call ; + drop 0 input 1 input load-library compile-c-call ; GENERIC: store-insn GENERIC: load-insn @@ -25,16 +25,14 @@ M: stack-params load-insn ( from to reg-class -- ) drop >r 0 1 rot stack@ LWZ 0 1 r> stack@ STW ; M: %unbox generate-node ( vop -- ) - [ 1 vop-in f compile-c-call ] keep - [ 2 vop-in return-reg 1 ] keep - [ 0 vop-in ] keep - 2 vop-in store-insn ; + drop + 1 input f compile-c-call + 2 input return-reg + 1 0 input 2 input store-insn ; M: %parameter generate-node ( vop -- ) - [ 0 vop-in ] keep - [ 1 vop-in ] keep - 2 vop-in load-insn ; + drop 0 input 1 input 2 input load-insn ; -M: %box generate-node ( vop -- ) 0 vop-in f compile-c-call ; +M: %box generate-node ( vop -- ) drop 0 input f compile-c-call ; M: %cleanup generate-node ( vop -- ) drop ; diff --git a/library/compiler/ppc/fixnum.factor b/library/compiler/ppc/fixnum.factor index a5441aa4a6..77e9095fbc 100644 --- a/library/compiler/ppc/fixnum.factor +++ b/library/compiler/ppc/fixnum.factor @@ -4,19 +4,17 @@ IN: compiler-backend USING: assembler compiler kernel kernel-internals math math-internals memory namespaces words ; -: >3-imm< ( vop -- out1 in2 in1 ) - [ 0 vop-out v>operand ] keep - [ 1 vop-in v>operand ] keep - 0 vop-in ; +: >3-imm< ( -- out1 in2 in1 ) + 0 output-operand 1 input-operand 0 input ; -: >3-vop< ( vop -- out1 in1 in2 ) +: >3-vop< ( -- out1 in1 in2 ) >3-imm< v>operand swap ; -: simple-overflow ( vop inv word -- ) +: simple-overflow ( inv word -- ) >r >r