Fix for earger blackholing of thunks with no free variables (#6146)
authorSimon Marlow <marlowsd@gmail.com>
Thu, 7 Jun 2012 14:45:32 +0000 (15:45 +0100)
committerSimon Marlow <marlowsd@gmail.com>
Thu, 7 Jun 2012 15:59:02 +0000 (16:59 +0100)
commit21a53a1cd5a9784aca7b78cc972f917e71938124
tree47bc730293502ddfef578182bf47ba6fe2d45b04
parent20ba7f1a7a7b05acd81124f1567a3a103bcd0d1b
Fix for earger blackholing of thunks with no free variables (#6146)

A thunk with no free variables was not getting blackholed when
-feager-blackholing was on, but we were nevertheless pushing the
stg_bh_upd_frame version of the update frame that expects to see a
black hole.

I fixed this twice for good measure:

 - we now call blackHoleOnEntry when pushing the update frame to check
   whether the closure was actually blackholed, and so that we use the
   same predicate in both places

 - we now black hole thunks even if they have no free variables.
   These only occur when optimisation is off, but presumably if you say
   -feager-blackholing then that's what you want to happen.
compiler/codeGen/CgClosure.lhs
compiler/codeGen/ClosureInfo.lhs
compiler/codeGen/StgCmmBind.hs
compiler/codeGen/StgCmmClosure.hs