diff options
| author | WormHeamer | 2025-08-27 19:00:27 -0400 |
|---|---|---|
| committer | WormHeamer | 2025-08-27 19:00:27 -0400 |
| commit | 5e38aebb97048d9c634e88f1be02f825a93720fe (patch) | |
| tree | 5a02ecbf4bb49a0173f80a9d8bdea9b6fadc41d7 /ir.c | |
| parent | 8c0a2fa3efdaf100b7119649863ecc173236153a (diff) | |
add scratch arena to Proc
Diffstat (limited to 'ir.c')
| -rw-r--r-- | ir.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -60,12 +60,12 @@ void node_kill(Node *n, Proc *p) { } void node_add_out(Proc *p, Node *a, Node *b) { - ZDA_PUSH(&p->arena, &a->out, b); + ZDA_PUSH(&p->perm, &a->out, b); if (b) b->refs++; } void node_add_in(Proc *p, Node *a, Node *b) { - ZDA_PUSH(&p->arena, &a->in, b); + ZDA_PUSH(&p->perm, &a->in, b); if (b) b->refs++; } @@ -113,7 +113,7 @@ Node *node_new_empty(Proc *p, NodeType t) { p->free_list = n->prev_free; memset(n, 0, sizeof(Node)); } else { - n = new(&p->arena, Node); + n = new(&p->perm, Node); } n->op = t; n->id = global_node_count++; @@ -180,7 +180,8 @@ void proc_init(Proc *proc, Str name) { } void proc_free(Proc *proc) { - arena_free(&proc->arena); + arena_free(&proc->perm); + arena_free(&proc->scratch); } /* scope */ @@ -203,7 +204,7 @@ ScopeFrame *scope_push(Scope *scope, Proc *proc) { *f = (ScopeFrame) { 0 }; scope->free_scope = f->prev; } else { - f = new(&proc->arena, ScopeFrame); + f = new(&proc->perm, ScopeFrame); } f->prev = scope->tail; scope->tail = f; @@ -234,7 +235,7 @@ NameBinding *scope_bind(Scope *scope, Str name, Node *value, LexSpan pos, Proc * *b = (NameBinding) { 0 }; scope->free_bind = b->prev; } else { - b = new(&proc->arena, NameBinding); + b = new(&proc->perm, NameBinding); } b->name = name; b->prev = scope->tail->latest; |
