comparison src/data.c @ 2645:e6854ec89f8e

[xemacs-hg @ 2005-03-10 09:12:36 by crestani] KKCC backtrace. 2005-03-01 Marcus Crestani <crestani@informatik.uni-tuebingen.de> * alloc.c: Add functionality for backtracing the KKCC mark algorithm. * alloc.c (kkcc_backtrace): New. * alloc.c (kkcc_bt_push): New. * alloc.c (kkcc_gc_stack_push): * alloc.c (kkcc_gc_stack_push_lisp_object): * alloc.c (mark_object_maybe_checking_free): * alloc.c (mark_struct_contents): * alloc.c (kkcc_marking): * alloc.c (mark_object): * data.c (finish_marking_weak_lists): * data.c (continue_marking_ephemerons): * data.c (finish_marking_ephemerons): * elhash.c (MARK_OBJ): * lisp.h: * profile.c (mark_profiling_info_maphash): Add level (current depth of mark tree) and pos (position within description) as additional arguments to KKCC mark functions.
author crestani
date Thu, 10 Mar 2005 09:12:38 +0000
parents 9f70af3ac939
children 6fa9919a9a0b
comparison
equal deleted inserted replaced
2644:0b4097b3552f 2645:e6854ec89f8e
2737 } 2737 }
2738 2738
2739 if (need_to_mark_elem && ! marked_p (elem)) 2739 if (need_to_mark_elem && ! marked_p (elem))
2740 { 2740 {
2741 #ifdef USE_KKCC 2741 #ifdef USE_KKCC
2742 kkcc_gc_stack_push_lisp_object (elem); 2742 kkcc_gc_stack_push_lisp_object (elem, 0, -1);
2743 #else /* NOT USE_KKCC */ 2743 #else /* NOT USE_KKCC */
2744 mark_object (elem); 2744 mark_object (elem);
2745 #endif /* NOT USE_KKCC */ 2745 #endif /* NOT USE_KKCC */
2746 did_mark = 1; 2746 did_mark = 1;
2747 } 2747 }
2765 /* In case of imperfect list, need to mark the final cons 2765 /* In case of imperfect list, need to mark the final cons
2766 because we're not removing it */ 2766 because we're not removing it */
2767 if (!NILP (rest2) && ! marked_p (rest2)) 2767 if (!NILP (rest2) && ! marked_p (rest2))
2768 { 2768 {
2769 #ifdef USE_KKCC 2769 #ifdef USE_KKCC
2770 kkcc_gc_stack_push_lisp_object (rest2); 2770 kkcc_gc_stack_push_lisp_object (rest2, 0, -1);
2771 #else /* NOT USE_KKCC */ 2771 #else /* NOT USE_KKCC */
2772 mark_object (rest2); 2772 mark_object (rest2);
2773 #endif /* NOT USE_KKCC */ 2773 #endif /* NOT USE_KKCC */
2774 did_mark = 1; 2774 did_mark = 1;
2775 } 2775 }
3146 MARK_CONS (XCONS (XEPHEMERON (rest)->cons_chain)); 3146 MARK_CONS (XCONS (XEPHEMERON (rest)->cons_chain));
3147 if (marked_p (XEPHEMERON (rest)->key)) 3147 if (marked_p (XEPHEMERON (rest)->key))
3148 { 3148 {
3149 #ifdef USE_KKCC 3149 #ifdef USE_KKCC
3150 kkcc_gc_stack_push_lisp_object 3150 kkcc_gc_stack_push_lisp_object
3151 (XCAR (XEPHEMERON (rest)->cons_chain)); 3151 (XCAR (XEPHEMERON (rest)->cons_chain), 0, -1);
3152 #else /* NOT USE_KKCC */ 3152 #else /* NOT USE_KKCC */
3153 mark_object (XCAR (XEPHEMERON (rest)->cons_chain)); 3153 mark_object (XCAR (XEPHEMERON (rest)->cons_chain));
3154 #endif /* NOT USE_KKCC */ 3154 #endif /* NOT USE_KKCC */
3155 did_mark = 1; 3155 did_mark = 1;
3156 XSET_EPHEMERON_NEXT (rest, Vnew_all_ephemerons); 3156 XSET_EPHEMERON_NEXT (rest, Vnew_all_ephemerons);
3196 if (! NILP (XEPHEMERON_FINALIZER (rest))) 3196 if (! NILP (XEPHEMERON_FINALIZER (rest)))
3197 { 3197 {
3198 MARK_CONS (XCONS (XEPHEMERON (rest)->cons_chain)); 3198 MARK_CONS (XCONS (XEPHEMERON (rest)->cons_chain));
3199 #ifdef USE_KKCC 3199 #ifdef USE_KKCC
3200 kkcc_gc_stack_push_lisp_object 3200 kkcc_gc_stack_push_lisp_object
3201 (XCAR (XEPHEMERON (rest)->cons_chain)); 3201 (XCAR (XEPHEMERON (rest)->cons_chain), 0, -1);
3202 #else /* NOT USE_KKCC */ 3202 #else /* NOT USE_KKCC */
3203 mark_object (XCAR (XEPHEMERON (rest)->cons_chain)); 3203 mark_object (XCAR (XEPHEMERON (rest)->cons_chain));
3204 #endif /* NOT USE_KKCC */ 3204 #endif /* NOT USE_KKCC */
3205 3205
3206 /* Register the finalizer */ 3206 /* Register the finalizer */