mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-02 03:58:11 +00:00
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:
+14
-14
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user