diff options
author | Patrick Palka <patrick@parcs.ath.cx> | 2013-06-26 10:21:06 -0400 |
---|---|---|
committer | Austin Seipp <aseipp@pobox.com> | 2013-07-06 17:21:36 -0500 |
commit | a5913a23bcade044e4c693f05e8a60605c8d5618 (patch) | |
tree | 3fa23095b8be61a32f086e266865d01589d49d28 /compiler/codeGen/StgCmmExpr.hs | |
parent | 405a20c671df30a977f72f6ee79a3dfc4dac60e5 (diff) | |
download | haskell-a5913a23bcade044e4c693f05e8a60605c8d5618.tar.gz |
Avoid needlessly splitting a UniqSupply when extracting a Unique (#8041)
In many places, 'splitUniqSupply' + 'uniqFromSupply' is used to split a
UniqSupply into a Unique and a new UniqSupply. In such places we should
instead use the more efficient and more appropriate
'takeUniqFromSupply' (or equivalent).
Not only is the former method slower, it also generates and throws away
an extra Unique.
Signed-off-by: Austin Seipp <aseipp@pobox.com>
Diffstat (limited to 'compiler/codeGen/StgCmmExpr.hs')
-rw-r--r-- | compiler/codeGen/StgCmmExpr.hs | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/compiler/codeGen/StgCmmExpr.hs b/compiler/codeGen/StgCmmExpr.hs index d7edf8e193..3d60def450 100644 --- a/compiler/codeGen/StgCmmExpr.hs +++ b/compiler/codeGen/StgCmmExpr.hs @@ -43,7 +43,6 @@ import Maybes import Util import FastString import Outputable -import UniqSupply import Control.Monad (when,void) @@ -70,8 +69,8 @@ cgExpr (StgLit lit) = do cmm_lit <- cgLit lit cgExpr (StgLet binds expr) = do { cgBind binds; cgExpr expr } cgExpr (StgLetNoEscape _ _ binds expr) = - do { us <- newUniqSupply - ; let join_id = mkBlockId (uniqFromSupply us) + do { u <- newUnique + ; let join_id = mkBlockId u ; cgLneBinds join_id binds ; r <- cgExpr expr ; emitLabel join_id |