X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/9d8a10a94c022e5fe4b58aa4b586eda514b1189f..03d1294977333b23b91e24c3b0b7ddf9cab26cfc:/libguile/gc.c diff --git a/libguile/gc.c b/libguile/gc.c index 71efd032c..5a14fb7e5 100644 --- a/libguile/gc.c +++ b/libguile/gc.c @@ -1,4 +1,5 @@ -/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001, 2002, 2003, 2006, + * 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -187,35 +188,6 @@ SCM_DEFINE (scm_set_debug_cell_accesses_x, "set-debug-cell-accesses!", 1, 0, 0, -/* Compatibility. */ - -#ifndef HAVE_GC_GET_HEAP_USAGE_SAFE -static void -GC_get_heap_usage_safe (GC_word *pheap_size, GC_word *pfree_bytes, - GC_word *punmapped_bytes, GC_word *pbytes_since_gc, - GC_word *ptotal_bytes) -{ - *pheap_size = GC_get_heap_size (); - *pfree_bytes = GC_get_free_bytes (); -#ifdef HAVE_GC_GET_UNMAPPED_BYTES - *punmapped_bytes = GC_get_unmapped_bytes (); -#else - *punmapped_bytes = 0; -#endif - *pbytes_since_gc = GC_get_bytes_since_gc (); - *ptotal_bytes = GC_get_total_bytes (); -} -#endif - -#ifndef HAVE_GC_GET_FREE_SPACE_DIVISOR -static GC_word -GC_get_free_space_divisor (void) -{ - return GC_free_space_divisor; -} -#endif - - /* Hooks. */ scm_t_c_hook scm_before_gc_c_hook; scm_t_c_hook scm_before_mark_c_hook; @@ -310,7 +282,7 @@ SCM_DEFINE (scm_gc_stats, "gc-stats", 0, 0, 0, GC_get_heap_usage_safe (&heap_size, &free_bytes, &unmapped_bytes, &bytes_since_gc, &total_bytes); - gc_times = GC_gc_no; + gc_times = GC_get_gc_no (); answer = scm_list_n (scm_cons (sym_gc_time_taken, scm_from_long (gc_time_taken)), @@ -394,9 +366,6 @@ SCM_DEFINE (scm_gc, "gc", 0, 0, 0, void scm_i_gc (const char *what) { -#ifndef HAVE_GC_SET_START_CALLBACK - run_before_gc_c_hook (); -#endif GC_gcollect (); } @@ -611,18 +580,11 @@ scm_getenv_int (const char *var, int def) return res; } -#ifndef HAVE_GC_SET_FINALIZE_ON_DEMAND -static void -GC_set_finalize_on_demand (int foo) -{ - GC_finalize_on_demand = foo; -} -#endif - void scm_storage_prehistory () { - GC_all_interior_pointers = 0; + GC_set_all_interior_pointers (0); + free_space_divisor = scm_getenv_int ("GC_FREE_SPACE_DIVISOR", 3); minimum_free_space_divisor = free_space_divisor; target_free_space_divisor = free_space_divisor; @@ -970,10 +932,6 @@ scm_i_tag_name (scm_t_bits tag) return "dynamic state"; case scm_tc7_frame: return "frame"; - case scm_tc7_objcode: - return "objcode"; - case scm_tc7_vm: - return "vm"; case scm_tc7_vm_cont: return "vm continuation"; case scm_tc7_wvect: @@ -1044,19 +1002,11 @@ scm_init_gc () scm_c_hook_add (&scm_before_gc_c_hook, start_gc_timer, NULL, 0); scm_c_hook_add (&scm_after_gc_c_hook, accumulate_gc_timer, NULL, 0); -#if HAVE_GC_GET_HEAP_USAGE_SAFE /* GC_get_heap_usage does not take a lock, and so can run in the GC start hook. */ scm_c_hook_add (&scm_before_gc_c_hook, adjust_gc_frequency, NULL, 0); -#else - /* GC_get_heap_usage might take a lock (and did from 7.2alpha1 to - 7.2alpha7), so call it in the after_gc_hook. */ - scm_c_hook_add (&scm_after_gc_c_hook, adjust_gc_frequency, NULL, 0); -#endif -#ifdef HAVE_GC_SET_START_CALLBACK GC_set_start_callback (run_before_gc_c_hook); -#endif #include "libguile/gc.x" }