do a bit of by-hand CSE
authorSimon Marlow <marlowsd@gmail.com>
Wed, 2 Feb 2011 11:44:17 +0000 (11:44 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Wed, 2 Feb 2011 11:44:17 +0000 (11:44 +0000)
rts/PrimOps.cmm

index 4f6c252..8c5c14f 100644 (file)
@@ -1133,13 +1133,17 @@ stg_newMVarzh
 }
 
 
-#define PerformTake(stack, value)                       \
-    W_[StgStack_sp(stack) + WDS(1)] = value;            \
-    W_[StgStack_sp(stack) + WDS(0)] = stg_gc_unpt_r1_info;
-
-#define PerformPut(stack,lval)                      \
-    StgStack_sp(stack) = StgStack_sp(stack) + WDS(3);   \
-    lval = W_[StgStack_sp(stack) - WDS(1)];
+#define PerformTake(stack, value)               \
+    W_ sp;                                      \
+    sp = StgStack_sp(stack);                    \
+    W_[sp + WDS(1)] = value;                    \
+    W_[sp + WDS(0)] = stg_gc_unpt_r1_info;
+
+#define PerformPut(stack,lval)                  \
+    W_ sp;                                      \
+    sp = StgStack_sp(stack) + WDS(3);           \
+    StgStack_sp(stack) = sp;                    \
+    lval = W_[sp - WDS(1)];
 
 stg_takeMVarzh
 {