%
% (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
%
-% $Id: AbsCSyn.lhs,v 1.27 2000/03/08 17:48:24 simonmar Exp $
+% $Id: AbsCSyn.lhs,v 1.30 2000/05/15 15:03:36 simonmar Exp $
%
\section[AbstractC]{Abstract C: the last stop before machine code}
import {-# SOURCE #-} ClosureInfo ( ClosureInfo )
-#if ! OMIT_NATIVE_CODEGEN
-import {-# SOURCE #-} MachMisc
-#endif
-
import CLabel
import Constants ( mAX_Vanilla_REG, mAX_Float_REG,
mAX_Double_REG, spRelToInt )
import CostCentre ( CostCentre, CostCentreStack )
-import Const ( mkMachInt, Literal(..) )
+import Literal ( mkMachInt, Literal(..) )
import PrimRep ( PrimRep(..) )
-import PrimOp ( PrimOp )
+import PrimOp ( PrimOp, CCall )
import Unique ( Unique )
import StgSyn ( SRT(..) )
import TyCon ( TyCon )
compiling 'foreign import dynamic's)
-}
| CCallTypedef Bool {- True => use "typedef"; False => use "extern"-}
- PrimOp{-CCallOp-} [CAddrMode] [CAddrMode]
+ CCall [CAddrMode] [CAddrMode]
-- *** the next three [or so...] are DATA (those above are CODE) ***
TyCon -- which TyCon this table is for
| CModuleInitBlock -- module initialisation block
- CAddrMode -- label for init block
+ CLabel -- label for init block
AbstractC -- initialisation code
| CCostCentreDecl -- A cost centre *declaration*
PrimRep -- Int64Rep or Word64Rep
FAST_INT -- its number (1 .. mAX_Long_REG)
+ | CurrentTSO -- pointer to current thread's TSO
+ | CurrentNursery -- pointer to allocation area
+
node = VanillaReg PtrRep ILIT(1) -- A convenient alias for Node
tagreg = VanillaReg WordRep ILIT(2) -- A convenient alias for TagReg