Jeroen van Rijn
0fc141db5d
core:mem/tlsf: Add early-out in OOM logic
...
This implementation doesn't allow for out-of-band allocations to be passed through, as it's not designed to
track those. Nor is it able to signal those allocations then need to be freed on the backing allocator,
as opposed to regular allocations handled for you when you `destroy` the TLSF instance.
So if we're asked for more than we're configured to grow by, we can fail with an OOM error early, without adding a new pool.
2025-04-14 20:40:05 +02:00
Jeroen van Rijn
3d13beb3ec
Remove now-implemented TODO
2025-04-14 20:09:55 +02:00
Jeroen van Rijn
beee27dec0
Allow core:mem/tlsf to automatically add new pools.
...
New features:
- If TLSF can't service an allocation made on it, and it's initialized with `new_pool_size` > 0, it will ask the backing allocator for additional memory.
- `estimate_pool_size` can tell you what size your initial (and `new_pool_size`) ought to be if you want to make `count` allocations of `size` and `alignment`, or in its other form, how much backing memory is needed for `count` allocations of `type` and its corresponding size and alignment.
2025-04-14 19:49:55 +02:00
Jeroen van Rijn
7088284ff4
Refactor core:mem/tlsf, add free_all support.
...
TODO: Allow the TLSF allocator to add additional pools when it would ordinarily OOM
by calling its backing allocator.
2025-04-14 17:13:27 +02:00
Jeroen van Rijn
0e9cd0fb6a
Prepare for tlsf.free_all
2025-04-13 15:20:53 +02:00
gingerBill
70ddb74e40
Add mem.make_over_aligned
2025-03-31 10:51:02 +01:00
gingerBill
dcb683927e
Fix indentation
2025-03-31 10:40:03 +01:00
Barinzaya
7819797a03
Split mem.make_map to match the runtime procs.
...
The existing `mem.make_map` passes a capacity, but the builtin
`make_map` no longer takes a capacity--it was separated to
`make_map_cap` to allow for making a map without an allocation (#4340 ).
`core:mem` was not updated to reflect this, so any usage of `mem.make`
to make a map will currently result in a compile error.
2025-03-22 11:03:04 -04: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
Githubaccountlol
88f423a38b
Update doc.odin
2025-02-26 03:04:54 -06:00
Laytan Laats
cae3f13d9f
mem/virtual: specify max protection on mmap call in NetBSD and FreeBSD
2025-02-18 18:33:19 +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
Lucas Perlind
88a5817134
Fix tlsf block adjustment
2025-02-10 13:01:16 +11: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
gingerBill
328d70e244
Merge pull request #4696 from alektron/ArenaBug
...
Non-zeroed memory after Arena free
2025-01-17 14:20:28 +00:00
teapo
4895065afb
Add SoA make/delete to core:mem
2025-01-15 20:16:57 +01: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
gingerBill
2a29322c91
Merge pull request #4605 from karl-zylinski/tracking-allocator-bad-free-default-to-crash
...
Make tracking allocator default to crashing on a bad free instead of adding to bad_free_array
2025-01-08 16:24:20 +00:00
gingerBill
16acb342d1
Merge pull request #4617 from gorevojd/free_bootstrapped_arena_crash
...
Fixed crash in arena_free_all() for bootstrapped growing arenas.
2025-01-06 09:33:23 +00:00
gingerBill
1cf7a56ba7
General clean up of code
2025-01-01 15:13:46 +00: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
Karl Zylinski
e5f32e1455
Makes tracking allocator default to crashing on a bad free instead of add to bad_free_array. The bad_free_array remains to not break old code. The new default behavior is implemented in a callback that you can override, there's a second provided callback that provides the old behavior where an element was added to bad_free_array. Rationale: Many people are just checking the allocation_map, but don't check the bad free array. Several examples throughout core that use tracking allocator don't check bad_free_array either, so people have been taught not to check it.
2024-12-21 15:49:48 +01:00
Laytan Laats
20f4f378b2
sys/posix: add MAP_ANONYMOUS
2024-11-17 13:52:08 +01:00
Jeroen van Rijn
c33d2ff96b
Missing paren.
2024-11-03 14:10:29 +01:00
Jeroen van Rijn
9199c6df34
mem.is_aligned is in bytes, not log2 bytes
...
Fix formula and clarify comment
2024-11-03 14:07:31 +01:00
Laytan Laats
1dd9b8560d
build mutex allocator code on freestanding wasm
2024-10-14 16:11:25 +02:00
Laytan Laats
b746e5287e
build tracking allocator code on freestanding wasm
2024-10-14 16:06:16 +02:00
gingerBill
8006ba919e
Improve formatting
2024-10-11 14:48:55 +01:00
Karl Zylinski
093ade0504
Merge branch 'master' into file-tags-without-comments
2024-09-17 19:36:17 +02:00
gingerBill
0d33df15b4
Merge pull request #4208 from laytan/more-wasm-vendor-support
...
wasm: support more vendor libraries
2024-09-17 11:37:10 +01:00
Karl Zylinski
19f0127e55
Moved all packages in core, base, vendor, tests and examples to use new #+ file tag syntax.
2024-09-14 18:27:49 +02:00
flysand7
466e29bb38
[mem]: Rollback allocator API consistency
2024-09-14 13:15:02 +11:00
flysand7
016d1a84d4
[mem]: Document mutex, rollback stack and tracking allocators
2024-09-14 10:46:35 +11:00
flysand7
3ed2ab6e2c
[mem]: Adjust the docs for calc_padding_with_header
2024-09-14 10:18:51 +11:00
flysand7
e90f5d2528
[mem]: Adjust the docs on the buddy allocator
2024-09-14 10:03:04 +11:00
flysand7
f16ed256ea
[mem]: Fix handling of default resize to check alignment
2024-09-11 08:00:27 +11:00
flysand7
fdd4882568
[mem]: Adjust docs for alloc
2024-09-10 19:51:20 +11:00
Laytan Laats
5ae27c6ebc
wasm: support more vendor libraries
...
Adds support for:
- box2d
- cgltf
- stb image
- stb rect pack
2024-09-09 18:49:13 +02:00
flysand7
167ced8ad1
[mem]: Don't use named params for dynamic pool in tests
2024-09-08 18:52:55 +11:00
flysand7
05df34f99c
[mem]: Start documenting allocators.odin
2024-09-08 18:44:33 +11:00
flysand7
299accb717
[mem]: Put panic allocator after nil allocator, adjust @require_results
2024-09-08 14:17:32 +11:00
flysand7
3b30bc305c
[mem]: Document raw.odin
2024-09-08 14:13:03 +11:00
flysand7
f1f5dc614e
[mem]: Remove old comments
2024-09-08 11:17:27 +11:00
flysand7
6eb80831b5
[mem]: Panic when allocator is not initialized
2024-09-08 11:12:28 +11:00
flysand7
b78d546010
[mem]: Add non_zeroed versions of resize
2024-09-08 11:02:17 +11:00
flysand7
c719a86312
[mem]: Document alloc.odin
2024-09-08 10:58:40 +11:00
flysand7
1842cd6297
Fix typo
...
Co-authored-by: FourteenBrush <74827262+FourteenBrush@users.noreply.github.com >
2024-09-08 00:09:18 +11:00
flysand7
f8cd13767e
[mem]: Fix the issue with unbranched version of ptr align
2024-09-07 18:08:11 +11:00
flysand7
3a351ec407
[mem]: Document mem.odin
2024-09-07 18:01:41 +11:00