summaryrefslogtreecommitdiff
path: root/ir.c
diff options
context:
space:
mode:
authorWormHeamer2025-08-27 19:00:27 -0400
committerWormHeamer2025-08-27 19:00:27 -0400
commit5e38aebb97048d9c634e88f1be02f825a93720fe (patch)
tree5a02ecbf4bb49a0173f80a9d8bdea9b6fadc41d7 /ir.c
parent8c0a2fa3efdaf100b7119649863ecc173236153a (diff)
add scratch arena to Proc
Diffstat (limited to 'ir.c')
-rw-r--r--ir.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/ir.c b/ir.c
index 0e8e097..e3cb679 100644
--- a/ir.c
+++ b/ir.c
@@ -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;