summaryrefslogtreecommitdiff
path: root/includes/Cmm.h
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-10-31 11:18:36 +0000
committerSimon Marlow <marlowsd@gmail.com>2012-10-31 11:21:30 +0000
commit984149bf8845dd897e038943b6177ae4fb184591 (patch)
tree24d1a646c864e58c526c39746735804afb817811 /includes/Cmm.h
parentab5008d4498177dd375f942618ceab46ae37671a (diff)
downloadhaskell-984149bf8845dd897e038943b6177ae4fb184591.tar.gz
Fix C macro bug that was causing some stack checks to erroneously succeed
Diffstat (limited to 'includes/Cmm.h')
-rw-r--r--includes/Cmm.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/includes/Cmm.h b/includes/Cmm.h
index 211d2a86fe..5ef6c2d282 100644
--- a/includes/Cmm.h
+++ b/includes/Cmm.h
@@ -372,8 +372,8 @@
CCCS_ALLOC(bytes);
#define HEAP_CHECK(bytes,failure) \
- Hp = Hp + bytes; \
- if (Hp > HpLim) { HpAlloc = bytes; failure; } \
+ Hp = Hp + (bytes); \
+ if (Hp > HpLim) { HpAlloc = (bytes); failure; } \
TICK_ALLOC_HEAP_NOCTR(bytes);
#define ALLOC_PRIM_WITH_CUSTOM_FAILURE(bytes,failure) \
@@ -400,8 +400,8 @@
#define HP_CHK_P(bytes, fun, arg) \
HEAP_CHECK(bytes, GC_PRIM_P(fun,arg))
-#define ALLOC_P_TICKY(alloc, fun, arg) \
- HP_CHK_P(alloc); \
+#define ALLOC_P_TICKY(alloc, fun, arg) \
+ HP_CHK_P(alloc); \
TICK_ALLOC_HEAP_NOCTR(alloc);
#define CHECK_GC() \
@@ -473,22 +473,22 @@
}
#define STK_CHK(n, fun) \
- if (Sp - n < SpLim) { \
+ if (Sp - (n) < SpLim) { \
GC_PRIM(fun) \
}
#define STK_CHK_P(n, fun, arg) \
- if (Sp - n < SpLim) { \
+ if (Sp - (n) < SpLim) { \
GC_PRIM_P(fun,arg) \
}
#define STK_CHK_PP(n, fun, arg1, arg2) \
- if (Sp - n < SpLim) { \
+ if (Sp - (n) < SpLim) { \
GC_PRIM_PP(fun,arg1,arg2) \
}
#define STK_CHK_ENTER(n, closure) \
- if (Sp - n < SpLim) { \
+ if (Sp - (n) < SpLim) { \
jump __stg_gc_enter_1(closure); \
}