/* Construct a new source_info object */ struct source_info * new_source_info(const char *name) { struct source_info *ifp; if ((ifp = (struct source_info *)malloc(sizeof(struct source_info))) == NULL) err(1, NULL); ifp->name = name ? strdup(name) : NULL; ifp->bp = new_buffer_pool(); ifp->source_pos_read = 0; ifp->reached_eof = false; return ifp; }
void Parrot_initialize_header_pools(struct Parrot_Interp *interpreter) { #if 0 Parrot_allocate(interpreter, &interpreter->arena_base->extra_buffer_headers, 0); add_extra_buffer_header(interpreter, &interpreter->arena_base->extra_buffer_headers); #else interpreter->arena_base->extra_buffer_headers.bufstart = NULL; interpreter->arena_base->extra_buffer_headers.buflen = 0; interpreter->arena_base->extra_buffer_headers.obj.flags = 0; # if ! DISABLE_GC_DEBUG interpreter->arena_base->extra_buffer_headers.pobj_version = 0; # endif #endif /* Init the constant string header pool */ interpreter->arena_base->constant_string_header_pool = new_string_pool(interpreter, 1); interpreter->arena_base->constant_string_header_pool->name = "constant_string_header"; /* Init the buffer header pool * * note: the buffer_header_pool and the string_header_pool are actually * living in the sized_header_pools, this pool pointers are only * here for faster access in new_*_header */ interpreter->arena_base->buffer_header_pool = new_buffer_pool(interpreter); interpreter->arena_base->buffer_header_pool->name = "buffer_header"; /* Init the string header pool */ interpreter->arena_base->string_header_pool = new_string_pool(interpreter, 0); interpreter->arena_base->string_header_pool->name = "string_header"; /* Init the PMC header pool */ interpreter->arena_base->pmc_pool = new_pmc_pool(interpreter); interpreter->arena_base->pmc_pool->name = "pmc"; interpreter->arena_base->pmc_ext_pool = new_small_object_pool(interpreter, sizeof(struct PMC_EXT), 1024); interpreter->arena_base->pmc_ext_pool->more_objects = alloc_objects; interpreter->arena_base->pmc_ext_pool->name = "pmc_ext"; interpreter->arena_base->constant_pmc_pool = new_pmc_pool(interpreter); interpreter->arena_base->constant_pmc_pool->name = "constant_pmc"; interpreter->arena_base->constant_pmc_pool->objects_per_alloc = CONSTANT_PMC_HEADERS_PER_ALLOC; }