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
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
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
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
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
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
Jeroen van Rijn
2224911aca
Fix type_union_tag_offset when all members are zero sized
2025-05-05 18:09:54 +02:00
Harold Brenes
14e25c0f2a
Fix lb_get_objc_type_encoding missing matrix and simdvec encodings and minor fixes.
2025-05-05 09:07:50 -04:00
gingerBill
36945079f8
Add intrinsics.simd_indices
2025-05-05 11:41:54 +01:00
Jeroen van Rijn
c96d8237ba
Clarify error messages for types that aren't simply comparable.
...
Previously, it implied that these are different types:
```
W:/Scratch/scratch.odin(17:5) Error: Cannot compare expression, operator '==' not defined between the types 'Handle_Map($T=u32, $HT=u32, $Max=10000)' and 'Handle_Map($T=u32, $HT=u32, $Max=10000)'
if m == {} {
^~~~~~^
```
Now:
```
W:/Scratch/scratch.odin(20:5) Error: Cannot compare expression. Type 'Handle_Map($T=u32, $HT=u32, $Max=10000)' is not simply comparable, so operator '==' is not defined for it.
if m == {} {
^~~~~~^
```
2025-05-03 22:31:01 +02:00
Harold Brenes
be2e4dec7d
Resolve other TODOs
2025-05-03 13:06:57 -04:00
Jeroen van Rijn
9681d88cd3
Fix #5107
...
Fixes #5107 by checking whether `result_count` is non-zero before indexing `type->Proc.results->Tuple.variables`.
2025-05-03 14:42:20 +02:00
Harold Brenes
fc082f5ea5
Remove some TODO. Leave important note
2025-05-03 03:21:03 -04:00
Harold Brenes
6d18560ca3
Move unconditionally exporting Objective-C methods to the right location
2025-05-03 03:09:31 -04:00
Harold Brenes
cf3830a6a8
Fix checker errors.
2025-05-03 03:09:31 -04:00
Harold Brenes
33d37c72f9
Register all classes unconditionally
2025-05-03 03:09:31 -04:00
Harold Brenes
a00b91577d
Prevent multiple uses of the same Objective-C class name
2025-05-03 03:09:30 -04:00
Harold Brenes
5f0b47c373
Implement all checker specification for Objective-C class implementations and objc_ivar_get intrinsic
2025-05-03 00:59:33 -04:00
Jeroen van Rijn
30c6fea9e9
Allow polymorphic #simd array as return type
2025-05-02 15:38:43 +02:00
gingerBill
19fe75f020
Merge pull request #5098 from laytan/fix-nan-comparisons
...
fix variable NaN comparisons
2025-05-02 13:00:42 +01:00
gingerBill
777c33a9a1
Merge pull request #5102 from Lperlind/attribute-no-sanitize-address
...
Add attribute @(no_sanitize_address)
2025-05-01 12:16:10 +01:00
Lucas Perlind
5c73b4ef58
Add attribute @(no_sanitize_address)
...
The purposes of this attribute is to let procedures opt-out of being
instrumented with asan. Typically an allocator that includes 'in-band'
meta-data will be accessing poisoned values (such as tlsf).
Making asan work with these allocators becomes very challenging so
just being to ignore asan within specific allocator procedures
makes it easier to reason and removes the need to temporarily
poison and unpoison allocator data.
2025-05-01 20:42:21 +10:00
Harold Brenes
0746127654
Minor fixes in data type usage and style.
2025-04-30 22:16:53 -04:00
Harold Brenes
1505edef01
Change ivar offsets from u32 to (odin base type) int/native pointer size.
2025-04-30 22:09:33 -04:00
Harold Brenes
dc8692b504
Use correct alignment value for class_addIvar.
2025-04-30 21:52:29 -04:00
Harold Brenes
998ed79738
Go back to objc_ivar_get instead of ivar_get.
2025-04-30 20:43:05 -04:00
Harold Brenes
c2dfc4b749
Cleanup ivar generation for selector expressions.
...
Cleanup ObjC superclass resolution.
2025-04-30 20:32:34 -04:00
Harold Brenes
abfbb2f9ed
Use basic name instead of raw_name for type encoding complex and quats.
2025-04-30 20:32:28 -04:00
Harold Brenes
668a9a89b0
Complete lb_get_objc_type_encoding() implementation
2025-04-30 20:32:14 -04:00
Harold Brenes
5097e98da2
Better Objective-C object superclass cycle check
2025-04-30 20:32:05 -04:00
Harold Brenes
2dc5653fd1
Name fixes
2025-04-30 20:31:54 -04:00
Laytan Laats
396a18efce
fix variable NaN comparisons
2025-04-30 20:04:24 +02:00
Laytan Laats
9fb9382449
fixes assigning null as a type if it's an alias but the base type isn't resolved yet
...
It's a bit of a band aid fix because the field will get the type of the
alias, not the base type, but that was already the case before #5045 so
it's forward progression.
Closes #5092
Fixes #5061
2025-04-30 19:39:38 +02:00
gingerBill
0de802d388
All N-valued (N>=2) expressions in or_else expressions
2025-04-29 17:39:28 +01:00
Harold Brenes
89533f49e4
Fix more styling and minor issues
2025-04-27 23:05:17 -04:00
Harold Brenes
f3923ed666
Fix indentations
...
Fix Objective-C wrapper procs not forwarding return value
2025-04-27 22:55:53 -04:00
Harold Brenes
6c9c239a5e
Fix styling issues
2025-04-27 22:55:53 -04:00
Jeroen van Rijn
d463aba7d1
Warn if someone imports the same case-folded path twice
2025-04-27 14:32:26 +02:00
Barinzaya
9284ebb5e8
Add missing cast to global/static var alignments.
2025-04-24 14:35:00 -04:00
Barinzaya
b41a776027
Correctly align global and static variables.
...
This can be important if matrices or SIMD vectors are being used in
global or static variables, as otherwise it may result in crashes due to
aligned instructions accessing misaligned variables.
2025-04-24 14:21:21 -04:00
Harold Brenes
974a197ce1
Allow the class's ivar to be used as a context provider receiver as well.
2025-04-23 02:06:01 -04:00
Harold Brenes
47abea1229
Add support for Objective-C method implementation with Odin calling convention.
...
Use @objc_context_provider to provide a context for a type.
2025-04-23 02:05:51 -04:00
Harold Brenes
730c844fc6
Fix bug in @encode implementation.
2025-04-23 02:05:43 -04:00
Harold Brenes
53adff38f0
Fixes to Ivar pseudo fields.
2025-04-23 02:05:33 -04:00
Harold Brenes
bca02f81cd
Include the ivar in the Objective-C class unconditionally of it being used or not.
...
Allow pseudo-fields for ivar access.
2025-04-22 19:18:53 -04:00
Harold Brenes
b3b4d501ca
Fix ivar in multi-module mode.
2025-04-21 02:43:16 -04:00
Harold Brenes
a3de9c8de4
Add initial support for Objective-C class implementation
2025-04-20 21:53:46 -04:00