! Copyright (C) 2005 Slava Pestov. ! See http://factor.sf.net/license.txt for BSD license. IN: compiler-backend USING: alien arrays assembler compiler inference kernel kernel-internals lists math memory namespaces sequences words ; ! Not used on x86 M: %prologue generate-node ( vop -- ) drop compile-prologue ; : (%call) label dup postpone-word dup primitive? [ address-operand ] when ; M: %call generate-node ( vop -- ) drop (%call) CALL ; M: %jump generate-node ( vop -- ) drop compile-epilogue (%call) JMP ; M: %jump-t generate-node ( vop -- ) drop ! Compare input with f 0 input-operand f address CMP ! If not equal, jump label JNE ; M: %return generate-node ( vop -- ) drop compile-epilogue RET ; M: %dispatch generate-node ( vop -- ) #! Compile a piece of code that jumps to an offset in a #! jump table indexed by the fixnum at the top of the stack. #! The jump table must immediately follow this macro. drop