add pic_alloca

This commit is contained in:
Yuichi Nishiwaki 2016-02-14 13:19:54 +09:00
parent 5946c3ab39
commit 549d939ce6
2 changed files with 10 additions and 0 deletions

View File

@ -696,6 +696,15 @@ pic_gc(pic_state *pic)
gc_sweep_phase(pic); gc_sweep_phase(pic);
} }
void *
pic_alloca(pic_state *pic, size_t n)
{
static const pic_data_type t = { "pic_alloca", pic_free, 0 };
/* TODO: optimize */
return pic_data_alloc(pic, &t, pic_malloc(pic, n))->data;
}
struct pic_object * struct pic_object *
pic_obj_alloc_unsafe(pic_state *pic, size_t size, enum pic_tt tt) pic_obj_alloc_unsafe(pic_state *pic, size_t size, enum pic_tt tt)
{ {

View File

@ -137,6 +137,7 @@ void pic_free(pic_state *, void *);
typedef pic_value (*pic_func_t)(pic_state *); typedef pic_value (*pic_func_t)(pic_state *);
void *pic_alloca(pic_state *, size_t);
pic_value pic_gc_protect(pic_state *, pic_value); pic_value pic_gc_protect(pic_state *, pic_value);
size_t pic_gc_arena_preserve(pic_state *); size_t pic_gc_arena_preserve(pic_state *);
void pic_gc_arena_restore(pic_state *, size_t); void pic_gc_arena_restore(pic_state *, size_t);