X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FExternalCore.lhs;h=2a8d152fe6a34d6e77e3b4d66a5e50f041de33a2;hb=da6ece6b866451c684dd96867e32c3fcba53c248;hp=c5035e20491d516a79efa3ebfbf8be17f06593a0;hpb=49c98d143c382a1341e1046f5ca00819a25691ba;p=ghc-hetmet.git diff --git a/compiler/coreSyn/ExternalCore.lhs b/compiler/coreSyn/ExternalCore.lhs index c5035e2..2a8d152 100644 --- a/compiler/coreSyn/ExternalCore.lhs +++ b/compiler/coreSyn/ExternalCore.lhs @@ -2,7 +2,6 @@ % (c) The University of Glasgow 2001-2006 % \begin{code} - module ExternalCore where @@ -11,12 +10,15 @@ data Module data Tdef = Data (Qual Tcon) [Tbind] [Cdef] - | Newtype (Qual Tcon) [Tbind] (Maybe Ty) + | Newtype (Qual Tcon) [Tbind] Axiom (Maybe Ty) data Cdef = Constr Dcon [Tbind] [Ty] | GadtConstr Dcon Ty +-- Newtype coercion +type Axiom = (Qual Tcon, Kind) + data Vdefg = Rec [Vdef] | Nonrec Vdef @@ -34,7 +36,9 @@ data Exp | Case Exp Vbind Ty [Alt] {- non-empty list -} | Cast Exp Ty | Note String Exp - | External String Ty + | External String String Ty {- target name, convention, and type -} + | DynExternal String Ty {- convention and type (incl. Addr# of target as first arg) -} + | Label String data Bind = Vb Vbind @@ -60,6 +64,7 @@ data Kind | Kunboxed | Kopen | Karrow Kind Kind + | Keq Ty Ty data Lit = Lint Integer Ty @@ -78,10 +83,13 @@ type Qual t = (Mname,t) type Id = String -primMname = "GHCziPrim" +primMname :: Mname +-- For truly horrible reasons, this must be z-encoded. +-- With any hope, the z-encoding will die soon. +primMname = "ghczmprim:GHCziPrim" tcArrow :: Qual Tcon -tcArrow = (primMname, "ZLzmzgZR") +tcArrow = (primMname, "(->)") \end{code}