X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fghci%2FByteCodeInstr.lhs;h=84472f24ac8d16b63cca2afc61af406045572d79;hb=ee26207114635c480dbc7518c0510545a6f62611;hp=2393f21f8eb888b6899eaf1a01b9edbb0aafacc3;hpb=fb80639a87dcd7c6e08bd4a5d5a509d8098e9fe6;p=ghc-hetmet.git diff --git a/compiler/ghci/ByteCodeInstr.lhs b/compiler/ghci/ByteCodeInstr.lhs index 2393f21..84472f2 100644 --- a/compiler/ghci/ByteCodeInstr.lhs +++ b/compiler/ghci/ByteCodeInstr.lhs @@ -5,6 +5,7 @@ ByteCodeInstrs: Bytecode instruction definitions \begin{code} {-# OPTIONS_GHC -funbox-strict-fields #-} + module ByteCodeInstr ( BCInstr(..), ProtoBCO(..), bciStackUse, BreakInfo (..) ) where @@ -26,10 +27,8 @@ import VarSet import PrimOp import SMRep -import GHC.Ptr - import Module (Module) -import GHC.Prim +import GHC.Exts -- ---------------------------------------------------------------------------- @@ -96,10 +95,11 @@ data BCInstr | SLIDE Int{-this many-} Int{-down by this much-} -- To do with the heap - | ALLOC_AP !Int -- make an AP with this many payload words - | ALLOC_PAP !Int !Int -- make a PAP with this arity / payload words - | MKAP !Int{-ptr to AP is this far down stack-} !Int{-# words-} - | MKPAP !Int{-ptr to PAP is this far down stack-} !Int{-# words-} + | ALLOC_AP !Int -- make an AP with this many payload words + | ALLOC_AP_NOUPD !Int -- make an AP_NOUPD with this many payload words + | ALLOC_PAP !Int !Int -- make a PAP with this arity / payload words + | MKAP !Int{-ptr to AP is this far down stack-} !Int{-number of words-} + | MKPAP !Int{-ptr to PAP is this far down stack-} !Int{-number of words-} | UNPACK !Int -- unpack N words from t.o.s Constr | PACK DataCon !Int -- after assembly, the DataCon is an index into the @@ -122,7 +122,7 @@ data BCInstr | CASEFAIL | JMP LocalLabel - -- For doing calls to C (via glue code generated by ByteCodeFFI) + -- For doing calls to C (via glue code generated by ByteCodeFFI, or libffi) | CCALL Int -- stack frame size (Ptr ()) -- addr of the glue code @@ -194,6 +194,7 @@ instance Outputable BCInstr where ppr (SLIDE n d) = text "SLIDE " <+> int n <+> int d ppr (ALLOC_AP sz) = text "ALLOC_AP " <+> int sz + ppr (ALLOC_AP_NOUPD sz) = text "ALLOC_AP_NOUPD " <+> int sz ppr (ALLOC_PAP arity sz) = text "ALLOC_PAP " <+> int arity <+> int sz ppr (MKAP offset sz) = text "MKAP " <+> int sz <+> text "words," <+> int offset <+> text "stkoff" @@ -220,7 +221,7 @@ instance Outputable BCInstr where ppr ENTER = text "ENTER" ppr RETURN = text "RETURN" ppr (RETURN_UBX pk) = text "RETURN_UBX " <+> ppr pk - ppr (BRK_FUN breakArray index info) = text "BRK_FUN" <+> text "" <+> int index <+> ppr info + ppr (BRK_FUN _breakArray index info) = text "BRK_FUN" <+> text "" <+> int index <+> ppr info -- ----------------------------------------------------------------------------- -- The stack use, in words, of each bytecode insn. These _must_ be @@ -258,6 +259,7 @@ bciStackUse PUSH_APPLY_PPPP{} = 1 bciStackUse PUSH_APPLY_PPPPP{} = 1 bciStackUse PUSH_APPLY_PPPPPP{} = 1 bciStackUse ALLOC_AP{} = 1 +bciStackUse ALLOC_AP_NOUPD{} = 1 bciStackUse ALLOC_PAP{} = 1 bciStackUse (UNPACK sz) = sz bciStackUse LABEL{} = 0