projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[project @ 2001-04-10 13:52:31 by sewardj]
[ghc-hetmet.git]
/
ghc
/
includes
/
StgMacros.h
diff --git
a/ghc/includes/StgMacros.h
b/ghc/includes/StgMacros.h
index
c5ebfa5
..
444a5c2
100644
(file)
--- a/
ghc/includes/StgMacros.h
+++ b/
ghc/includes/StgMacros.h
@@
-1,5
+1,5
@@
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: StgMacros.h,v 1.28 2000/07/20 17:06:41 rrt Exp $
+ * $Id: StgMacros.h,v 1.37 2000/12/04 12:31:20 simonmar Exp $
*
* (c) The GHC Team, 1998-1999
*
*
* (c) The GHC Team, 1998-1999
*
@@
-47,11
+47,9
@@
#define EF_(f) extern F_ f(void)
#define EDF_(f) extern DLLIMPORT F_ f(void)
#define EF_(f) extern F_ f(void)
#define EDF_(f) extern DLLIMPORT F_ f(void)
-/* Use this rather than EF_ or EDF_ throughout the RTS */
-#define ERTSF_(f) extern DLL_IMPORT_RTS F_ f(void)
-
+#define EXTINFO_RTS extern DLL_IMPORT_RTS INFO_TBL_CONST StgInfoTable
#define ED_ extern
#define ED_ extern
-#define EDD_ extern DLLIMPORT
+#define EDD_ extern DLLIMPORT
#define ED_RO_ extern const
#define ID_ static
#define ID_RO_ static const
#define ED_RO_ extern const
#define ID_ static
#define ID_RO_ static const
@@
-296,7
+294,7
@@
static inline int IS_ARG_TAG( StgWord p ) { return p <= ARGTAG_MAX; }
#define HP_CHK_GEN(headroom,liveness,reentry,tag_assts) \
if ((Hp += (headroom)) > HpLim ) { \
#define HP_CHK_GEN(headroom,liveness,reentry,tag_assts) \
if ((Hp += (headroom)) > HpLim ) { \
- ERTSF_(stg_gen_chk); \
+ EXTFUN_RTS(stg_gen_chk); \
tag_assts \
R9.w = (W_)LIVENESS_MASK(liveness); \
R10.w = (W_)reentry; \
tag_assts \
R9.w = (W_)LIVENESS_MASK(liveness); \
R10.w = (W_)reentry; \
@@
-309,7
+307,7
@@
static inline int IS_ARG_TAG( StgWord p ) { return p <= ARGTAG_MAX; }
#define STK_CHK_GEN(headroom,liveness,reentry,tag_assts) \
if ((Sp - (headroom)) < SpLim) { \
#define STK_CHK_GEN(headroom,liveness,reentry,tag_assts) \
if ((Sp - (headroom)) < SpLim) { \
- ERTSF_(stg_gen_chk); \
+ EXTFUN_RTS(stg_gen_chk); \
tag_assts \
R9.w = (W_)LIVENESS_MASK(liveness); \
R10.w = (W_)reentry; \
tag_assts \
R9.w = (W_)LIVENESS_MASK(liveness); \
R10.w = (W_)reentry; \
@@
-318,7
+316,7
@@
static inline int IS_ARG_TAG( StgWord p ) { return p <= ARGTAG_MAX; }
#define MAYBE_GC(liveness,reentry) \
if (doYouWantToGC()) { \
#define MAYBE_GC(liveness,reentry) \
if (doYouWantToGC()) { \
- ERTSF_(stg_gen_hp); \
+ EXTFUN_RTS(stg_gen_hp); \
R9.w = (W_)LIVENESS_MASK(liveness); \
R10.w = (W_)reentry; \
JMP_(stg_gen_hp); \
R9.w = (W_)LIVENESS_MASK(liveness); \
R10.w = (W_)reentry; \
JMP_(stg_gen_hp); \
@@
-331,8
+329,8
@@
static inline int IS_ARG_TAG( StgWord p ) { return p <= ARGTAG_MAX; }
out to be slowing us down we can make specialised ones.
-------------------------------------------------------------------------- */
out to be slowing us down we can make specialised ones.
-------------------------------------------------------------------------- */
-ERTSF_(stg_gen_yield);
-ERTSF_(stg_gen_block);
+EXTFUN_RTS(stg_gen_yield);
+EXTFUN_RTS(stg_gen_block);
#define YIELD(liveness,reentry) \
{ \
#define YIELD(liveness,reentry) \
{ \
@@
-350,7
+348,7
@@
ERTSF_(stg_gen_block);
#define BLOCK_NP(ptrs) \
{ \
#define BLOCK_NP(ptrs) \
{ \
- ERTSF_(stg_block_##ptrs); \
+ EXTFUN_RTS(stg_block_##ptrs); \
JMP_(stg_block_##ptrs); \
}
JMP_(stg_block_##ptrs); \
}
@@
-380,11
+378,8
@@
ERTSF_(stg_gen_block);
We use a RET_DYN frame the same as for a dynamic heap check.
------------------------------------------------------------------------- */
We use a RET_DYN frame the same as for a dynamic heap check.
------------------------------------------------------------------------- */
-#if COMPILING_RTS
-EI_(stg_gen_chk_info);
-#else
-EDI_(stg_gen_chk_info);
-#endif
+EXTINFO_RTS(stg_gen_chk_info);
+
/* -----------------------------------------------------------------------------
Vectored Returns
/* -----------------------------------------------------------------------------
Vectored Returns
@@
-427,7
+422,7
@@
EDI_(stg_gen_chk_info);
} \
} \
} \
} \
} \
} \
- SET_INFO(R1.cl,&BLACKHOLE_info)
+ SET_INFO(R1.cl,&stg_BLACKHOLE_info)
# define UPD_BH_SINGLE_ENTRY(info) \
TICK_UPD_BH_SINGLE_ENTRY(); \
{ \
# define UPD_BH_SINGLE_ENTRY(info) \
TICK_UPD_BH_SINGLE_ENTRY(); \
{ \
@@
-441,14
+436,14
@@
EDI_(stg_gen_chk_info);
} \
} \
} \
} \
} \
} \
- SET_INFO(R1.cl,&BLACKHOLE_info)
+ SET_INFO(R1.cl,&stg_BLACKHOLE_info)
# else
# define UPD_BH_UPDATABLE(info) \
TICK_UPD_BH_UPDATABLE(); \
# else
# define UPD_BH_UPDATABLE(info) \
TICK_UPD_BH_UPDATABLE(); \
- SET_INFO(R1.cl,&BLACKHOLE_info)
+ SET_INFO(R1.cl,&stg_BLACKHOLE_info)
# define UPD_BH_SINGLE_ENTRY(info) \
TICK_UPD_BH_SINGLE_ENTRY(); \
# define UPD_BH_SINGLE_ENTRY(info) \
TICK_UPD_BH_SINGLE_ENTRY(); \
- SET_INFO(R1.cl,&SE_BLACKHOLE_info)
+ SET_INFO(R1.cl,&stg_SE_BLACKHOLE_info)
# endif
#else /* !EAGER_BLACKHOLING */
# define UPD_BH_UPDATABLE(thunk) /* nothing */
# endif
#else /* !EAGER_BLACKHOLING */
# define UPD_BH_UPDATABLE(thunk) /* nothing */
@@
-622,7
+617,7
@@
static inline StgInt64 PK_Int64(W_ p_src[])
Catch frames
-------------------------------------------------------------------------- */
Catch frames
-------------------------------------------------------------------------- */
-extern DLL_IMPORT_DATA const StgPolyInfoTable catch_frame_info;
+extern DLL_IMPORT_RTS const StgPolyInfoTable stg_catch_frame_info;
/* -----------------------------------------------------------------------------
Seq frames
/* -----------------------------------------------------------------------------
Seq frames
@@
-631,14
+626,14
@@
extern DLL_IMPORT_DATA const StgPolyInfoTable catch_frame_info;
an update...
-------------------------------------------------------------------------- */
an update...
-------------------------------------------------------------------------- */
-extern DLL_IMPORT_DATA const StgPolyInfoTable seq_frame_info;
+extern DLL_IMPORT_RTS const StgPolyInfoTable stg_seq_frame_info;
#define PUSH_SEQ_FRAME(sp) \
{ \
StgSeqFrame *__frame; \
TICK_SEQF_PUSHED(); \
__frame = (StgSeqFrame *)(sp); \
#define PUSH_SEQ_FRAME(sp) \
{ \
StgSeqFrame *__frame; \
TICK_SEQF_PUSHED(); \
__frame = (StgSeqFrame *)(sp); \
- SET_HDR_(__frame,&seq_frame_info,CCCS); \
+ SET_HDR_(__frame,&stg_seq_frame_info,CCCS); \
__frame->link = Su; \
Su = (StgUpdateFrame *)__frame; \
}
__frame->link = Su; \
Su = (StgUpdateFrame *)__frame; \
}
@@
-648,7
+643,11
@@
extern DLL_IMPORT_DATA const StgPolyInfoTable seq_frame_info;
-------------------------------------------------------------------------- */
#if defined(USE_SPLIT_MARKERS)
-------------------------------------------------------------------------- */
#if defined(USE_SPLIT_MARKERS)
+#if defined(cygwin32_TARGET_OS) || defined(mingw32_TARGET_OS)
+#define __STG_SPLIT_MARKER __asm__("\n___stg_split_marker:");
+#else
#define __STG_SPLIT_MARKER __asm__("\n__stg_split_marker:");
#define __STG_SPLIT_MARKER __asm__("\n__stg_split_marker:");
+#endif
#else
#define __STG_SPLIT_MARKER /* nothing */
#endif
#else
#define __STG_SPLIT_MARKER /* nothing */
#endif
@@
-689,7
+688,6
@@
SaveThreadState(void)
tso = CurrentTSO;
tso->sp = Sp;
tso->su = Su;
tso = CurrentTSO;
tso->sp = Sp;
tso->su = Su;
- tso->splim = SpLim;
CloseNursery(Hp);
#ifdef REG_CurrentTSO
CloseNursery(Hp);
#ifdef REG_CurrentTSO
@@
-715,7
+713,7
@@
LoadThreadState (void)
tso = CurrentTSO;
Sp = tso->sp;
Su = tso->su;
tso = CurrentTSO;
Sp = tso->sp;
Su = tso->su;
- SpLim = tso->splim;
+ SpLim = (P_)&(tso->stack) + RESERVED_STACK_WORDS;
OpenNursery(Hp,HpLim);
#ifdef REG_CurrentNursery
OpenNursery(Hp,HpLim);
#ifdef REG_CurrentNursery
@@
-751,10
+749,8
@@
LoadThreadState (void)
STGCALL1(getStablePtr,reg_fe_binder)
#define REGISTER_IMPORT(reg_mod_name) \
STGCALL1(getStablePtr,reg_fe_binder)
#define REGISTER_IMPORT(reg_mod_name) \
- do { ERTSF_(reg_mod_name); \
- PUSH_INIT_STACK(reg_mod_name) ; \
- } while (0)
-
+ PUSH_INIT_STACK(reg_mod_name)
+
#define END_MOD_INIT() \
}}; \
JMP_(POP_INIT_STACK()); \
#define END_MOD_INIT() \
}}; \
JMP_(POP_INIT_STACK()); \