1 /*
2  * Part of Scheme 48 1.9.  See file COPYING for notices and license.
3  *
4  * Authors: Richard Kelsey, Jonathan Rees, David Frese, Mike Sperber,
5  * Marcus Crestani
6  */
7 
8 
9 /*
10  * Externally visible objects defined in scheme48heap.c.
11  */
12 
13 /* initialize top-level variables */
14 extern void	s48_heap_init(void);
15 
16 /* called from init.c */
17 extern void	s48_forbid_gcB(void);
18 extern void	s48_allow_gcB(void);
19 
20 /* heap-init interface */
21 extern void	s48_initialize_heap(long, char *, long);
22 extern void     s48_initialize_image_areas(long, long, long, long, long, long);
23 extern void	s48_register_static_areas(long, char **, long *,
24 					  long, char **, long *);
25 
26 /* heap interface */
27 extern long	s48_available(void);
28 extern char	s48_stob_in_heapP(long);
29 extern long	s48_heap_size(void);
30 extern long	s48_find_all(long);
31 extern long	s48_find_allint(long);
32 extern long	s48_find_all_records(long);
33 extern long	s48_gather_objects(char(*)(long), char(*)(char(*)(long)));
34 
35 /* for reading/writing images (scm-module heap-base ) */
36 extern void     s48_set_max_heap_sizeB(long);
37 extern long     s48_max_heap_size(void);
38 extern char *   s48_get_new_heap_start_addr(void);
39 
40 extern char *   s48_get_new_small_start_addr(void);
41 extern void 	s48_set_new_small_start_addrB(char *);
42 extern char *   s48_get_new_small_end_addr(void);
43 extern long     s48_get_new_small_size(void);
44 
45 extern char *   s48_get_new_large_start_addr(void);
46 extern void 	s48_set_new_large_start_addrB(char *);
47 extern char *   s48_get_new_large_end_addr(void);
48 extern long     s48_get_new_large_size(void);
49 
50 extern char *   s48_get_new_weaks_start_addr(void);
51 extern void 	s48_set_new_weaks_start_addrB(char *);
52 extern char *   s48_get_new_weaks_end_addr(void);
53 extern long     s48_get_new_weaks_size(void);
54 
55 extern char *	s48_heap_begin(void);
56 extern char *	s48_heap_pointer(void);
57 extern char *	s48_oldspace_begin(void);
58 extern char *	s48_oldspace_end(void);
59 
60 extern int	s48_area_type_size(s48_value); /* return value is really an enum */
61 
62 /* gc interface */
63 extern void	s48_check_heap_sizeB(void);
64 extern void	s48_collect(psbool);
65 extern long	s48_trace_value(long);
66 extern void	s48_trace_locationsB(char *, char *);
67 extern void	s48_trace_stob_contentsB(long);
68 extern void	s48_trace_continuation_contentsB(char *, char *, long);
69 extern char	s48_extantP(long);
70 extern long	s48_gc_count(void);
71 
72 /* allocation interface */
73 extern void	s48_make_availableAgc(long);
74 extern char *	s48_allocate_small(long);
75 extern char *	s48_allocate_tracedAgc(long);
76 extern char *	s48_allocate_untracedAgc(long);
77 extern char *   s48_allocate_weakAgc(long);
78 extern char *	s48_allocate_untraced_unmovableAgc(long);
79 
80 /* debugging */
81 extern char	s48_check_heap(long);
82