Skip to content

Commit 4af6c4d

Browse files
committed
Refactor bpf_map_delete_elem_emitter
1 parent 244ea14 commit 4af6c4d

1 file changed

Lines changed: 1 addition & 32 deletions

File tree

pythonbpf/helper/bpf_helper_handler.py

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -331,36 +331,7 @@ def bpf_map_delete_elem_emitter(call, map_ptr, module, builder, func,
331331
Emit LLVM IR for bpf_map_delete_elem helper function call.
332332
Expected call signature: map.delete(key)
333333
"""
334-
# Check for correct number of arguments
335-
if not call.args or len(call.args) != 1:
336-
raise ValueError("Map delete expects exactly 1 argument (key), got "
337-
f"{len(call.args)}")
338-
339-
key_arg = call.args[0]
340-
341-
# Handle key argument
342-
if isinstance(key_arg, ast.Name):
343-
key_name = key_arg.id
344-
if local_sym_tab and key_name in local_sym_tab:
345-
key_ptr = local_sym_tab[key_name][0]
346-
else:
347-
raise ValueError(
348-
f"Key variable {key_name} not found in local symbol table.")
349-
elif isinstance(key_arg, ast.Constant) and isinstance(key_arg.value, int):
350-
# Handle constant integer keys
351-
key_val = key_arg.value
352-
key_type = ir.IntType(64)
353-
key_ptr = builder.alloca(key_type)
354-
key_ptr.align = key_type.width // 8
355-
builder.store(ir.Constant(key_type, key_val), key_ptr)
356-
else:
357-
raise NotImplementedError(
358-
"Only simple variable names and integer constants are supported as keys in map delete.")
359-
360-
if key_ptr is None:
361-
raise ValueError("Key pointer is None.")
362-
363-
# Cast map pointer to void*
334+
key_ptr = get_key_ptr(call, builder, local_sym_tab)
364335
map_void_ptr = builder.bitcast(map_ptr, ir.PointerType())
365336

366337
# Define function type for bpf_map_delete_elem
@@ -371,12 +342,10 @@ def bpf_map_delete_elem_emitter(call, map_ptr, module, builder, func,
371342
)
372343
fn_ptr_type = ir.PointerType(fn_type)
373344

374-
# Helper ID 3 is bpf_map_delete_elem
375345
fn_addr = ir.Constant(ir.IntType(
376346
64), BPFHelperID.BPF_MAP_DELETE_ELEM.value)
377347
fn_ptr = builder.inttoptr(fn_addr, fn_ptr_type)
378348

379-
# Call the helper function
380349
result = builder.call(fn_ptr, [map_void_ptr, key_ptr], tail=False)
381350

382351
return result, None

0 commit comments

Comments
 (0)