agra
659cdc2276
ffi M1.2 A.2c + A.3: eager body lowering + self.field via state struct
...
Adds Pass 4b 'lowerObjcDefinedClassMethods' to lowerRoot: after
scan, walk objc_defined_class_cache and force-lower each bodied
instance method. The Obj-C runtime invokes these via the IMP
pointers wired up in A.4 — no sx-side call path drives lazy
lowering, so we trigger it here. Mirrors the JNI eager-lower
pattern in Pass 5.
Bug fix: lazyLowerFunction has its OWN inline body-lowering
path (separate from lowerFunction) that re-resolves param types
at line 1025. It was running without current_foreign_class set,
so '*Self' fell through to the type_bridge fallback and got
interned as a 0-field struct named 'Self' — body's
'self.counter' GEP'd into '{}' and LLVM verification rejected.
Fix: set current_foreign_class at the top of lazyLowerFunction
via the same lookupObjcDefinedClassForMethod path lowerFunction
uses. Save+restore via defer.
A.3 ('self.field access via the ivar') falls out for free —
'*Self' resolves to '*__SxFooState' so 'self.counter' is a
plain struct field access. IR snapshot in
142-objc-class-method-lowering.ir shows the round-trip:
define internal void @SxFoo.bump(ptr, ptr self) {
%gep = getelementptr inbounds { i32 }, ptr %self, 0, 0
%v = load i32, ptr %gep
store i32 (%v + 1), ptr %gep
ret void
}
171 examples pass (+1 from 142); zig build test green.
Still gated: Obj-C runtime dispatch (A.7) — sx-side
'f.bump()' calls bail at lower.zig:4407 with the existing
diagnostic. IMP-trampoline emission (the C-ABI shim that bridges
'objc_msgSend' → this body) lands in A.4 alongside class-pair
init.
2026-05-25 22:08:23 +03:00
..
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-03-06 10:46:28 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-14 13:17:22 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-09 18:07:41 +02:00
2026-02-24 15:10:02 +02:00
2026-05-24 22:59:20 +03:00
2026-02-24 17:37:52 +02:00
2026-02-24 15:10:02 +02:00
2026-02-11 14:22:25 +02:00
2026-02-09 18:07:41 +02:00
2026-02-24 17:37:52 +02:00
2026-02-14 13:17:22 +02:00
2026-02-09 18:07:41 +02:00
2026-02-11 13:03:04 +02:00
2026-02-17 16:57:12 +02:00
2026-02-17 16:57:12 +02:00
2026-02-14 14:52:39 +02:00
2026-02-24 17:37:52 +02:00
2026-02-16 01:13:34 +02:00
2026-02-24 06:20:38 +02:00
2026-02-11 01:05:21 +02:00
2026-02-22 22:16:30 +02:00
2026-02-11 20:41:43 +02:00
2026-02-26 02:25:02 +02:00
2026-02-12 12:27:35 +02:00
2026-02-14 13:17:22 +02:00
2026-02-14 14:52:39 +02:00
2026-05-24 22:59:20 +03:00
2026-02-22 22:16:30 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-22 17:24:04 +02:00
2026-02-24 17:37:52 +02:00
2026-02-25 15:51:22 +02:00
2026-03-02 21:00:55 +02:00
2026-05-25 15:33:28 +03:00
2026-03-04 17:12:56 +02:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 13:19:08 +03:00
2026-05-17 17:46:17 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-24 22:59:20 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-17 19:36:37 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 00:11:23 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-19 12:06:08 +03:00
2026-05-19 12:06:08 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-25 08:41:50 +03:00
2026-05-18 18:32:55 +03:00
2026-05-24 22:59:20 +03:00
2026-05-19 00:22:35 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 19:18:31 +03:00
2026-05-19 21:14:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-22 19:03:31 +03:00
2026-05-23 01:28:32 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 15:33:28 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00
2026-05-25 15:23:13 +03:00
2026-05-25 09:50:37 +03:00
2026-05-25 11:41:59 +03:00
2026-05-25 12:18:27 +03:00
2026-05-25 15:01:58 +03:00
2026-05-25 15:33:28 +03:00
2026-05-25 15:45:33 +03:00
2026-05-25 15:59:32 +03:00
2026-05-25 17:52:53 +03:00
2026-05-25 21:15:44 +03:00
2026-05-25 21:16:32 +03:00
2026-05-25 21:33:20 +03:00
2026-05-25 22:08:23 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-19 11:54:36 +03:00
2026-05-25 09:50:37 +03:00
2026-05-19 11:51:34 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 11:57:44 +03:00
2026-05-19 12:01:01 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-19 11:59:18 +03:00
2026-05-22 13:13:43 +03:00
2026-05-22 13:13:43 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 15:13:33 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-20 13:53:25 +03:00
2026-05-23 01:28:32 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-25 16:32:32 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-20 12:46:40 +03:00
2026-05-23 01:28:32 +03:00
2026-05-20 10:32:56 +03:00
2026-05-20 10:47:07 +03:00
2026-05-20 12:51:48 +03:00
2026-05-20 14:50:21 +03:00
2026-05-20 16:57:30 +03:00
2026-05-25 16:32:32 +03:00
2026-05-19 12:40:21 +03:00
2026-05-19 12:48:38 +03:00
2026-05-19 13:01:28 +03:00
2026-05-19 18:39:10 +03:00
2026-05-19 18:44:14 +03:00
2026-05-19 18:50:26 +03:00
2026-05-19 18:51:56 +03:00
2026-05-19 18:53:19 +03:00
2026-05-19 21:14:31 +03:00
2026-05-20 15:13:33 +03:00
2026-05-19 20:12:09 +03:00
2026-05-19 21:19:09 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:07:19 +03:00
2026-05-25 16:32:32 +03:00
2026-05-25 16:55:32 +03:00
2026-05-25 17:03:16 +03:00
2026-05-17 21:17:17 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-18 17:40:10 +03:00
2026-05-24 22:59:20 +03:00
2026-05-24 22:59:20 +03:00