Feoramund
c52c29856c
Unify heap allocators
...
- Simplify the malloc-based allocator
- Correct the type signatures on malloc/calloc/realloc
- Make `heap_alloc/heap_free/heap_resize` API consistent across platforms
2025-05-08 11:06:02 -04:00
Feoramund
30e600699d
Strengthen order to prevent reordering
2025-05-08 11:06:01 -04:00
Feoramund
0532b73563
Simplify loop
2025-05-08 11:06:01 -04:00
Feoramund
541443fe33
Don't build feoramalloc on web platforms
...
Their allocation pathways are already tuned for their respective
platforms.
2025-05-08 11:06:01 -04:00
Feoramund
e9bf350cca
Add heap allocator exception for Orca
...
This is a copy of the libc malloc-based allocator that we previously
had. It's preferable to use the Orca runtime allocator over our own.
2025-05-08 11:06:01 -04:00
Feoramund
ef72a373b2
Use VM_INHERIT_COPY instead
...
This aligns with the use of `MAP_PRIVATE` in `mmap`-based
implementations.
2025-05-08 11:06:01 -04:00
Feoramund
4c59019a57
Restrict superpage allocation on Darwin to AMD64 and 2MiB
...
There's a possibility that Darwin does not support anything else, in
terms of size or architecture.
2025-05-08 11:06:01 -04:00
Feoramund
1e62f2c8c4
Rearrange slab iteration conditionals
2025-05-08 11:06:01 -04:00
Feoramund
76a2877d7d
Hoist reused calculations out into variables
2025-05-08 11:06:01 -04:00
Feoramund
17b38c1bca
Strengthen Consume to Acquire in heap allocator
2025-05-08 11:06:01 -04:00
Feoramund
6d99d9571c
Fix indentation
2025-05-08 11:06:01 -04:00
Feoramund
102fc3f058
Add heap allocator tests to CI
2025-05-08 11:06:00 -04:00
Feoramund
a4a776634c
Add native heap allocator
...
- Add the test bench for the allocator
- Move old allocator code to the test bench
- Fix `heap_resize` usage in `os2/env_linux.odin` to fit new API
requiring `old_size`
2025-05-08 11:06:00 -04:00
Feoramund
f142043db9
Add virtual memory procedures to base
2025-05-08 11:06:00 -04:00
Feoramund
13dca77d3d
Add get_current_thread_id to base
2025-05-08 11:06:00 -04:00
gingerBill
4a4294c2af
Merge pull request #5095 from Lperlind/temp-collisions
...
os2: Resolve temp allocator collisions
2025-05-08 15:11:51 +01:00
gingerBill
204c6f514a
Remove use of do
2025-05-08 14:03:17 +01:00
gingerBill
0ce8373528
Formatting Fix
2025-05-08 13:23:22 +01:00
gingerBill
d7fc3d1770
Merge pull request #5121 from Badaxis/badaxis/xaudio2
...
XAudio2 Implementation
2025-05-08 13:11:51 +01:00
gingerBill
92df892f25
Merge pull request #5064 from harold-b/hb/objc-classes
...
Add support for Objective-C class implementation
2025-05-08 12:58:33 +01:00
Lucas Perlind
f5b947ea73
Fix linux
2025-05-08 17:45:29 +10:00
Lucas Perlind
14c5096b81
Improve assert information
2025-05-08 17:41:03 +10:00
Lucas Perlind
9f2d008a8a
Remove TEMP_ALLOCATOR_GUARD wrapper
2025-05-08 17:41:03 +10:00
Lucas Perlind
5292a7f4f3
Fix posix
2025-05-08 17:41:03 +10:00
Lucas Perlind
1bea59ee68
Fix linux
2025-05-08 17:41:03 +10:00
Lucas Perlind
190960e103
fix -vet
2025-05-08 17:41:03 +10:00
Lucas Perlind
b9db1dd3e0
os2: Resolve temp allocator collisions
2025-05-08 17:41:01 +10:00
gingerBill
4a709086a4
Merge pull request #5131 from laytan/fix-builder-dispose
...
fix disposing builder when not created
2025-05-07 14:03:42 +01:00
Laytan Laats
ad4866653a
fix disposing builder when not created
...
Fixes #5128
p->builder is created in lb_begin_procedure_body, but that isn't called
if there is no body, and we were still calling dispose at that point.
Moved it into lb_end_procedure_body to match.
2025-05-07 14:39:51 +02:00
gingerBill
90a30a145a
Merge pull request #5122 from Lperlind/asan-allocators
...
Add asan support for various allocators and stack unpoisoning
2025-05-07 10:21:16 +01:00
Lucas Perlind
46e0c7ad74
Cleanup
2025-05-07 11:30:58 +10:00
Laytan
7c1a9f1e7a
Merge pull request #5127 from laytan/fix-process-windows-handles-handling
...
Fix process windows handles handling
2025-05-06 22:31:54 +02:00
laytan
9b218a2922
don't need to hang on to the null handle
2025-05-06 19:42:52 +02:00
Laytan
bf5206968a
close null_handle
2025-05-06 20:57:26 +02:00
Laytan
2bce446d08
ifs wrong way around
2025-05-06 20:47:51 +02:00
Laytan
814a500e83
Windows was defaulting to the std handles of the current process, which is wrong
2025-05-06 20:43:02 +02:00
gingerBill
0cf5b5984d
Merge pull request #5108 from Barinzaya/core-simd-indices-redadd-redmul
...
Alternate `reduce_add`/`reduce_mul` intrinsics
2025-05-06 15:46:49 +01:00
gingerBill
e074518983
Merge pull request #5124 from Barinzaya/core-simd-bmi-intrinsics
...
BMI/BMI2 Intrinsics
2025-05-06 15:29:34 +01:00
Jeroen van Rijn
8097b59e30
Also allow comparing SOA pointers against each other
...
This compares the data pointer *and* the index.
```odin
package scratch
import "core:fmt"
Foo :: struct {a, b: int}
main :: proc() {
a := new(#soa[dynamic]Foo)
a^ = make(#soa[dynamic]Foo, 12, 12)
b := new(#soa[dynamic]Foo)
b^ = make(#soa[dynamic]Foo, 12, 12)
fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[0], &a[0] == &b[0]) // Same: false
fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[1], &a[0] == &b[1]) // Same: false
fmt.printfln("&a[0]: %p, &b[0]: %p, Same: %v", &a[0], &b[2], &a[0] == &b[2]) // Same: false
fmt.printfln("&a[0]: %p, &a[1]: %p, Same: %v", &a[0], &a[1], &a[0] == &a[1]) // Same: false
fmt.printfln("&a[1]: %p, &a[2]: %p, Same: %v", &a[1], &a[2], &a[1] == &a[2]) // Same: false
fmt.printfln("&a[2]: %p, &a[3]: %p, Same: %v", &a[2], &a[3], &a[2] == &a[3]) // Same: false
fmt.printfln("&a[0]: %p, &a[0]: %p, Same: %v", &a[0], &a[0], &a[0] == &a[0]) // Same: true
fmt.printfln("&a[1]: %p, &a[1]: %p, Same: %v", &a[1], &a[1], &a[1] == &a[1]) // Same: true
fmt.printfln("&a[2]: %p, &a[2]: %p, Same: %v", &a[2], &a[2], &a[2] == &a[2]) // Same: true
}
```
2025-05-06 15:10:08 +02:00
Laytan
e228ef221b
Merge pull request #5125 from brian-hmn/fix-set-env
...
[core:os/os2] Fix: Correct value cloning in os2._set_env for POSIX
2025-05-06 12:24:17 +02:00
Jeroen van Rijn
9a8cc2d1e7
Merge pull request #5123 from bogwi/bug/5104
...
Bug/5104
2025-05-06 11:57:04 +02:00
Brian
27edbc5a76
Fix: Correct value cloning in os2._set_env for POSIX
...
The _set_env procedure in core/os/os2/env_posix.odin was
incorrectly cloning the 'key' argument for 'cval' instead of
the 'value' argument. This resulted in set_env effectively
setting the environment variable's value to its own key.
This commit corrects the typo to use the 'value' argument.
2025-05-06 17:45:06 +08:00
Barinzaya
41bf1ab6dd
Added BMI and BMI2 intrinsics.
...
The BMI ones mostly aren't particularly interesting--they're mostly
trivially representable in-language--but PDEP and PEXT from BMI2 could
be.
2025-05-06 01:44:10 -04:00
Lucas Perlind
fd05f55691
Fix wasi_wasm
2025-05-06 15:23:44 +10:00
bogwi
904a64a45e
Add support for SoaPointer nil comparison in lb_emit_comp_against_nil
2025-05-06 14:21:18 +09:00
Lucas Perlind
83bc2d3c4a
Add asan support for various allocators
2025-05-06 14:55:50 +10:00
Jeroen van Rijn
8032db3484
Fix CreateDibSection binding
2025-05-05 23:23:39 +02:00
Barinzaya
dd5b7852ce
Added alternate reduce-add/reduce-mul intrinsics.
...
The new reduce_add/reduce_mul procs perform the corresponding arithmetic
reduction in different orders than sequential order. These alternative
orders can often offer better SIMD hardware utilization.
Two different orders are added: pair-wise (operating on pairs of
adjacent elements) or bisection-wise (operating element-wise on the
first and last N/2 elements of the vector).
2025-05-05 16:38:45 -04:00
Barinzaya
9814370659
Merge branch 'master' into core-simd-indices-redadd-redmul
2025-05-05 16:37:02 -04:00
Vincent Billet
b34a490c02
Corrections, +XAPO
2025-05-05 22:14:20 +02:00