Exemplo n.º 1
0
/* 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;
}
Exemplo n.º 2
0
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;
}