bundle per-module info in eval system; use all modules in all processes in ctrl layer evaluations; further sketching out of space info

This commit is contained in:
Ryan Fleury
2024-08-15 10:04:52 -07:00
parent ed75b253f7
commit a0d91862a7
16 changed files with 340 additions and 282 deletions
+14 -14
View File
@@ -251,6 +251,14 @@ e_irtree_string_literal(Arena *arena, String8 string)
return root;
}
internal E_IRNode *
e_irtree_set_space(Arena *arena, E_Space space)
{
E_IRNode *root = e_push_irnode(arena, E_IRExtKind_SetSpace);
root->u64 = space;
return root;
}
internal E_IRNode *
e_irtree_mem_read_type(Arena *arena, E_IRNode *c, E_TypeKey type_key)
{
@@ -343,14 +351,14 @@ e_irtree_resolve_to_value(Arena *arena, E_Mode from_mode, E_IRNode *tree, E_Type
switch(from_mode)
{
default:{}break;
case E_Mode_Addr:
{
result = e_irtree_mem_read_type(arena, tree, type_key);
}break;
case E_Mode_Reg:
{
result = e_irtree_unary_op(arena, RDI_EvalOp_RegReadDyn, RDI_EvalTypeGroup_U, tree);
}break;
case E_Mode_Addr:
{
result = e_irtree_mem_read_type(arena, tree, type_key);
}break;
}
return result;
}
@@ -364,9 +372,7 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
E_ExprKind kind = expr->kind;
switch(kind)
{
default:
{
}break;
default:{}break;
//- rjf: array indices
case E_ExprKind_ArrayIndex:
@@ -577,11 +583,6 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
e_msgf(arena, &result.msgs, E_MsgKind_MalformedInput, r_expr->location, "Cannot dereference arrays of zero-sized types.");
break;
}
else if(r_type_kind == E_TypeKind_Array && r_tree.mode != E_Mode_Addr)
{
e_msgf(arena, &result.msgs, E_MsgKind_MalformedInput, r_expr->location, "Cannot dereference arrays without base address.");
break;
}
else if(r_type_kind != E_TypeKind_Array &&
r_type_kind != E_TypeKind_Ptr &&
r_type_kind != E_TypeKind_LRef &&
@@ -1067,10 +1068,9 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *expr)
{
E_IRNode *new_tree = e_irtree_bytecode_no_copy(arena, expr->string);
E_TypeKey final_type_key = expr->type_key;
E_Mode mode = expr->mode;
result.root = new_tree;
result.type_key = final_type_key;
result.mode = mode;
result.mode = expr->mode;
}break;
//- rjf: (unexpected) leaf member