@@ -18,6 +18,17 @@ def _handle_name_expr(expr: ast.Name, local_sym_tab: Dict, builder: ir.IRBuilder
18
18
return None
19
19
20
20
21
+ def _handle_constant_expr (expr : ast .Constant ):
22
+ """Handle ast.Constant expressions."""
23
+ if isinstance (expr .value , int ):
24
+ return ir .Constant (ir .IntType (64 ), expr .value ), ir .IntType (64 )
25
+ elif isinstance (expr .value , bool ):
26
+ return ir .Constant (ir .IntType (1 ), int (expr .value )), ir .IntType (1 )
27
+ else :
28
+ logger .info ("Unsupported constant type" )
29
+ return None
30
+
31
+
21
32
def eval_expr (
22
33
func ,
23
34
module ,
@@ -31,13 +42,7 @@ def eval_expr(
31
42
if isinstance (expr , ast .Name ):
32
43
return _handle_name_expr (expr , local_sym_tab , builder )
33
44
elif isinstance (expr , ast .Constant ):
34
- if isinstance (expr .value , int ):
35
- return ir .Constant (ir .IntType (64 ), expr .value ), ir .IntType (64 )
36
- elif isinstance (expr .value , bool ):
37
- return ir .Constant (ir .IntType (1 ), int (expr .value )), ir .IntType (1 )
38
- else :
39
- logger .info ("Unsupported constant type" )
40
- return None
45
+ return _handle_constant_expr (expr )
41
46
elif isinstance (expr , ast .Call ):
42
47
# delayed import to avoid circular dependency
43
48
from pythonbpf .helper import HelperHandlerRegistry , handle_helper_call
@@ -117,10 +122,8 @@ def eval_expr(
117
122
attr_name = expr .attr
118
123
if var_name in local_sym_tab :
119
124
var_ptr , var_type , var_metadata = local_sym_tab [var_name ]
120
- logger .info (f"Loading attribute {
121
- attr_name } from variable { var_name } " )
122
- logger .info (f"Variable type: {
123
- var_type } , Variable ptr: { var_ptr } " )
125
+ logger .info (f"Loading attribute { attr_name } from variable { var_name } " )
126
+ logger .info (f"Variable type: { var_type } , Variable ptr: { var_ptr } " )
124
127
metadata = structs_sym_tab [var_metadata ]
125
128
if attr_name in metadata .fields :
126
129
gep = metadata .gep (builder , var_ptr , attr_name )
0 commit comments