This commit is contained in:
janis 2025-10-20 17:53:42 +02:00
parent ac2f3a04b2
commit 8bc56220fc
Signed by: janis
SSH key fingerprint: SHA256:bB1qbbqmDXZNT0KKD5c2Dfjg53JGhj7B3CFcLIzSqq8

View file

@ -244,3 +244,36 @@ vec_try_grow:
xor rax, rax xor rax, rax
ret ret
;; rdi: pointer to Vec struct
vec_drop:
push r12
push r13
push r14
push rdi
; if let Some(drop) = vec.drop {
mov r12, [rdi + 32]
test r12, r12
je .ret
; for i in 0..vec.len {
xor r13, r13
mov r14, [rdi + 8] ; len
.loop:
cmp r13, r14
jge .ret
mov rdi, [rsp]
; drop(&mut vec.data[i * vec.item_size..(i + 1) * vec.item_size]);
imul r13, [rdi + 24] ; i * item_size
mov rdi, [rdi] ; data
add rdi, rax
call r12
inc r13
jmp .loop
; }
; }
; free(vec.data);
.ret:
pop rdi
pop r14
pop r13
pop r12
ret