X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FInfoTables.h;h=1aff7681f75e80955826cbf9a3357e49c0cb72f9;hb=4e84be0ce335385e094ba12d284855b510a36f53;hp=bfaa7d40d090674bafa03d9295525542866392c3;hpb=b4623557bb3c8bec7232e4e68a8be8cf28fbbda6;p=ghc-hetmet.git diff --git a/ghc/includes/InfoTables.h b/ghc/includes/InfoTables.h index bfaa7d4..1aff768 100644 --- a/ghc/includes/InfoTables.h +++ b/ghc/includes/InfoTables.h @@ -1,5 +1,5 @@ /* ---------------------------------------------------------------------------- - * $Id: InfoTables.h,v 1.23 2001/10/03 13:57:42 simonmar Exp $ + * $Id: InfoTables.h,v 1.27 2002/05/14 08:15:49 matthewc Exp $ * * (c) The GHC Team, 1998-1999 * @@ -34,11 +34,6 @@ typedef struct { #endif /* 0 */ -typedef struct { - /* empty */ -} StgParInfo; - - /* Copied from ghc-0.29; ToDo: check this code -- HWL @@ -112,6 +107,10 @@ typedef struct { #endif /* DEBUG_CLOSURE */ +/* ----------------------------------------------------------------------------- + Closure flags + -------------------------------------------------------------------------- */ + /* The type flags provide quick access to certain properties of a closure. */ #define _HNF (1<<0) /* head normal form? */ @@ -206,7 +205,14 @@ typedef union { typedef StgClosure* StgSRT[]; +/* + * The entry code pointer must be the first word of an info table. + * See the comment in ghc/rts/Storage.h (Plan C) for details. + */ typedef struct _StgInfoTable { +#ifndef TABLES_NEXT_TO_CODE + StgFunPtr entry; +#endif StgSRT *srt; /* pointer to the SRT table */ #if defined(PAR) || defined(GRAN) struct _StgInfoTable *rbh_infoptr; @@ -231,7 +237,6 @@ typedef struct _StgInfoTable { #ifdef TABLES_NEXT_TO_CODE StgCode code[FLEXIBLE_ARRAY]; #else - StgFunPtr entry; StgFunPtr vector[FLEXIBLE_ARRAY]; #endif } StgInfoTable; @@ -243,7 +248,12 @@ typedef struct _StgInfoTable { * stack. We distinguish the two by checking whether the pointer is * into text-space or not. */ - + +#if ia64_TARGET_ARCH +/* We need to give the compiler a gentle hint to put it in text-space */ +#define INFO_TBL_CONST const __attribute__((section (".text"))) +#else #define INFO_TBL_CONST const +#endif #endif /* INFOTABLES_H */