eliminate member-filtering hack for cfg views; eliminate deref-space-ptr hack

This commit is contained in:
Ryan Fleury
2025-01-30 15:52:26 -08:00
parent 68966ba55f
commit 5b82fc2339
6 changed files with 5 additions and 111 deletions
-43
View File
@@ -464,16 +464,6 @@ e_oplist_push_set_space(Arena *arena, E_OpList *list, E_Space space)
list->encoded_size += 1 + sizeof(space);
}
internal void
e_oplist_push_deref_space_ptr(Arena *arena, E_OpList *list)
{
E_Op *node = push_array_no_zero(arena, E_Op, 1);
node->opcode = E_IRExtKind_DerefSpacePtr;
SLLQueuePush(list->first, list->last, node);
list->op_count += 1;
list->encoded_size += 1;
}
internal void
e_oplist_push_string_literal(Arena *arena, E_OpList *list, String8 string)
{
@@ -602,14 +592,6 @@ e_irtree_set_space(Arena *arena, E_Space space, E_IRNode *c)
return root;
}
internal E_IRNode *
e_irtree_deref_space_ptr(Arena *arena, E_IRNode *c)
{
E_IRNode *root = e_push_irnode(arena, E_IRExtKind_DerefSpacePtr);
e_irnode_push_child(root, c);
return root;
}
internal E_IRNode *
e_irtree_mem_read_type(Arena *arena, E_IRNode *c, E_TypeKey type_key)
{
@@ -1484,14 +1466,6 @@ e_irtree_and_type_from_expr__space(Arena *arena, E_Space *current_space, E_Expr
}break;
}
//- rjf: evaluating a space pointer -> generate a dynamic set-space & resolve to the offset
if(e_type_kind_from_key(result.type_key) == E_TypeKind_SpacePtr)
{
result.root = e_irtree_deref_space_ptr(arena, result.root);
result.type_key = e_type_direct_from_key(result.type_key);
result.mode = E_Mode_Offset;
}
//- rjf: if the expression's space does not match the current, then push a set-space node
// before returning
E_Space zero_space = zero_struct;
@@ -1545,17 +1519,6 @@ e_append_oplist_from_irtree(Arena *arena, E_IRNode *root, E_OpList *out)
}
}break;
case E_IRExtKind_DerefSpacePtr:
{
for(E_IRNode *child = root->first;
child != &e_irnode_nil;
child = child->next)
{
e_append_oplist_from_irtree(arena, child, out);
}
e_oplist_push_deref_space_ptr(arena, out);
}break;
case RDI_EvalOp_Cond:
{
// rjf: generate oplists for each child
@@ -1697,12 +1660,6 @@ e_bytecode_from_oplist(Arena *arena, E_OpList *oplist)
// rjf: advance
ptr = next_ptr;
}break;
case E_IRExtKind_DerefSpacePtr:
{
ptr[0] = opcode;
ptr += 1;
}break;
}
}