| 697 | } |
| 698 | |
| 699 | af_err unlock_fn(af_memory_manager manager, void *ptr, int userLock) { |
| 700 | if (!ptr) { return AF_SUCCESS; } |
| 701 | |
| 702 | auto *payload = getMemoryManagerPayload<E2ETestPayload>(manager); |
| 703 | |
| 704 | if (payload->table.find(ptr) == payload->table.end()) { |
| 705 | return AF_SUCCESS; // fast path |
| 706 | } |
| 707 | |
| 708 | // For testing, treat user-allocated and AF-allocated memory identically |
| 709 | if (payload->locked.find(ptr) != payload->locked.end()) { |
| 710 | payload->locked.erase(ptr); |
| 711 | payload->lockedBytes -= payload->table[ptr]; |
| 712 | } |
| 713 | return AF_SUCCESS; |
| 714 | } |
| 715 | |
| 716 | af_err user_unlock_fn(af_memory_manager manager, void *ptr) { |
| 717 | auto *payload = getMemoryManagerPayload<E2ETestPayload>(manager); |