Mercurial > hg > xemacs-beta
comparison src/elhash.c @ 1598:ac1be85b4a5f
[xemacs-hg @ 2003-07-31 13:32:24 by crestani]
2003-07-29 Marcus Crestani <crestani@informatik.uni-tuebingen.de>
Markus Kaltenbach <makalten@informatik.uni-tuebingen.de>
* README.kkcc: Aligned to the changes.
* alloc.c: Implemented the kkcc_gc_stack.
(kkcc_gc_stack_init):
(kkcc_gc_stack_free):
(kkcc_gc_stack_realloc):
(kkcc_gc_stack_full):
(kkcc_gc_stack_empty):
(kkcc_gc_stack_push):
(kkcc_gc_stack_pop):
(kkcc_gc_stack_push_lisp_object):
(mark_object_maybe_checking_free): Push objects on kkcc stack instead
of marking.
(mark_struct_contents): Push objects on kkcc stack instead of marking.
(kkcc_marking): KKCC mark algorithm using the kkcc_gc_stack.
(mark_object): Removed KKCC ifdefs.
(garbage_collect_1): Push objects on kkcc stack instead of marking.
* data.c: Added XD_FLAG_NO_KKCC to ephemeron_description and to
weak_list_description.
* data.c (finish_marking_weak_lists): Push objects on kkcc stack
instead of marking.
(continue_marking_ephemerons): Push objects on kkcc stack instead
of marking.
(finish_marking_ephemerons): Push objects on kkcc stack instead
of marking.
* elhash.c (finish_marking_weak_hash_tables): Push objects on kkcc
stack instead of marking.
* eval.c: Added XD_FLAG_NO_KKCC to subr_description.
* lisp.h: Added prototype for kkcc_gc_stack_push_lisp_object.
* profile.c (mark_profiling_info_maphash): Push keys on kkcc stack
instead of marking.
author | crestani |
---|---|
date | Thu, 31 Jul 2003 13:32:26 +0000 |
parents | f3437b56874d |
children | a8d8f419b459 |
comparison
equal
deleted
inserted
replaced
1597:4b6ee17c5f37 | 1598:ac1be85b4a5f |
---|---|
1427 | 1427 |
1428 | 1428 |
1429 /************************************************************************/ | 1429 /************************************************************************/ |
1430 /* garbage collecting weak hash tables */ | 1430 /* garbage collecting weak hash tables */ |
1431 /************************************************************************/ | 1431 /************************************************************************/ |
1432 #ifdef USE_KKCC | |
1433 #define MARK_OBJ(obj) do { \ | |
1434 Lisp_Object mo_obj = (obj); \ | |
1435 if (!marked_p (mo_obj)) \ | |
1436 { \ | |
1437 kkcc_gc_stack_push_lisp_object (mo_obj); \ | |
1438 did_mark = 1; \ | |
1439 } \ | |
1440 } while (0) | |
1441 | |
1442 #else /* NO USE_KKCC */ | |
1443 | |
1432 #define MARK_OBJ(obj) do { \ | 1444 #define MARK_OBJ(obj) do { \ |
1433 Lisp_Object mo_obj = (obj); \ | 1445 Lisp_Object mo_obj = (obj); \ |
1434 if (!marked_p (mo_obj)) \ | 1446 if (!marked_p (mo_obj)) \ |
1435 { \ | 1447 { \ |
1436 mark_object (mo_obj); \ | 1448 mark_object (mo_obj); \ |
1437 did_mark = 1; \ | 1449 did_mark = 1; \ |
1438 } \ | 1450 } \ |
1439 } while (0) | 1451 } while (0) |
1452 #endif /*NO USE_KKCC */ | |
1440 | 1453 |
1441 | 1454 |
1442 /* Complete the marking for semi-weak hash tables. */ | 1455 /* Complete the marking for semi-weak hash tables. */ |
1443 int | 1456 int |
1444 finish_marking_weak_hash_tables (void) | 1457 finish_marking_weak_hash_tables (void) |