X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FExternalCore.lhs;h=86a0d03816861c8120bc2d0f1860d0d6cc86c6c6;hb=6c3eae5d5e88117cf80b4b35c9bae4ba3ebbe94c;hp=09a6e7f7daeb8c2d69b01d6690e66298e0734544;hpb=0065d5ab628975892cea1ec7303f968c3338cbe1;p=ghc-hetmet.git diff --git a/compiler/coreSyn/ExternalCore.lhs b/compiler/coreSyn/ExternalCore.lhs index 09a6e7f..86a0d03 100644 --- a/compiler/coreSyn/ExternalCore.lhs +++ b/compiler/coreSyn/ExternalCore.lhs @@ -1,8 +1,7 @@ % -% (c) The University of Glasgow 2001 +% (c) The University of Glasgow 2001-2006 % \begin{code} - module ExternalCore where @@ -21,7 +20,7 @@ data Vdefg = Rec [Vdef] | Nonrec Vdef -type Vdef = (Var,Ty,Exp) -- Top level bindings are unqualified now +type Vdef = (Bool,Var,Ty,Exp) -- Top level bindings are unqualified now data Exp = Var (Qual Var) @@ -32,9 +31,11 @@ data Exp | Lam Bind Exp | Let Vdefg Exp | Case Exp Vbind Ty [Alt] {- non-empty list -} - | Coerce Ty Exp + | 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 @@ -57,8 +58,10 @@ data Ty data Kind = Klifted | Kunlifted + | Kunboxed | Kopen | Karrow Kind Kind + | Keq Ty Ty data Lit = Lint Integer Ty @@ -77,10 +80,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 = "ghc-prim:GHCziPrim" tcArrow :: Qual Tcon -tcArrow = (primMname, "ZLzmzgZR") +tcArrow = (primMname, "(->)") \end{code}