USING: accessors assocs sequences kernel combinators
classes.algebra byte-arrays make math math.order math.ranges
system namespaces locals layouts words alien alien.accessors
-alien.c-types alien.complex alien.data literals cpu.architecture
-cpu.ppc.assembler cpu.ppc.assembler.backend
+alien.c-types alien.complex alien.data alien.libraries
+literals cpu.architecture cpu.ppc.assembler cpu.ppc.assembler.backend
compiler.cfg.registers compiler.cfg.instructions
compiler.cfg.comparisons compiler.codegen.fixup
compiler.cfg.intrinsics compiler.cfg.stack-frame
M: integer load-param int-rep %copy ;
-M: spill-slot load-param n>> spill@ LWZ ;
+M: spill-slot load-param [ 1 ] dip n>> spill@ LWZ ;
GENERIC: store-param ( reg dst -- )
M: integer store-param swap int-rep %copy ;
-M: spill-slot store-param n>> spill@ STW ;
+M: spill-slot store-param [ 1 ] dip n>> spill@ STW ;
:: call-unbox-func ( src func -- )
3 src load-param
M:: ppc %unbox-large-struct ( src n c-type -- )
4 src load-param
3 1 n local@ ADDI
- heap-size 5 LI
+ c-type heap-size 5 LI
"memcpy" "libc" load-library %alien-invoke ;
M:: ppc %box ( dst n rep func -- )
3 1 n local@ LWZ
4 1 n cell + local@ LWZ
] when
+ 5 %load-vm-addr
func f %alien-invoke
3 dst store-param ;