-- For doing calls to C (via glue code generated by ByteCodeFFI)
| CCALL Addr -- of the glue code
+ | SWIZZLE Int Int -- to the ptr N words down the stack,
+ -- add M (interpreted as a signed 16-bit entity)
-- To Infinity And Beyond
| ENTER
ppr (RETURN pk) = text "RETURN " <+> ppr pk
ppr (CCALL marshall_addr) = text "CCALL " <+> text "marshall code at"
<+> text (show marshall_addr)
+ ppr (SWIZZLE stkoff n) = text "SWIZZLE " <+> text "stkoff" <+> int stkoff
+ <+> text "by" <+> int n
-- The stack use, in words, of each bytecode insn. These _must_ be
-- correct, or overestimates of reality, to be safe.
bciStackUse ENTER = 0
bciStackUse (RETURN pk) = 0
bciStackUse (CCALL marshall_addr) = 0
+bciStackUse (SWIZZLE stkoff n) = 0
-- These insns actually reduce stack use, but we need the high-tide level,
-- so can't use this info. Not that it matters much.