[BACK]Return to mark_rts.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gc

Diff for /OpenXM_contrib/gc/Attic/mark_rts.c between version 1.1 and 1.1.1.3

version 1.1, 1999/11/27 10:58:32 version 1.1.1.3, 2000/12/01 14:48:24
Line 412  ptr_t cold_gc_frame;
Line 412  ptr_t cold_gc_frame;
         if (0 == cold_gc_frame) return;          if (0 == cold_gc_frame) return;
 #       ifdef STACK_GROWS_DOWN  #       ifdef STACK_GROWS_DOWN
           GC_push_all_eager(GC_approx_sp(), cold_gc_frame);            GC_push_all_eager(GC_approx_sp(), cold_gc_frame);
             /* For IA64, the register stack backing store is handled      */
             /* in the thread-specific code.                               */
 #       else  #       else
           GC_push_all_eager( cold_gc_frame, GC_approx_sp() );            GC_push_all_eager( cold_gc_frame, GC_approx_sp() );
 #       endif  #       endif
Line 419  ptr_t cold_gc_frame;
Line 421  ptr_t cold_gc_frame;
 #       ifdef STACK_GROWS_DOWN  #       ifdef STACK_GROWS_DOWN
             GC_push_all_stack_partially_eager( GC_approx_sp(), GC_stackbottom,              GC_push_all_stack_partially_eager( GC_approx_sp(), GC_stackbottom,
                                                cold_gc_frame );                                                 cold_gc_frame );
   #           ifdef IA64
                 /* We also need to push the register stack backing store. */
                 /* This should really be done in the same way as the      */
                 /* regular stack.  For now we fudge it a bit.             */
                 /* Note that the backing store grows up, so we can't use  */
                 /* GC_push_all_stack_partially_eager.                     */
                 {
                   extern word GC_save_regs_ret_val;
                           /* Previously set to backing store pointer.     */
                   ptr_t bsp = (ptr_t) GC_save_regs_ret_val;
                   ptr_t cold_gc_bs_pointer;
   #               ifdef ALL_INTERIOR_POINTERS
                     cold_gc_bs_pointer = bsp - 2048;
                     if (cold_gc_bs_pointer < BACKING_STORE_BASE) {
                       cold_gc_bs_pointer = BACKING_STORE_BASE;
                     }
                     GC_push_all(BACKING_STORE_BASE, cold_gc_bs_pointer);
   #               else
                     cold_gc_bs_pointer = BACKING_STORE_BASE;
   #               endif
                   GC_push_all_eager(cold_gc_bs_pointer, bsp);
                   /* All values should be sufficiently aligned that we    */
                   /* dont have to worry about the boundary.               */
                 }
   #           endif
 #       else  #       else
             GC_push_all_stack_partially_eager( GC_stackbottom, GC_approx_sp(),              GC_push_all_stack_partially_eager( GC_stackbottom, GC_approx_sp(),
                                                cold_gc_frame );                                                 cold_gc_frame );
Line 477  ptr_t cold_gc_frame;
Line 504  ptr_t cold_gc_frame;
         /* In the USE_GENERIC_PUSH_REGS case, this is done inside       */          /* In the USE_GENERIC_PUSH_REGS case, this is done inside       */
         /* GC_push_regs, so that we catch callee-save registers saved   */          /* GC_push_regs, so that we catch callee-save registers saved   */
         /* inside the GC_push_regs frame.                               */          /* inside the GC_push_regs frame.                               */
           /* In the case of linux threads on Ia64, the hot section of     */
           /* the main stack is marked here, but the register stack        */
           /* backing store is handled in the threads-specific code.       */
 #   endif  #   endif
     if (GC_push_other_roots != 0) (*GC_push_other_roots)();      if (GC_push_other_roots != 0) (*GC_push_other_roots)();
         /* In the threads case, this also pushes thread stacks. */          /* In the threads case, this also pushes thread stacks. */

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.1.1.3

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>