| parrotcode: Allocate and deallocate tracked resources | |
| Contents | C | 

src/gc/resources.c - Allocate and deallocate tracked resources


static void alloc_new_blockstatic void *mem_allocate                    +-----------------+
                    |  ref_count   |f |    # GC header
  obj->bufstart  -> +-----------------+
                    |  data           |
                    v                 v
 * if PObj_is_COWable is set, then we have
   - a ref_count, {inc, dec}remented by 2 always
   - the lo bit 'f' means 'is being forwarded" - what TAIL_flag was
 * if PObj_align_FLAG is set, obj->bufstart is aligned like discussed above
 * obj->buflen is the usable length excluding the optional GC part.
static const char *buffer_locationstatic void debug_print_buf
static void compact_poolvoid Parrot_go_collectstatic size_t aligned_sizestatic char *aligned_memstatic size_t aligned_string_sizeint Parrot_in_memory_pool
void Parrot_reallocatevoid Parrot_reallocate_stringstr->strstart to the new buffer location, str->bufused is not changed.void Parrot_allocatesize has to be a multiple of the word size. PObj_buflen will be set to exactly the given size.void Parrot_allocate_alignedsize will be rounded up and the address of the buffer will have the same alignment as a pointer returned by malloc(3) suitable to hold e.g. a FLOATVAL array.void Parrot_allocate_stringsize. This function sets also str->strstart to the new buffer location, str->bufused is not changed.static Memory_Pool *new_memory_poolvoid Parrot_initialize_memory_poolsvoid Parrot_destroy_memory_poolsstatic void merge_poolsvoid Parrot_merge_memory_poolssource_interp into dest_interp.
include/parrot/resources.h, src/gc/memory.c.

Initial version by Dan on 2001.10.2.
|  |   |