aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Merge pull request #5064 from harold-b/hb/objc-classesgingerBill2025-05-0813-79/+1160
|\ \ \ \ | | | | | | | | | | Add support for Objective-C class implementation
| * | | | Fix `lb_get_objc_type_encoding` missing matrix and simdvec encodings and ↵Harold Brenes2025-05-051-11/+23
| | | | | | | | | | | | | | | | | | | | minor fixes.
| * | | | Resolve other TODOsHarold Brenes2025-05-032-89/+91
| | | | |
| * | | | Remove some TODO. Leave important noteHarold Brenes2025-05-032-2/+4
| | | | |
| * | | | Move unconditionally exporting Objective-C methods to the right locationHarold Brenes2025-05-032-18/+13
| | | | |
| * | | | Fix checker errors.Harold Brenes2025-05-032-16/+16
| | | | |
| * | | | Register all classes unconditionallyHarold Brenes2025-05-031-2/+8
| | | | |
| * | | | Prevent multiple uses of the same Objective-C class nameHarold Brenes2025-05-034-3/+15
| | | | |
| * | | | Implement all checker specification for Objective-C class implementations ↵Harold Brenes2025-05-035-64/+70
| | | | | | | | | | | | | | | | | | | | and `objc_ivar_get` intrinsic
| * | | | Minor fixes in data type usage and style.Harold Brenes2025-04-301-7/+7
| | | | |
| * | | | Change ivar offsets from u32 to (odin base type) int/native pointer size.Harold Brenes2025-04-302-9/+9
| | | | |
| * | | | Use correct alignment value for `class_addIvar`.Harold Brenes2025-04-301-3/+3
| | | | |
| * | | | Go back to `objc_ivar_get` instead of `ivar_get`.Harold Brenes2025-04-301-1/+1
| | | | |
| * | | | Cleanup ivar generation for selector expressions.Harold Brenes2025-04-302-20/+6
| | | | | | | | | | | | | | | | | | | | Cleanup ObjC superclass resolution.
| * | | | Use basic name instead of raw_name for type encoding complex and quats.Harold Brenes2025-04-301-6/+6
| | | | |
| * | | | Complete lb_get_objc_type_encoding() implementationHarold Brenes2025-04-301-33/+33
| | | | |
| * | | | Better Objective-C object superclass cycle checkHarold Brenes2025-04-301-36/+34
| | | | |
| * | | | Name fixesHarold Brenes2025-04-302-4/+4
| | | | |
| * | | | Fix more styling and minor issuesHarold Brenes2025-04-273-11/+11
| | | | |
| * | | | Fix indentationsHarold Brenes2025-04-2711-808/+822
| | | | | | | | | | | | | | | | | | | | Fix Objective-C wrapper procs not forwarding return value
| * | | | Fix styling issuesHarold Brenes2025-04-271-5/+4
| | | | |
| * | | | Allow the class's ivar to be used as a context provider receiver as well.Harold Brenes2025-04-231-15/+25
| | | | |
| * | | | Add support for Objective-C method implementation with Odin calling convention.Harold Brenes2025-04-236-26/+173
| | | | | | | | | | | | | | | | | | | | Use @objc_context_provider to provide a context for a type.
| * | | | Fix bug in @encode implementation.Harold Brenes2025-04-231-2/+2
| | | | |
| * | | | Fixes to Ivar pseudo fields.Harold Brenes2025-04-231-1/+7
| | | | |
| * | | | Include the ivar in the Objective-C class unconditionally of it being used ↵Harold Brenes2025-04-224-24/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | or not. Allow pseudo-fields for ivar access.
| * | | | Fix ivar in multi-module mode.Harold Brenes2025-04-212-29/+54
| | | | |
| * | | | Add initial support for Objective-C class implementationHarold Brenes2025-04-2012-45/+877
| | |_|/ | |/| |
* | | | fix disposing builder when not createdLaytan Laats2025-05-073-4/+1
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | 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.
* | | Merge pull request #5122 from Lperlind/asan-allocatorsgingerBill2025-05-074-11/+34
|\ \ \ | | | | | | | | Add asan support for various allocators and stack unpoisoning
| * | | CleanupLucas Perlind2025-05-071-12/+8
| | | |
| * | | Add asan support for various allocatorsLucas Perlind2025-05-064-11/+38
| | | |
* | | | Merge pull request #5108 from Barinzaya/core-simd-indices-redadd-redmulgingerBill2025-05-063-0/+78
|\ \ \ \ | | | | | | | | | | Alternate `reduce_add`/`reduce_mul` intrinsics
| * | | | Added alternate reduce-add/reduce-mul intrinsics.Barinzaya2025-05-053-0/+78
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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).
* | | | Also allow comparing SOA pointers against each otherJeroen van Rijn2025-05-061-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 } ```
* | | | Add support for SoaPointer nil comparison in lb_emit_comp_against_nilbogwi2025-05-061-0/+12
|/ / /
* | | Fix `type_union_tag_offset` when all members are zero sizedJeroen van Rijn2025-05-052-5/+6
| | |
* | | Add `intrinsics.simd_indices`gingerBill2025-05-053-0/+53
| |/ |/|
* | Clarify error messages for types that aren't simply comparable.Jeroen van Rijn2025-05-031-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 == {} { ^~~~~~^ ```
* | Fix #5107Jeroen van Rijn2025-05-031-1/+1
| | | | | | | | Fixes #5107 by checking whether `result_count` is non-zero before indexing `type->Proc.results->Tuple.variables`.
* | Allow polymorphic #simd array as return typeJeroen van Rijn2025-05-021-1/+4
| |
* | Merge pull request #5098 from laytan/fix-nan-comparisonsgingerBill2025-05-022-3/+3
|\ \ | | | | | | fix variable NaN comparisons
| * | fix variable NaN comparisonsLaytan Laats2025-04-302-3/+3
| | |
* | | Merge pull request #5102 from Lperlind/attribute-no-sanitize-addressgingerBill2025-05-015-2/+11
|\ \ \ | | | | | | | | Add attribute @(no_sanitize_address)
| * | | Add attribute @(no_sanitize_address)Lucas Perlind2025-05-015-2/+11
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* / / fixes assigning null as a type if it's an alias but the base type isn't ↵Laytan Laats2025-04-301-1/+4
|/ / | | | | | | | | | | | | | | | | | | | | 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
* | All N-valued (N>=2) expressions in `or_else` expressionsgingerBill2025-04-291-1/+13
| |
* | Warn if someone imports the same case-folded path twiceJeroen van Rijn2025-04-271-0/+13
| |
* | Add missing cast to global/static var alignments.Barinzaya2025-04-242-2/+2
| |
* | Correctly align global and static variables.Barinzaya2025-04-242-0/+2
|/ | | | | | 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.