|
20 | 20 | #define DGC_PRINT(...) |
21 | 21 | #endif |
22 | 22 |
|
23 | | -#if defined(USE_BOEHM) && defined(USE_PRECISE_GC) |
24 | | -extern "C" { |
25 | | -void* obj_skip(void*); |
26 | | -}; |
27 | | -#define GC_LISP_OBJECT_MARK |
28 | | -#include "obj_scan.cc" |
29 | | -#undef GC_LISP_OBJECT_MARK |
30 | | -#endif |
31 | | - |
32 | 23 | namespace gctools { |
33 | 24 |
|
34 | 25 | uintptr_t global_lisp_kind; |
@@ -400,17 +391,12 @@ void walk_stamp_field_layout_tables(WalkKind walk, std::ostream& fout) { |
400 | 391 | } |
401 | 392 |
|
402 | 393 | // Use boehm in the precise GC mode |
403 | | - // global_container_proc_index = GC_new_proc_inner((GC_mark_proc)class_container_mark); |
404 | | - global_lisp_kind = GC_new_kind(GC_new_free_list(), GC_DS_LENGTH, 1, 1); |
405 | | - global_cons_kind = GC_new_kind(GC_new_free_list(), GC_DS_LENGTH, 1, 1); |
406 | | - global_class_kind = |
407 | | - GC_new_kind(GC_new_free_list(), GC_DS_LENGTH, 1, |
408 | | - 1); // GC_MAKE_PROC(GC_new_proc((GC_mark_proc)Lisp_object_mark),0), 0, 1); // GC_DS_LENGTH, 1, 1); |
409 | | - global_container_kind = GC_new_kind( |
410 | | - GC_new_free_list(), GC_DS_LENGTH, 1, |
411 | | - 1); // */ GC_new_kind(GC_new_free_list(), GC_MAKE_PROC(global_container_proc_index,0),0,1); // GC_DS_LENGTH, 1, 1); |
412 | | - global_code_kind = GC_new_kind(GC_new_free_list(), GC_DS_LENGTH, 1, 1); |
413 | | - global_atomic_kind = GC_I_PTRFREE; // GC_new_kind(GC_new_free_list(), GC_DS_LENGTH, 0, 1); |
| 394 | + global_lisp_kind = GC_I_NORMAL; |
| 395 | + global_cons_kind = GC_I_NORMAL; |
| 396 | + global_class_kind = GC_I_NORMAL; |
| 397 | + global_container_kind = GC_I_NORMAL; |
| 398 | + global_code_kind = GC_I_NORMAL; |
| 399 | + global_atomic_kind = GC_I_PTRFREE; |
414 | 400 | for (cur_stamp = 0; cur_stamp <= local_stamp_max; ++cur_stamp) { |
415 | 401 | if (local_stamp_layout[cur_stamp].layout_op != undefined_op) { |
416 | 402 | #ifdef DUMP_PRECISE_CALC |
@@ -461,10 +447,6 @@ void walk_stamp_field_layout_tables(WalkKind walk, std::ostream& fout) { |
461 | 447 | "%s:%d WARNING There are too many pointers (%d) in each element of a container to break up the work for boehm\n", |
462 | 448 | __FILE__, __LINE__, pointer_count); |
463 | 449 | } |
464 | | - // Calculate the number of elements worth of pointers are processed with each |
465 | | - // call to the marking procedure |
466 | | - int container_element_work = pointer_count ? (GC_PROC_BYTES / 8 / 2) / pointer_count : 0; |
467 | | - local_stamp_layout[cur_stamp].boehm._container_element_work = container_element_work; |
468 | 450 | if (class_bitmap && !container_bitmap) { |
469 | 451 | // There are no pointers in the container part |
470 | 452 | // - so we can use the bitmap_skip_header |
@@ -512,11 +494,13 @@ void walk_stamp_field_layout_tables(WalkKind walk, std::ostream& fout) { |
512 | 494 | } else if (walk == precise_info) { |
513 | 495 | // Check that everything is ok |
514 | 496 | if (getenv("CLASP_DEBUG_STAMP_INFO")) { |
| 497 | +#if defined(USE_BOEHM) && defined(USE_PRECISE_GC) |
515 | 498 | for (size_t stamp = 0; stamp <= local_stamp_max; stamp++) { |
516 | 499 | printf("%s:%d:%s stamp: %3lu boehm._kind_defined %2d boehm._kind %5lu name: %s\n", __FILE__, __LINE__, __FUNCTION__, |
517 | 500 | stamp, local_stamp_layout[stamp].boehm._kind_defined, local_stamp_layout[stamp].boehm._kind, |
518 | 501 | local_stamp_layout[stamp].name); |
519 | 502 | } |
| 503 | +#endif // defined(USE_BOEHM) && defined(USE_PRECISE_GC) |
520 | 504 | printf("%s:%d:%s local_stamp_max: %lu\n", __FILE__, __LINE__, __FUNCTION__, local_stamp_max); |
521 | 505 | } |
522 | 506 | global_stamp_max = local_stamp_max; |
|
0 commit comments