From 26f4bfc82f2b2359259578e9c54d476fc2de650f Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 2 Feb 2011 11:44:17 +0000 Subject: [PATCH] do a bit of by-hand CSE --- rts/PrimOps.cmm | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index 4f6c252..8c5c14f 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -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 { -- 1.7.10.4