Change pretty printing of InlinePrag slightly
[ghc-hetmet.git] / rts / sm / Evac.c
index 93d5d58..76026b0 100644 (file)
@@ -239,10 +239,11 @@ copy(StgClosure **p, const StgInfoTable *info,
 STATIC_INLINE void
 evacuate_large(StgPtr p)
 {
-  bdescr *bd = Bdescr(p);
+  bdescr *bd;
   generation *gen, *new_gen;
   gen_workspace *ws;
     
+  bd = Bdescr(p);
   gen = bd->gen;
   ACQUIRE_SPIN_LOCK(&gen->sync_large_objects);
 
@@ -271,7 +272,7 @@ evacuate_large(StgPtr p)
   
   /* link it on to the evacuated large object list of the destination gen
    */
-  new_gen = gen->to;
+  new_gen = bd->dest;
   if (new_gen < gct->evac_gen) {
       if (gct->eager_promotion) {
          new_gen = gct->evac_gen;
@@ -877,7 +878,7 @@ selector_chain:
         } while (info_ptr == (W_)&stg_WHITEHOLE_info);
 
         // make sure someone else didn't get here first...
-        if (IS_FORWARDING_PTR(p) || 
+        if (IS_FORWARDING_PTR(info_ptr) || 
             INFO_PTR_TO_STRUCT(info_ptr)->type != THUNK_SELECTOR) {
             // v. tricky now.  The THUNK_SELECTOR has been evacuated
             // by another thread, and is now either a forwarding ptr or IND.