51 Commits

Author SHA1 Message Date
alektron
98d6b3bc85 Undo change from #6398 and fix arena overcommit bug in the correct place; 2026-04-10 23:53:41 +02:00
Shane Shrybman
5d80809dc8 Fix virtual arena memory block overcommit bug #5821 2026-03-10 11:13:15 -04:00
gingerBill
a7af6055b0 Move memory mutex guard around for resize in virtual.Arena allocator 2025-09-27 10:27:08 +01:00
Feoramund
efba9a1fb7 Disable usage of AddressSanitizer pending a per-allocator review
It has been discovered that AddressSanitizer does not keep a 1:1 mapping
of which bytes are poisoned and which are not. This can cause issues for
allocations less than 8 bytes and where addresses straddle 8-byte
boundaries.

See the following link for more information:

https://github.com/google/sanitizers/wiki/AddressSanitizerAlgorithm#mapping
2025-06-15 15:06:28 -04:00
Lucas Perlind
83bc2d3c4a Add asan support for various allocators 2025-05-06 14:55:50 +10:00
gingerBill
539e9bd2e3 Merge pull request #4836 from laytan/fix-wrong-out-of-memory
fix wrong out of memory in edge cases, just try allocate from block for one source of truth
2025-03-20 17:20:26 +00:00
alektron
fd539b5e81 Fix: When resizing a virtual arena by commiting more of the already reserved memory, the total_used field of the arena was not updated; 2025-03-02 17:46:39 +01:00
Laytan Laats
7df5be2131 fix wrong out of memory in edge cases, just try allocate from block for one source of truth 2025-02-12 19:09:21 +01:00
Barinzaya
98b3a9eacd Added support for growing in place to some arenas.
This affects `runtime.Arena` and `virtual.Arena`, but not currently
`mem.Arena`. These changes allow the last allocation that has been
made to be resized to a larger size by just extending their
allocation in-place, when there's sufficient room in the memory block to
do so.

Shrinking in place and re-using the rest of the allocation can be
supported using almost the same logic, but would require the memory to
be zeroed. Since this would add a additional cost that isn't currently
present, shrinking has not been changed.
2025-01-24 10:13:46 -05:00
alektron
a0c20023fc Fix: Issue with non-zeroed memory after arena_temp_and;
Fix: total_used field of growing Arena was not decremented correctly in arena_temp_end;
2025-01-15 17:59:30 +01:00
dmitriy.gorevoy
e82a0c8fc7 Fixed crash in arena_free_all() for bootstrapped growing arenas.
When trying to set arena.curr_block.used = 0 after mem.zero() caused a crash because if the arena is bootstrapped its memory will be zeroed out after mem.zero() thus making arena.cur_block point to zero.
2024-12-23 09:25:18 +01:00
Laytan Laats
5a22d49b72 mem/virtual: make sure the given size is used for subsequent blocks 2024-08-29 14:48:36 +02:00
gingerBill
e01701ce0e Fix typo 2024-03-07 12:32:46 +00:00
gingerBill
f9b14500be Add default_commit_size to virtual.Arena 2024-03-07 12:30:34 +00:00
Laytan
9b4cd0743c mem/virtual: fix arena_static_reset_to inverted logic 2024-02-06 20:24:38 +01:00
Colin Davidson
d0bb1fb844 bring log allocator up to date 2024-01-17 13:11:10 -08:00
Laytan
9a490e4e0d fix big alignment 2023-12-18 16:38:51 +01:00
Laytan Laats
252de70b0f fix same problem in virtual arena 2023-12-18 15:41:36 +01:00
Karl Zylinski
65333181fc virtual arena: Actually use DEFAULT_ARENA_STATIC_RESERVE_SIZE as default value on arena_init_static 2023-12-04 21:15:46 +01:00
Colin Davidson
bfbeb23f54 add resize non zeroed in more places 2023-12-04 03:09:13 -08:00
gingerBill
9736402dfd Fix docs typo 2023-08-07 15:34:28 +01:00
Eric Johnson
c6957e4e31 Fix small doc mistakes in arena.odin 2023-07-11 13:41:12 -07:00
gingerBill
9b54b99bf6 Use positional and named arguments within the core library 2023-06-21 01:17:05 +01:00
gingerBill
dfee7c103e Document virtual.Arena 2023-02-28 13:07:52 +00:00
gingerBill
ecf65303cd Make arena_free_all keep the first memory block for a .Growing arena 2023-02-28 12:37:05 +00:00
gingerBill
7032867421 Pass #caller_location down correctly 2023-02-10 13:18:03 +00:00
gingerBill
802333e454 Fix arena.free_all 2023-02-03 12:40:52 +00:00
gingerBill
c45ca1bfcc Correct arena_temp_end usage when no allocation ever happens for that arena 2023-01-28 12:09:24 +00:00
gingerBill
8d6ce0b693 Add mutex to virtual.Arena; add virtual.arena_temp_ignore 2023-01-28 11:51:58 +00:00
hikari
d904ae5191 Replaced opaque bit-shifts with readable constants for memory units 2022-12-24 08:27:15 +02:00
gingerBill
f76316f889 Merge branch 'master' into allocator-mode-alloc-non-zeroed 2022-11-03 12:47:11 +00:00
gingerBill
7d217269b5 Add Arena_Kind.Buffer to core:mem/virtual 2022-10-26 13:37:20 +01:00
gingerBill
ff51c5ee56 Wrap intrinsics.overflow_add to safe_add 2022-10-15 12:52:07 +01:00
gingerBill
d48828dd80 Add overflow check when using a growing arena 2022-10-13 12:45:17 +01:00
gingerBill
b725e01cdd Add @(require_results) to many procedures 2022-10-13 11:10:16 +01:00
gingerBill
cf4afc2e7b Inline assert condition 2022-10-12 21:26:50 +01:00
gingerBill
5ed06f7eb8 Rename constants; minor rearrange of Arena layout 2022-10-12 21:23:45 +01:00
gingerBill
765cd66b30 Clean up minimum_block_size default implicit initialization 2022-10-12 21:20:31 +01:00
gingerBill
5a8fbc230d Sanity corrections to virtual calls 2022-10-12 21:16:34 +01:00
gingerBill
5c62211f00 Inline resize logic for virtual.Arena 2022-10-12 20:44:36 +01:00
gingerBill
835b8ffa22 Update total_used for arena_static_reset_to 2022-10-12 20:30:48 +01:00
gingerBill
b84108c4b5 Inline align forward offset code 2022-10-12 20:28:51 +01:00
gingerBill
6642e1fc9d Unify Static_Arena and Growing_Arena into Arena 2022-10-12 19:10:04 +01:00
gingerBill
9d9ec192f1 Rename to growing_arena.odin 2021-10-04 17:57:59 +01:00
gingerBill
f2e78dcc0b Separate out the virtual memory allocation procedures
`reserve`, `commit`, `reserve_and_commit`, `decommit`, `release`, `protect`
2021-10-04 16:43:52 +01:00
gingerBill
e05a305764 Minor clean up 2021-10-03 12:43:11 +01:00
gingerBill
a437c95fed Remove mutex from Growing_Arena; Add Growing_Arena_Temp 2021-10-03 12:41:24 +01:00
gingerBill
08ac2fd1b6 Rename virtual.Arena to virtual.Growing_Arena 2021-09-29 16:50:36 +01:00
gingerBill
b2a36f204e Add a mutex to arena_free_all 2021-09-29 16:46:14 +01:00
gingerBill
efdd5cf499 Add a mutex to virtual.Arena 2021-09-29 16:43:58 +01:00