/* ----------------------------------------------------------------------------
- * $Id: ClosureMacros.h,v 1.10 1999/03/23 08:34:07 sof Exp $
+ * $Id: ClosureMacros.h,v 1.11 1999/04/23 13:54:12 simonm Exp $
*
* (c) The GHC Team, 1998-1999
*
#define INIT_ENTRY(e) code : {}
#define GET_ENTRY(c) stgCast(StgFunPtr,((c)->header.info))
#define ENTRY_CODE(info) (info)
-#define INFO_PTR_TO_STRUCT(info) (stgCast(StgInfoTable*,info) - 1)
+#define INFO_PTR_TO_STRUCT(info) ((StgInfoTable *)(info) - 1)
#define get_itbl(c) (stgCast(StgInfoTable*,(c)->header.info) -1)
static __inline__ StgFunPtr get_entry(const StgInfoTable *itbl) {
return stgCast(StgFunPtr,itbl+1);
/* -----------------------------------------------------------------------------
- * $Id: PrimOps.h,v 1.24 1999/03/16 13:20:09 simonm Exp $
+ * $Id: PrimOps.h,v 1.25 1999/04/23 13:54:12 simonm Exp $
*
* (c) The GHC Team, 1998-1999
*
#endif
/* -----------------------------------------------------------------------------
+ Constructor tags
+ -------------------------------------------------------------------------- */
+
+#define dataToTagzh(r,a) r=(GET_TAG(((StgClosure *)a)->header.info))
+/* tagToEnum# is handled directly by the code generator. */
+
+/* -----------------------------------------------------------------------------
Signal processing. Not really primops, but called directly from
Haskell.
-------------------------------------------------------------------------- */