summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorIan Lynagh <ian@well-typed.com>2012-09-21 17:56:14 +0100
committerIan Lynagh <ian@well-typed.com>2012-09-21 18:14:56 +0100
commitef3339cf634aceddae43cc42bfe545a5461ebe36 (patch)
tree8c69ae543ac56076234c6530816318d9696b7a72 /includes
parent5f01b6dd095955e9a52f5624213a7c54dc5e1a8c (diff)
downloadhaskell-ef3339cf634aceddae43cc42bfe545a5461ebe36.tar.gz
Convert more RTS macros to functions
No size changes in the non-debug object files
Diffstat (limited to 'includes')
-rw-r--r--includes/rts/storage/ClosureMacros.h17
1 files changed, 12 insertions, 5 deletions
diff --git a/includes/rts/storage/ClosureMacros.h b/includes/rts/storage/ClosureMacros.h
index 146564a17f..8f071a21d7 100644
--- a/includes/rts/storage/ClosureMacros.h
+++ b/includes/rts/storage/ClosureMacros.h
@@ -46,11 +46,14 @@
-------------------------------------------------------------------------- */
-#define SET_INFO(c,i) ((c)->header.info = (i))
-#define GET_INFO(c) ((c)->header.info)
-#define GET_ENTRY(c) (ENTRY_CODE(GET_INFO(c)))
+INLINE_HEADER void SET_INFO(StgClosure *c, const StgInfoTable *info) {
+ c->header.info = info;
+}
+INLINE_HEADER const StgInfoTable *GET_INFO(StgClosure *c) {
+ return c->header.info;
+}
-#define GET_TAG(con) (get_itbl(con)->srt_bitmap)
+#define GET_ENTRY(c) (ENTRY_CODE(GET_INFO(c)))
#ifdef TABLES_NEXT_TO_CODE
EXTERN_INLINE StgInfoTable *INFO_PTR_TO_STRUCT(const StgInfoTable *info);
@@ -90,6 +93,10 @@ INLINE_HEADER StgThunkInfoTable *get_thunk_itbl(const StgClosure *c) {return THU
INLINE_HEADER StgConInfoTable *get_con_itbl(const StgClosure *c) {return CON_INFO_PTR_TO_STRUCT((c)->header.info);}
+INLINE_HEADER StgHalfWord GET_TAG(const StgClosure *con) {
+ return get_itbl(con)->srt_bitmap;
+}
+
/* -----------------------------------------------------------------------------
Macros for building closures
-------------------------------------------------------------------------- */
@@ -142,7 +149,7 @@ INLINE_HEADER StgConInfoTable *get_con_itbl(const StgClosure *c) {return CON_INF
// Use when changing a closure from one kind to another
#define OVERWRITE_INFO(c, new_info) \
OVERWRITING_CLOSURE((StgClosure *)(c)); \
- SET_INFO((c), (new_info)); \
+ SET_INFO((StgClosure *)(c), (new_info)); \
LDV_RECORD_CREATE(c);
/* -----------------------------------------------------------------------------