P5.5: migrate the 35 BuildOptions accessors off #compiler to VM-native abi(.compiler)

`BuildOptions :: struct #compiler { ...35 methods... }` becomes
`BuildOptions :: struct { }` (an opaque null-sentinel handle) plus 35 free
`ufcs (self: BuildOptions, …) abi(.compiler)` decls in build.sx, each serviced
by a new `comptime_vm.callBuildOptionFn` arm (off `callCompilerFn`). No legacy
`compiler_lib` handler: the names are registered in `bound_fns` with a single
bailing stub only so `weldedCompilerFn` accepts them.

- String lifetime: setters dupe the arg into the persistent `Vm.gpa` (the
  Compilation allocator, threaded into both `tryEval` and `runBuildCallback` —
  not the per-eval VM arena) and write/append to the threaded `BuildConfig`.
  Getters read the field/slice or compute the target predicate from the triple.
- Dispatch routing (Option B): a `#run`/const-init entry that directly calls a
  compiler-domain/welded fn (`emit_llvm.entryNeedsVm`) runs on the VM with no
  legacy fallback regardless of the `-Dcomptime-flat` gate, so gate-OFF stays
  green without a legacy BuildOptions handler (P5.7 retires the legacy interp).
- Mark the 5 `platform/bundle.sx` getter-calling helpers `abi(.compiler)` (they
  are comptime-only bundler code; otherwise their now-welded getter calls trip
  the runtime-call gate).
- 37 `.ir` snapshots regenerated (std transitively imports build.sx → string-
  pool/type-table indices shift); verified `.ir`-only, zero behavior-stream diffs.

BuildOptions `compiler_call` strict bails gone (1609/1614/1615 strict-clean);
1616 now bails on a separate, pre-existing unported bitwise/shift VM gap (`shr`),
to port first in P5.6. 703/0 both gates.

Also sweep the outdated "flat memory" terminology to "comptime/byte-addressable"
across comptime_vm + the plan/checkpoint/CLAUDE docs: the comptime VM is
arena-backed, byte-addressable memory where `Addr` is a real host pointer, not a
flat contiguous address space (flag names `-Dcomptime-flat`/`SX_COMPTIME_FLAT` kept).
This commit is contained in:
agra
2026-06-19 13:21:09 +03:00
parent af32c3823c
commit ba28488d99
48 changed files with 13896 additions and 14974 deletions

View File

@@ -341,7 +341,7 @@ features — diagnostics renderer, heterogeneous variadic packs), and
**ERR** (error handling: separate-channel `!` errors, `try` / `catch` /
`or` / `onfail`, return traces), and **COMPILER-API** (the comptime `compiler`
library that supersedes the metatype `declare`/`define` `#builtin`s and the
`#compiler` attribute — **pivoted 2026-06-17** off the byte-weld to a **flat-memory
`#compiler` attribute — **pivoted 2026-06-17** off the byte-weld to a **byte-addressable
bytecode comptime VM** as its foundation; see `current/PLAN-COMPILER-VM.md`). They
touch mostly disjoint files; any can be advanced independently.
@@ -352,7 +352,7 @@ touch mostly disjoint files; any can be advanced independently.
- `current/CHECKPOINT-LANG.md` — LANG progress tracker.
- `current/CHECKPOINT-ERR.md` — ERR progress tracker.
- `current/CHECKPOINT-COMPILER-API.md` — COMPILER-API progress tracker
(has a `## ⏯ Resume` block; **pivoted to the flat-memory VM** — Phase 0 strip
(has a `## ⏯ Resume` block; **pivoted to the comptime VM** — Phase 0 strip
pending, branch `reify`).
2. Read the plan that corresponds to the stream the user wants to advance:
- `current/PLAN.md` — IR implementation plan.
@@ -360,7 +360,7 @@ touch mostly disjoint files; any can be advanced independently.
- `~/.claude/plans/tidy-doodling-cray.md` — MEM (mem.sx) implementation plan.
- `current/PLAN-LANG.md` — LANG implementation plan.
- `current/PLAN-ERR.md` — ERR implementation plan.
- `current/PLAN-COMPILER-VM.md`**COMPILER-API active plan** (flat-memory bytecode
- `current/PLAN-COMPILER-VM.md`**COMPILER-API active plan** (byte-addressable bytecode
comptime VM, then re-home the compiler-API on it). `design/comptime-compiler-api.md`
is the SUPERSEDED weld design, kept only for history + to scope the Phase 0 strip.
3. Read `specs.md` if you need to understand language behavior.

View File

@@ -11,7 +11,7 @@ with ONE welded mechanism. Branch: `reify` (off `master`). Update after every st
> **⚠ DIRECTION CHANGED (2026-06-17). The active plan is now
> [`PLAN-COMPILER-VM.md`](PLAN-COMPILER-VM.md), NOT the weld.**
> The **byte-weld + serialization/marshaling** approach is the wrong direction and is
> being **stripped**. New foundation: a **bytecode VM over flat, byte-addressable
> being **stripped**. New foundation: a **bytecode VM over byte-addressable
> memory** so comptime values are native bytes; then the compiler-API rides on it with
> direct memory access (no weld, no validation, no marshaling). Everything below this
> banner describes the now-superseded weld state (committed on `reify` through
@@ -21,15 +21,15 @@ with ONE welded mechanism. Branch: `reify` (off `master`). Update after every st
> **Why the pivot:** the comptime evaluator (`src/ir/interp.zig`) represents values as
> tagged `Value` unions, NOT native bytes — so a comptime `@ptrCast(*StructInfo)`
> reads the `Value` union's memory, not a struct. The weld tried to bridge that with
> hand-marshaling — exactly what the design set out to kill. Flat memory makes comptime
> hand-marshaling — exactly what the design set out to kill. Comptime memory makes comptime
> values real bytes, so the bridge disappears. (JIT-native comptime was rejected: it
> breaks cross-compilation — host vs target layout — and loses the sandbox. A
> flat-memory VM keeps both while getting native bytes + speed.)
> comptime VM keeps both while getting native bytes + speed.)
>
> **Next action (2026-06-18) — the WHOLE metatype surface is VM-native (steps 7+8, committed through
> `d0ebc55`; step 8 uncommitted).** `declare`/`define`/`type_info` + tagged-union `enum_init` all run
> NATIVELY on the VM (`.call_builtin` exec arm → `callBuiltinVm`; `defineFromInfo` decodes a
> `TypeInfo` from flat memory, `buildTypeInfo` reflects one INTO flat memory — faithful ports of
> `TypeInfo` from comptime memory, `buildTypeInfo` reflects one INTO comptime memory — faithful ports of
> legacy `defineEnum`/`Struct`/`Tuple`/`reflectTypeInfo`). The ENTIRE metatype range `0614``0624` +
> `0632` runs **HANDLED with ZERO fallback** (incl. the `define(declare, type_info(T))` round-trips
> `0619`/`0622`/`0623`); VM output byte-matches legacy. `enum_init`/`define`/`type_info` bail loudly
@@ -52,7 +52,7 @@ with ONE welded mechanism. Branch: `reify` (off `master`). Update after every st
> `0602`/`0603` stay on legacy fallback until the BuildOptions migration lands. **Migration shape**
> (end-state, shares the `BuildConfig`-on-the-VM prerequisite with the bundler 4E): (1) each
> `BuildOptions` setter/getter becomes a `compiler` fn in `compiler_lib.bound_fns` + `Vm.callCompilerFn`,
> reading flat-memory args + a `*BuildConfig` threaded into the `Vm` (the same `BuildConfig`
> reading comptime args + a `*BuildConfig` threaded into the `Vm` (the same `BuildConfig`
> `main.zig` forwards); (2) `library/modules/build.sx` declares them `abi(.zig) extern compiler`
> instead of `struct #compiler`; (3) delete the `compiler_call` op + `compiler_hooks.zig`
> `HookFn`/`Registry` + the `#compiler` parse/lower path. See `PLAN-COMPILER-VM.md` Phase 4.
@@ -90,7 +90,7 @@ with ONE welded mechanism. Branch: `reify` (off `master`). Update after every st
> entry):** `c_object_paths() -> List(string)` + `link_libraries() -> List(string)` are `abi(.compiler)` primitives
> (new stdlib home `library/modules/compiler.sx`), serviced by `comptime_vm.callCompilerFn` reading `BuildConfig`
> fields `main.zig` forwards (`c_object_paths`/`link_libraries`). New reusable VM helper `makeStringList` builds a
> `List(string)` in flat memory (target-aware via the result type's offsets); `invoke`/`callCompilerFn` now thread
> `List(string)` in comptime memory (target-aware via the result type's offsets); `invoke`/`callCompilerFn` now thread
> the call's result type (`ins.ty`). Legacy handlers bail loudly (VM-only by nature — post-link). Smoke test
> `1662-platform-build-pipeline-queries` (AOT, C companion → 1 object): a post-link callback checks the VM-built
> list is well-formed; build exit 0 ONLY if so (negative-probe verified: wrong count → "post-link callback
@@ -106,9 +106,13 @@ with ONE welded mechanism. Branch: `reify` (off `master`). Update after every st
> build is sx-driven via `default_pipeline` (force-lowered + auto-invoked; NO Zig auto-emit/auto-link);
> `on_build(cb)` is the sole callback mechanism; `set_post_link_callback` deleted. **703/0 both gates.**
> **NEXT — the FULL MIGRATION (no legacy left), spec'd as Phase 5 steps P5.5P5.8 in `PLAN-COMPILER-VM.md`:**
> P5.5 migrate the 36 `BuildOptions` `#compiler` methods → VM-native `abi(.compiler)` arms (NO legacy handler —
> direct migration; thread a persistent allocator for setter strings; kills the 4 strict `compiler_call` bails
> 1609/1614/1615/1616) · P5.6 ALL bundling + code signing for EVERY target (macOS/iOS-device/iOS-sim/Android) in
> **P5.5 DONE (2026-06-19, newest Log entry):** the 35 `BuildOptions` `#compiler` methods → VM-native
> `abi(.compiler)` arms (`comptime_vm.callBuildOptionFn`, NO legacy handler); setter strings duped into the
> persistent `Vm.gpa`; `#run`/const-init compiler-domain entries routed to the VM (`entryNeedsVm`, no fallback)
> so gate-OFF stays green; 5 bundle.sx helpers marked `abi(.compiler)`. BuildOptions `compiler_call` bails GONE
> (1609/1614/1615 strict-clean; 1616 now bails on `shr` — a SEPARATE unported bitwise/shift VM gap, do FIRST in
> P5.6). 37 `.ir` regenerated (string-pool churn, behavior-identical). 703/0 BOTH gates. · P5.6 ALL bundling +
> code signing for EVERY target (macOS/iOS-device/iOS-sim/Android) in
> the sx `default_pipeline` · P5.7 DELETE `#compiler`/`compiler_call`/`compiler_hooks`/`interp.zig` + the
> `regToValue` bridge + VM→legacy fallback (drop gate-OFF; VM is the SOLE evaluator) · P5.8 build
> `~/projects/m3te` + `~/projects/distribution` end-to-end as the acceptance test + add `.app`/`.apk` smoke tests.
@@ -389,7 +393,7 @@ What landed:
> marshal machinery (`compiler_lib.zig` reflection+validation, `nominal.zig`
> `validateWeldedStruct`, the `compiler_welded` dispatch, the weld examples/diagnostics
> 0625/0627/1183/1184/1185/1186), keeping the `#library`/`abi`/`extern` *syntax*. Then
> Phase 1 (flat-memory value model). The weld-era "next step" below is **obsolete** —
> Phase 1 (byte-addressable value model). The weld-era "next step" below is **obsolete** —
> kept only as a record of what the weld surface was about to do.
### (obsolete) weld-era next step
@@ -423,6 +427,38 @@ when reached (sentinels or accessor fns; see the design doc Risks).
`List` growth; orthogonal, see `current/CHECKPOINT-METATYPE.md`.)
## Log
- **P5.5 — the 35 `BuildOptions` accessors migrated off `struct #compiler` onto VM-native `abi(.compiler)` (2026-06-19).**
`BuildOptions :: struct #compiler { ...35 methods... }` → `BuildOptions :: struct { }` (an opaque
null-sentinel handle) + 35 free `ufcs (self: BuildOptions, …) abi(.compiler)` decls in
`library/modules/build.sx`, each serviced by a new `comptime_vm.callBuildOptionFn` arm (dispatched from
`callCompilerFn`). **NO legacy `compiler_lib` handler** (per the full-migration direction): the 35 names are
registered in `compiler_lib.bound_fns` only so `weldedCompilerFn` accepts them, with a single bailing stub
`handleBuildOptionsAccessor` (never reached). **String lifetime:** setters dupe the arg string into the
PERSISTENT `Vm.gpa` (the Compilation allocator threaded into both `tryEval` and `runBuildCallback` — NOT the
per-eval VM arena, whose bytes die at `Vm.deinit`), so a `#run`-set path survives to post-link. Setters
write/append the duped string to the threaded `BuildConfig` (`output_path`/`bundle_path`/…, the `link_flags`/
`frameworks`/`asset_dirs` ArrayLists); string getters return the field (or `""`); bool getters compute from the
triple (`predIsMacOS`/`predIsIOS`/…, mirroring the legacy hooks); count/indexed getters read the `BuildConfig`
slices. **Dispatch routing (Option B, chosen at start):** a `#run` / const-init entry that directly calls a
compiler-domain / compiler-welded fn (`emit_llvm.entryNeedsVm`) is routed through the VM with NO legacy fallback
— regardless of the `-Dcomptime-flat` gate — so gate-OFF stays green without a legacy BuildOptions handler
(P5.7 retires the legacy interp entirely). The 5 `platform/bundle.sx` helpers that call getters
(`build_info_plist`/`embed_framework`/`android_bundle_main`/`build_android_manifest`/`compile_jni_main_sources`)
are marked `abi(.compiler)` too (they're comptime-only bundler code; without it their now-welded getter calls
trip the runtime-call gate). **Snapshots:** 37 `.ir` churned (std transitively imports build.sx → string-pool/
type-table indices shift) — regen scoped via `-Dname`; verified ONLY `.ir` changed (zero behavior-stream diffs).
**703/0 BOTH gates.** Strict sweep: the BuildOptions `compiler_call` bails are GONE (1609/1614/1615 strict-clean);
1616 now bails on `shr` (a pre-existing, separate VM gap — bitwise/shift ops `shl`/`shr`/`bit_and`/`bit_or`/
`bit_xor`/`bit_not` are unported in `comptime_vm`, surfaced now that the iOS-device bundler runs further; 1616 is
unpinned + can't JIT-run on macOS anyway). **Also (per user): swept the outdated "flat memory" terminology** —
the comptime VM is byte-addressable, ARENA-backed memory where `Addr` is a REAL host pointer, NOT a flat
contiguous address space; "flat memory"/"flat-memory" → "comptime memory" / "byte-addressable" across
`comptime_vm.zig` + the plan/checkpoint/CLAUDE docs (flag names `-Dcomptime-flat`/`SX_COMPTIME_FLAT` kept).
> **NEXT — P5.6 (ALL bundling + code signing in `default_pipeline`).** First likely sub-task: port the
> bitwise/shift ops (`shl`/`shr`/`bit_and`/`bit_or`/`bit_xor`/`bit_not`) into `comptime_vm` so the real bundler
> path runs on the VM (the 1616 `shr` gap). Then move `platform/bundle.sx`'s per-target logic to read the
> migrated `abi(.compiler)` getters + `fs`/`process` host-FFI, call `bundle()` from `default_pipeline` after
> `link` when `bundle_path()` is set, and remove the `--bundle`/`post_link_module` Zig shim.
- **P5.4 CORE — the whole build is sx-driven via `default_pipeline`; no Zig auto-emit/auto-link (2026-06-19).**
The compiler's post-IR role is now: codegen → invoke the build callback. **There is NO auto-emit / auto-link.**
Commits (all green): (1) **core** (`d178454`) — `emit_object()` is an ACTION (verify+emit via a host
@@ -497,7 +533,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
`main.LinkHooksCtx` (holds allocator/io/base_config/has_jni_main; its `link` adapter unions the explicit
`flags` with the CLI ones and calls `target.link(objects[0], objects[1..], …)` — the linker treats first-vs-rest
as equal inputs). **New VM readers** (inverse of `makeStringList`): `readStringList` (a `List(string)` arg →
`[][]const u8`, element bytes are views into stable flat-memory arena) + `readStringArg` (a `string` arg).
`[][]const u8`, element bytes are views into stable comptime arena) + `readStringArg` (a `string` arg).
Registered `link` on `bound_fns` (legacy stub bails — VM-only). **Smoke test**
`examples/1663-platform-build-pipeline-link` (AOT): a post-link callback re-links the build's own objects (via
`c_object_paths` + `emit_object`) into a temp output through the sx `link` primitive — and the **relinked binary
@@ -513,7 +549,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
`default_build` grows into) and are serviced by `comptime_vm.callCompilerFn` reading two new `BuildConfig`
fields (`c_object_paths`/`link_libraries`) that `main.zig` forwards before the post-link callback (alongside
`binary_path`/`target_triple`/…). **Reusable new piece:** `Vm.makeStringList(table, list_ty, items)` builds a
`List(string)` in flat memory — backing array of `string` fat pointers + the `{items,len,cap}` struct, all laid
`List(string)` in comptime memory — backing array of `string` fat pointers + the `{items,len,cap}` struct, all laid
out from the RESULT type's field offsets/types (target-aware, no hardcoded layout). To get the result type,
`invoke`/`callCompilerFn` now thread the call instruction's `ins.ty` (the only call-result-type need so far).
Legacy (`compiler_lib`) handlers for these bail loudly (`handleBuildPipelineQuery`) — they're VM-only by nature
@@ -581,7 +617,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
(1) **`trace_resolve`** (1035) — PORTED to the VM (`comptime_vm.zig`): unpack the `(func_id<<32|offset)`
comptime frame, resolve func name + `file:line:col` + source line via a **`source_map` now threaded into the
VM** (new `tryEval` param, `&import_sources` from emit_llvm), build the `{file,line,col,func,line_text}`
`Frame` struct in flat memory (`makeStringValue`/`writeField`/`fieldOffset`). (2) **0522** (bare-pack
`Frame` struct in comptime memory (`makeStringValue`/`writeField`/`fieldOffset`). (2) **0522** (bare-pack
`[]Any`) — was a CRASH (`reflectArgTypeId` `@intCast` of a garbage word) → hardened to a loud bail
(`typeIdxOf` checked cast; the VM must never panic). ROOT CAUSE: after the 0143 fix `$args` materializes as
`[]type_value` (8-byte), but the example declared `describe(args: []Any)` (16-byte) → every element past the
@@ -867,7 +903,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
Replaced the growable `ArrayList(u8)` flat buffer (which reallocs/MOVES on growth) with a
`std.heap.ArenaAllocator`: each `allocBytes` is a separate arena allocation that never moves and
is freed wholesale on `deinit` (no per-object free, no cap, no fixed buffer). **`Addr` is now the
allocation's absolute host pointer** (`@intFromPtr`), not an offset — so a flat-memory pointer and
allocation's absolute host pointer** (`@intFromPtr`), not an offset — so a comptime pointer and
an FFI-returned host pointer are the SAME kind of value, and the FFI bridge (4D.1) can pass them
to/from libc with ZERO translation and no per-call pinning (the original moving-buffer hazard is
gone by construction). `Machine.readWord/writeWord/bytes` deref the absolute pointer directly,
@@ -883,9 +919,9 @@ when reached (sentinels or accessor fns; see the design doc Risks).
- **Phase 4A.1 (VM plan) — `box_any`/`unbox_any` on the VM + `.any` as a 16-byte aggregate (2026-06-18).**
Ported the Any-boxing conversion pair: `box_any` allocates the 16-byte `{ type_tag@0, value@8 }`
box (tag = source TypeId index, matching the legacy comptime interp), writing a word source's
scalar via `writeField(source_type)` (so f32 round-trips) or an aggregate source's flat-memory
scalar via `writeField(source_type)` (so f32 round-trips) or an aggregate source's comptime
ADDR (the runtime pointer-in-value-slot shape); `unbox_any` reads the value slot back (word →
`readField`, aggregate → the stored ADDR). **Required making `.any` a first-class flat-memory
`readField`, aggregate → the stored ADDR). **Required making `.any` a first-class comptime
aggregate** (it was `kindOf → .unsupported`): `kindOf(.any) = .aggregate` (16B, by-address) +
`fieldOffset` special-cases `.any` to the `{@0, @8}` layout (shared with string/slice) — without
the latter, a `struct_get` on an Any panicked (`union field 'struct' while 'any' is active`),
@@ -935,7 +971,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
HANDLED** on the VM (define is the whole eval); `0622`/`0623` run define HANDLED then fall back
cleanly at the still-unported `type_info` reflection. VM output byte-matches legacy for all 7.
**697/0 BOTH gates + all unit tests (added: tagged-union `enum_init` payload layout).** On
`reify`. **Next:** port `type_info` (REFLECT a type → build a `TypeInfo` value in flat memory,
`reify`. **Next:** port `type_info` (REFLECT a type → build a `TypeInfo` value in comptime memory,
the inverse — reuses the tagged-union `enum_init` write) so `0619`/`0622`/`0623` go fully HANDLED;
then the rest of the comptime corpus (drive the SX_COMPTIME_FLAT_TRACE fallback list toward the
genuinely-non-comptime cases) before the VM-default flip + legacy deletion.
@@ -1155,7 +1191,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
- **Phase 3 P3.1 (VM plan) — first read-only reflection readers: `find_type` + `type_field_count` (2026-06-18).**
Two more `compiler`-library fns, bound the same way as the `intern`/`text_of` seed (added
to `compiler_lib.bound_fns` for the legacy handler + the welded-decl export check, AND to
`Vm.callCompilerFn` for the native flat-memory path — NO marshaling). A **type handle is a
`Vm.callCompilerFn` for the native comptime path — NO marshaling). A **type handle is a
plain `u32` `TypeId`** (like `StringId`), so both keep the seed's clean scalar shape:
`find_type(name: StringId) -> TypeId` (`TypeTable.findByName`, `unresolved`/0 if absent) and
`type_field_count(t: TypeId) -> i64` (a NEW `TypeTable.memberCount` query — struct/union/
@@ -1166,7 +1202,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
(`find_type` + `type_field_count`, struct found → 3 fields, missing → `unresolved`).
**Parity 689/689** (gate ON and OFF). **Decision (resolves the plan's `find_type → ?Type`
sketch):** return a NON-optional `TypeId` with the `unresolved` (0) sentinel for not-found,
NOT `?Type` — a `Type` value resolves to `.any` (which the flat-memory VM doesn't represent)
NOT `?Type` — a `Type` value resolves to `.any` (which the comptime VM doesn't represent)
and an optional can't cross the legacy↔VM eval boundary; `unresolved` is the project-blessed
unmistakable "no type" marker. Forward (P3.2): more readers on the same handle shape
(`type_name`/`field_name`/`field_type`/kind), then `register_struct` (first mutating fn).
@@ -1184,14 +1220,14 @@ when reached (sentinels or accessor fns; see the design doc Risks).
(malformed `ret Ref.none` → bail, not crash). Parity **688/688** both ways.
- **Phase 3 SEED (VM plan) — compiler-call path: `intern`/`text_of` native on the VM (2026-06-18).**
`invoke` now dispatches a welded `compiler`-library fn (gated on `compiler_welded`) to
`Vm.callCompilerFn`, serviced NATIVELY on flat memory (no legacy `Interpreter`):
`intern(string)->StringId` reads the flat-memory string bytes and `internString`s into the
`Vm.callCompilerFn`, serviced NATIVELY on comptime memory (no legacy `Interpreter`):
`intern(string)->StringId` reads the comptime string bytes and `internString`s into the
const-cast table (pool-only — doesn't touch type layout, so cached sizes stay valid);
`text_of(StringId)->string` materializes the pooled text back into flat memory. Unlocked
`text_of(StringId)->string` materializes the pooled text back into comptime memory. Unlocked
`0626`; the ONLY remaining const-init fallback is now the inline-asm global (`1654`).
Parity **688/688** (gate ON and OFF); unit test added. This is the mechanism Phase 3 grows
— the next compiler fns (`find_type`, `register_struct`, reflection readers) bind the same
way (flat-memory pointer in, handle/pointer out, no marshaling).
way (comptime pointer in, handle/pointer out, no marshaling).
- **Phase 1.final step 9 (VM plan) — `-Dcomptime-flat` build flag (the "swap behind a build flag" step) (2026-06-18).**
Added the `-Dcomptime-flat` build option (build.zig → a `build_opts` options module on
`mod`; `emit_llvm.init` reads `build_opts.comptime_flat or SX_COMPTIME_FLAT env`). This is
@@ -1199,7 +1235,7 @@ when reached (sentinels or accessor fns; see the design doc Risks).
`zig build test -Dcomptime-flat` runs the FULL corpus on the VM (688/0). Verified the flag
toggles the binary: flag-built `sx` reports VM HANDLED with no env var; default-built does
not. Default OFF — `zig build test` unchanged (688/0). Env var still works for ad-hoc runs.
Next (forward): Phase 2 (bytecode) / Phase 3 (compiler-API on flat memory); eventual
Next (forward): Phase 2 (bytecode) / Phase 3 (compiler-API on comptime memory); eventual
default-flip + legacy deletion.
- **Phase 1.final step 8 (VM plan) — wire the `#run` side-effect path + trace-clear-on-fallback (2026-06-18).**
Wired the SECOND comptime call site (`runComptimeSideEffects`, top-level `#run <expr>;`)
@@ -1226,42 +1262,42 @@ when reached (sentinels or accessor fns; see the design doc Risks).
test added). VM HANDLES **36** corpus const-inits (was 31); **parity 688/688** (gate ON
and OFF). Only **2 fallbacks** remain, both principled: `intern` (`0626`, welded
compiler-API fn — Phase 3) + inline-asm global (`1654`). Forward work: Phase 2 (bytecode),
Phase 3 (compiler-API on flat memory).
Phase 3 (compiler-API on comptime memory).
- **Phase 1.final step 6 (VM plan) — real default context + call_indirect + func_ref + global_get; coverage 27→31 (2026-06-17).**
Per the user's direction ("the VM can set up a default context"), `runEntry` now
materializes the REAL default context instead of a zeroed one. The implicit-ctx param is
an opaque `*void`, so `materializeDefaultContext` finds the `__sx_default_context` global
and lays its initializer (`{ {null, alloc_fn, dealloc_fn}, null }`, the CAllocator thunk
func-refs) into flat memory via a new recursive `layoutConst`. With `func_ref` (function
func-refs) into comptime memory via a new recursive `layoutConst`. With `func_ref` (function
value encoded `FuncId.index()+1`, reserving word 0 for the null fn-ptr) and
`call_indirect` (decode word → FuncId → dispatch; 0 → bail) ported, the whole allocator
protocol runs on the VM:
`context.allocator.alloc_bytes` → call_indirect → thunk → `CAllocator.alloc_bytes` →
`libc_malloc` → native flat malloc. Unlocked `0606` (string global). Also: `global_get`
`libc_malloc` → native comptime malloc. Unlocked `0606` (string global). Also: `global_get`
lazily evaluates a comptime global's `comptime_func` (memoized) — unlocked `CT_CHAIN`;
field access (`fieldOffset`/`struct_get`) handles string/slice `{ptr@0,len@8}` fat
pointers (needed by `alloc_string`); `regToValue` maps function-typed words → `.func_ref`
(kept `1128`'s rejection byte-identical). Native `malloc` is still required (the thunk
bottoms out at it; a host pointer can't be used with flat-memory load/store). VM HANDLES
bottoms out at it; a host pointer can't be used with comptime load/store). VM HANDLES
**31** corpus const-inits (was 27); **parity 688/688** (gate ON and OFF). Unit tests:
global_get, func_ref+call_indirect. Remaining fallbacks (7): `.unsupported` aggregates
(3× — `1037`/`1038`), extern/builtin `intern`+asm (2×), `trace_frame`, `is_comptime`.
- **Phase 1.final step 5 cont. (VM plan) — libc memory builtins + f32 fix; coverage 16→27 (2026-06-17).**
Identified the dominant fallback (`call to extern/builtin`) as **11× `malloc`** (0604) +
1× `intern`. Modeled a curated set of libc MEMORY builtins natively on flat memory
1× `intern`. Modeled a curated set of libc MEMORY builtins natively on comptime memory
(`Vm.callMemBuiltin`): `malloc`/`calloc` → `allocBytes` (16-aligned, 256-MiB cap → bail),
`free` → no-op, `memcpy`/`memmove`/`memset` on flat bytes — sandboxed (no host heap/dlsym),
`free` → no-op, `memcpy`/`memmove`/`memset` on comptime bytes — sandboxed (no host heap/dlsym),
target-aware; the computed result is byte-identical to legacy (which calls real libc).
This surfaced a **real latent f32 bug**: float registers hold f64 bits, but f32 MEMORY is
the 4-byte single — `readField`/`writeField` were truncating the f64 bits (writing zeros
for `1.0`); now they `@floatCast` on f32 load/store (mirrors legacy `storeAtRawPtr`).
Result: VM HANDLES **27** corpus const-inits (was 16); **parity 688/688** (gate ON and
OFF). Unit tests added (f32 round-trip; malloc → usable flat memory). Next: the `kindOf`
OFF). Unit tests added (f32 round-trip; malloc → usable comptime memory). Next: the `kindOf`
`.unsupported` aggregates (3×), `global_get` (2×), the rest.
- **Phase 1.final step 5 (VM plan) — implicit-context materialization; coverage 0→16 (2026-06-17).**
`tryEval` now MATERIALIZES the implicit ctx instead of skipping it: a `has_implicit_ctx`
comptime entry (sole param `*Context`) gets a zeroed `Context` of the right size/align
in flat memory, its address passed as arg 0. Const bodies that ignore the ctx run; a
in comptime memory, its address passed as arg 0. Const bodies that ignore the ctx run; a
body that uses the allocator hits unported `call_indirect` → bails → legacy. No func-ref
materialization needed (handled bodies don't read ctx contents; parity is the guard).
Fixed a real bug surfaced by the coverage pass: storing a `null` non-pointer optional
@@ -1298,14 +1334,14 @@ when reached (sentinels or accessor fns; see the design doc Risks).
Builtin/compiler_call/extern handlers are coupled to the legacy `Interpreter`, so the
wiring will use WHOLE-FUNCTION fallback (VM runs pure functions; bail → legacy re-runs
the whole eval). Built the boundary bridge that enables it: `valueToReg` (Value arg →
Reg, aggregates into flat memory) + `regToValue` (VM result → Value, deep-copied).
Reg, aggregates into comptime memory) + `regToValue` (VM result → Value, deep-copied).
Covers scalars/strings/structs; other shapes bail. Transitional. Round-trip
unit-tested. 688 corpus green. Next: the wiring (flag + route a comptime entry through
the VM with legacy fallback).
- **Phase 1 sub-step 1.5 (VM plan) — direct `call` + stack-lifetime change (2026-06-17).**
`Vm` gained `module` (callee resolution) + `depth`/`max_depth` guard. `call` marshals
arg Refs → Reg and recursively runs the callee; aggregates pass as Addrs over shared
flat memory. `Frame` no longer reclaims the machine on exit (else a returned aggregate
comptime memory. `Frame` no longer reclaims the machine on exit (else a returned aggregate
Addr dangles) — allocations live to `Vm.deinit`. Extern/builtin callees bail (1.5b).
Unit-tested: direct call (142), recursion sum(0..n) (15/55). 688 corpus green. Next:
1.5b (call_builtin/compiler_call/extern), then hybrid wiring.
@@ -1325,38 +1361,38 @@ when reached (sentinels or accessor fns; see the design doc Risks).
const_null reads as none) + payloadless enum_init/enum_tag. Unit-tested (?i64 → 91,
?*i64 null==0 → 99, enum tag → 11). 688 corpus green. Next: 4d (tagged unions, any,
closures).
- **Phase 1 sub-step 4b (VM plan) — slices + strings on flat memory (2026-06-17).**
- **Phase 1 sub-step 4b (VM plan) — slices + strings on comptime memory (2026-06-17).**
`{ptr@0(pointer_size), len@8(i64)}` fat pointers (kindOf: string/slice → aggregate).
Ported `const_string` (text+NUL + fat pointer in flat memory), `length`/`data_ptr`,
Ported `const_string` (text+NUL + fat pointer in comptime memory), `length`/`data_ptr`,
`array_to_slice`, `subslice`, index-through-slice (`elemAddr` loads `.ptr`), and
`str_eq`/`str_ne` (memcmp). Unit-tested (str length+eq/ne, array→slice index sum=23,
subslice sum=43). 688 corpus green. Next: 4c (optionals/enums/any/closures).
- **Phase 1 sub-step 4a (VM plan) — tuples + arrays on flat memory (2026-06-17).**
- **Phase 1 sub-step 4a (VM plan) — tuples + arrays on comptime memory (2026-06-17).**
`kindOf` widened (tuple/array → aggregate). Ported `tuple_init`/`tuple_get`
(`tupleFieldOffset`), `index_get`/`index_gep` (`elemAddr` = base + idx*elem_size over
array/pointer/many_pointer; slice/string bases bail), `length` on array values.
Unit-tested (mixed tuple, [3]i64 index sum=42, length=3). 688 corpus green. Next:
sub-step 4b (slices/strings, then optionals/enums/any/closures).
- **Phase 1 sub-step 3 (VM plan) — memory + structs on flat memory (2026-06-17).**
- **Phase 1 sub-step 3 (VM plan) — memory + structs on comptime memory (2026-06-17).**
`Vm` gained optional `table: *const TypeTable` (target-aware layout). Ported
`alloca`/`load`/`store` + `struct_init`/`struct_get`/`struct_gep`, laying structs out
at the table's natural offsets. Value model: scalar/pointer → register word;
struct → lives in flat memory, its value IS its address (read→addr, write→memcpy), so
struct → lives in comptime memory, its value IS its address (read→addr, write→memcpy), so
nested structs compose and `struct_gep` = base+offset. `kindOf` bails loudly on
not-yet-ported types. Addr-based values survive allocator realloc. Unit-tested
(struct round-trip, alloca+gep+store+load, nested struct). 688 corpus green. Next:
sub-step 4 (arrays/slices/strings/optionals/enums/tuples/any/closures, then calls).
- **Phase 1 sub-step 2 (VM plan) — flat-memory executor: scalars + control flow
- **Phase 1 sub-step 2 (VM plan) — comptime executor: scalars + control flow
(2026-06-17).** Added `Vm` to `comptime_vm.zig`: walks the same IR `Inst` over
flat-memory frames (register `Reg` = scalar bits or `Addr`), mirroring the legacy
comptime frames (register `Reg` = scalar bits or `Addr`), mirroring the legacy
interp's scalar semantics (i64 wrapping/signed, f64). Ported constants, arithmetic,
comparison, logical, conversions, terminators (`br`/`cond_br`/`ret`/`ret_void`) and
`block_param`; every other op bails loudly (`error.Unsupported` + op name in
`detail`). Unit-tested on hand-built tiny IR (`Fb` builder): int add, f64 arithmetic,
cond_br selection, a block-param loop, div-by-zero + unsupported-op bails. Corpus
untouched (688 green). Next: sub-step 3 (memory + aggregates on flat memory, where
untouched (688 green). Next: sub-step 3 (memory + aggregates on comptime memory, where
target-aware layout enters).
- **Phase 1 sub-step 1 (VM plan) — flat-memory machine substrate (2026-06-17).**
- **Phase 1 sub-step 1 (VM plan) — comptime machine substrate (2026-06-17).**
New `src/ir/comptime_vm.zig`: `Machine` (linear byte memory + bump/stack allocator
with `mark`/`reset`, scalar `readWord`/`writeWord` 1/2/4/8 LE, `bytes` views, addr 0
reserved as `null_addr`) + `Frame` (Ref-indexed register file, stack reclamation on
@@ -1375,16 +1411,16 @@ when reached (sentinels or accessor fns; see the design doc Risks).
compiler-call seed — so `weldedCompilerFn`, the `compiler_welded` dispatch, the
`emitCall` comptime-only gate, the `#library`/`abi`/`extern` syntax, and examples
`0626`/`1184`/`1185` remain. `zig build test` green (688 corpus, 0 failed). Next:
Phase 1 (flat-memory value model) per `PLAN-COMPILER-VM.md`.
- **DIRECTION CHANGE — pivot off the byte-weld to a flat-memory bytecode VM
Phase 1 (byte-addressable value model) per `PLAN-COMPILER-VM.md`.
- **DIRECTION CHANGE — pivot off the byte-weld to a byte-addressable bytecode VM
(2026-06-17).** Decided the weld + serialization/marshaling bridge is the wrong
direction (it hand-marshals onto a comptime value model that isn't bytes — exactly
what the design set out to kill). New foundation: a bytecode VM over flat memory so
what the design set out to kill). New foundation: a bytecode VM over comptime memory so
comptime values are native bytes; the compiler-API then rides on it via direct memory
(no weld/validation/marshaling). JIT-native comptime was weighed and rejected (breaks
cross-compilation, loses the sandbox). Wrote `current/PLAN-COMPILER-VM.md` (Phase 0
strip → Phase 1 flat-memory value model → Phase 2 bytecode → Phase 3 compiler-API on
flat memory). Banner added to `design/comptime-compiler-api.md` (superseded). Reverted
strip → Phase 1 byte-addressable value model → Phase 2 bytecode → Phase 3 compiler-API on
comptime memory). Banner added to `design/comptime-compiler-api.md` (superseded). Reverted
the session's uncommitted `register_struct`/`find_type` marshaling experiment back to
`reify` HEAD (40d075c). No code stripped yet — Phase 0 is the next action.
- **Phase 2 — welded structs by reflection + memory-order validation.** Dropped

View File

@@ -1,11 +1,11 @@
# PLAN — Comptime Bytecode VM + flat memory (then re-home the compiler-API on it)
# PLAN — Comptime Bytecode VM + comptime memory (then re-home the compiler-API on it)
> **Direction change (2026-06-17).** The comptime compiler-API stream pivots off the
> **byte-weld**. The weld (sx structs whose layout is validated to mirror the
> compiler's Zig types) + the **serialization / marshaling** bridge at the call
> boundary is the wrong direction — it bolts a parallel layout regime and hand-built
> byte-copies onto a comptime value model that fundamentally isn't bytes. We strip it
> and build the right foundation: a **bytecode VM over flat, byte-addressable
> and build the right foundation: a **bytecode VM over byte-addressable
> memory**, where comptime values ARE native bytes (like runtime). On that base the
> compiler-API needs no weld, no validation, no marshaling — the compiler's own types
> are read/built directly as memory and its functions take/return real pointers.
@@ -25,14 +25,14 @@ every value as a tagged `Value` union (`int`, `float`, `aggregate: []const Value
struct's bytes. So a comptime `@ptrCast(*StructInfo)` reads the `Value` union's
memory, not a `StructInfo` — which forced the whole weld+marshal detour.
Make comptime values **native bytes in a flat memory** and both problems dissolve:
Make comptime values **native bytes in byte-addressable memory** and both problems dissolve:
structs/arrays/slices are their bytes at natural layout (no weld), the compiler's own
records are directly addressable (no marshal), and a bytecode loop over flat memory is
records are directly addressable (no marshal), and a bytecode loop over comptime memory is
fast.
## End state
- Comptime execution = a **bytecode VM** over a **flat linear memory** (real
- Comptime execution = a **bytecode VM** over a **byte-addressable memory** (real
host-allocated bytes; layout is **target-aware** via the type table's sizes). Values
are bytes at addresses plus a scalar register file. No tagged `Value` union.
- The comptime compiler-API: the compiler **exposes its real types + functions** to
@@ -93,31 +93,31 @@ corpus rebaseline; suite green.
syntax still parses (parser unit tests).
### Phase 1 — Flat-memory value model (still IR-walking, no bytecode yet)
Introduce flat memory and move comptime values onto it, **decoupled from bytecode** so
Introduce comptime memory and move comptime values onto it, **decoupled from bytecode** so
the value-model change is isolated. Each sub-step ports one op group and keeps the
corpus green; the OLD tagged path stays behind a build flag (`-Dcomptime-flat`) until
all groups land, then the shim is deleted.
1. **Machine + scalars.** A flat memory region (host `[]u8`) with a stack (frames) +
1. **Machine + scalars.** A comptime memory region (host `[]u8`) with a stack (frames) +
bump-allocated heap, and a scalar register file. Port `int`/`float`/`bool`/`undef`
and arithmetic/compare/branch. Aggregates still go through a compat shim to the old
representation.
2. **Aggregates.** Structs/arrays/tuples laid out in flat memory at **target** layout;
2. **Aggregates.** Structs/arrays/tuples laid out in comptime memory at **target** layout;
port `struct_init` / `struct_get` / `array` / `index_gep` to read/write bytes at
computed offsets.
3. **Slices / strings.** `{ptr, len}` fat pointers in flat memory.
3. **Slices / strings.** `{ptr, len}` fat pointers in comptime memory.
4. **Optionals / enums / tagged unions.** Tag + payload bytes.
5. **Pointers.** `alloca` / `store` / `load` / GEP unified onto flat addresses; retire
`slot_ptr` / `heap_ptr` / `byte_ptr` in favor of flat-memory addresses.
6. **Closures.** Fn id + captured env materialized in flat memory.
5. **Pointers.** `alloca` / `store` / `load` / GEP unified onto comptime addresses; retire
`slot_ptr` / `heap_ptr` / `byte_ptr` in favor of comptime addresses.
6. **Closures.** Fn id + captured env materialized in comptime memory.
7. **Extern / host calls.** A struct arg is already bytes → pass its address; this
removes most of `marshalExternArg`.
8. **Reflection / minting.** `declare` / `define` / `type_info` read flat-memory
8. **Reflection / minting.** `declare` / `define` / `type_info` read comptime
values; type-table mutation copies escaping data into compiler-owned memory at the
boundary (lifetime), as today.
**Verification:** with `-Dcomptime-flat` the full corpus (currently 692) is byte-for-
byte identical to the tagged path; then make flat the default and delete the shim.
byte identical to the tagged path; then make the VM the default and delete the shim.
### Phase 2 — Bytecode
Compile a comptime function's IR → a compact bytecode and execute the bytecode instead
@@ -160,7 +160,7 @@ host through it:
- **(2) Implicit context — DONE (materialized, 2026-06-17 step 5).** Initially a
conservative skip; now `tryEval` MATERIALIZES the implicit ctx: a comptime entry with
`has_implicit_ctx` (whose sole param is the `*Context`) gets a zeroed `Context` of the
right size/align allocated in flat memory, its address passed as arg 0. The common
right size/align allocated in comptime memory, its address passed as arg 0. The common
const body never reads the ctx; a body that USES the allocator loads a fn from it and
`call_indirect`s (unported) → bails → legacy. No func-ref materialization was needed:
handled bodies don't read the ctx contents, and gate-ON corpus parity (688, 0 failed)
@@ -179,9 +179,9 @@ host through it:
stays **688/688** (gate ON and OFF) at every step. Landed, in order: implicit ctx
materialized (→16); `writeField` null-aggregate fix (storing a `null` non-pointer
optional `null_addr` sentinel into an aggregate slot OOB-bailed → now ZEROES the
destination = none/empty; unit-test regression); curated libc MEMORY builtins on flat
destination = none/empty; unit-test regression); curated libc MEMORY builtins on comptime
memory (`Vm.callMemBuiltin`: `malloc`/`calloc` → `allocBytes` 16-aligned & 256-MiB-capped,
`free` → no-op, `memcpy`/`memmove`/`memset` on flat bytes — sandboxed, target-aware,
`free` → no-op, `memcpy`/`memmove`/`memset` on comptime bytes — sandboxed, target-aware,
result byte-identical to legacy; unlocked `0604`'s 11 comptime mallocs); and an **f32
storage fix** (float registers hold f64 bits, but f32 memory is the 4-byte single —
`readField`/`writeField` now `@floatCast` instead of truncating the f64 bits, which had
@@ -192,13 +192,13 @@ host through it:
materializes the REAL default context (not a zeroed one): the implicit-ctx param is an
opaque `*void`, so `materializeDefaultContext` finds the `__sx_default_context` global
and lays its initializer constant (`{ {null, alloc_fn, dealloc_fn}, null }`, carrying
the CAllocator thunk func-refs) into flat memory via a new recursive `layoutConst`.
the CAllocator thunk func-refs) into comptime memory via a new recursive `layoutConst`.
With `func_ref` (a function value encoded as `FuncId.index() + 1` so word 0 stays
reserved for the NULL function pointer — `funcRefWord`/`funcRefToId`) and `call_indirect`
(decode the callee word → `FuncId` → dispatch; 0 → bail) ported, a comptime body
that allocates via `context.allocator` now runs ENTIRELY on the VM: `alloc_string` →
`context.allocator.alloc_bytes` → `call_indirect` → thunk → `CAllocator.alloc_bytes` →
`libc_malloc` → the VM's native flat-memory `malloc`. Unlocked `0606` (string global via
`libc_malloc` → the VM's native comptime `malloc`. Unlocked `0606` (string global via
the allocator). Also: `global_get` lazily evaluates a comptime global's `comptime_func`
(memoized in `global_cache`) — unlocked `CT_CHAIN`; struct field access (`fieldOffset`/
`struct_get`) now handles string/slice `{ptr@0,len@8}` fat pointers (needed by
@@ -206,8 +206,8 @@ host through it:
`.func_ref` so a func-ref result serializes identically to legacy (kept `1128`'s
rejection diagnostic byte-identical). Unit tests added (global_get, func_ref +
call_indirect). **Note: native `malloc` is still REQUIRED** — the CAllocator thunk
bottoms out at libc `malloc`, and the VM can't use a host pointer with flat-memory
load/store, so comptime `malloc` must allocate from flat memory. The default context
bottoms out at libc `malloc`, and the VM can't use a host pointer with comptime
load/store, so comptime `malloc` must allocate from comptime memory. The default context
lets the allocator PROTOCOL run; native `malloc` is its final step.
- **(7) `is_comptime` + failable/error cluster + the signed-load fix — DONE.** Coverage
**31 → 36** handled (fallbacks 7 → 2); parity stays **688/688** both gate ON and OFF.
@@ -229,10 +229,10 @@ host through it:
`intern` (`0626`, the welded compiler-API fn — Phase 3 re-homes it) and the inline-asm
global call (`1654`, never comptime-evaluable). Every other measured corpus const-init
is handled on the VM.
At this point the flat-memory VM handles essentially the entire real comptime corpus
At this point the comptime VM handles essentially the entire real comptime corpus
(scalars, control flow, structs/tuples/arrays/slices/strings/optionals/enums, calls +
recursion, the implicit context + allocator protocol, globals, failables + return
traces). Phase 2 (bytecode) and Phase 3 (compiler-API on flat memory) are the forward
traces). Phase 2 (bytecode) and Phase 3 (compiler-API on comptime memory) are the forward
work; flipping the VM to default + deleting the legacy path awaits those.
- **(8) Wire the `#run` side-effect path; trace-clear-on-fallback — DONE.** The second
comptime call site (`emit_llvm.runComptimeSideEffects`, top-level `#run <expr>;`) now
@@ -251,20 +251,20 @@ host through it:
deleting the legacy path (which still awaits Phase 2/3 + broader confidence).
- **(10) Compiler-call path on the VM — `intern`/`text_of` native (Phase 3 SEED) — DONE.**
`invoke` now services a welded `compiler`-library function (the `compiler_welded` flag is
the safety boundary) via `Vm.callCompilerFn` — natively on flat memory, NO legacy
`Interpreter`: `intern(s: string) -> StringId` reads the string bytes from flat memory and
the safety boundary) via `Vm.callCompilerFn` — natively on comptime memory, NO legacy
`Interpreter`: `intern(s: string) -> StringId` reads the string bytes from comptime memory and
`internString`s into the (const-cast) table (pool-only, never touches type layout, so the
VM's cached sizes stay valid); `text_of(id) -> string` materializes the pooled text back
into flat memory as a fat pointer. Unlocked `0626` — the ONLY remaining const-init fallback
into comptime memory as a fat pointer. Unlocked `0626` — the ONLY remaining const-init fallback
is now the inline-asm global (`1654`, genuinely not comptime-evaluable). Parity **688/688**
both gate ON and OFF; unit test added. This is the mechanism Phase 3 grows: the next
compiler functions (`find_type`, `register_struct`, the reflection readers) are added the
same way — flat-memory pointer in, handle/pointer out, no marshaling.
same way — comptime pointer in, handle/pointer out, no marshaling.
**Phase 3 progress (2026-06-18):**
- **(P3.1) First read-only reflection readers — `find_type` + `type_field_count` (DONE).**
Two more `compiler`-library fns bound the same way as the `intern`/`text_of` seed
(added to `compiler_lib.bound_fns` AND `Vm.callCompilerFn`, native on flat memory, no
(added to `compiler_lib.bound_fns` AND `Vm.callCompilerFn`, native on comptime memory, no
marshaling). A **type handle is a plain `u32` `TypeId`** (exactly like `StringId`), so
both calls keep the seed's clean scalar shape — handle in, scalar out:
`find_type(name: StringId) -> TypeId` (`TypeTable.findByName`) and
@@ -277,7 +277,7 @@ host through it:
- **Decision (resolves the plan's `find_type → ?Type` sketch):** `find_type` returns a
NON-optional `TypeId`, using the codebase's dedicated `unresolved` (0) sentinel for
not-found — NOT an `?Type`. Rationale: a `Type` value resolves to `.any`
(`type_resolver.zig`), which the flat-memory VM does not represent; and an optional
(`type_resolver.zig`), which the comptime VM does not represent; and an optional
return can't cross the legacy↔VM eval boundary (`regToValue` bridges only
word/string/struct/tuple). `unresolved` is the project-blessed unmistakable "no type"
marker (see CLAUDE.md REJECTED PATTERNS — a dedicated sentinel is the required shape),
@@ -341,7 +341,7 @@ host through it:
there, or migrate the metatype onto the legacy compiler-API calls first. Decide when reached.
Phase 2 (bytecode) is the orthogonal speed work.
### Phase 3 — Compiler-API on flat memory (resume the stream — no weld)
### Phase 3 — Compiler-API on comptime memory (resume the stream — no weld)
With native-byte comptime values, re-home the compiler-API:
- **Expose the compiler's real types.** Register the actual `types.zig` records
@@ -350,7 +350,7 @@ With native-byte comptime values, re-home the compiler-API:
nothing to validate or keep in sync. (This is the projection that *replaces* the
weld's reflection — owned by the compiler, not declared in sx.)
- **Expose the compiler's functions.** `register_struct`, `find_type`, `intern`,
`text_of`, and the reflection readers operate on flat-memory pointers / handles
`text_of`, and the reflection readers operate on comptime pointers / handles
directly (no marshaling — the bytes already ARE the record).
- **Re-express** `declare` / `define` / `type_info` as sx over these; delete the
bespoke interp arms (`defineStruct` / `defineEnum` / `defineTuple` / `reflectTypeInfo`);
@@ -399,7 +399,7 @@ are legitimate negative-test bails that BECOME VM diagnostics, 1145 is a scan ar
pointer-in-value-slot shape (`coerceToI64` alloca+ptrtoint) — implement or bail loudly.
- **4A.2** `out`/print → add a VM output buffer; flush through the same path as
`core.flushInterpOutput`.
- **4A.3** `global_addr` (address-of a global in flat memory).
- **4A.3** `global_addr` (address-of a global in comptime memory).
- **4A.4** trace frames (`sx_trace_*` / `interp_print_frames`).
- **4B — VM-native diagnostics (role E). MUST land before deleting legacy.** Today a VM
bail silently falls back; with legacy gone the VM bail IS the user-facing build-gating
@@ -410,11 +410,11 @@ are legitimate negative-test bails that BECOME VM diagnostics, 1145 is a scan ar
the `#insert` corpus parity.
- **4D — host FFI on the VM (role D substrate). DONE.** Solved by a better allocator, not a
pin/tag scheme: the comptime memory is now an **arena** of stable host allocations and `Addr`
IS a real host pointer (`4D.0`, `625ba0f`), so a flat-memory pointer and an FFI-returned host
IS a real host pointer (`4D.0`, `625ba0f`), so a comptime pointer and an FFI-returned host
pointer are the same value — no translation, no realloc hazard. `Vm.callHostExtern`
(`4D.1`, `e7a8708`) dispatches ANY extern via `host_ffi` dlsym + trampolines (args/returns pass
untouched); `4D.2` (`6a7f690`) adds slice/string args (→ NUL-term `char*`) + float guards.
Examples 0636/0637. **(Superseded sub-note:** the earlier "pin the buffer / flat↔host translate"
Examples 0636/0637. **(Superseded sub-note:** the earlier "pin the buffer / comptime↔host translate"
hazard is moot — the arena never moves an allocation.)
- **`#compiler` / `compiler_call` — DELETED, replaced by the `abi(.compiler)` ABI (decision 2026-06-18,
REVISED from the earlier `abi(.zig) extern compiler` shape).** A function is *compiler-domain* — it runs in
@@ -512,7 +512,7 @@ The compiler's whole post-IR role: codegen → build the CLI-derived `BuildConfi
- **P5.2 — primitives.** Split: the read-only **metadata queries are DONE (2026-06-19)** — `c_object_paths() ->
List(string)` + `link_libraries() -> List(string)` as `abi(.compiler)` fns (stdlib `library/modules/compiler.sx`),
serviced by `comptime_vm.callCompilerFn` over `BuildConfig` fields `main.zig` forwards; new VM `makeStringList`
builds the `List(string)` in flat memory from the call's result type (`ins.ty` now threaded through
builds the `List(string)` in comptime memory from the call's result type (`ins.ty` now threaded through
`invoke`/`callCompilerFn`). Smoke test `1662-platform-build-pipeline-queries` (AOT + C companion). 703/0 both
gates. **`emit_object() -> string` is also DONE (2026-06-19)** as a QUERY (not an action): the Zig driver emits
the object eagerly, so the primitive just returns the path from `BuildConfig.object_path` (no vtable). So all
@@ -540,19 +540,23 @@ dual-path, no legacy `compiler_lib` handler, no `regToValue`/`valueToReg` bridge
migrate the BuildOptions surface DIRECTLY to VM-native `abi(.compiler)` arms (no legacy handler — there is no
legacy to handle). **All bundling + code signing for EVERY target lives in the sx `default_pipeline`.**
- **P5.5 — migrate the 36 `BuildOptions :: struct #compiler` methods → VM-native `abi(.compiler)`.** Each
becomes a free `ufcs (self: BuildOptions, …) abi(.compiler)` decl (so `opt.method(...)` still resolves via
UFCS) with a `comptime_vm.callCompilerFn` arm — and **NO legacy `compiler_lib` handler** (the user's directive;
the legacy interp is going away). Families: string SETTERS (`set_bundle_path`/`set_bundle_id`/
`set_codesign_identity`/`set_provisioning_profile`/`set_manifest_path`/`set_keystore_path`/`add_framework`/
`add_link_flag`/`set_output_path`/`set_wasm_shell`/`set_post_link_module`/`add_asset_dir`) — write/append to the
threaded `BuildConfig`; string GETTERS (`binary_path`/`bundle_path`/`bundle_id`/`codesign_identity`/
`provisioning_profile`/`target_triple`/`manifest_path`/`keystore_path`); BOOL getters (`is_macos`/`is_ios`/
`is_ios_device`/`is_ios_simulator`/`is_android` — compute from the triple); LIST/index getters
(`framework_count`/`framework_at`/`framework_path_*`/`asset_dir_*`/`jni_main_*`, built via `makeStringList`).
**String lifetime:** a setter at `#run` must dupe the flat-memory string into a PERSISTENT allocator (NOT the
per-eval VM arena) — thread `emit_llvm.alloc` into the VM (e.g. `BuildConfig.string_alloc`) so the strings
survive to post-link. This kills the 4 strict `compiler_call` bails (1609/1614/1615/1616).
- **P5.5 — DONE (2026-06-19).** The 35 `BuildOptions :: struct #compiler` methods migrated to VM-native
`abi(.compiler)`: `BuildOptions :: struct { }` (opaque null-sentinel handle) + 35 free
`ufcs (self: BuildOptions, …) abi(.compiler)` decls in `build.sx`, serviced by a new
`comptime_vm.callBuildOptionFn` arm off `callCompilerFn` — **NO legacy `compiler_lib` handler** (names
registered in `bound_fns` with a single bailing stub only so `weldedCompilerFn` accepts them). Setters dupe the
arg string into the PERSISTENT `Vm.gpa` (the Compilation allocator — threaded into both `tryEval` and
`runBuildCallback` — NOT the per-eval VM arena) and write/append to the threaded `BuildConfig`; string getters
return the field (or `""`); bool getters compute from the triple (`predIsMacOS`/…); count/index getters read the
`BuildConfig` slices. **Dispatch routing (Option B):** a `#run`/const-init entry that directly calls a
compiler-domain/welded fn (`emit_llvm.entryNeedsVm`) runs on the VM with NO legacy fallback regardless of the
`-Dcomptime-flat` gate → gate-OFF stays green without a legacy BuildOptions handler. 5 `platform/bundle.sx`
getter-calling helpers marked `abi(.compiler)` (comptime-only bundler code). 37 `.ir` regenerated (string-pool
churn; behavior-identical, verified `.ir`-only). **703/0 BOTH gates.** BuildOptions `compiler_call` bails GONE
(1609/1614/1615 strict-clean); 1616 now bails on `shr` — a SEPARATE unported bitwise/shift VM gap
(`shl`/`shr`/`bit_and`/`bit_or`/`bit_xor`/`bit_not`), to port FIRST in P5.6 (1616 is unpinned + can't JIT-run on
macOS regardless). Also swept the outdated "flat memory" terminology → "comptime/byte-addressable" (the VM is
arena-backed, `Addr` = real host pointer; flag names `-Dcomptime-flat`/`SX_COMPTIME_FLAT` kept).
- **P5.6 — ALL bundling + code signing in `default_pipeline` (every target).** `default_pipeline` (or a
`bundle()` it calls, in `platform/bundle.sx`) performs, after `link`, the full per-target bundle when
`bundle_path()` is set — branching on `is_macos`/`is_ios_device`/`is_ios_simulator`/`is_android`:
@@ -595,9 +599,9 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
## Open questions (resolve as reached, record decisions here)
- **Host-ABI vs target-ABI split.** The compiler runs on the host, so its OWN exposed
records are host-laid-out; user comptime types are target-laid-out. The flat-memory
records are host-laid-out; user comptime types are target-laid-out. The comptime
model must carry both regimes (a per-type ABI tag on layout queries). Confirm the
boundary where a flat-memory pointer to a compiler record is handed to host Zig code
boundary where a comptime pointer to a compiler record is handed to host Zig code
uses host layout.
- **Exposing compiler types to sx.** Mechanism for projecting `types.zig` records into
the comptime type table with real offsets (the non-weld replacement) — a registry the
@@ -636,7 +640,7 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
gate (ops.zig), and examples `0626`/`1184`/`1185` stay. The `#library`/`abi`/`extern`
SYNTAX stays. `zig build test` green (688 corpus, 0 failed; unit tests pass).
- **Phase 1 — in progress.**
- **Sub-step 1 — DONE.** `src/ir/comptime_vm.zig`: the flat-memory `Machine`
- **Sub-step 1 — DONE.** `src/ir/comptime_vm.zig`: the comptime `Machine`
(linear byte memory + bump/stack allocator with `mark`/`reset` reclamation +
scalar `readWord`/`writeWord` (1/2/4/8, little-endian) + `bytes` views; addr 0
reserved as `null_addr`) and `Frame` (register file indexed by Ref + stack
@@ -645,7 +649,7 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
NOT touch the live interpreter, so the corpus stays green (688). No op execution
yet.
- **Sub-step 2 — DONE.** The executor (`Vm` in `comptime_vm.zig`): walks the SAME
IR `Inst` over flat-memory frames, mirroring the legacy interp's scalar semantics
IR `Inst` over comptime frames, mirroring the legacy interp's scalar semantics
(i64 wrapping/signed + f64 register words, keyed off the result/operand `TypeId`).
Ported: constants (`const_int`/`float`/`bool`/`null`/`undef`), arithmetic
(`add`/`sub`/`mul`/`div`/`mod`/`neg`), comparison (`cmp_*`), logical
@@ -657,12 +661,12 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
branch selection, a block-param loop summing i..1, div-by-zero + unsupported-op
bails. Corpus untouched (688 green) — the executor is exercised by unit tests only,
not yet wired to real comptime eval.
- **Sub-step 3 — DONE.** Memory + structs on flat memory. `Vm` gained an optional
- **Sub-step 3 — DONE.** Memory + structs on comptime memory. `Vm` gained an optional
`table: *const TypeTable` (target-aware layout). Ported `alloca`/`load`/`store`
(over flat addresses, `Store.val_ty` drives width) and `struct_init`/`struct_get`/
(over comptime addresses, `Store.val_ty` drives width) and `struct_init`/`struct_get`/
`struct_gep` (structs laid out at the table's natural offsets). The value model: a
`Kind.word` (scalar/pointer ≤8B) sits in a register; a `Kind.aggregate` (struct)
lives in flat memory and its "value" IS its address (read returns the address,
lives in comptime memory and its "value" IS its address (read returns the address,
write memcpys), so nested structs compose and `struct_gep` is just base+offset (no
field-pointer dance). `kindOf` bails loudly on the not-yet-ported types
(slice/string/any/optional/enum/array/tuple/…). The Addr-based value model survives
@@ -677,7 +681,7 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
gep/store + index_get sum (42), array `length` (3). 688 corpus green.
- **Sub-step 4b — DONE.** Slices + strings as `{ptr@0 (pointer_size), len@8 (i64)}`
fat pointers (`kindOf`: string/slice → aggregate). Ported `const_string` (materializes
text+NUL in flat memory + a fat pointer), `length`/`data_ptr` (read len/ptr fields),
text+NUL in comptime memory + a fat pointer), `length`/`data_ptr` (read len/ptr fields),
`array_to_slice`, `subslice`, indexing *through* a slice/string (`elemAddr` loads
`.ptr` first), and `str_eq`/`str_ne` (len+memcmp). Helpers `makeSlice`/`sliceLen`/
`sliceData`. Unit-tested: string length + str_eq/ne, array→slice + slice index +
@@ -703,7 +707,7 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
- **Sub-step 1.5 — direct `call` DONE.** `Vm` gained `module: *const Module`
(resolves a callee `FuncId`) + a `depth`/`max_depth` recursion guard. `call`
marshals arg Refs → Reg words and recursively `run`s the callee; aggregate args/
results pass as their `Addr` over the SHARED flat memory (no copy). **Stack-lifetime
results pass as their `Addr` over the SHARED comptime memory (no copy). **Stack-lifetime
change:** `Frame` no longer reclaims the machine on exit (a returned aggregate's
Addr would dangle) — a comptime eval's allocations live to `Vm.deinit`;
`Machine.mark`/`reset` stay for explicit use. Extern/builtin callees (no blocks)
@@ -714,7 +718,7 @@ unreferenced compiler-domain declaration — verify no stray runtime reference k
handlers take `*Interpreter`), so the VM can't call them directly — the wiring uses
WHOLE-FUNCTION fallback instead (VM runs pure functions; a bail re-runs the whole
eval in the legacy). That needs the boundary bridge: `valueToReg` (host `Value` arg →
VM `Reg`, materializing aggregates into flat memory) + `regToValue` (VM result →
VM `Reg`, materializing aggregates into comptime memory) + `regToValue` (VM result →
`Value`, deep-copied out). Covers scalars + strings + structs (other aggregate shapes
bail loudly; added as wiring surfaces them). Transitional — deleted once the VM owns
comptime end-to-end. Unit-tested with round-trips. 688 corpus green.
@@ -726,7 +730,7 @@ strings, optionals, payloadless enums, deref/addr_of) and unit-tested. Continuin
port the rarer ops (tagged-union payload, any, closures) in isolation risks subtle
bugs and has low signal. The higher-value path:
1. **Calls (sub-step 1.5)** — `call` (direct), then `call_builtin`/`compiler_call`. The
shared flat memory makes aggregate args/results pass naturally (they're Addrs). The
shared comptime memory makes aggregate args/results pass naturally (they're Addrs). The
one design point: **aggregate-return lifetime** — a callee's stack-reclaim would
dangle a returned struct Addr, so for comptime (bounded) the VM should stop
reclaiming per-frame and let the whole eval's allocations live until `Vm.deinit`

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -4130,114 +4130,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4105,114 +4105,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4106,114 +4106,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4409,114 +4409,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4111,114 +4111,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4219,114 +4219,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4316,114 +4316,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4332,114 +4332,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

File diff suppressed because one or more lines are too long

View File

@@ -4175,114 +4175,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4118,114 +4118,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4112,114 +4112,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4268,114 +4268,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4300,114 +4300,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4151,114 +4151,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4115,114 +4115,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4122,114 +4122,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4117,114 +4117,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -581,114 +581,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -4,34 +4,34 @@
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.128 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.130 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@str.78 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.79 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.80 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.81 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.82 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.83 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.93 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@str.94 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.95 = private unnamed_addr constant [10 x i8] c"compiled\0A\00", align 1
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
@OBJC_CLASS_NAME_.131 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_CLASS_NAME_.96 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.132 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.133 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.134 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.135 = private unnamed_addr constant [4 x i8] c"@@:\00"
@OBJC_METH_VAR_NAME_.97 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.98 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.99 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.100 = private unnamed_addr constant [4 x i8] c"@@:\00"
declare i64 @write(i32, ptr, i64)
@@ -282,7 +282,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.78, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -378,7 +378,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
if.then.12: ; preds = %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -386,7 +386,7 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -396,13 +396,13 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.13
if.merge.13: ; preds = %if.then.12, %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -410,7 +410,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -424,7 +424,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
if.then.23: ; preds = %if.else.10
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -432,7 +432,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -443,7 +443,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -500,7 +500,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
if.then.32: ; preds = %if.then.29
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -508,7 +508,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -519,7 +519,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -539,7 +539,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
if.then.35: ; preds = %while.exit.2
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -547,7 +547,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -558,7 +558,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.36
@@ -1083,114 +1083,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0
@@ -1567,112 +1567,7 @@ declare void @Pool.shutdown(ptr, ptr) #0
declare ptr @pool_worker(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.78(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.85(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.86(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.87(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.88(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.89(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.90(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.91(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.92(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.93(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.94(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.95(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.96(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.97(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.98(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.99(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.100(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.101(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.102(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.103(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.104(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.105(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.106(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.107(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.108(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.109(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
; Function Attrs: nounwind
declare i1 @default_pipeline.112(ptr, i64) #0
declare i1 @default_pipeline.77(ptr, i64) #0
; Function Attrs: nounwind
define internal void @SxFoo.bump(ptr %0, ptr %1) #0 {
@@ -1715,14 +1610,14 @@ entry:
define internal void @print__ct_sfeff9eeccd48b824__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.128, i64 9 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.93, i64 9 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.129, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 9)
@@ -1736,7 +1631,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 9 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.95, i64 9 })
ret { ptr, i64 } %call
}
@@ -1917,17 +1812,17 @@ declare ptr @class_getInstanceVariable(ptr, ptr)
define internal void @__sx_objc_defined_class_init() {
entry:
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.131, i64 0)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.96, i64 0)
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
%metacls = call ptr @object_getClass(ptr %cls)
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
%1 = call i8 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
call void @objc_registerClassPair(ptr %cls)
store ptr %cls, ptr @__SxFoo_class, align 8
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.132)
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.133)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.134)
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.135)
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.97)
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.98)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.99)
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.100)
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
store ptr %iv, ptr @__SxFoo_state_ivar, align 8
ret void

View File

@@ -4,50 +4,50 @@
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@__sx_objc_cstr_dealloc = internal constant [8 x i8] c"dealloc\00"
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.128 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
@str.129 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
@str.130 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
@str.131 = private unnamed_addr constant [8 x i8] c"release\00", align 1
@str.132 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.133 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.134 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.135 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.136 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.137 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.138 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.139 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.140 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.141 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.142 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.143 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.144 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@str.145 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.146 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@str.78 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.79 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.80 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.81 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.82 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.83 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.93 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
@str.94 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
@str.95 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
@str.96 = private unnamed_addr constant [8 x i8] c"release\00", align 1
@str.97 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.98 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.99 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.100 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.101 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.102 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.103 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.104 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.105 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.106 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.107 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.108 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.109 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@str.110 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.111 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@OBJC_IVAR_NAME_ = private unnamed_addr constant [11 x i8] c"__sx_state\00"
@OBJC_IVAR_TYPE_ = private unnamed_addr constant [3 x i8] c"^v\00"
@OBJC_CLASS_NAME_ = private unnamed_addr constant [9 x i8] c"NSObject\00"
@OBJC_CLASS_NAME_.147 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_CLASS_NAME_.112 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"bump\00"
@OBJC_METH_VAR_TYPE_ = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.149 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.151 = private unnamed_addr constant [4 x i8] c"@@:\00"
@OBJC_METH_VAR_NAME_.113 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.114 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.115 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.116 = private unnamed_addr constant [4 x i8] c"@@:\00"
declare i64 @write(i32, ptr, i64)
@@ -298,7 +298,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.78, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -394,7 +394,7 @@ if.merge.13: ; preds = %if.merge.27, %if.me
if.then.14: ; preds = %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -402,7 +402,7 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -412,13 +412,13 @@ if.then.14: ; preds = %if.then.11
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.15
if.merge.15: ; preds = %if.then.14, %if.then.11
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -426,7 +426,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -440,7 +440,7 @@ if.merge.15: ; preds = %if.then.14, %if.the
if.then.25: ; preds = %if.else.12
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -448,7 +448,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -459,7 +459,7 @@ if.then.25: ; preds = %if.else.12
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -516,7 +516,7 @@ if.merge.33: ; preds = %if.merge.36, %if.el
if.then.34: ; preds = %if.then.31
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -524,7 +524,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -535,7 +535,7 @@ if.then.34: ; preds = %if.then.31
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -555,7 +555,7 @@ if.merge.36: ; preds = %if.else.35, %if.the
if.then.37: ; preds = %while.exit.4
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -563,7 +563,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -574,7 +574,7 @@ if.then.37: ; preds = %while.exit.4
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1099,114 +1099,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0
@@ -1583,112 +1583,7 @@ declare void @Pool.shutdown(ptr, ptr) #0
declare ptr @pool_worker(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.78(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.85(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.86(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.87(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.88(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.89(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.90(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.91(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.92(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.93(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.94(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.95(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.96(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.97(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.98(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.99(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.100(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.101(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.102(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.103(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.104(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.105(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.106(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.107(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.108(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.109(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
; Function Attrs: nounwind
declare i1 @default_pipeline.112(ptr, i64) #0
declare i1 @default_pipeline.77(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @objc_getClass(ptr) #0
@@ -1775,7 +1670,7 @@ entry:
%allocaN = alloca ptr, align 8
%allocaN = alloca ptr, align 8
%allocaN = alloca ptr, align 8
%call = call ptr @objc_getClass(ptr @str.128)
%call = call ptr @objc_getClass(ptr @str.93)
store ptr %call, ptr %alloca, align 8
%load = load ptr, ptr %alloca, align 8
%icmp = icmp eq ptr %load, null
@@ -1786,7 +1681,7 @@ if.then.0: ; preds = %entry
ret i32 1
if.merge.1: ; preds = %entry
%callN = call ptr @sel_registerName(ptr @str.129)
%callN = call ptr @sel_registerName(ptr @str.94)
store ptr %callN, ptr %allocaN, align 8
%loadN = load ptr, ptr %alloca, align 8
%loadN = load ptr, ptr %allocaN, align 8
@@ -1801,7 +1696,7 @@ if.then.39: ; preds = %if.merge.1
ret i32 1
if.merge.40: ; preds = %if.merge.1
%callN = call ptr @sel_registerName(ptr @str.130)
%callN = call ptr @sel_registerName(ptr @str.95)
store ptr %callN, ptr %allocaN, align 8
store ptr @objc_msgSend, ptr %allocaN, align 8
%loadN = load ptr, ptr %alloca, align 8
@@ -1818,7 +1713,7 @@ if.then.41: ; preds = %if.merge.40
ret i32 1
if.merge.42: ; preds = %if.merge.40
%callN = call ptr @sel_registerName(ptr @str.131)
%callN = call ptr @sel_registerName(ptr @str.96)
store ptr %callN, ptr %allocaN, align 8
store ptr @objc_msgSend, ptr %allocaN, align 8
%loadN = load ptr, ptr %allocaN, align 8
@@ -1865,14 +1760,14 @@ entry:
define internal void @print__ct_s354c93d7643e1bdf__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.132, i64 27 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.97, i64 27 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.133, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.98, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27)
@@ -1886,7 +1781,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.134, i64 27 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.99, i64 27 })
ret { ptr, i64 } %call
}
@@ -1894,14 +1789,14 @@ entry:
define internal void @print__ct_sfe783e2b27a4beff__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.135, i64 26 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.100, i64 26 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.136, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.101, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 26)
@@ -1915,7 +1810,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_1(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.137, i64 26 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.102, i64 26 })
ret { ptr, i64 } %call
}
@@ -1923,14 +1818,14 @@ entry:
define internal void @print__ct_scaebdbbd10c81716__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.138, i64 27 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.103, i64 27 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.139, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.104, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 27)
@@ -1944,7 +1839,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_2(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.140, i64 27 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.105, i64 27 })
ret { ptr, i64 } %call
}
@@ -1952,14 +1847,14 @@ entry:
define internal void @print__ct_s7c1052877b8cc801__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.141, i64 35 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.106, i64 35 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.142, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.107, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 35)
@@ -1973,7 +1868,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_3(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.143, i64 35 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.108, i64 35 })
ret { ptr, i64 } %call
}
@@ -1981,14 +1876,14 @@ entry:
define internal void @print__ct_sed4e79fbcbd67966__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.144, i64 12 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.109, i64 12 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.145, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.110, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 12)
@@ -2002,7 +1897,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_4(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.146, i64 12 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.111, i64 12 })
ret { ptr, i64 } %call
}
@@ -2161,17 +2056,17 @@ declare i8 @class_addIvar(ptr, ptr, i64, i8, ptr)
define internal void @__sx_objc_defined_class_init() {
entry:
%super_cls = call ptr @objc_getClass(ptr @OBJC_CLASS_NAME_)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.147, i64 0)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.112, i64 0)
%0 = call i8 @class_addIvar(ptr %cls, ptr @OBJC_IVAR_NAME_, i64 8, i8 3, ptr @OBJC_IVAR_TYPE_)
%metacls = call ptr @object_getClass(ptr %cls)
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
%1 = call i1 @class_addMethod(ptr %cls, ptr %sel, ptr @__SxFoo_bump_imp, ptr @OBJC_METH_VAR_TYPE_)
call void @objc_registerClassPair(ptr %cls)
store ptr %cls, ptr @__SxFoo_class, align 8
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.148)
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.149)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.150)
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.151)
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.113)
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.114)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.115)
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.116)
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
store ptr %iv, ptr @__SxFoo_state_ivar, align 8
ret void

File diff suppressed because one or more lines are too long

View File

@@ -3,26 +3,26 @@
@OBJC_SELECTOR_REFERENCES_init = internal global ptr null
@OBJC_SELECTOR_REFERENCES_release = internal global ptr null
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.128 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.129 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.130 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.78 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.79 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.80 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.81 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.82 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.83 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.94 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.95 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [5 x i8] c"init\00"
@OBJC_METH_VAR_NAME_.131 = private unnamed_addr constant [8 x i8] c"release\00"
@OBJC_METH_VAR_NAME_.96 = private unnamed_addr constant [8 x i8] c"release\00"
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }]
declare i64 @write(i32, ptr, i64)
@@ -274,7 +274,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.78, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -370,7 +370,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
if.then.12: ; preds = %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -378,7 +378,7 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -388,13 +388,13 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.13
if.merge.13: ; preds = %if.then.12, %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -402,7 +402,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -416,7 +416,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
if.then.23: ; preds = %if.else.10
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -424,7 +424,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -435,7 +435,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -492,7 +492,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
if.then.32: ; preds = %if.then.29
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -500,7 +500,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -511,7 +511,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -531,7 +531,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
if.then.35: ; preds = %while.exit.2
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -539,7 +539,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -550,7 +550,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.36
@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0
@@ -1559,112 +1559,7 @@ declare void @Pool.shutdown(ptr, ptr) #0
declare ptr @pool_worker(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.78(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.85(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.86(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.87(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.88(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.89(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.90(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.91(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.92(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.93(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.94(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.95(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.96(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.97(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.98(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.99(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.100(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.101(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.102(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.103(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.104(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.105(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.106(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.107(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.108(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.109(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
; Function Attrs: nounwind
declare i1 @default_pipeline.112(ptr, i64) #0
declare i1 @default_pipeline.77(ptr, i64) #0
; Function Attrs: nounwind
define i32 @main() #0 {
@@ -1700,14 +1595,14 @@ entry:
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.128, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.93, i64 3 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.129, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.94, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 3)
@@ -1721,7 +1616,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.130, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.95, i64 3 })
ret { ptr, i64 } %call
}
@@ -1834,7 +1729,7 @@ define internal void @__sx_objc_selector_init() {
entry:
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_init, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.131)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.96)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_release, align 8
ret void
}

File diff suppressed because one or more lines are too long

View File

@@ -8,47 +8,47 @@
@OBJC_SELECTOR_REFERENCES_initWithFrame_options_ = internal global ptr null
@OBJC_SELECTOR_REFERENCES_actualSelectorName = internal global ptr null
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.113 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.114 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.115 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.116 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.117 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.118 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.119 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.120 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.121 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.122 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.123 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.124 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.125 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.126 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.127 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.128 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1
@str.129 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
@str.130 = private unnamed_addr constant [7 x i8] c"length\00", align 1
@str.131 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.132 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
@str.133 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
@str.134 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
@str.135 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.136 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
@str.137 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
@str.138 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
@str.139 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
@str.140 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
@str.141 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.142 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
@str.143 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.144 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@str.145 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.146 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@str.78 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.79 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.80 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.81 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.82 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.83 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.84 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.85 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.86 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.87 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.88 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.89 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.90 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.91 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.92 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.93 = private unnamed_addr constant [9 x i8] c"NSObject\00", align 1
@str.94 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
@str.95 = private unnamed_addr constant [7 x i8] c"length\00", align 1
@str.96 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.97 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
@str.98 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
@str.99 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
@str.100 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.101 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
@str.102 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
@str.103 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
@str.104 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
@str.105 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
@str.106 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.107 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
@str.108 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.109 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@str.110 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.111 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@OBJC_METH_VAR_NAME_ = private unnamed_addr constant [7 x i8] c"length\00"
@OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [11 x i8] c"addObject:\00"
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
@OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
@OBJC_METH_VAR_NAME_.152 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00"
@OBJC_METH_VAR_NAME_.112 = private unnamed_addr constant [11 x i8] c"addObject:\00"
@OBJC_METH_VAR_NAME_.113 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
@OBJC_METH_VAR_NAME_.114 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
@OBJC_METH_VAR_NAME_.115 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
@OBJC_METH_VAR_NAME_.116 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
@OBJC_METH_VAR_NAME_.117 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00"
@llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @__sx_objc_selector_init, ptr null }]
declare i64 @write(i32, ptr, i64)
@@ -300,7 +300,7 @@ entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } %1, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.113, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.78, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -396,7 +396,7 @@ if.merge.11: ; preds = %if.merge.25, %if.me
if.then.12: ; preds = %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.114, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, i64 36 })
store { ptr, i64 } %call, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -404,7 +404,7 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -414,13 +414,13 @@ if.then.12: ; preds = %if.then.9
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.13
if.merge.13: ; preds = %if.then.12, %if.then.9
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 43 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -428,7 +428,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -442,7 +442,7 @@ if.merge.13: ; preds = %if.then.12, %if.the
if.then.23: ; preds = %if.else.10
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -450,7 +450,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -461,7 +461,7 @@ if.then.23: ; preds = %if.else.10
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -518,7 +518,7 @@ if.merge.31: ; preds = %if.merge.34, %if.el
if.then.32: ; preds = %if.then.29
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -526,7 +526,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -537,7 +537,7 @@ if.then.32: ; preds = %if.then.29
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -557,7 +557,7 @@ if.merge.34: ; preds = %if.else.33, %if.the
if.then.35: ; preds = %while.exit.2
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, i64 36 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
@@ -565,7 +565,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 2 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
@@ -576,7 +576,7 @@ if.then.35: ; preds = %while.exit.2
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } %callN)
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %allocaN, align 8
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.92, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.36
@@ -1101,114 +1101,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0
@@ -1585,112 +1585,7 @@ declare void @Pool.shutdown(ptr, ptr) #0
declare ptr @pool_worker(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.78(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.85(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.86(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.87(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.88(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.89(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.90(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.91(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.92(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.93(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.94(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.95(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.96(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.97(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.98(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.99(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.100(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.101(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.102(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.103(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.104(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.105(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.106(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.107(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.108(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.109(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
; Function Attrs: nounwind
declare i1 @default_pipeline.112(ptr, i64) #0
declare i1 @default_pipeline.77(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @objc_getClass(ptr) #0
@@ -1772,34 +1667,34 @@ entry:
define i32 @main() #0 {
entry:
call void @__sx_objc_selector_init()
%call = call ptr @objc_getClass(ptr @str.128)
%call = call ptr @objc_getClass(ptr @str.93)
%alloca = alloca ptr, align 8
store ptr %call, ptr %alloca, align 8
%load = load ptr, ptr %alloca, align 8
%callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.129, i64 0)
%callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.94, i64 0)
%allocaN = alloca ptr, align 8
store ptr %callN, ptr %allocaN, align 8
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.130)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.131)
%callN = call ptr @sel_registerName(ptr @str.95)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.96)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.132)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.133)
%callN = call ptr @sel_registerName(ptr @str.97)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.98)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.134)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.135)
%callN = call ptr @sel_registerName(ptr @str.99)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.100)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.136)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.137)
%callN = call ptr @sel_registerName(ptr @str.101)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.102)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.138)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.139)
%callN = call ptr @sel_registerName(ptr @str.103)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.104)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.140)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.141)
%callN = call ptr @sel_registerName(ptr @str.105)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.106)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.142)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.143)
%callN = call ptr @sel_registerName(ptr @str.107)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.108)
%loadN = load ptr, ptr %allocaN, align 8
call void @objc_registerClassPair(ptr %loadN)
%allocaN = alloca ptr, align 8
@@ -1849,14 +1744,14 @@ entry:
define internal void @print__ct_s4c1a58a7c89bfbba__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.144, i64 18 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.109, i64 18 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds nuw { ptr, i64 }, ptr %allocaN, i32 0, i32 1
store i64 0, ptr %gepN, align 8
%allocaN = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.145, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.110, i64 0 }, ptr %allocaN, align 8
%load = load { ptr, i64 }, ptr %allocaN, align 8
%loadN = load { ptr, i64 }, ptr %alloca, align 8
%call = call { ptr, i64 } @substr(ptr %0, { ptr, i64 } %loadN, i64 0, i64 18)
@@ -1870,7 +1765,7 @@ entry:
; Function Attrs: nounwind
define internal { ptr, i64 } @__insert_0(ptr %0) #0 {
entry:
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.146, i64 18 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.111, i64 18 })
ret { ptr, i64 } %call
}
@@ -1979,17 +1874,17 @@ define internal void @__sx_objc_selector_init() {
entry:
%sel = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_)
store ptr %sel, ptr @OBJC_SELECTOR_REFERENCES_length, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.147)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.112)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.148)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.113)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.114)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.150)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.115)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.151)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.116)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.152)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.117)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_actualSelectorName, align 8
ret void
}

View File

@@ -1077,114 +1077,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -1075,114 +1075,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0

View File

@@ -2,10 +2,10 @@
@g_held_view = internal global ptr null
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [9 x i8] c"onCreate\00", align 1
@str.113 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1
@str.78 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1
@jni.parent.path = private unnamed_addr constant [21 x i8] c"android/app/Activity\00", align 1
@str.114 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
@str.115 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1
@str.79 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
@str.80 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1
@jni.ctor.path = private unnamed_addr constant [25 x i8] c"android/view/SurfaceView\00", align 1
declare i64 @write(i32, ptr, i64)
@@ -588,114 +588,114 @@ declare void @build_flags(ptr sret({ ptr, i64, i64 })) #0
; Function Attrs: nounwind
declare void @link(ptr, ptr, ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options() #0
; Function Attrs: nounwind
declare void @add_link_flag(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_framework(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_output_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_wasm_shell(i64, ptr) #0
; Function Attrs: nounwind
declare void @add_asset_dir(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @asset_dir_count(i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_src_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @asset_dir_dest_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_post_link_module(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @binary_path(i64) #0
; Function Attrs: nounwind
declare void @set_bundle_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_bundle_id(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_codesign_identity(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_provisioning_profile(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @bundle_path(i64) #0
; Function Attrs: nounwind
declare ptr @bundle_id(i64) #0
; Function Attrs: nounwind
declare ptr @codesign_identity(i64) #0
; Function Attrs: nounwind
declare ptr @provisioning_profile(i64) #0
; Function Attrs: nounwind
declare ptr @target_triple(i64) #0
; Function Attrs: nounwind
declare i1 @is_macos(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_device(i64) #0
; Function Attrs: nounwind
declare i1 @is_ios_simulator(i64) #0
; Function Attrs: nounwind
declare i1 @is_android(i64) #0
; Function Attrs: nounwind
declare i64 @framework_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_at(i64, i64) #0
; Function Attrs: nounwind
declare i64 @framework_path_count(i64) #0
; Function Attrs: nounwind
declare ptr @framework_path_at(i64, i64) #0
; Function Attrs: nounwind
declare void @set_manifest_path(i64, ptr) #0
; Function Attrs: nounwind
declare void @set_keystore_path(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @manifest_path(i64) #0
; Function Attrs: nounwind
declare ptr @keystore_path(i64) #0
; Function Attrs: nounwind
declare i64 @jni_main_count(i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_runtime_path_at(i64, i64) #0
; Function Attrs: nounwind
declare ptr @jni_main_java_source_at(i64, i64) #0
; Function Attrs: nounwind
declare void @on_build(ptr) #0
@@ -1072,112 +1072,7 @@ declare void @Pool.shutdown(ptr, ptr) #0
declare ptr @pool_worker(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.78(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.85(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.86(i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.87(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.88(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.89(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.90(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.91(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.92(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.93(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.94(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.95(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.96(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.97(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.98(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.99(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.100(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.101(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.102(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.103(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.104(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.105(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.106(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.107(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.108(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.109(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_runtime_path_at.110(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.111(i64, i64) #0
; Function Attrs: nounwind
declare i1 @default_pipeline.112(ptr, i64) #0
declare i1 @default_pipeline.77(ptr, i64) #0
; Function Attrs: nounwind
define i32 @main() #0 {
@@ -1318,7 +1213,7 @@ entry:
%jni.parent.cls = call ptr %jni.FindClass(ptr %load, ptr @jni.parent.path)
%4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %4, align 8
%jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.113)
%jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.78)
%jni.parent.cls.slot = alloca ptr, align 8
store ptr %jni.parent.cls, ptr %jni.parent.cls.slot, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 91
@@ -1334,7 +1229,7 @@ entry:
%jni.ctor.cls = call ptr %jni.FindClass9(ptr %load, ptr @jni.ctor.path)
%7 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 33
%jni.GetMethodID10 = load ptr, ptr %7, align 8
%jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.114, ptr @str.115)
%jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.79, ptr @str.80)
%8 = getelementptr inbounds ptr, ptr %jni.ifs8, i32 28
%jni.NewObject = load ptr, ptr %8, align 8
%jni.new.obj = call ptr %jni.NewObject(ptr %load, ptr %jni.ctor.cls, ptr %jni.ctor.mid, ptr %loadN)

View File

@@ -11,88 +11,97 @@ OS : OperatingSystem = .unknown;
ARCH : Architecture = .unknown;
POINTER_SIZE : i64 = 8;
BuildOptions :: struct #compiler {
add_link_flag :: (self: BuildOptions, flag: [:0]u8);
add_framework :: (self: BuildOptions, name: [:0]u8);
set_output_path :: (self: BuildOptions, path: [:0]u8);
set_wasm_shell :: (self: BuildOptions, path: [:0]u8);
// Register a directory of runtime assets to bundle alongside the
// binary. `src` is the path on disk (relative to the CWD at build
// time); `dest` is the relative location inside the bundle / APK.
// Apple .app: copied to `<bundle>/<dest>/`. Android APK (Week 7):
// zipped under `<dest>/` at the APK root. Idiomatic chess form is
// `opts.add_asset_dir("assets", "assets")`.
add_asset_dir :: (self: BuildOptions, src: [:0]u8, dest: [:0]u8);
asset_dir_count :: (self: BuildOptions) -> i64;
asset_dir_src_at :: (self: BuildOptions, i: i64) -> string;
asset_dir_dest_at :: (self: BuildOptions, i: i64) -> string;
// Name-based alternative to `set_post_link_callback`. The
// compiler resolves `<module_name>.bundle_main` after linking.
set_post_link_module :: (self: BuildOptions, module_name: [:0]u8);
// Path of the freshly-linked binary, only meaningful while a
// post-link callback is running. Returns "" before linking.
binary_path :: (self: BuildOptions) -> string;
// Apple `.app` / Android `.apk` bundling parameters. Accessors
// return "" when unset so the bundler can use a single string
// type. macOS bundling needs `bundle_path` and `bundle_id`;
// codesign / provisioning are iOS-device-only.
set_bundle_path :: (self: BuildOptions, path: [:0]u8);
set_bundle_id :: (self: BuildOptions, id: [:0]u8);
set_codesign_identity :: (self: BuildOptions, identity: [:0]u8);
set_provisioning_profile :: (self: BuildOptions, path: [:0]u8);
bundle_path :: (self: BuildOptions) -> string;
bundle_id :: (self: BuildOptions) -> string;
codesign_identity :: (self: BuildOptions) -> string;
provisioning_profile :: (self: BuildOptions) -> string;
// Target accessors. Empty triple before linking; predicates mirror
// TargetConfig.is{MacOS,IOS,IOSDevice,IOSSimulator}() on the Zig
// side. Used by the sx bundler to switch Info.plist shape and
// codesigning ceremony per platform.
target_triple :: (self: BuildOptions) -> string;
is_macos :: (self: BuildOptions) -> bool;
is_ios :: (self: BuildOptions) -> bool;
is_ios_device :: (self: BuildOptions) -> bool;
is_ios_simulator :: (self: BuildOptions) -> bool;
is_android :: (self: BuildOptions) -> bool;
// Framework list accessors. The bundler walks `framework_count() *
// framework_at(i)` to find each `-framework` name and recursively
// copies its `<Name>.framework` directory from one of
// `framework_path_at(0..framework_path_count())` into
// `<bundle>/Frameworks/`. Slice returns aren't natively expressible
// through the compiler-hook bridge yet, hence the indexed form.
framework_count :: (self: BuildOptions) -> i64;
framework_at :: (self: BuildOptions, i: i64) -> string;
framework_path_count :: (self: BuildOptions) -> i64;
framework_path_at :: (self: BuildOptions, i: i64) -> string;
// Android APK bundling parameters. `manifest_path` overrides the
// bundler's auto-generated AndroidManifest.xml; `keystore_path`
// overrides the default `$HOME/.android/debug.keystore`. Accessors
// return "" when unset.
set_manifest_path :: (self: BuildOptions, path: [:0]u8);
set_keystore_path :: (self: BuildOptions, path: [:0]u8);
manifest_path :: (self: BuildOptions) -> string;
keystore_path :: (self: BuildOptions) -> string;
// `#jni_main #jni_class("path") { ... }` decls collected during
// lowering. The Android bundler walks `0..jni_main_count()` and
// for each entry writes a `.java` file at
// `<stage>/java/<runtime_path>.java`, compiles via javac + d8, and
// bundles the resulting classes.dex into the APK.
jni_main_count :: (self: BuildOptions) -> i64;
jni_main_runtime_path_at :: (self: BuildOptions, i: i64) -> string;
jni_main_java_source_at :: (self: BuildOptions, i: i64) -> string;
}
// An opaque compile-time build-configuration handle. `build_options()` hands one
// back; its real state lives on the compiler's threaded `BuildConfig`. The handle
// itself is a null-sentinel word (never dereferenced) — every accessor below takes
// it as an ignored `self` and reads/writes the `BuildConfig` instead. The accessors
// are free `abi(.compiler)` functions (resolved on `opt.method(...)` via UFCS) and
// serviced by `comptime_vm.callCompilerFn` — migrated off the old `struct #compiler`
// hook surface (Phase 5.5).
BuildOptions :: struct { }
build_options :: () -> BuildOptions abi(.compiler);
// ── BuildOptions accessors (free `abi(.compiler)` functions, UFCS) ───────────
add_link_flag :: ufcs (self: BuildOptions, flag: [:0]u8) abi(.compiler);
add_framework :: ufcs (self: BuildOptions, name: [:0]u8) abi(.compiler);
set_output_path :: ufcs (self: BuildOptions, path: [:0]u8) abi(.compiler);
set_wasm_shell :: ufcs (self: BuildOptions, path: [:0]u8) abi(.compiler);
// Register a directory of runtime assets to bundle alongside the
// binary. `src` is the path on disk (relative to the CWD at build
// time); `dest` is the relative location inside the bundle / APK.
// Apple .app: copied to `<bundle>/<dest>/`. Android APK: zipped under
// `<dest>/` at the APK root. Idiomatic form is
// `opts.add_asset_dir("assets", "assets")`.
add_asset_dir :: ufcs (self: BuildOptions, src: [:0]u8, dest: [:0]u8) abi(.compiler);
asset_dir_count :: ufcs (self: BuildOptions) -> i64 abi(.compiler);
asset_dir_src_at :: ufcs (self: BuildOptions, i: i64) -> string abi(.compiler);
asset_dir_dest_at :: ufcs (self: BuildOptions, i: i64) -> string abi(.compiler);
// Name-based alternative to `on_build`. The compiler resolves
// `<module_name>.bundle_main` after linking.
set_post_link_module :: ufcs (self: BuildOptions, module_name: [:0]u8) abi(.compiler);
// Path of the freshly-linked binary, only meaningful while a
// post-link callback is running. Returns "" before linking.
binary_path :: ufcs (self: BuildOptions) -> string abi(.compiler);
// Apple `.app` / Android `.apk` bundling parameters. Accessors
// return "" when unset so the bundler can use a single string
// type. macOS bundling needs `bundle_path` and `bundle_id`;
// codesign / provisioning are iOS-device-only.
set_bundle_path :: ufcs (self: BuildOptions, path: [:0]u8) abi(.compiler);
set_bundle_id :: ufcs (self: BuildOptions, id: [:0]u8) abi(.compiler);
set_codesign_identity :: ufcs (self: BuildOptions, identity: [:0]u8) abi(.compiler);
set_provisioning_profile :: ufcs (self: BuildOptions, path: [:0]u8) abi(.compiler);
bundle_path :: ufcs (self: BuildOptions) -> string abi(.compiler);
bundle_id :: ufcs (self: BuildOptions) -> string abi(.compiler);
codesign_identity :: ufcs (self: BuildOptions) -> string abi(.compiler);
provisioning_profile :: ufcs (self: BuildOptions) -> string abi(.compiler);
// Target accessors. Empty triple before linking; predicates mirror
// TargetConfig.is{MacOS,IOS,IOSDevice,IOSSimulator}() on the Zig
// side. Used by the sx bundler to switch Info.plist shape and
// codesigning ceremony per platform.
target_triple :: ufcs (self: BuildOptions) -> string abi(.compiler);
is_macos :: ufcs (self: BuildOptions) -> bool abi(.compiler);
is_ios :: ufcs (self: BuildOptions) -> bool abi(.compiler);
is_ios_device :: ufcs (self: BuildOptions) -> bool abi(.compiler);
is_ios_simulator :: ufcs (self: BuildOptions) -> bool abi(.compiler);
is_android :: ufcs (self: BuildOptions) -> bool abi(.compiler);
// Framework list accessors. The bundler walks `framework_count() *
// framework_at(i)` to find each `-framework` name and recursively
// copies its `<Name>.framework` directory from one of
// `framework_path_at(0..framework_path_count())` into
// `<bundle>/Frameworks/`. Indexed form (slice returns are expressible
// now via `List`, but the bundler still walks these by index).
framework_count :: ufcs (self: BuildOptions) -> i64 abi(.compiler);
framework_at :: ufcs (self: BuildOptions, i: i64) -> string abi(.compiler);
framework_path_count :: ufcs (self: BuildOptions) -> i64 abi(.compiler);
framework_path_at :: ufcs (self: BuildOptions, i: i64) -> string abi(.compiler);
// Android APK bundling parameters. `manifest_path` overrides the
// bundler's auto-generated AndroidManifest.xml; `keystore_path`
// overrides the default `$HOME/.android/debug.keystore`. Accessors
// return "" when unset.
set_manifest_path :: ufcs (self: BuildOptions, path: [:0]u8) abi(.compiler);
set_keystore_path :: ufcs (self: BuildOptions, path: [:0]u8) abi(.compiler);
manifest_path :: ufcs (self: BuildOptions) -> string abi(.compiler);
keystore_path :: ufcs (self: BuildOptions) -> string abi(.compiler);
// `#jni_main #jni_class("path") { ... }` decls collected during
// lowering. The Android bundler walks `0..jni_main_count()` and
// for each entry writes a `.java` file at
// `<stage>/java/<runtime_path>.java`, compiles via javac + d8, and
// bundles the resulting classes.dex into the APK.
jni_main_count :: ufcs (self: BuildOptions) -> i64 abi(.compiler);
jni_main_runtime_path_at :: ufcs (self: BuildOptions, i: i64) -> string abi(.compiler);
jni_main_java_source_at :: ufcs (self: BuildOptions, i: i64) -> string abi(.compiler);
// The build callback registrar (Phase 5). Registers the sx function that drives
// the build — the compiler invokes it after codegen with the `BuildOptions`
// handle. `#run on_build(build);` (from inside a `#run` block) is the override

View File

@@ -223,7 +223,7 @@ IOS_MIN_OS : string : "14.0";
// carry the keys the iOS launcher needs (UIDeviceFamily,
// LSRequiresIPhoneOS, UIApplicationSceneManifest, DTPlatformName,
// MinimumOSVersion); macOS doesn't need any of those.
build_info_plist :: (opts: BuildOptions, exe_name: string, bundle_id: string) -> string {
build_info_plist :: (opts: BuildOptions, exe_name: string, bundle_id: string) -> string abi(.compiler) {
if opts.is_ios() {
platform_key := if opts.is_ios_simulator() then "iPhoneSimulator" else "iPhoneOS";
return format(#string PLIST
@@ -371,7 +371,7 @@ copy_asset_dir :: (src: string, dest: string, bundle: string) -> bool {
// paths into `<dest_dir>`. Walks the framework paths in order; first
// hit wins. Falls back to a `cp -R` subprocess because fs.sx Phase 1A
// doesn't expose `list_dir` / `walk` yet.
embed_framework :: (opts: BuildOptions, name: string, dest_dir: string) -> bool {
embed_framework :: (opts: BuildOptions, name: string, dest_dir: string) -> bool abi(.compiler) {
subdir := concat(name, ".framework");
path_count := opts.framework_path_count();
i : i64 = 0;
@@ -580,7 +580,7 @@ absolutify :: (path: string) -> string {
path
}
android_bundle_main :: (opts: BuildOptions, binary: string, apk_path: string, bundle_id: string) -> bool {
android_bundle_main :: (opts: BuildOptions, binary: string, apk_path: string, bundle_id: string) -> bool abi(.compiler) {
// The bundler `cd`s into the stage dir for `zip` steps, so any
// relative path the caller gave us would resolve against the wrong
// cwd. Pin everything to absolute paths up front.
@@ -872,7 +872,7 @@ lib_name_from_so_basename :: (basename: string) -> string {
// `android:hasCode="true"` so Android loads the bundled classes.dex.
// Otherwise it falls back to the legacy NativeActivity shape with an
// `android.app.lib_name` meta-data entry pointing at the .so.
build_android_manifest :: (opts: BuildOptions, package: string, lib_name: string) -> string {
build_android_manifest :: (opts: BuildOptions, package: string, lib_name: string) -> string abi(.compiler) {
pkg_esc := xml.escape(package);
lib_esc := xml.escape(lib_name);
if opts.jni_main_count() > 0 {
@@ -969,7 +969,7 @@ dir_part :: (path: string) -> string {
// the resulting class files via `d8 --release --lib <android.jar>
// --output <stage>` so `<stage>/classes.dex` lands where the
// orchestrator can zip it into the APK.
compile_jni_main_sources :: (opts: BuildOptions, stage: string, android_jar: string, d8_path: string) -> bool {
compile_jni_main_sources :: (opts: BuildOptions, stage: string, android_jar: string, d8_path: string) -> bool abi(.compiler) {
java_root := path_join(stage, "java");
classes_root := path_join(stage, "classes");
if !create_dir_all(str_to_cstr(java_root)) {

View File

@@ -10,7 +10,7 @@
//! **Direction note (2026-06-17 pivot).** The byte-weld of TYPES (sx structs whose
//! layout was validated to mirror the compiler's Zig records) was stripped — it
//! bolted a parallel layout regime + hand-marshaling onto a comptime value model
//! that isn't bytes. The replacement is a flat-memory comptime VM where values are
//! that isn't bytes. The replacement is a comptime VM where values are
//! native bytes, so the compiler-API needs no weld/validation/marshaling (Phase 3
//! of the plan re-homes the type/function exposure on that VM). `intern`/`text_of`
//! survive here as the first compiler-call seed: clean scalar host-calls (string in,
@@ -42,7 +42,7 @@ pub const BoundFn = struct {
};
/// The compiler-function export list. The `StringId` round-trip readers are the
/// seed; the type-table API (lookup / register) is re-homed onto the flat-memory
/// seed; the type-table API (lookup / register) is re-homed onto the comptime
/// VM in Phase 3 of `PLAN-COMPILER-VM.md`.
pub const bound_fns = [_]BoundFn{
.{ .sx_name = "intern", .handler = handleIntern },
@@ -75,8 +75,58 @@ pub const bound_fns = [_]BoundFn{
.{ .sx_name = "build_target", .handler = handleBuildPipelineQuery },
.{ .sx_name = "build_frameworks", .handler = handleBuildPipelineQuery },
.{ .sx_name = "build_flags", .handler = handleBuildPipelineQuery },
// ── BuildOptions accessors (Phase 5.5) ───────────────────────────────────
// Migrated off the `struct #compiler` hook surface to free `abi(.compiler)`
// functions serviced by `comptime_vm.callCompilerFn`. VM-only: any `#run` /
// const-init reaching them is routed to the VM (emit_llvm `entryNeedsVm`), so
// these legacy stubs are never reached — registered only so `weldedCompilerFn`
// recognizes the names. They bail loudly rather than fabricate a silent result.
.{ .sx_name = "add_link_flag", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "add_framework", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_output_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_wasm_shell", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "add_asset_dir", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "asset_dir_count", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "asset_dir_src_at", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "asset_dir_dest_at", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_post_link_module", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "binary_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_bundle_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_bundle_id", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_codesign_identity", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_provisioning_profile", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "bundle_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "bundle_id", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "codesign_identity", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "provisioning_profile", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "target_triple", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "is_macos", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "is_ios", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "is_ios_device", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "is_ios_simulator", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "is_android", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "framework_count", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "framework_at", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "framework_path_count", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "framework_path_at", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_manifest_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "set_keystore_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "manifest_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "keystore_path", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "jni_main_count", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "jni_main_runtime_path_at", .handler = handleBuildOptionsAccessor },
.{ .sx_name = "jni_main_java_source_at", .handler = handleBuildOptionsAccessor },
};
/// Legacy-path stub for the Phase 5.5 BuildOptions accessors — see the `bound_fns`
/// comment. Any `#run` / const-init reaching a BuildOptions accessor is routed to
/// the VM (`emit_llvm.entryNeedsVm`), so this is never reached; it bails loudly
/// rather than fabricate a silent result.
fn handleBuildOptionsAccessor(_: *Interpreter, _: []const Value) InterpError!Value {
Interpreter.last_bail_detail = "BuildOptions accessor is VM-only (Phase 5.5); not available on the legacy interpreter";
return error.CannotEvalComptime;
}
/// Legacy-path stub for the Phase 5 build-pipeline primitives — see the
/// `bound_fns` comment. The only caller (the post-link build driver) runs on the
/// VM (`core.invokeByFuncId`), so these legacy handlers are never reached; they
@@ -132,7 +182,7 @@ fn handleTextOf(interp: *Interpreter, args: []const Value) InterpError!Value {
/// union / tagged-union / error-set) by its interned name and return its handle.
/// A name with no matching type yields the dedicated `unresolved` sentinel (a
/// `TypeId` of 0), the codebase-blessed "no type" marker — NOT an `?Type` (a
/// `Type` value is `.any`-typed, which the flat-memory VM does not represent, and
/// `Type` value is `.any`-typed, which the comptime VM does not represent, and
/// an optional can't cross the legacy↔VM eval boundary). The caller checks the
/// handle against 0 / `unresolved`. The VM mirrors this in `comptime_vm.callCompilerFn`.
fn handleFindType(interp: *Interpreter, args: []const Value) InterpError!Value {

View File

@@ -1,4 +1,4 @@
// Tests for the flat-memory comptime machine (Phase 1 of PLAN-COMPILER-VM.md).
// Tests for the byte-addressable comptime machine (Phase 1 of PLAN-COMPILER-VM.md).
const std = @import("std");
const vm = @import("comptime_vm.zig");
@@ -710,7 +710,7 @@ test "comptime_vm exec: payloadless enum_init + enum_tag" {
test "comptime_vm exec: tagged-union enum_init with payload lays out {tag@0, payload@tag_size}" {
// The construction primitive `define` reuses: build `E.value(42)` where
// `E = { value: i64, closed: void }` and verify the flat-memory bytes — tag 0
// `E = { value: i64, closed: void }` and verify the comptime bytes — tag 0
// at offset 0, the i64 payload at offset tag_size (8). Mirrors the LLVM
// `{ header, [N x i8] }` layout the rest of the compiler reads.
const alloc = std.testing.allocator;
@@ -843,7 +843,7 @@ test "comptime_vm exec: f32 store/load round-trips through 4-byte memory" {
try std.testing.expectEqual(@as(i64, 1), toI64(try v.run(&fb.func, &.{})));
}
test "comptime_vm exec: malloc builtin gives usable flat memory; free is a no-op" {
test "comptime_vm exec: malloc builtin gives usable comptime memory; free is a no-op" {
const alloc = std.testing.allocator;
var module = Module.init(alloc);
defer module.deinit();
@@ -1282,7 +1282,7 @@ test "comptime_vm bridge: Value <-> Reg round-trips (scalar, string, struct)" {
const back_i = try v.regToValue(alloc, &table, r_i, .i64);
try std.testing.expectEqual(@as(i64, 42), back_i.int);
// string (materialized into flat memory, read back + deep-copied out)
// string (materialized into comptime memory, read back + deep-copied out)
const r_s = try v.valueToReg(&table, .{ .string = "hi" }, .string);
const back_s = try v.regToValue(alloc, &table, r_s, .string);
defer alloc.free(back_s.string);

View File

@@ -1,19 +1,19 @@
//! Flat-memory comptime machine — Phase 1 of `current/PLAN-COMPILER-VM.md`.
//! Byte-addressable comptime machine — Phase 1 of `current/PLAN-COMPILER-VM.md`.
//!
//! The comptime evaluator is being rebuilt around a flat, byte-addressable memory
//! The comptime evaluator is being rebuilt around a byte-addressable memory
//! so comptime values are NATIVE BYTES (like runtime), instead of the tagged
//! `Value` union the legacy interpreter (`interp.zig`) uses. This module is the
//! machine substrate: byte-addressable memory backed by an ARENA of stable host
//! allocations (each `allocBytes` never moves; freed wholesale on `deinit`), plus
//! a per-call `Frame` holding a register file. `Addr` is the allocation's real
//! host pointer, so a flat-memory pointer and an FFI-returned host pointer are the
//! host pointer, so a comptime pointer and an FFI-returned host pointer are the
//! same kind of value.
//!
//! Value model (grows over later sub-steps): a register (`Reg`) is a raw 64-bit
//! word that is EITHER an immediate scalar (its bits) OR an `Addr` into flat
//! word that is EITHER an immediate scalar (its bits) OR an `Addr` into comptime
//! memory (for aggregates) — interpreted by the IR result type, exactly like a
//! real machine / LLVM. Scalars up to 64 bits (sx's widest is `i64`/`u64`/`f64`)
//! fit a register directly; structs/arrays/slices live in flat memory and a
//! fit a register directly; structs/arrays/slices live in comptime memory and a
//! register holds their address.
//!
//! Target-awareness lives in the EXECUTOR, not here: this module only moves raw
@@ -23,7 +23,7 @@
//! `Machine` (arena-backed memory + scalar word read/write + byte views) holds the
//! comptime stack + heap; `Frame` is the per-call register file. A `Frame` does NOT
//! reclaim the machine's memory on exit — a callee can return an aggregate whose
//! register holds an `Addr` into flat memory, and reclaiming would dangle it. The
//! register holds an `Addr` into comptime memory, and reclaiming would dangle it. The
//! legacy interpreter remains the live evaluator until the VM reaches parity.
const std = @import("std");
@@ -55,7 +55,7 @@ const Span = inst_mod.Span;
/// machine allocates each object from an arena that never moves it. `null_addr` (0)
/// is the null sentinel (no allocation is ever at address 0), so a zeroed register
/// reads as null — mirroring how the legacy `Value` model distinguishes `null_val`.
/// Because addresses are absolute host pointers, a flat-memory pointer and an
/// Because addresses are absolute host pointers, a comptime pointer and an
/// FFI-returned host pointer are the SAME kind of value: the FFI bridge hands them
/// to / from real libc with no translation (Phase 4D).
pub const Addr = u64;
@@ -70,7 +70,7 @@ pub const Reg = u64;
/// NEVER moves and is freed wholesale on `deinit` (no per-object free — comptime is
/// short-lived). There is NO fixed buffer and NO size cap: the arena grows through
/// its backing allocator on demand. `Addr` is the allocation's REAL host pointer,
/// so a flat-memory pointer and an FFI-returned host pointer are interchangeable —
/// so a comptime pointer and an FFI-returned host pointer are interchangeable —
/// the FFI bridge passes them to / from libc untouched (Phase 4D).
pub const Machine = struct {
arena: std.heap.ArenaAllocator,
@@ -134,7 +134,7 @@ pub const Machine = struct {
/// One call frame: a register file indexed by IR `Ref` index. It does NOT reclaim
/// the machine stack on exit — a callee can return an aggregate whose value is an
/// `Addr` into flat memory, and reclaiming the callee's region would dangle it.
/// `Addr` into comptime memory, and reclaiming the callee's region would dangle it.
/// Comptime evaluation is bounded, so all allocations live until `Vm.deinit`;
/// `Machine.mark`/`reset` remain for explicit scoped use. The register file IS
/// per-call (each `run` gets a fresh one sized to its callee's Ref space).
@@ -182,10 +182,10 @@ pub const Frame = struct {
pub var last_bail_reason: ?[]const u8 = null;
/// Wiring entry point: try to evaluate comptime function `func_id` entirely on the
/// flat-memory VM and return its result as a legacy `Value`, or `null` if the VM
/// comptime VM and return its result as a legacy `Value`, or `null` if the VM
/// can't handle it (unsupported op, no body, or any bail) — the caller then falls
/// back to the legacy interpreter. The result is deep-copied into `gpa`, so it
/// outlives the VM's flat memory (freed here on return).
/// outlives the VM's comptime memory (freed here on return).
///
/// Safe for ARBITRARY host comptime functions: the `Machine` accessors are
/// hardened to return `error.OutOfBounds` (not a debug panic) on a null/out-of-
@@ -207,7 +207,7 @@ pub fn tryEval(gpa: std.mem.Allocator, module: *const Module, func_id: inst_mod.
// `runEntry` materializes the implicit `*Context` (a comptime const-init /
// `#run` wrapper is nullary in user args, so the implicit ctx is its sole
// param) as a zeroed Context in flat memory and runs. The common const body
// param) as a zeroed Context in comptime memory and runs. The common const body
// never reads the ctx; one that uses the allocator hits unported
// `call_indirect` → bails → legacy. Gate-ON corpus parity validates this.
const reg = vm.runEntry(func_id) catch |err| {
@@ -257,7 +257,7 @@ pub fn runBuildCallback(gpa: std.mem.Allocator, module: *const Module, func_id:
// ── Executor ────────────────────────────────────────────────────────────────
//
// Walks the SAME SSA IR the legacy interpreter (`interp.zig`) walks, but over
// flat-memory frames: each SSA result is a `Reg` word (immediate scalar bits, or
// comptime frames: each SSA result is a `Reg` word (immediate scalar bits, or
// an `Addr`). Scalar semantics MIRROR the legacy interp so the two evaluators
// agree byte-for-byte (the parity goal): integer math is 64-bit wrapping/signed
// (`+%`, `@divTrunc`, signed compares — the legacy's `.int` is i64 regardless of
@@ -284,7 +284,7 @@ fn nominalIdentOf(info: types.TypeInfo) ?struct { name: types.StringId, nominal_
};
}
/// A `{ name: string, ty: Type }` member decoded from flat memory — the shared
/// A `{ name: string, ty: Type }` member decoded from comptime memory — the shared
/// shape of a compiler-API `Member`, a metatype `EnumVariant { name, payload }`,
/// and a `StructField { name, type }` (all 2-field `{ string, Type }` structs).
const NamedMember = struct { name: types.StringId, ty: TypeId };
@@ -304,6 +304,41 @@ fn signExtendWord(raw: Reg, sz: usize) Reg {
return @bitCast((@as(i64, @bitCast(raw)) << shift) >> shift);
}
// ── BuildOptions target predicates (Phase 5.5) ───────────────────────────────
// Computed from the `--target` triple, mirroring `compiler_hooks`'s legacy hooks
// (which mirror `TargetConfig.is{MacOS,IOS,IOSDevice,IOSSimulator}()`).
fn tripleHas(triple: ?[]const u8, needle: []const u8) bool {
const t = triple orelse return false;
return std.mem.indexOf(u8, t, needle) != null;
}
fn predIsIOS(triple: ?[]const u8) bool {
return tripleHas(triple, "apple-ios");
}
fn predIsMacOS(triple: ?[]const u8) bool {
if (predIsIOS(triple)) return false;
return tripleHas(triple, "apple-macosx") or tripleHas(triple, "apple-macos") or tripleHas(triple, "apple-darwin");
}
fn predIsIOSDevice(triple: ?[]const u8) bool {
return predIsIOS(triple) and !tripleHas(triple, "simulator");
}
fn predIsIOSSimulator(triple: ?[]const u8) bool {
return predIsIOS(triple) and tripleHas(triple, "simulator");
}
fn predIsAndroid(triple: ?[]const u8) bool {
return tripleHas(triple, "android");
}
/// Map a BuildOptions predicate name (`is_macos`/…) to its triple-test, or null.
fn boolPredicate(name: []const u8) ?*const fn (?[]const u8) bool {
if (std.mem.eql(u8, name, "is_macos")) return predIsMacOS;
if (std.mem.eql(u8, name, "is_ios")) return predIsIOS;
if (std.mem.eql(u8, name, "is_ios_device")) return predIsIOSDevice;
if (std.mem.eql(u8, name, "is_ios_simulator")) return predIsIOSSimulator;
if (std.mem.eql(u8, name, "is_android")) return predIsAndroid;
return null;
}
pub const Vm = struct {
machine: Machine,
gpa: std.mem.Allocator,
@@ -381,16 +416,16 @@ pub const Vm = struct {
return self.run(func, argbuf.items);
}
/// Materialize the default `Context` in flat memory and return its address —
/// Materialize the default `Context` in comptime memory and return its address —
/// the VM analogue of the static `__sx_default_context` global / the legacy
/// `defaultContextValue`. The implicit-ctx param is an opaque `*void`, so the
/// real Context type AND its initializer (the nested `{ {null, alloc_fn,
/// dealloc_fn}, null }` constant carrying the CAllocator thunk func-refs) come
/// from the `__sx_default_context` global. Laying that constant into flat memory
/// from the `__sx_default_context` global. Laying that constant into comptime memory
/// gives a context whose `alloc_fn`/`dealloc_fn` are real func-refs, so a
/// comptime body that allocates via `context.allocator` dispatches through
/// `call_indirect` to the thunk to `CAllocator.alloc_bytes` to `libc_malloc` to
/// the VM's native `malloc` (flat memory) — all on the VM, no host heap. If no
/// the VM's native `malloc` (comptime memory) — all on the VM, no host heap. If no
/// `__sx_default_context` global exists, bail (legacy fallback).
fn materializeDefaultContext(self: *Vm, module: *const Module) Error!Addr {
const table = self.table orelse return self.failMsg("comptime VM: default context needs a type table");
@@ -431,7 +466,7 @@ pub const Vm = struct {
return null;
}
/// Lay a static `ConstantValue` of type `ty` into flat memory at `addr` (the
/// Lay a static `ConstantValue` of type `ty` into comptime memory at `addr` (the
/// destination is pre-zeroed). Scalars/func-refs write a word; a null/zero/undef
/// leaf stays zeroed; an aggregate recurses per field at the type's natural
/// offsets. Builds the default context from its global constant.
@@ -899,7 +934,7 @@ pub const Vm = struct {
return .{ .value = null_addr };
},
// Unpack a comptime frame `(func_id << 32 | span.start)` and build a
// `Frame { file, line, col, func, line_text }` aggregate in flat memory —
// `Frame { file, line, col, func, line_text }` aggregate in comptime memory —
// the VM-native mirror of the legacy interp's `.trace_resolve`. `ins.ty`
// is the `Frame` struct, so each field's type/offset comes from the table.
.trace_resolve => |u| {
@@ -940,7 +975,7 @@ pub const Vm = struct {
},
// `error_tag_name(e)` — the runtime tag id (a word) → its name string via
// the always-linked tag-name table. Pure: builds a `{ptr,len}` string in
// flat memory. Mirrors the legacy interp's `error_tag_name_get`.
// comptime memory. Mirrors the legacy interp's `error_tag_name_get`.
.error_tag_name_get => |u| {
const table = try self.requireTable();
const id: u32 = @intCast(frame.get(u.operand.index()));
@@ -969,7 +1004,7 @@ pub const Vm = struct {
.global_get => |gid| return .{ .value = try self.evalGlobal(gid) },
// `&global` — only `&__sx_default_context` is materialised at comptime
// (its address sees runtime use via the implicit-ctx plumbing). Return
// the context's flat-memory address — an aggregate value IS its address,
// the context's comptime address — an aggregate value IS its address,
// so a later `load`/field read sees the materialised Context. Mirrors the
// legacy interp's `global_addr` (the sole supported global); any other
// global bails to legacy fallback.
@@ -1019,7 +1054,7 @@ pub const Vm = struct {
// layout). The tag is the source TypeId index (matches the legacy comptime
// interp; runtime `anyTag` additionally normalizes arbitrary-width ints —
// an existing legacy/runtime split). The value slot holds a word source's
// scalar bytes, or an aggregate source's flat-memory ADDR (the runtime
// scalar bytes, or an aggregate source's comptime ADDR (the runtime
// "pointer in the value slot" shape — see emit_llvm.coerceToI64's struct path).
.box_any => |ba| {
const table = try self.requireTable();
@@ -1174,19 +1209,19 @@ pub const Vm = struct {
/// shared by `call` (static callee) and `call_indirect` (func-ref callee). An
/// extern/bodyless callee routes to the native libc memory builtins (else
/// bails); a normal callee runs on the VM. Aggregate args pass as their Addr
/// over the shared flat memory (no copy).
/// over the shared comptime memory (no copy).
fn invoke(self: *Vm, fid: inst_mod.FuncId, args: []const Ref, frame: *Frame, ref_types: []const TypeId, result_ty: TypeId) Error!Reg {
const module = self.module orelse return self.failMsg("comptime VM: call needs a module (not provided)");
if (fid.index() >= module.functions.items.len) return self.failMsg("comptime VM: call to an out-of-range function id");
const callee = module.getFunction(fid);
if (callee.is_extern or callee.blocks.items.len == 0) {
const name = module.types.getString(callee.name);
// A curated set of libc MEMORY builtins is modeled natively on flat
// A curated set of libc MEMORY builtins is modeled natively on comptime
// memory (sandboxed, target-aware) — comptime malloc/free/memcpy/…
// never reach the host heap or dlsym.
if (try self.callMemBuiltin(name, args, frame)) |r| return r;
// A welded `compiler`-library function (`abi(.zig) extern compiler`):
// the comptime compiler-API, serviced natively on flat memory (Phase 3
// the comptime compiler-API, serviced natively on comptime memory (Phase 3
// seed). The `compiler_welded` flag is the safety boundary.
if (callee.compiler_welded) {
if (try self.callCompilerFn(name, args, frame, ref_types, result_ty)) |r| return r;
@@ -1295,13 +1330,13 @@ pub const Vm = struct {
return std.math.cast(usize, w) orelse self.failMsg("comptime mem builtin: negative/oversized size arg");
}
/// Model a curated set of libc MEMORY builtins directly on flat memory, so a
/// Model a curated set of libc MEMORY builtins directly on comptime memory, so a
/// comptime `malloc`/`free`/`memcpy`/… stays sandboxed (no host heap, no
/// dlsym) and target-aware. Returns the result word, or `null` if `name` is
/// not one of them (the caller then bails to the legacy interpreter). libc
/// `malloc` returns 16-byte-aligned storage; we mirror that. The COMPUTED
/// result is byte-identical to the legacy path (which calls real libc) — only
/// the backing memory differs (flat vs host heap), which the result can't see.
/// the backing memory differs (comptime arena vs host heap), which the result can't see.
fn callMemBuiltin(self: *Vm, name: []const u8, args: []const Ref, frame: *Frame) Error!?Reg {
// Error return-trace runtime (sx_trace.c, linked into the compiler). A
// comptime failable that raises emits `sx_trace_push(trace_frame())` as it
@@ -1357,10 +1392,10 @@ pub const Vm = struct {
return null; // not a modeled builtin → caller bails to legacy
}
/// Service a welded `compiler`-library function natively on flat memory — the
/// Service a welded `compiler`-library function natively on comptime memory — the
/// comptime compiler-API (Phase 3 of `PLAN-COMPILER-VM.md`). Returns the result
/// word, or `null` for an unknown name (caller bails → legacy). Mirrors the
/// legacy `compiler_lib` handlers, but reads/writes flat memory directly instead
/// legacy `compiler_lib` handlers, but reads/writes comptime memory directly instead
/// of marshaling `Value`s. The seed pair is the string-pool round-trip:
/// `intern(s: string) -> StringId` and `text_of(id: StringId) -> string`.
/// Read compiler-call arg `i` as a u32 handle (a `StringId` / `TypeId` word),
@@ -1497,7 +1532,7 @@ pub const Vm = struct {
// ── build-pipeline metadata queries (Phase 5.2) ─────────────────────
// Read-only: the compiler answers them from the `BuildConfig` `main.zig`
// forwards before the post-link callback runs. Each builds a fresh
// `List(string)` in flat memory (the result type drives its layout) — no
// `List(string)` in comptime memory (the result type drives its layout) — no
// driver action, so they're pure data even in the sx-driven end state.
if (std.mem.eql(u8, name, "c_object_paths")) {
if (args.len != 0) return self.failMsg("comptime c_object_paths: expected no args");
@@ -1551,7 +1586,7 @@ pub const Vm = struct {
// genuine ACTION: dispatch to the host-installed linker (the VM can't link
// itself). Void return (the build callback isn't fallible — Phase 5
// decision); a link failure bails loudly → hard build error. `ref_types`
// gives each List(string) arg its concrete type for the flat-memory reader.
// gives each List(string) arg its concrete type for the comptime reader.
if (std.mem.eql(u8, name, "link")) {
if (args.len != 6) return self.failMsg("comptime link: expected (objects, output, libraries, frameworks, flags, target)");
const bc = self.build_config orelse
@@ -1568,12 +1603,132 @@ pub const Vm = struct {
return self.failMsg("comptime link: linking failed");
return @as(Reg, null_addr); // void
}
// ── BuildOptions accessors (Phase 5.5) ──────────────────────────────
// Migrated off `struct #compiler` hooks onto VM-native arms. `self` (the
// opaque BuildOptions handle) is args[0] and ignored; the real state lives
// on the threaded `BuildConfig`. SETTERS dupe the string arg into the
// PERSISTENT `self.gpa` (the Compilation allocator — NOT the per-eval VM
// arena, whose bytes die at `Vm.deinit`) so it survives to post-link.
if (try self.callBuildOptionFn(name, args, frame)) |r| return r;
return null; // not a known compiler function → caller bails to legacy
}
/// Read string arg `idx` (a `{ptr,len}` fat pointer) and DUPE it into the
/// persistent `self.gpa`. The VM-arena view dies at `Vm.deinit`, so a
/// BuildConfig string set at `#run` must own a persistent copy.
fn dupeArgStr(self: *Vm, args: []const Ref, frame: *Frame, idx: usize) Error![]const u8 {
const table = try self.requireTable();
const view = try self.readStringArg(table, frame.get(args[idx].index()));
return self.gpa.dupe(u8, view) catch return self.failMsg("comptime BuildOptions setter: out of memory");
}
/// VM-native `BuildOptions` accessors (Phase 5.5). Returns null when `name` is
/// not a BuildOptions accessor (the caller then yields null → "unknown").
fn callBuildOptionFn(self: *Vm, name: []const u8, args: []const Ref, frame: *Frame) Error!?Reg {
const table = try self.requireTable();
// A getter/setter on a string field: `name` → the `?[]const u8` field. A
// setter (one extra arg) writes a persistent dupe; a getter returns the
// value (or "" when unset). Both ignore the `self` handle at args[0].
const StrField = struct { set: []const u8, get: []const u8, field: *?[]const u8 };
// A BuildOptions accessor is only ever reached from a `#run` / post-link
// eval, which always threads a `BuildConfig`. A null `bc` here means this
// isn't a BuildOptions call at all (e.g. a lowering-time type-fn) — yield
// null so the caller treats it as unknown (it then bails loudly).
const bc = self.build_config orelse return null;
const str_fields = [_]StrField{
.{ .set = "set_output_path", .get = "", .field = &bc.output_path },
.{ .set = "set_wasm_shell", .get = "", .field = &bc.wasm_shell_path },
.{ .set = "set_post_link_module", .get = "", .field = &bc.post_link_module },
.{ .set = "set_bundle_path", .get = "bundle_path", .field = &bc.bundle_path },
.{ .set = "set_bundle_id", .get = "bundle_id", .field = &bc.bundle_id },
.{ .set = "set_codesign_identity", .get = "codesign_identity", .field = &bc.codesign_identity },
.{ .set = "set_provisioning_profile", .get = "provisioning_profile", .field = &bc.provisioning_profile },
.{ .set = "set_manifest_path", .get = "manifest_path", .field = &bc.manifest_path },
.{ .set = "set_keystore_path", .get = "keystore_path", .field = &bc.keystore_path },
.{ .set = "_", .get = "binary_path", .field = &bc.binary_path },
.{ .set = "_", .get = "target_triple", .field = &bc.target_triple },
};
for (str_fields) |sf| {
if (sf.set.len > 1 and std.mem.eql(u8, name, sf.set)) {
if (args.len != 2) return self.failMsg("comptime BuildOptions setter: expected (self, value)");
sf.field.* = try self.dupeArgStr(args, frame, 1);
return @as(Reg, null_addr);
}
if (sf.get.len > 0 and std.mem.eql(u8, name, sf.get)) {
if (args.len != 1) return self.failMsg("comptime BuildOptions getter: expected (self)");
return try self.makeStringValue(table, sf.field.* orelse "");
}
}
// List-appending setters (dupe + append into the persistent gpa).
if (std.mem.eql(u8, name, "add_link_flag")) {
if (args.len != 2) return self.failMsg("comptime add_link_flag: expected (self, flag)");
bc.link_flags.append(self.gpa, try self.dupeArgStr(args, frame, 1)) catch
return self.failMsg("comptime add_link_flag: out of memory");
return @as(Reg, null_addr);
}
if (std.mem.eql(u8, name, "add_framework")) {
if (args.len != 2) return self.failMsg("comptime add_framework: expected (self, name)");
bc.frameworks.append(self.gpa, try self.dupeArgStr(args, frame, 1)) catch
return self.failMsg("comptime add_framework: out of memory");
return @as(Reg, null_addr);
}
if (std.mem.eql(u8, name, "add_asset_dir")) {
if (args.len != 3) return self.failMsg("comptime add_asset_dir: expected (self, src, dest)");
const src = try self.dupeArgStr(args, frame, 1);
const dest = try self.dupeArgStr(args, frame, 2);
bc.asset_dirs.append(self.gpa, .{ .src = src, .dest = dest }) catch
return self.failMsg("comptime add_asset_dir: out of memory");
return @as(Reg, null_addr);
}
// Count getters (i64).
if (std.mem.eql(u8, name, "asset_dir_count"))
return @as(Reg, @bitCast(@as(i64, @intCast(bc.asset_dirs.items.len))));
if (std.mem.eql(u8, name, "framework_count"))
return @as(Reg, @bitCast(@as(i64, @intCast(bc.target_frameworks.len))));
if (std.mem.eql(u8, name, "framework_path_count"))
return @as(Reg, @bitCast(@as(i64, @intCast(bc.target_framework_paths.len))));
if (std.mem.eql(u8, name, "jni_main_count"))
return @as(Reg, @bitCast(@as(i64, @intCast(bc.jni_main_runtime_paths.len))));
// Indexed string getters (out-of-range → "", mirroring the legacy hooks).
// Asset dirs are `{src,dest}` structs, so read the field directly.
if (std.mem.eql(u8, name, "asset_dir_src_at") or std.mem.eql(u8, name, "asset_dir_dest_at")) {
if (args.len != 2) return self.failMsg("comptime asset_dir getter: expected (self, i)");
const idx: i64 = @bitCast(frame.get(args[1].index()));
if (idx < 0 or @as(usize, @intCast(idx)) >= bc.asset_dirs.items.len)
return try self.makeStringValue(table, "");
const ad = bc.asset_dirs.items[@intCast(idx)];
return try self.makeStringValue(table, if (name[10] == 's') ad.src else ad.dest);
}
if (std.mem.eql(u8, name, "framework_at"))
return try self.indexedStr(args, frame, bc.target_frameworks);
if (std.mem.eql(u8, name, "framework_path_at"))
return try self.indexedStr(args, frame, bc.target_framework_paths);
if (std.mem.eql(u8, name, "jni_main_runtime_path_at"))
return try self.indexedStr(args, frame, bc.jni_main_runtime_paths);
if (std.mem.eql(u8, name, "jni_main_java_source_at"))
return try self.indexedStr(args, frame, bc.jni_main_java_sources);
// Target predicates (computed from the triple — mirror the legacy hooks).
if (boolPredicate(name)) |pred| {
if (args.len != 1) return self.failMsg("comptime BuildOptions predicate: expected (self)");
return @as(Reg, if (pred(bc.target_triple)) 1 else 0);
}
return null; // not a BuildOptions accessor
}
/// Read index arg 1, bounds-check against `items`, and return the element
/// string (or "" when out of range — mirrors the legacy hook behavior).
fn indexedStr(self: *Vm, args: []const Ref, frame: *Frame, items: []const []const u8) Error!Reg {
const table = try self.requireTable();
if (args.len != 2) return self.failMsg("comptime BuildOptions indexed getter: expected (self, i)");
const idx: i64 = @bitCast(frame.get(args[1].index()));
if (idx < 0 or @as(usize, @intCast(idx)) >= items.len)
return try self.makeStringValue(table, "");
return try self.makeStringValue(table, items[@intCast(idx)]);
}
/// VM-native `register_type(handle: Type, kind: i64, members: []Member) -> Type`
/// — fill a `declare_type`'d forward slot, branching on `kind` in the compiler
/// (mirrors `compiler_lib.handleRegisterType`, but reads `[]Member` from flat
/// (mirrors `compiler_lib.handleRegisterType`, but reads `[]Member` from comptime
/// memory instead of decoding a `Value`). `Member` is `{ name: string, ty: Type }`.
fn registerTypeVm(self: *Vm, args: []const Ref, frame: *Frame, ref_types: []const TypeId) Error!?Reg {
const table = try self.requireTable();
@@ -1642,7 +1797,7 @@ pub const Vm = struct {
return tbl.internNominal(.{ .tagged_union = .{ .name = name_id, .fields = &.{}, .tag_type = .i64 } }, 0);
}
/// Decode a `[]{ name: string, ty: Type }` slice from flat memory into interned
/// Decode a `[]{ name: string, ty: Type }` slice from comptime memory into interned
/// `(StringId, TypeId)` pairs — the shared shape of a compiler-API `Member`, a
/// metatype `EnumVariant { name, payload }`, and a `StructField { name, type }`.
/// `slice_ty` (the slice's IR type) gives the element layout (field offsets +
@@ -1671,7 +1826,7 @@ pub const Vm = struct {
}
/// Decode a `[]Type` slice (a metatype `TupleInfo.elements` — POSITIONAL, bare
/// `Type` elements with no name) from flat memory into `TypeId`s.
/// `Type` elements with no name) from comptime memory into `TypeId`s.
fn decodeTypeSlice(self: *Vm, table: *const types.TypeTable, slice_word: Reg, slice_ty: TypeId, out: *std.ArrayList(TypeId)) Error!void {
if (slice_ty.isBuiltin() or table.get(slice_ty) != .slice)
return self.failMsg("comptime define(): tuple elements arg is not a slice");
@@ -1715,7 +1870,7 @@ pub const Vm = struct {
}
/// Service a comptime metatype `#builtin` (`meta.sx`'s `declare`/`define`)
/// natively on flat memory, the VM-native mirror of the legacy
/// natively on comptime memory, the VM-native mirror of the legacy
/// `interp.execBuiltinInner` arms. Returns the result word, or `null` for a
/// builtin the VM doesn't model yet (caller bails → legacy fallback, so dual-path
/// parity holds). Keeps BOTH paths alive during the VM-default transition.
@@ -1777,7 +1932,7 @@ pub const Vm = struct {
},
// type_info($T) → reflect a type INTO a TypeInfo VALUE (the inverse of
// define's decode). The arg folded to a `const_type` (a `.type_value`
// word = the source TypeId); build the value in flat memory.
// word = the source TypeId); build the value in comptime memory.
.type_info => {
const table = try self.requireTable();
if (bi.args.len != 1) return self.failMsg("comptime type_info: expected (Type)");
@@ -1867,7 +2022,7 @@ pub const Vm = struct {
return @as(Reg, handle.index());
}
/// Reflect type `tid` INTO a `TypeInfo` VALUE built in flat memory — the inverse
/// Reflect type `tid` INTO a `TypeInfo` VALUE built in comptime memory — the inverse
/// of `defineFromInfo` and the VM-native mirror of legacy `reflectTypeInfo`. The
/// element/struct layouts come from the `result_ty` (= the metatype `TypeInfo`
/// tagged union): variant tag `t` → payload struct `EnumInfo`/`StructInfo`/
@@ -1969,7 +2124,7 @@ pub const Vm = struct {
// shapes bail loudly (added as wiring surfaces them).
/// Convert a legacy `Value` of type `ty` into a VM `Reg`, materializing
/// aggregates into flat memory (returning their `Addr`).
/// aggregates into comptime memory (returning their `Addr`).
pub fn valueToReg(self: *Vm, table: *const types.TypeTable, value: Value, ty: TypeId) Error!Reg {
switch (kindOf(table, ty)) {
.word => return switch (value) {
@@ -2010,8 +2165,8 @@ pub const Vm = struct {
}
}
/// Convert a VM `Reg` (+ flat memory) of type `ty` back into a legacy `Value`.
/// Strings/aggregates are deep-copied into `alloc` (they must outlive flat memory).
/// Convert a VM `Reg` (+ comptime memory) of type `ty` back into a legacy `Value`.
/// Strings/aggregates are deep-copied into `alloc` (they must outlive comptime memory).
pub fn regToValue(self: *Vm, alloc: std.mem.Allocator, table: *const types.TypeTable, reg: Reg, ty: TypeId) Error!Value {
switch (kindOf(table, ty)) {
.word => {
@@ -2061,7 +2216,7 @@ pub const Vm = struct {
}
/// How a value of type `ty` is held: a register word (scalar/pointer, ≤8
/// bytes) or by-address in flat memory (struct). Anything else is not ported
/// bytes) or by-address in comptime memory (struct). Anything else is not ported
/// yet (slice/string/any/optional/enum/union/array/tuple/vector — sub-step 4+).
const Kind = enum { word, aggregate, unsupported };
@@ -2143,7 +2298,7 @@ pub const Vm = struct {
return (try self.machine.readWord(v + table.typeSizeBytes(child), 1)) != 0;
}
/// Read a value of type `ty` from flat address `addr`: a scalar reads its
/// Read a value of type `ty` from comptime address `addr`: a scalar reads its
/// bytes; an aggregate value IS its address (it lives inline at `addr`).
/// `f32` is special: float REGISTERS hold f64 bits (like the legacy interp's
/// `.float`), but memory holds the 4-byte IEEE-754 single — so read 4 bytes as
@@ -2165,13 +2320,13 @@ pub const Vm = struct {
},
.aggregate => addr,
.unsupported => {
self.detail = "comptime VM: value type not yet supported on flat memory (slice/optional/enum/array/etc.)";
self.detail = "comptime VM: value type not yet supported on comptime memory (slice/optional/enum/array/etc.)";
return error.Unsupported;
},
};
}
/// Write register word `val` (of type `ty`) to flat address `addr`: a scalar
/// Write register word `val` (of type `ty`) to comptime address `addr`: a scalar
/// writes its bytes; an aggregate copies `sizeof(ty)` bytes from `val` (its
/// source address) into `addr`. A `null_addr` aggregate source is the
/// null/none sentinel (a non-pointer `?T` set to `null`, an empty slice/string,
@@ -2197,7 +2352,7 @@ pub const Vm = struct {
}
},
.unsupported => {
self.detail = "comptime VM: value type not yet supported on flat memory (slice/optional/enum/array/etc.)";
self.detail = "comptime VM: value type not yet supported on comptime memory (slice/optional/enum/array/etc.)";
return error.Unsupported;
},
}
@@ -2287,7 +2442,7 @@ pub const Vm = struct {
return data +% idx *% @as(u64, @intCast(elem_size));
}
/// Materialize `text` into flat memory as a `string` VALUE — NUL-terminated
/// Materialize `text` into comptime memory as a `string` VALUE — NUL-terminated
/// bytes + a `{ptr, len}` fat pointer (len excludes the NUL). Shared by
/// `text_of` and `type_info`'s variant/field-name construction.
fn makeStringValue(self: *Vm, table: *const types.TypeTable, text: []const u8) Error!Reg {
@@ -2296,7 +2451,7 @@ pub const Vm = struct {
return try self.makeSlice(table, data, text.len);
}
/// Build a `{ptr, len}` fat pointer (slice/string value) in flat memory and
/// Build a `{ptr, len}` fat pointer (slice/string value) in comptime memory and
/// return its address. `ptr` is `pointer_size` bytes at offset 0; `len` is an
/// i64 at offset 8 (the layout `typeSizeBytes` uses for slice/string: 16B).
fn makeSlice(self: *Vm, table: *const types.TypeTable, data: Addr, len: u64) Error!Addr {
@@ -2316,7 +2471,7 @@ pub const Vm = struct {
return self.machine.readWord(base, table.pointer_size);
}
/// Build a `List(string)` aggregate in flat memory from host strings and
/// Build a `List(string)` aggregate in comptime memory from host strings and
/// return its Addr (the VM's aggregate value IS its address). `list_ty` is
/// the result type of the calling primitive (`List(string)`); its field
/// offsets/types drive the layout (target-aware via the table), so this works
@@ -2348,7 +2503,7 @@ pub const Vm = struct {
}
/// Read a `string` argument (a `{ptr, len}` fat pointer at `val`) as a host
/// `[]const u8`. The bytes are a VIEW into flat memory (Addr is a real host
/// `[]const u8`. The bytes are a VIEW into comptime memory (Addr is a real host
/// pointer over a stable arena), valid for the duration of the call.
fn readStringArg(self: *Vm, table: *const types.TypeTable, val: Reg) Error![]const u8 {
const len: usize = @intCast(try self.sliceLen(val));
@@ -2357,7 +2512,7 @@ pub const Vm = struct {
}
/// Read a `List(string)` aggregate (at `addr`) into a host `[][]const u8` —
/// the inverse of `makeStringList`. Element string bytes are VIEWS into flat
/// the inverse of `makeStringList`. Element string bytes are VIEWS into comptime
/// memory (stable arena); the outer array is gpa-allocated (freed at
/// `Vm.deinit`). Used by the `link` primitive to read its List args.
fn readStringList(self: *Vm, table: *const types.TypeTable, list_ty: TypeId, addr: Addr) Error![]const []const u8 {

View File

@@ -116,7 +116,7 @@ pub const LLVMEmitter = struct {
comptime_failed: bool = false,
// When set (env `SX_COMPTIME_FLAT`, → a `-Dcomptime-flat` build flag later),
// comptime const-init folds try the flat-memory VM (`comptime_vm.tryEval`)
// comptime const-init folds try the comptime VM (`comptime_vm.tryEval`)
// first and fall back to the legacy tagged interpreter on null. Default OFF so
// the corpus is unaffected until the VM reaches parity (Phase 1.final step d).
comptime_flat: bool = false,
@@ -855,6 +855,30 @@ pub const LLVMEmitter = struct {
std.debug.print("help: handle it at the `#run` site — `#run <expr> catch (e) {{ ... }}` or `#run <expr> or <default>`\n", .{});
}
/// True when comptime entry `func_id` directly calls a compiler-domain /
/// compiler-welded function (or carries a `compiler_call` op). Such an entry
/// MUST run on the comptime VM: the BuildOptions accessors (Phase 5.5) are
/// VM-only (`comptime_vm.callBuildOptionFn`) with no legacy handler, so a
/// legacy-interp run would bail. Routes the `#run` / const-init through the VM
/// (no legacy fallback) regardless of the `-Dcomptime-flat` gate, keeping
/// gate-OFF green until P5.7 retires the legacy interpreter entirely.
fn entryNeedsVm(self: *const LLVMEmitter, func_id: ir_inst.FuncId) bool {
const func = self.ir_mod.getFunction(func_id);
for (func.blocks.items) |blk| {
for (blk.insts.items) |inst| {
switch (inst.op) {
.call => |call_op| {
const callee = self.ir_mod.getFunction(call_op.callee);
if (callee.compiler_welded or callee.is_compiler_domain) return true;
},
.compiler_call => return true,
else => {},
}
}
}
return false;
}
/// Run comptime side-effect functions (e.g., `#run main();` at top level).
/// These are functions marked `is_comptime = true` with void return that
/// aren't associated with any global. They produce compile-time output.
@@ -880,7 +904,12 @@ pub const LLVMEmitter = struct {
// const-init fold: a VM-handled side-effect that needs no `print`/extern
// runs entirely on the VM (no buffered output); anything it can't handle
// (`print`, an unported op) bails → `null` → the legacy interpreter below.
const vm_result: ?Value = if (self.comptime_flat)
// A compiler-domain entry (calls a BuildOptions accessor / other
// compiler-welded fn) MUST run on the VM — its primitives have no legacy
// handler (Phase 5.5). Force the VM attempt + no-fallback for it,
// regardless of the `-Dcomptime-flat` gate.
const need_vm = self.entryNeedsVm(func_id);
const vm_result: ?Value = if (self.comptime_flat or need_vm)
comptime_vm.tryEval(self.alloc, self.ir_mod, func_id, &self.build_config, self.import_sources)
else
null;
@@ -891,9 +920,9 @@ pub const LLVMEmitter = struct {
std.debug.print("[comptime-vm] fallback run '{s}': {s}\n", .{ fname, comptime_vm.last_bail_reason orelse "<unknown>" });
}
const result = vm_result orelse fallback: {
// Strict mode: NO fallback — a VM bail is a build-gating error naming
// the reason (the interp-retirement enumeration gate).
if (self.comptime_flat_strict) {
// Strict mode (or a compiler-domain entry): NO fallback — a VM bail
// is a build-gating error naming the reason.
if (self.comptime_flat_strict or need_vm) {
std.debug.print("error: comptime `#run` ({s}) bailed on the VM (strict, no fallback): {s}\n", .{ fname, comptime_vm.last_bail_reason orelse "<unknown>" });
self.comptime_failed = true;
break :fallback Value.void_val;
@@ -987,7 +1016,11 @@ pub const LLVMEmitter = struct {
// comptime initializer on the VM; `null` (unsupported op / any
// bail / implicit-ctx) falls through to the legacy interpreter
// below, which produces the identical result. Default OFF.
const vm_result: ?Value = if (self.comptime_flat)
// A compiler-domain initializer (reaches a BuildOptions accessor /
// other compiler-welded fn) MUST run on the VM — no legacy handler
// exists (Phase 5.5). Force the VM + no-fallback for it.
const need_vm = self.entryNeedsVm(func_id);
const vm_result: ?Value = if (self.comptime_flat or need_vm)
comptime_vm.tryEval(self.alloc, self.ir_mod, func_id, &self.build_config, self.import_sources)
else
null;
@@ -1002,9 +1035,9 @@ pub const LLVMEmitter = struct {
}
}
const result = vm_result orelse fallback: {
// Strict mode: NO fallback — a VM bail is a build-gating error
// (the interp-retirement enumeration gate).
if (self.comptime_flat_strict) {
// Strict mode (or a compiler-domain init): NO fallback — a VM bail
// is a build-gating error.
if (self.comptime_flat_strict or need_vm) {
const gname = self.ir_mod.types.getString(global.name);
std.debug.print("error: comptime init of '{s}' bailed on the VM (strict, no fallback): {s}\n", .{ gname, comptime_vm.last_bail_reason orelse "<unknown>" });
self.comptime_failed = true;

View File

@@ -495,7 +495,7 @@ pub fn runComptimeTypeFunc(self: *Lowering, func_id: FuncId, span: ast.Span) ?Ty
// `getOrCreateThunks` is idempotent (cached in `protocol_thunk_map`), so the
// later Pass-1c call reuses these. Guarded exactly like `emitDefaultContextGlobal`
// (skip when the std allocator types aren't registered). This lets the
// flat-memory VM materialize a REAL lowering-time context (the func-refs are
// comptime VM materialize a REAL lowering-time context (the func-refs are
// dispatchable on the VM via `call_indirect` → thunk → native malloc).
{
const tbl = &self.module.types;
@@ -640,7 +640,7 @@ pub fn evalComptimeString(self: *Lowering, expr: *const Node) ?[:0]const u8 {
// dealloc thunks at the bottom of the dispatch.
const ct_func_id = self.createComptimeFunction("__insert", expr, .string);
// NOTE: the flat-memory VM is intentionally NOT wired at this LOWERING-time
// NOTE: the comptime VM is intentionally NOT wired at this LOWERING-time
// site. Unlike the emit-time const-init / `#run` folds (which run on fully
// lowered IR), lowering-time IR can be malformed (e.g. a `ret Ref.none` left by
// an unresolved name — see `0737`), and routing that through the VM is out of

View File

@@ -39,7 +39,7 @@ pub const TypeId = enum(u32) {
/// (`reflect`/`const_type`/the comptime compiler-API), not a boxed Any. It used
/// to share `.any`'s slot, but `.any` is a 16-byte `{tag,value}` box (variadic
/// any), so a `Type` stored in an aggregate was sized 16B while the value is 8B
/// — which blocked the flat-memory comptime VM. Its own slot fixes the size and
/// — which blocked the comptime VM. Its own slot fixes the size and
/// keeps every downstream `== .any`/`switch` check from conflating the two.
type_value = 19,
_, // user-defined types start at `first_user` (slots 2099 reserved for future builtins)
@@ -512,7 +512,7 @@ pub const TypeTable = struct {
/// member count (a scalar, pointer, the `unresolved` sentinel, …) — so a
/// caller bails loudly rather than reading a silent 0. The comptime
/// compiler-API reflection reader `type_field_count` rides on this (both the
/// legacy `compiler_lib` handler and the flat-memory VM call it, so the two
/// legacy `compiler_lib` handler and the comptime VM call it, so the two
/// paths can never drift). Out-of-range ids return null, not a panic.
pub fn memberCount(self: *const TypeTable, id: TypeId) ?i64 {
if (id.index() >= self.infos.items.len) return null;