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

@@ -0,0 +1,71 @@
// std.event (PLAN-HTTPZ S5): the OS-neutral Loop — idle timeout costs
// nothing, read readiness carries the registration's udata, write
// interest reports an empty send buffer immediately, EOF is a flag not
// an errno, and the deadline helpers do monotonic timeout math.
#import "modules/std.sx";
main :: () -> i32 {
pair : [2]i32 = ---;
if socket.socketpair(socket.AF_UNIX, socket.SOCK_STREAM, 0, @pair[0]) != 0 {
print("socketpair failed\n");
return 1;
}
a := pair[0];
b := pair[1];
loop, ie := event.Loop.init();
if ie { print("loop init failed\n"); return 1; }
are := false;
loop.add_read(a, 41) catch { are = true; };
if are { print("add_read failed\n"); return 1; }
evs : [8]event.Event = ---;
// Idle: a bounded wait returns 0 events, and roughly honors the bound.
t0 := event.deadline_in(40);
n, we := loop.wait(.{ ptr = @evs[0], len = 8 }, 40);
if we { print("wait failed\n"); return 1; }
if n != 0 { print("idle wait: expected 0 events, got {}\n", n); return 1; }
if !event.expired(t0) { print("idle wait returned before its timeout\n"); return 1; }
print("idle wait: 0 events, deadline expired\n");
// Readable: the event carries fd, udata, and the pending byte count.
msg := "ping";
socket.write(b, msg.ptr, 4);
n2, we2 := loop.wait(.{ ptr = @evs[0], len = 8 }, 1000);
if we2 { print("wait failed\n"); return 1; }
if n2 != 1 { print("after write: expected 1 event, got {}\n", n2); return 1; }
if !evs[0].readable { print("event not readable\n"); return 1; }
if evs[0].fd != a { print("event names the wrong fd\n"); return 1; }
if evs[0].udata != 41 { print("udata did not round-trip\n"); return 1; }
if evs[0].nbytes != 4 { print("expected 4 pending bytes, got {}\n", evs[0].nbytes); return 1; }
print("readable: fd/udata/nbytes all correct\n");
// Write interest on an empty send buffer reports writable at once.
awe := false;
loop.add_write(b, 42) catch { awe = true; };
if awe { print("add_write failed\n"); return 1; }
buf : [16]u8 = ---;
socket.read(a, @buf[0], 16); // drain so only the WRITE event fires
n3, we3 := loop.wait(.{ ptr = @evs[0], len = 8 }, 1000);
if we3 { print("wait failed\n"); return 1; }
if n3 != 1 { print("write interest: expected 1 event, got {}\n", n3); return 1; }
if !evs[0].writable { print("event not writable\n"); return 1; }
if evs[0].udata != 42 { print("write udata did not round-trip\n"); return 1; }
print("writable: immediate, udata correct\n");
loop.del_write(b);
// Peer close: readable with the eof flag set.
socket.close(b);
n4, we4 := loop.wait(.{ ptr = @evs[0], len = 8 }, 1000);
if we4 { print("wait failed\n"); return 1; }
if n4 != 1 { print("after close: expected 1 event, got {}\n", n4); return 1; }
if !evs[0].eof { print("after close: eof flag not set\n"); return 1; }
print("peer close: eof flagged\n");
loop.del_read(a);
socket.close(a);
loop.close();
print("event loop ok\n");
return 0;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -836,6 +836,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal i64 @accept_c(ptr %0) #0 {
entry:

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.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 [10 x i8] c"compiled\0A\00", align 1
@str.128 = 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 [10 x i8] c"compiled\0A\00", align 1
@str.130 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.131 = 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_.130 = private unnamed_addr constant [6 x i8] c"SxFoo\00"
@OBJC_CLASS_NAME_.132 = 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_.131 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.132 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.133 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.134 = private unnamed_addr constant [4 x i8] c"@@:\00"
@OBJC_METH_VAR_NAME_.133 = private unnamed_addr constant [8 x i8] c"dealloc\00"
@OBJC_METH_VAR_TYPE_.134 = private unnamed_addr constant [4 x i8] c"v@:\00"
@OBJC_METH_VAR_NAME_.135 = private unnamed_addr constant [6 x i8] c"alloc\00"
@OBJC_METH_VAR_TYPE_.136 = private unnamed_addr constant [4 x i8] c"@@:\00"
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -270,7 +270,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
@@ -366,7 +366,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.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
@@ -374,7 +374,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.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
@@ -384,13 +384,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.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.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.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
@@ -398,7 +398,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.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
@@ -412,7 +412,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.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
@@ -420,7 +420,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.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
@@ -431,7 +431,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 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
@@ -488,7 +488,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.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
@@ -496,7 +496,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.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
@@ -507,7 +507,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 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
@@ -527,7 +527,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.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
@@ -535,7 +535,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.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
@@ -546,7 +546,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 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.36
@@ -1329,115 +1329,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
define internal void @SxFoo.bump(ptr %0, ptr %1) #0 {
@@ -1480,14 +1531,14 @@ entry:
define internal void @print__ct_sfeff9eeccd48b824__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.127, i64 9 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.129, i64 9 }, 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.128, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.130, 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)
@@ -1503,7 +1554,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.129, i64 9 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.131, i64 9 })
ret { ptr, i64 } %call
}
@@ -1583,17 +1634,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_.130, i64 0)
%cls = call ptr @objc_allocateClassPair(ptr %super_cls, ptr @OBJC_CLASS_NAME_.132, 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_.131)
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.132)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.133)
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.134)
%sel_dealloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.133)
%2 = call i8 @class_addMethod(ptr %cls, ptr %sel_dealloc, ptr @__SxFoo_dealloc_imp, ptr @OBJC_METH_VAR_TYPE_.134)
%sel_alloc = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.135)
%3 = call i8 @class_addMethod(ptr %metacls, ptr %sel_alloc, ptr @__SxFoo_alloc_imp, ptr @OBJC_METH_VAR_TYPE_.136)
%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.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

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.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 [4 x i8] c"ok\0A\00", align 1
@str.128 = 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 [4 x i8] c"ok\0A\00", align 1
@str.130 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.131 = 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_.130 = private unnamed_addr constant [8 x i8] c"release\00"
@OBJC_METH_VAR_NAME_.132 = 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 }]
; Function Attrs: nounwind
@@ -262,7 +262,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
@@ -358,7 +358,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.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
@@ -366,7 +366,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.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
@@ -376,13 +376,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.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.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.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
@@ -390,7 +390,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.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
@@ -404,7 +404,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.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
@@ -412,7 +412,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.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
@@ -423,7 +423,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 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
@@ -480,7 +480,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.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
@@ -488,7 +488,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.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
@@ -499,7 +499,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 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
@@ -519,7 +519,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.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
@@ -527,7 +527,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.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
@@ -538,7 +538,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 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.36
@@ -1321,115 +1321,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
define i32 @main() #0 {
@@ -1465,14 +1516,14 @@ entry:
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.127, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.129, i64 3 }, 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.128, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.130, 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)
@@ -1488,7 +1539,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.129, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.131, i64 3 })
ret { ptr, i64 } %call
}
@@ -1500,7 +1551,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_.130)
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.132)
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.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 [9 x i8] c"NSObject\00", align 1
@str.128 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
@str.129 = private unnamed_addr constant [7 x i8] c"length\00", align 1
@str.130 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.131 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
@str.132 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
@str.133 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
@str.134 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.135 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
@str.136 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
@str.137 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
@str.138 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
@str.139 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
@str.140 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.141 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
@str.142 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.143 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@str.144 = 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 [9 x i8] c"NSObject\00", align 1
@str.130 = private unnamed_addr constant [16 x i8] c"SxManglingProbe\00", align 1
@str.131 = private unnamed_addr constant [7 x i8] c"length\00", align 1
@str.132 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.133 = private unnamed_addr constant [11 x i8] c"addObject:\00", align 1
@str.134 = private unnamed_addr constant [5 x i8] c"i@:i\00", align 1
@str.135 = private unnamed_addr constant [13 x i8] c"combine:and:\00", align 1
@str.136 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.137 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00", align 1
@str.138 = private unnamed_addr constant [7 x i8] c"i@:iii\00", align 1
@str.139 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00", align 1
@str.140 = private unnamed_addr constant [8 x i8] c"i@:iiii\00", align 1
@str.141 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00", align 1
@str.142 = private unnamed_addr constant [6 x i8] c"i@:ii\00", align 1
@str.143 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00", align 1
@str.144 = private unnamed_addr constant [4 x i8] c"i@:\00", align 1
@str.145 = private unnamed_addr constant [19 x i8] c"mangling table OK\0A\00", align 1
@str.146 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.147 = 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_.146 = private unnamed_addr constant [11 x i8] c"addObject:\00"
@OBJC_METH_VAR_NAME_.147 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
@OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [19 x i8] c"actualSelectorName\00"
@OBJC_METH_VAR_NAME_.148 = private unnamed_addr constant [11 x i8] c"addObject:\00"
@OBJC_METH_VAR_NAME_.149 = private unnamed_addr constant [13 x i8] c"combine:and:\00"
@OBJC_METH_VAR_NAME_.150 = private unnamed_addr constant [20 x i8] c"insert:after:index:\00"
@OBJC_METH_VAR_NAME_.151 = private unnamed_addr constant [24 x i8] c"add:observer:for:event:\00"
@OBJC_METH_VAR_NAME_.152 = private unnamed_addr constant [23 x i8] c"initWithFrame:options:\00"
@OBJC_METH_VAR_NAME_.153 = 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 }]
; Function Attrs: nounwind
@@ -288,7 +288,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
@@ -384,7 +384,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.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
@@ -392,7 +392,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.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
@@ -402,13 +402,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.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.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.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
@@ -416,7 +416,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.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
@@ -430,7 +430,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.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
@@ -438,7 +438,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.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
@@ -449,7 +449,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 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
@@ -506,7 +506,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.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
@@ -514,7 +514,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.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
@@ -525,7 +525,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 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
@@ -545,7 +545,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.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
@@ -553,7 +553,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.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
@@ -564,7 +564,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 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.36
@@ -1347,115 +1347,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
@@ -1537,17 +1588,14 @@ entry:
define i32 @main() #0 {
entry:
call void @__sx_objc_selector_init()
%call = call ptr @objc_getClass(ptr @str.127)
%call = call ptr @objc_getClass(ptr @str.129)
%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.128, i64 0)
%callN = call ptr @objc_allocateClassPair(ptr %load, ptr @str.130, 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.129)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.130)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.131)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.132)
%loadN = load ptr, ptr %allocaN, align 8
@@ -1566,6 +1614,9 @@ entry:
%callN = call ptr @sel_registerName(ptr @str.141)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.142)
%loadN = load ptr, ptr %allocaN, align 8
%callN = call ptr @sel_registerName(ptr @str.143)
%callN = call i1 @class_addMethod(ptr %loadN, ptr %callN, ptr @universal_imp, ptr @str.144)
%loadN = load ptr, ptr %allocaN, align 8
call void @objc_registerClassPair(ptr %loadN)
%allocaN = alloca ptr, align 8
%loadN = load ptr, ptr %allocaN, align 8
@@ -1614,14 +1665,14 @@ entry:
define internal void @print__ct_s4c1a58a7c89bfbba__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.143, i64 18 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.145, i64 18 }, 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 18)
@@ -1637,7 +1688,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.145, i64 18 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.147, i64 18 })
ret { ptr, i64 } %call
}
@@ -1645,17 +1696,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_.146)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.147)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.148)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_addObject_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.149)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_combine_and_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.150)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_insert_after_index_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.151)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_add_observer_for_event_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.152)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_initWithFrame_options_, align 8
%selN = call ptr @sel_registerName(ptr @OBJC_METH_VAR_NAME_.153)
store ptr %selN, ptr @OBJC_SELECTOR_REFERENCES_actualSelectorName, align 8
ret void
}

View File

@@ -2,30 +2,30 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [5 x i8] c"noop\00", align 1
@str.91 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@SX_JNI_CLS_noop____V = internal global ptr null
@SX_JNI_MID_noop____V = internal global ptr null
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@SX_JNI_CLS_noop____V = internal global ptr null
@SX_JNI_MID_noop____V = internal global ptr null
@str.94 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.95 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.97 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.98 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -264,7 +264,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -360,7 +360,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -368,7 +368,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -378,13 +378,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -392,7 +392,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -406,7 +406,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -414,7 +414,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -425,7 +425,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -482,7 +482,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -490,7 +490,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -501,7 +501,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -521,7 +521,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -529,7 +529,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -540,7 +540,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1322,6 +1322,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1348,7 +1399,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_noop____V, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont
@@ -1373,7 +1424,7 @@ jni.miss7: ; preds = %jni.cont
store ptr %jni.global.cls12, ptr @SX_JNI_CLS_noop____V, align 8
%9 = getelementptr inbounds ptr, ptr %jni.ifs4, i32 33
%jni.GetMethodID13 = load ptr, ptr %9, align 8
%jni.fresh.mid14 = call ptr %jni.GetMethodID13(ptr %load, ptr %jni.global.cls12, ptr @str.92, ptr @str.93)
%jni.fresh.mid14 = call ptr %jni.GetMethodID13(ptr %load, ptr %jni.global.cls12, ptr @str.94, ptr @str.95)
store ptr %jni.fresh.mid14, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont8
@@ -1425,14 +1476,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.96, i64 3 }, 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.95, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.97, 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)
@@ -1448,6 +1499,6 @@ 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.96, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.98, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [9 x i8] c"getCount\00", align 1
@str.91 = private unnamed_addr constant [4 x i8] c"()I\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [9 x i8] c"getCount\00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"()I\00", align 1
@SX_JNI_CLS_getCount____I = internal global ptr null
@SX_JNI_MID_getCount____I = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal i32 @read_int(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1346,7 +1397,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getCount____I, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getCount____I, align 8
br label %jni.cont
@@ -1400,14 +1451,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1423,6 +1474,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [18 x i8] c"currentTimeMillis\00", align 1
@str.91 = private unnamed_addr constant [4 x i8] c"()J\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [18 x i8] c"currentTimeMillis\00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"()J\00", align 1
@SX_JNI_CLS_currentTimeMillis____J = internal global ptr null
@SX_JNI_MID_currentTimeMillis____J = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal i64 @read_long(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1346,7 +1397,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_currentTimeMillis____J, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_currentTimeMillis____J, align 8
br label %jni.cont
@@ -1400,14 +1451,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1423,6 +1474,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [9 x i8] c"getValue\00", align 1
@str.91 = private unnamed_addr constant [4 x i8] c"()D\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [9 x i8] c"getValue\00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"()D\00", align 1
@SX_JNI_CLS_getValue____D = internal global ptr null
@SX_JNI_MID_getValue____D = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal double @read_double(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1346,7 +1397,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getValue____D, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getValue____D, align 8
br label %jni.cont
@@ -1400,14 +1451,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1423,6 +1474,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [8 x i8] c"isShown\00", align 1
@str.91 = private unnamed_addr constant [4 x i8] c"()Z\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [8 x i8] c"isShown\00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"()Z\00", align 1
@SX_JNI_CLS_isShown____Z = internal global ptr null
@SX_JNI_MID_isShown____Z = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal i1 @read_bool(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1346,7 +1397,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_isShown____Z, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_isShown____Z, align 8
br label %jni.cont
@@ -1400,14 +1451,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1423,6 +1474,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [10 x i8] c"getWindow\00", align 1
@str.91 = private unnamed_addr constant [24 x i8] c"()Landroid/view/Window;\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1
@str.93 = private unnamed_addr constant [24 x i8] c"()Landroid/view/Window;\00", align 1
@SX_JNI_CLS_getWindow____Landroid_view_Window_ = internal global ptr null
@SX_JNI_MID_getWindow____Landroid_view_Window_ = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal ptr @get_window(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1346,7 +1397,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getWindow____Landroid_view_Window_, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getWindow____Landroid_view_Window_, align 8
br label %jni.cont
@@ -1400,14 +1451,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1423,6 +1474,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [4 x i8] c"max\00", align 1
@str.91 = private unnamed_addr constant [6 x i8] c"(II)I\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [4 x i8] c"max\00", align 1
@str.93 = private unnamed_addr constant [6 x i8] c"(II)I\00", align 1
@SX_JNI_CLS_max___II_I = internal global ptr null
@SX_JNI_MID_max___II_I = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal i32 @call_static_max(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1343,7 +1394,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_max___II_I, align 8
%4 = getelementptr inbounds ptr, ptr %jni.ifs, i32 113
%jni.GetStaticMethodID = load ptr, ptr %4, align 8
%jni.fresh.mid = call ptr %jni.GetStaticMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetStaticMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_max___II_I, align 8
br label %jni.cont
@@ -1397,14 +1448,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1420,6 +1471,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [10 x i8] c"getWindow\00", align 1
@str.91 = private unnamed_addr constant [21 x i8] c"()Ljava/lang/Object;\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [10 x i8] c"getWindow\00", align 1
@str.93 = private unnamed_addr constant [21 x i8] c"()Ljava/lang/Object;\00", align 1
@SX_JNI_CLS_getWindow____Ljava_lang_Object_ = internal global ptr null
@SX_JNI_MID_getWindow____Ljava_lang_Object_ = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1347,7 +1398,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_getWindow____Ljava_lang_Object_, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_getWindow____Ljava_lang_Object_, align 8
br label %jni.cont
@@ -1400,14 +1451,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1423,6 +1474,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

View File

@@ -2,28 +2,28 @@
@g_should_call = internal global i1 false
@__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 [2 x i8] c"0\00", align 1
@str.75 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.76 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.77 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.78 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.79 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.80 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.81 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.82 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.83 = private unnamed_addr constant [5 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 [5 x i8] c"noop\00", align 1
@str.91 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.77 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.78 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.79 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.80 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.81 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.82 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.83 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.84 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.85 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.86 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.87 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.88 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.89 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.90 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.91 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.92 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.93 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@SX_JNI_CLS_noop____V = internal global ptr null
@SX_JNI_MID_noop____V = internal global ptr null
@str.92 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.93 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.94 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.95 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.96 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -262,7 +262,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.75, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.77, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -358,7 +358,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.76, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.78, 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
@@ -366,7 +366,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.77, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.79, 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
@@ -376,13 +376,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.78, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.80, 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.79, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.81, 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
@@ -390,7 +390,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.80, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.82, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -404,7 +404,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.81, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.83, 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
@@ -412,7 +412,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.82, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.84, 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
@@ -423,7 +423,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.83, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.85, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -480,7 +480,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.84, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.86, 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
@@ -488,7 +488,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.85, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.87, 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
@@ -499,7 +499,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.86, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.88, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -519,7 +519,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.87, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.89, 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
@@ -527,7 +527,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.88, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.90, 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
@@ -538,7 +538,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.89, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.91, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -1320,6 +1320,57 @@ declare i64 @now_secs(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms(ptr) #0
; Function Attrs: nounwind
declare i32 @kqueue() #0
; Function Attrs: nounwind
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
; Function Attrs: nounwind
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
; Function Attrs: nounwind
declare i1 @kq_apply(ptr, i32, ptr) #0
; Function Attrs: nounwind
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
; Function Attrs: nounwind
declare i64 @now_secs.75(ptr) #0
; Function Attrs: nounwind
declare i64 @mono_ms.76(ptr) #0
; Function Attrs: nounwind
declare i64 @Loop.init(ptr) #0
; Function Attrs: nounwind
declare void @Loop.close(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_read(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
; Function Attrs: nounwind
declare void @Loop.del_write(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @deadline_in(ptr, i64) #0
; Function Attrs: nounwind
declare i1 @expired(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @remaining_ms(ptr, i64) #0
; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
entry:
@@ -1346,7 +1397,7 @@ jni.miss: ; preds = %entry
store ptr %jni.global.cls, ptr @SX_JNI_CLS_noop____V, align 8
%5 = getelementptr inbounds ptr, ptr %jni.ifs, i32 33
%jni.GetMethodID = load ptr, ptr %5, align 8
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.90, ptr @str.91)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.92, ptr @str.93)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont
@@ -1398,14 +1449,14 @@ declare void @sx_jni_env_tl_set(ptr) #0
define internal void @print__ct_sbdbafa1a5fe828c0__pack(ptr %0) #0 {
entry:
%alloca = alloca { ptr, i64 }, align 8
store { ptr, i64 } { ptr @str.92, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.94, i64 3 }, 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.93, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.95, 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)
@@ -1421,6 +1472,6 @@ 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.94, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.96, i64 3 })
ret { ptr, i64 } %call
}

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.112 = private unnamed_addr constant [23 x i8] c"(Landroid/os/Bundle;)V\00", align 1
@str.114 = 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.113 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
@str.114 = private unnamed_addr constant [29 x i8] c"(Landroid/content/Context;)V\00", align 1
@str.115 = private unnamed_addr constant [7 x i8] c"<init>\00", align 1
@str.116 = 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
; Function Attrs: nounwind
@@ -844,115 +844,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
define i32 @main() #0 {
@@ -992,7 +1043,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.112)
%jni.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.parent.cls, ptr @str, ptr @str.114)
%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
@@ -1008,7 +1059,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.113, ptr @str.114)
%jni.ctor.mid = call ptr %jni.GetMethodID10(ptr %load, ptr %jni.ctor.cls, ptr @str.115, ptr @str.116)
%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

@@ -0,0 +1 @@

View File

@@ -0,0 +1 @@
0

View File

@@ -0,0 +1 @@

View File

@@ -0,0 +1,5 @@
idle wait: 0 events, deadline expired
readable: fd/udata/nbytes all correct
writable: immediate, udata correct
peer close: eof flagged
event loop ok

View File

@@ -98,3 +98,4 @@ hash :: #import "modules/std/hash.sx";
log :: #import "modules/std/log.sx";
test :: #import "modules/std/test.sx";
time :: #import "modules/std/time.sx";
event :: #import "modules/std/event.sx";

View File

@@ -0,0 +1,120 @@
// std.event — the OS-neutral readiness Loop (PLAN-HTTPZ S5).
//
// One Loop multiplexes any number of fds without ever blocking on a
// single one: register interest with an opaque `udata` word, then
// `wait` yields normalized Events for whatever became ready. Idle
// registrations cost nothing — the substrate an httpz-shaped server
// worker stands on.
//
// Backend: kqueue (std/net/kqueue) on darwin. The epoll twin
// (std/net/epoll, PLAN-HTTPZ S4) slots in behind this same surface
// when the linux target lands; callers never see the backend.
//
// Interest is per direction: read and write are registered and removed
// independently (mirroring kqueue filters; the epoll backend will
// compose its event mask internally). The typical server pattern:
// read interest for a connection's whole life, write interest only
// while a partial response is pending.
//
// Deadlines: the loop deliberately has no timer registrations —
// httpz-style timeout bookkeeping (request/keepalive eviction) is
// deadline math the caller does with `deadline_in`/`expired` between
// waits, passing the nearest deadline as `wait`'s timeout.
#import "modules/std.sx";
kqb :: #import "modules/std/net/kqueue.sx";
timp :: #import "modules/std/time.sx";
EventErr :: error {
Init, // the kernel queue could not be created
Register, // an interest change was refused
Wait, // the wait itself failed (not a timeout)
}
// A normalized readiness report for one registered fd.
// readable/writable — which direction is ready;
// eof — the peer finished writing (drain pending bytes, then close);
// err — the registration itself failed asynchronously;
// nbytes — bytes readable / writable-buffer space (backend estimate);
// udata — the word given at registration, verbatim.
Event :: struct {
fd: i32 = -1;
udata: usize = 0;
readable: bool = false;
writable: bool = false;
eof: bool = false;
err: bool = false;
nbytes: i64 = 0;
}
Loop :: struct {
kq: i32 = -1;
init :: () -> (Loop, !EventErr) {
q := kqb.kqueue();
if q < 0 { raise error.Init; }
return Loop.{ kq = q };
}
close :: (self: *Loop) {
if self.kq >= 0 { socket.close(self.kq); }
self.kq = -1;
}
add_read :: (self: *Loop, fd: i32, udata: usize) -> !EventErr {
if !kqb.kq_apply(self.kq, kqb.kev_change(fd, kqb.EVFILT_READ, kqb.EV_ADD, udata)) { raise error.Register; }
return;
}
del_read :: (self: *Loop, fd: i32) {
kqb.kq_apply(self.kq, kqb.kev_change(fd, kqb.EVFILT_READ, kqb.EV_DELETE, 0));
}
add_write :: (self: *Loop, fd: i32, udata: usize) -> !EventErr {
if !kqb.kq_apply(self.kq, kqb.kev_change(fd, kqb.EVFILT_WRITE, kqb.EV_ADD, udata)) { raise error.Register; }
return;
}
del_write :: (self: *Loop, fd: i32) {
kqb.kq_apply(self.kq, kqb.kev_change(fd, kqb.EVFILT_WRITE, kqb.EV_DELETE, 0));
}
// Fill `out` with ready events, waiting at most `timeout_ms`
// (negative = forever). Returns the count; 0 is a timeout.
wait :: (self: *Loop, out: []Event, timeout_ms: i64) -> (i64, !EventErr) {
raw : [64]kqb.Kevent = ---;
cap : i64 = 64;
if xx out.len < cap { cap = xx out.len; }
n := kqb.kq_wait(self.kq, @raw[0], xx cap, timeout_ms);
if n < 0 { raise error.Wait; }
i := 0;
while i < n {
ev := raw[i];
e : Event = .{ fd = xx ev.ident, udata = ev.udata, nbytes = ev.data };
if ev.filter == kqb.EVFILT_READ { e.readable = true; }
if ev.filter == kqb.EVFILT_WRITE { e.writable = true; }
if (ev.flags & kqb.EV_EOF) != 0 { e.eof = true; }
if (ev.flags & kqb.EV_ERROR) != 0 { e.err = true; }
out[i] = e;
i += 1;
}
return xx n;
}
}
// ── deadline helpers (monotonic, std.time) ───────────────────────────
// The absolute monotonic instant `ms` from now.
deadline_in :: (ms: i64) -> i64 {
return timp.mono_ms() + ms;
}
// True once `deadline` has passed.
expired :: (deadline: i64) -> bool {
return timp.mono_ms() >= deadline;
}
// Milliseconds until `deadline`, floored at 0 — the value to hand
// `wait` so the loop wakes exactly when the nearest deadline fires.
remaining_ms :: (deadline: i64) -> i64 {
left := deadline - timp.mono_ms();
if left < 0 { return 0; }
return left;
}