From 4af6c4dcad6ae25c181d117f448bd70c10a2a63d Mon Sep 17 00:00:00 2001 From: Pragyansh Chaturvedi Date: Wed, 1 Oct 2025 18:00:51 +0530 Subject: [PATCH] Refactor bpf_map_delete_elem_emitter --- pythonbpf/helper/bpf_helper_handler.py | 33 +------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/pythonbpf/helper/bpf_helper_handler.py b/pythonbpf/helper/bpf_helper_handler.py index d6301a3..de55047 100644 --- a/pythonbpf/helper/bpf_helper_handler.py +++ b/pythonbpf/helper/bpf_helper_handler.py @@ -331,36 +331,7 @@ def bpf_map_delete_elem_emitter(call, map_ptr, module, builder, func, Emit LLVM IR for bpf_map_delete_elem helper function call. Expected call signature: map.delete(key) """ - # Check for correct number of arguments - if not call.args or len(call.args) != 1: - raise ValueError("Map delete expects exactly 1 argument (key), got " - f"{len(call.args)}") - - key_arg = call.args[0] - - # Handle key argument - if isinstance(key_arg, ast.Name): - key_name = key_arg.id - if local_sym_tab and key_name in local_sym_tab: - key_ptr = local_sym_tab[key_name][0] - else: - raise ValueError( - f"Key variable {key_name} not found in local symbol table.") - elif isinstance(key_arg, ast.Constant) and isinstance(key_arg.value, int): - # Handle constant integer keys - key_val = key_arg.value - key_type = ir.IntType(64) - key_ptr = builder.alloca(key_type) - key_ptr.align = key_type.width // 8 - builder.store(ir.Constant(key_type, key_val), key_ptr) - else: - raise NotImplementedError( - "Only simple variable names and integer constants are supported as keys in map delete.") - - if key_ptr is None: - raise ValueError("Key pointer is None.") - - # Cast map pointer to void* + key_ptr = get_key_ptr(call, builder, local_sym_tab) map_void_ptr = builder.bitcast(map_ptr, ir.PointerType()) # Define function type for bpf_map_delete_elem @@ -371,12 +342,10 @@ def bpf_map_delete_elem_emitter(call, map_ptr, module, builder, func, ) fn_ptr_type = ir.PointerType(fn_type) - # Helper ID 3 is bpf_map_delete_elem fn_addr = ir.Constant(ir.IntType( 64), BPFHelperID.BPF_MAP_DELETE_ELEM.value) fn_ptr = builder.inttoptr(fn_addr, fn_ptr_type) - # Call the helper function result = builder.call(fn_ptr, [map_void_ptr, key_ptr], tail=False) return result, None