X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FEvac.c;h=fb9f4c49b2decb7a3e1833d1d12ae357a4ce2857;hb=698364afaf2f346227910c0cf8d4f1929cdc56ef;hp=fe788cdb6ff9ef011c88456bded8d3adb72ea246;hpb=f2ca6deece1ed1724efdd6d2293dc7642059b2f2;p=ghc-hetmet.git diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c index fe788cd..fb9f4c4 100644 --- a/rts/sm/Evac.c +++ b/rts/sm/Evac.c @@ -401,7 +401,8 @@ loop: switch (info->type) { case THUNK_STATIC: - if (info->srt_bitmap != 0) { + if (info->srt_bitmap != 0 && + *THUNK_STATIC_LINK((StgClosure *)q) == NULL) { ACQUIRE_SPIN_LOCK(&static_objects_sync); if (*THUNK_STATIC_LINK((StgClosure *)q) == NULL) { *THUNK_STATIC_LINK((StgClosure *)q) = static_objects; @@ -412,7 +413,8 @@ loop: return q; case FUN_STATIC: - if (info->srt_bitmap != 0) { + if (info->srt_bitmap != 0 && + *FUN_STATIC_LINK((StgClosure *)q) == NULL) { ACQUIRE_SPIN_LOCK(&static_objects_sync); if (*FUN_STATIC_LINK((StgClosure *)q) == NULL) { *FUN_STATIC_LINK((StgClosure *)q) = static_objects;