@@ -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