feat: std.event — OS-neutral readiness Loop over kqueue (PLAN-HTTPZ S5)

Loop.init/close, add_read/del_read/add_write/del_write with a
per-registration udata word, and wait() normalizing backend events
into Event{fd, udata, readable, writable, eof, err, nbytes}. The epoll
twin (S4) slots in behind this surface when the linux target lands.
No timer registrations by design: request/keepalive eviction is
deadline math — deadline_in/expired/remaining_ms over std.time's
monotonic clock, with remaining_ms feeding wait's timeout. std.sx
barrel carries ; .ir snapshot regen is the usual mechanical
renumbering. examples/1632 pins idle timeout (and that it honors the
deadline), readable with fd/udata/nbytes, immediate writability on an
empty send buffer, and the eof flag on peer close; JIT + AOT.
This commit is contained in:
agra
2026-06-12 21:05:56 +03:00
parent 1017657c90
commit 92e220ee24
44 changed files with 70002 additions and 53612 deletions

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.112 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.113 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.114 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.115 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.116 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.117 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.118 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.119 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.120 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.121 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.122 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.123 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.124 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.125 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.126 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.127 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
@str.128 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
@str.129 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
@str.130 = private unnamed_addr constant [8 x i8] c"release\00", align 1
@str.131 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.132 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.114 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.115 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.116 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.117 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.118 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.119 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.120 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.121 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.122 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.123 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.124 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.125 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.126 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.127 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.128 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.129 = private unnamed_addr constant [6 x i8] c"SxFoo\00", align 1
@str.130 = private unnamed_addr constant [8 x i8] c"dealloc\00", align 1
@str.131 = private unnamed_addr constant [6 x i8] c"alloc\00", align 1
@str.132 = private unnamed_addr constant [8 x i8] c"release\00", align 1
@str.133 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.134 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.135 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.134 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.135 = private unnamed_addr constant [28 x i8] c"FAIL: SxFoo not registered\0A\00", align 1
@str.136 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.137 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.138 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.137 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.138 = private unnamed_addr constant [27 x i8] c"FAIL: dealloc IMP missing\0A\00", align 1
@str.139 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.140 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.141 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.140 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.141 = private unnamed_addr constant [28 x i8] c"FAIL: +alloc returned null\0A\00", align 1
@str.142 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.143 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@str.144 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.143 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.144 = private unnamed_addr constant [36 x i8] c"FAIL: +alloc round 2 returned null\0A\00", align 1
@str.145 = private unnamed_addr constant [13 x i8] c"dealloc: ok\0A\00", align 1
@str.146 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.147 = 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_.146 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_CLASS_NAME_.148 = 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_.147 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.148 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.150 = private unnamed_addr constant [4 x i8] c"@@:\00"
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.150 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.152 = private unnamed_addr constant [4 x i8] c"@@:\00"
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -286,7 +286,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.112, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.114, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -382,7 +382,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.113, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.115, 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
@@ -390,7 +390,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.114, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.116, 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
@@ -400,13 +400,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.115, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.117, 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.116, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.118, 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
@@ -414,7 +414,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.117, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.119, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -428,7 +428,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.118, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.120, 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
@@ -436,7 +436,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.119, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.121, 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
@@ -447,7 +447,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 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.122, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -504,7 +504,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.121, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.123, 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
@@ -512,7 +512,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.122, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.124, 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
@@ -523,7 +523,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 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.125, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -543,7 +543,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.124, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.126, 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
@@ -551,7 +551,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.125, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.127, 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
@@ -562,7 +562,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 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.128, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1345,115 +1345,166 @@ declare i64 @now_secs(ptr) #0
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare void @BuildOptions.add_framework.76(i64, ptr) #0
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_output_path.77(i64, ptr) #0
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.asset_dir_count.80(i64) #0
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.binary_path.85(i64) #0
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_path.90(i64) #0
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.bundle_id.91(i64) #0
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.codesign_identity.92(i64) #0
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.provisioning_profile.93(i64) #0
declare void @BuildOptions.add_framework.78(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.target_triple.94(i64) #0
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.95(i64) #0
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.96(i64) #0
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.97(i64) #0
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.99(i64) #0
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.100(i64) #0
declare void @BuildOptions.set_post_link_callback.85(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.101(i64, i64) #0
declare void @BuildOptions.set_post_link_module.86(i64, ptr) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.102(i64) #0
declare ptr @BuildOptions.binary_path.87(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
declare void @BuildOptions.set_bundle_path.88(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
declare void @BuildOptions.set_bundle_id.89(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
declare void @BuildOptions.set_codesign_identity.90(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.106(i64) #0
declare void @BuildOptions.set_provisioning_profile.91(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.107(i64) #0
declare ptr @BuildOptions.bundle_path.92(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.108(i64) #0
declare ptr @BuildOptions.bundle_id.93(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
declare ptr @BuildOptions.codesign_identity.94(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
declare ptr @BuildOptions.provisioning_profile.95(i64) #0
; Function Attrs: nounwind
declare i64 @build_options.111() #0
declare ptr @BuildOptions.target_triple.96(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_macos.97(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios.98(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_device.99(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_ios_simulator.100(i64) #0
; Function Attrs: nounwind
declare i1 @BuildOptions.is_android.101(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_count.102(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_at.103(i64, i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.framework_path_count.104(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.framework_path_at.105(i64, i64) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_manifest_path.106(i64, ptr) #0
; Function Attrs: nounwind
declare void @BuildOptions.set_keystore_path.107(i64, ptr) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.manifest_path.108(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.keystore_path.109(i64) #0
; Function Attrs: nounwind
declare i64 @BuildOptions.jni_main_count.110(i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_foreign_path_at.111(i64, i64) #0
; Function Attrs: nounwind
declare ptr @BuildOptions.jni_main_java_source_at.112(i64, i64) #0
; Function Attrs: nounwind
declare i64 @build_options.113() #0
; Function Attrs: nounwind
declare ptr @objc_getClass(ptr) #0
@@ -1540,7 +1591,7 @@ entry:
%allocaN = alloca ptr, align 8
%allocaN = alloca ptr, align 8
%allocaN = alloca ptr, align 8
%call = call ptr @objc_getClass(ptr @str.127)
%call = call ptr @objc_getClass(ptr @str.129)
store ptr %call, ptr %alloca, align 8
%load = load ptr, ptr %alloca, align 8
%icmp = icmp eq ptr %load, null
@@ -1551,7 +1602,7 @@ if.then.0: ; preds = %entry
ret i32 1
if.merge.1: ; preds = %entry
%callN = call ptr @sel_registerName(ptr @str.128)
%callN = call ptr @sel_registerName(ptr @str.130)
store ptr %callN, ptr %allocaN, align 8
%loadN = load ptr, ptr %alloca, align 8
%loadN = load ptr, ptr %allocaN, align 8
@@ -1566,7 +1617,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.129)
%callN = call ptr @sel_registerName(ptr @str.131)
store ptr %callN, ptr %allocaN, align 8
store ptr @objc_msgSend, ptr %allocaN, align 8
%loadN = load ptr, ptr %alloca, align 8
@@ -1583,7 +1634,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.130)
%callN = call ptr @sel_registerName(ptr @str.132)
store ptr %callN, ptr %allocaN, align 8
store ptr @objc_msgSend, ptr %allocaN, align 8
%loadN = load ptr, ptr %allocaN, align 8
@@ -1630,14 +1681,14 @@ entry:
define internal void @print__ct_s354c93d7643e1bdf__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.131, i64 27 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.133, i64 27 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { 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.132, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.134, 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)
@@ -1653,7 +1704,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.133, i64 27 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.135, i64 27 })
ret { ptr, i64 } %call
}
@@ -1661,14 +1712,14 @@ entry:
define internal void @print__ct_sfe783e2b27a4beff__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.134, i64 26 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.136, i64 26 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { 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.135, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.137, 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)
@@ -1684,7 +1735,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.136, i64 26 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.138, i64 26 })
ret { ptr, i64 } %call
}
@@ -1692,14 +1743,14 @@ entry:
define internal void @print__ct_scaebdbbd10c81716__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.137, i64 27 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.139, i64 27 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { 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.138, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.140, 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)
@@ -1715,7 +1766,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.139, i64 27 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.141, i64 27 })
ret { ptr, i64 } %call
}
@@ -1723,14 +1774,14 @@ entry:
define internal void @print__ct_s7c1052877b8cc801__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.140, i64 35 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.142, i64 35 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { 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.141, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.143, 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)
@@ -1746,7 +1797,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.142, i64 35 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.144, i64 35 })
ret { ptr, i64 } %call
}
@@ -1754,14 +1805,14 @@ entry:
define internal void @print__ct_sed4e79fbcbd67966__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.143, i64 12 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.145, i64 12 }, ptr %alloca, align 8
%allocaN = alloca { ptr, i64 }, align 8
%gep = getelementptr inbounds { ptr, i64 }, ptr %allocaN, i32 0, i32 0
store ptr null, ptr %gep, align 8
%gepN = getelementptr inbounds { 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.144, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.146, 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)
@@ -1777,7 +1828,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.145, i64 12 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.147, i64 12 })
ret { ptr, i64 } %call
}
@@ -1835,17 +1886,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_.146, i64 0)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.148, 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_.147)
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.148)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.150)
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
%2 = call i1 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.150)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.151)
%3 = call i1 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.152)
%iv = call ptr @class_getInstanceVariable(ptr %cls, ptr @OBJC_IVAR_NAME_)
store ptr %iv, ptr @__SxFoo_state_ivar, align 8
ret void