Updates from 0.2.1 into 0.2.1-inu-1.5
This commit is contained in:
		
							
								
								
									
										29
									
								
								gc/headers.c
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								gc/headers.c
									
									
									
									
									
								
							| @@ -22,7 +22,7 @@ | ||||
|  * level tree. | ||||
|  */ | ||||
|   | ||||
| # include "gc_priv.h" | ||||
| # include "private/gc_priv.h" | ||||
|  | ||||
| bottom_index * GC_all_bottom_indices = 0; | ||||
| 				/* Pointer to first (lowest addr) */ | ||||
| @@ -50,10 +50,8 @@ ptr_t h; | ||||
|   | ||||
| static ptr_t scratch_free_ptr = 0; | ||||
|   | ||||
| ptr_t GC_scratch_end_ptr = 0; | ||||
|  | ||||
| ptr_t GC_scratch_last_end_ptr = 0; | ||||
| 		/* End point of last obtained scratch area */ | ||||
| /* GC_scratch_last_end_ptr is end point of last obtained scratch area.  */ | ||||
| /* GC_scratch_end_ptr is end point of current scratch area.		*/ | ||||
|   | ||||
| ptr_t GC_scratch_alloc(bytes) | ||||
| register word bytes; | ||||
| @@ -128,6 +126,13 @@ hdr * hhdr; | ||||
|     hhdr -> hb_next = (struct hblk *) hdr_free_list; | ||||
|     hdr_free_list = hhdr; | ||||
| } | ||||
|  | ||||
| hdr * GC_invalid_header; | ||||
|  | ||||
| #ifdef USE_HDR_CACHE | ||||
|   word GC_hdr_cache_hits = 0; | ||||
|   word GC_hdr_cache_misses = 0; | ||||
| #endif | ||||
|   | ||||
| void GC_init_headers() | ||||
| { | ||||
| @@ -138,6 +143,8 @@ void GC_init_headers() | ||||
|     for (i = 0; i < TOP_SZ; i++) { | ||||
|         GC_top_index[i] = GC_all_nils; | ||||
|     } | ||||
|     GC_invalid_header = alloc_hdr(); | ||||
|     GC_invalidate_map(GC_invalid_header); | ||||
| } | ||||
|  | ||||
| /* Make sure that there is a bottom level index block for address addr  */ | ||||
| @@ -191,10 +198,10 @@ word addr; | ||||
|     return(TRUE); | ||||
| } | ||||
|  | ||||
| /* Install a header for block h.  */ | ||||
| /* The header is uninitialized.	  */ | ||||
| /* Returns FALSE on failure.	  */ | ||||
| GC_bool GC_install_header(h) | ||||
| /* Install a header for block h.	*/ | ||||
| /* The header is uninitialized.	  	*/ | ||||
| /* Returns the header or 0 on failure.	*/ | ||||
| struct hblkhdr * GC_install_header(h) | ||||
| register struct hblk * h; | ||||
| { | ||||
|     hdr * result; | ||||
| @@ -205,7 +212,7 @@ register struct hblk * h; | ||||
| #   ifdef USE_MUNMAP | ||||
| 	result -> hb_last_reclaimed = GC_gc_no; | ||||
| #   endif | ||||
|     return(result != 0); | ||||
|     return(result); | ||||
| } | ||||
|  | ||||
| /* Set up forwarding counts for block h of size sz */ | ||||
| @@ -253,7 +260,7 @@ register word sz; /* bytes */ | ||||
| /* Apply fn to all allocated blocks */ | ||||
| /*VARARGS1*/ | ||||
| void GC_apply_to_all_blocks(fn, client_data) | ||||
| void (*fn)(/* struct hblk *h, word client_data */); | ||||
| void (*fn) GC_PROTO((struct hblk *h, word client_data)); | ||||
| word client_data; | ||||
| { | ||||
|     register int j; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user