Compare commits
24 Commits
8dedacb23f
...
39488133c9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
39488133c9 | ||
|
|
e57a27205e | ||
|
|
7f23bb7530 | ||
|
|
4fa12853ed | ||
|
|
fe4f059a52 | ||
|
|
d7808f69a3 | ||
|
|
ff94b004c4 | ||
|
|
81fa50c77d | ||
|
|
f3aa2716ae | ||
|
|
0db4262833 | ||
|
|
8641441fad | ||
|
|
3a97019aa7 | ||
|
|
721793b4bf | ||
|
|
92e220ee24 | ||
|
|
1017657c90 | ||
|
|
659c43c8d6 | ||
|
|
da2f76b383 | ||
|
|
f6b0029249 | ||
|
|
9fb7290861 | ||
|
|
6114b51073 | ||
|
|
4b9324e585 | ||
|
|
b06776d6e9 | ||
|
|
58af806b7a | ||
|
|
2097772ec9 |
@@ -319,3 +319,54 @@ extern "C" LLVMMemoryBufferRef sx_clang_compile_to_object(
|
||||
llvm::StringRef(obj_buf.data(), obj_buf.size()), "c_import.o");
|
||||
return llvm::wrap(buf.release());
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/* Exported-symbol scan over a compiled object buffer */
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
||||
#include <llvm/Object/ObjectFile.h>
|
||||
|
||||
extern "C" SxCSymbolList *sx_clang_object_exported_symbols(
|
||||
LLVMMemoryBufferRef obj,
|
||||
char **out_error)
|
||||
{
|
||||
using namespace llvm;
|
||||
MemoryBufferRef ref(
|
||||
StringRef(LLVMGetBufferStart(obj), LLVMGetBufferSize(obj)),
|
||||
"sx-c-import-object");
|
||||
auto objOrErr = object::ObjectFile::createObjectFile(ref);
|
||||
if (!objOrErr) {
|
||||
if (out_error)
|
||||
*out_error = strdup(toString(objOrErr.takeError()).c_str());
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::vector<std::string> names;
|
||||
for (const object::SymbolRef &sym : (*objOrErr)->symbols()) {
|
||||
auto flagsOrErr = sym.getFlags();
|
||||
if (!flagsOrErr) { consumeError(flagsOrErr.takeError()); continue; }
|
||||
uint32_t flags = *flagsOrErr;
|
||||
if (flags & object::SymbolRef::SF_Undefined) continue;
|
||||
if (!(flags & object::SymbolRef::SF_Global)) continue;
|
||||
if (flags & object::SymbolRef::SF_FormatSpecific) continue;
|
||||
auto nameOrErr = sym.getName();
|
||||
if (!nameOrErr) { consumeError(nameOrErr.takeError()); continue; }
|
||||
names.push_back(nameOrErr->str());
|
||||
}
|
||||
|
||||
SxCSymbolList *list = (SxCSymbolList *)malloc(sizeof(SxCSymbolList));
|
||||
list->num_names = (int)names.size();
|
||||
list->names = (const char **)malloc(sizeof(char *) * (names.empty() ? 1 : names.size()));
|
||||
for (size_t i = 0; i < names.size(); i++)
|
||||
list->names[i] = strdup(names[i].c_str());
|
||||
return list;
|
||||
}
|
||||
|
||||
extern "C" void sx_clang_free_symbol_list(SxCSymbolList *list)
|
||||
{
|
||||
if (!list) return;
|
||||
for (int i = 0; i < list->num_names; i++)
|
||||
free((void *)list->names[i]);
|
||||
free(list->names);
|
||||
free(list);
|
||||
}
|
||||
|
||||
13
clang_shim.h
13
clang_shim.h
@@ -50,6 +50,19 @@ LLVMMemoryBufferRef sx_clang_compile_to_object(
|
||||
const char **args, int num_args,
|
||||
char **out_error);
|
||||
|
||||
/* --- Exported (defined, global) symbols of an object buffer --- */
|
||||
|
||||
typedef struct {
|
||||
const char **names;
|
||||
int num_names;
|
||||
} SxCSymbolList;
|
||||
|
||||
SxCSymbolList *sx_clang_object_exported_symbols(
|
||||
LLVMMemoryBufferRef obj,
|
||||
char **out_error);
|
||||
|
||||
void sx_clang_free_symbol_list(SxCSymbolList *list);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#import "modules/std.sx";
|
||||
stb :: #import "modules/ffi/stb.sx";
|
||||
stb :: #import "vendors/stb_image/stb_image.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
w: i32 = 0;
|
||||
|
||||
37
examples/1624-vendor-sqlite-module.sx
Normal file
37
examples/1624-vendor-sqlite-module.sx
Normal file
@@ -0,0 +1,37 @@
|
||||
// The sx library ships SQLite: `#import "vendors/sqlite/sqlite.sx"`
|
||||
// resolves through the stdlib search paths, compiles the vendored
|
||||
// amalgamation as a `#import c` unit (cached), and the bindings just
|
||||
// work — no system dependency, no flags. Pins the vendored version
|
||||
// (an OS libsqlite3 of another version must never shadow the unit)
|
||||
// and a typed round trip.
|
||||
#import "modules/std.sx";
|
||||
sq :: #import "vendors/sqlite/sqlite.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
v := sq.sqlite_version();
|
||||
if v != "3.53.2" {
|
||||
print("unexpected sqlite version: {}\n", v);
|
||||
return 1;
|
||||
}
|
||||
|
||||
db, oe := sq.Sqlite.open(":memory:");
|
||||
if oe { print("open failed\n"); return 1; }
|
||||
ee := false;
|
||||
db.exec("CREATE TABLE t (name TEXT, n INTEGER); INSERT INTO t VALUES ('a', 1), ('b', 2)") catch { ee = true; };
|
||||
if ee { print("exec failed: {}\n", db.errmsg()); db.close(); return 1; }
|
||||
|
||||
st, pe := db.prepare("SELECT name, n FROM t WHERE n > ?1 ORDER BY n");
|
||||
if pe { print("prepare failed\n"); db.close(); return 1; }
|
||||
st.bind_int64(1, 1) catch { ee = true; };
|
||||
rc, se := st.step();
|
||||
serr := false;
|
||||
if se { serr = true; }
|
||||
if serr or ee { print("step failed\n"); st.finalize(); db.close(); return 1; }
|
||||
if rc == sq.SQLITE_ROW {
|
||||
print("row: {} {}\n", st.column_text(0), st.column_int64(1));
|
||||
}
|
||||
st.finalize();
|
||||
db.close();
|
||||
print("vendored sqlite {} ok\n", v);
|
||||
0
|
||||
}
|
||||
35
examples/1625-vendor-stb-image-decode.sx
Normal file
35
examples/1625-vendor-stb-image-decode.sx
Normal file
@@ -0,0 +1,35 @@
|
||||
// The sx library ships stb_image: `#import "vendors/stb_image/
|
||||
// stb_image.sx"` resolves through the stdlib search paths and the
|
||||
// implementation compiles through the object cache. Decodes a 2x2
|
||||
// 24-bit BMP built in memory — fully deterministic: dimensions,
|
||||
// channel count, and the top-left pixel (blue) are pinned.
|
||||
#import "modules/std.sx";
|
||||
stb :: #import "vendors/stb_image/stb_image.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
// BITMAPFILEHEADER (14) + BITMAPINFOHEADER (40) + 2 rows of
|
||||
// 2 BGR pixels padded to 4-byte rows (8 each) = 70 bytes.
|
||||
// Bottom row: red, green; top row: blue, white (BMP is bottom-up).
|
||||
bmp : [70]u8 = .{
|
||||
66, 77, 70, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
|
||||
40, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 24, 0,
|
||||
0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 255, 0, 255, 0, 0, 0,
|
||||
255, 0, 0, 255, 255, 255, 0, 0,
|
||||
};
|
||||
|
||||
w : i32 = 0;
|
||||
h : i32 = 0;
|
||||
ch : i32 = 0;
|
||||
img := stb.stbi_load_from_memory(@bmp[0], 70, @w, @h, @ch, 3);
|
||||
if xx img == 0 {
|
||||
print("decode failed\n");
|
||||
return 1;
|
||||
}
|
||||
p : [*]u8 = xx img;
|
||||
print("decoded {}x{} ({} channels)\n", w, h, ch);
|
||||
print("top-left pixel: {} {} {}\n", p[0], p[1], p[2]);
|
||||
stb.stbi_image_free(xx img);
|
||||
0
|
||||
}
|
||||
36
examples/1626-vendor-stb-truetype-metrics.sx
Normal file
36
examples/1626-vendor-stb-truetype-metrics.sx
Normal file
@@ -0,0 +1,36 @@
|
||||
// The sx library ships stb_truetype: `#import "vendors/stb_truetype/
|
||||
// stb_truetype.sx"` resolves through the stdlib search paths and the
|
||||
// implementation compiles through the object cache. Loads the system
|
||||
// Helvetica collection and pins INVARIANTS only (font versions vary
|
||||
// across macOS releases): init succeeds, the pixel-height scale is
|
||||
// positive, the ascender is positive and the descender negative.
|
||||
#import "modules/std.sx";
|
||||
fs :: #import "modules/std/fs.sx";
|
||||
tt :: #import "vendors/stb_truetype/stb_truetype.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
data := fs.read_file("/System/Library/Fonts/Helvetica.ttc");
|
||||
if data == null {
|
||||
print("font missing\n");
|
||||
return 1;
|
||||
}
|
||||
bytes := data!;
|
||||
|
||||
off := tt.stbtt_GetFontOffsetForIndex(bytes.ptr, 0);
|
||||
print("font offset >= 0: {}\n", off >= 0);
|
||||
|
||||
info : *void = xx context.allocator.alloc_bytes(256);
|
||||
ok := tt.stbtt_InitFont(info, bytes.ptr, off);
|
||||
print("init ok: {}\n", ok != 0);
|
||||
|
||||
px : f32 = 32.0;
|
||||
scale := tt.stbtt_ScaleForPixelHeight(info, px);
|
||||
print("scale > 0: {}\n", scale > 0.0);
|
||||
|
||||
ascent : i32 = 0;
|
||||
descent : i32 = 0;
|
||||
linegap : i32 = 0;
|
||||
tt.stbtt_GetFontVMetrics(info, @ascent, @descent, @linegap);
|
||||
print("ascent > 0, descent < 0: {} {}\n", ascent > 0, descent < 0);
|
||||
0
|
||||
}
|
||||
28
examples/1627-vendor-kbts-shape-context.sx
Normal file
28
examples/1627-vendor-kbts-shape-context.sx
Normal file
@@ -0,0 +1,28 @@
|
||||
// The sx library ships kb_text_shape: `#import "vendors/kb_text_shape/
|
||||
// kb_text_shape.sx"` resolves through the stdlib search paths and the
|
||||
// ~30k-line implementation compiles through the object cache (decls
|
||||
// come from the curated c/kbts_api.h). Pins INVARIANTS only: a shape
|
||||
// context constructs, the system Helvetica loads as a shaping font,
|
||||
// and teardown is clean.
|
||||
#import "modules/std.sx";
|
||||
fs :: #import "modules/std/fs.sx";
|
||||
kb :: #import "vendors/kb_text_shape/kb_text_shape.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
data := fs.read_file("/System/Library/Fonts/Helvetica.ttc");
|
||||
if data == null {
|
||||
print("font missing\n");
|
||||
return 1;
|
||||
}
|
||||
bytes := data!;
|
||||
|
||||
ctx := kb.kbts_CreateShapeContext(xx 0, xx 0);
|
||||
print("context created: {}\n", xx ctx != 0);
|
||||
|
||||
font := kb.kbts_ShapePushFontFromMemory(ctx, xx bytes.ptr, xx bytes.len, 0);
|
||||
print("font pushed: {}\n", xx font != 0);
|
||||
|
||||
kb.kbts_DestroyShapeContext(ctx);
|
||||
print("context destroyed\n");
|
||||
0
|
||||
}
|
||||
20
examples/1628-cimport-duplicate-export.sx
Normal file
20
examples/1628-cimport-duplicate-export.sx
Normal file
@@ -0,0 +1,20 @@
|
||||
// Two `#import c` units defining the same exported symbol is a
|
||||
// compile-time diagnostic naming both sources — previously it died
|
||||
// inside the JIT dylib link (or the AOT link) with raw linker spew.
|
||||
// All units share one link namespace; per-unit symbol isolation is
|
||||
// PLAN-C C3.2 (deferred).
|
||||
#import "modules/std.sx";
|
||||
|
||||
ua :: #import c {
|
||||
#source "1628-cimport-duplicate-export/a.c";
|
||||
};
|
||||
ub :: #import c {
|
||||
#source "1628-cimport-duplicate-export/b.c";
|
||||
};
|
||||
|
||||
clash :: () -> i32 #foreign ua "clash";
|
||||
|
||||
main :: () -> i32 {
|
||||
print("{}\n", clash());
|
||||
0
|
||||
}
|
||||
1
examples/1628-cimport-duplicate-export/a.c
Normal file
1
examples/1628-cimport-duplicate-export/a.c
Normal file
@@ -0,0 +1 @@
|
||||
int clash(void) { return 1; }
|
||||
1
examples/1628-cimport-duplicate-export/b.c
Normal file
1
examples/1628-cimport-duplicate-export/b.c
Normal file
@@ -0,0 +1 @@
|
||||
int clash(void) { return 2; }
|
||||
35
examples/1629-std-time.sx
Normal file
35
examples/1629-std-time.sx
Normal file
@@ -0,0 +1,35 @@
|
||||
// std.time (PLAN-HTTPZ S1): the wall clock reads a plausible epoch and
|
||||
// the monotonic clock advances and never runs backwards. The `time`
|
||||
// alias rides the std.sx namespace tail like its siblings.
|
||||
#import "modules/std.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
now := time.now_secs();
|
||||
if now < 1767225600 { // before 2026-01-01: implausible
|
||||
print("wall clock implausibly old: {}\n", now);
|
||||
return 1;
|
||||
}
|
||||
if now > 4102444800 { // after 2100-01-01: implausible
|
||||
print("wall clock implausibly far: {}\n", now);
|
||||
return 1;
|
||||
}
|
||||
|
||||
a := time.mono_ms();
|
||||
b := a;
|
||||
spins := 0;
|
||||
while b == a and spins < 100000000 { // a real ms tick arrives long before the bound
|
||||
b = time.mono_ms();
|
||||
spins += 1;
|
||||
}
|
||||
if b < a {
|
||||
print("monotonic went backwards: {} -> {}\n", a, b);
|
||||
return 1;
|
||||
}
|
||||
if b == a {
|
||||
print("monotonic never advanced\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
print("std.time ok\n");
|
||||
return 0;
|
||||
}
|
||||
94
examples/1630-socket-nonblocking.sx
Normal file
94
examples/1630-socket-nonblocking.sx
Normal file
@@ -0,0 +1,94 @@
|
||||
// std.socket nonblocking surface (PLAN-HTTPZ S2): set_nonblocking via
|
||||
// the C-variadic fcntl, and the typed _nb wrappers' full result
|
||||
// algebra — bytes, WouldBlock, Closed — on a unix socketpair, plus
|
||||
// accept_nb on a nonblocking TCP listener (WouldBlock with an empty
|
||||
// backlog, a connection after a loopback connect).
|
||||
#import "modules/std.sx";
|
||||
|
||||
PORT :: 18931;
|
||||
|
||||
main :: () -> i32 {
|
||||
// ── socketpair: read/write algebra ────────────────────────────────
|
||||
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];
|
||||
if !socket.set_nonblocking(a) or !socket.set_nonblocking(b) {
|
||||
print("set_nonblocking failed\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
buf : [16]u8 = ---;
|
||||
n, e := socket.read_nb(a, @buf[0], 16);
|
||||
if e != error.WouldBlock {
|
||||
print("empty pair read: expected WouldBlock\n");
|
||||
return 1;
|
||||
}
|
||||
print("empty read: WouldBlock\n");
|
||||
|
||||
msg := "ping";
|
||||
wn, we := socket.write_nb(b, msg.ptr, 4);
|
||||
if we { print("write_nb failed\n"); return 1; }
|
||||
if wn != 4 { print("short write: {}\n", wn); return 1; }
|
||||
rn, re := socket.read_nb(a, @buf[0], 16);
|
||||
if re { print("read_nb after write failed\n"); return 1; }
|
||||
if rn != 4 { print("short read: {}\n", rn); return 1; }
|
||||
print("pair round trip: {} bytes\n", rn);
|
||||
|
||||
socket.close(b);
|
||||
cn, ce := socket.read_nb(a, @buf[0], 16);
|
||||
if ce != error.Closed {
|
||||
print("read after peer close: expected Closed\n");
|
||||
return 1;
|
||||
}
|
||||
print("peer close: Closed\n");
|
||||
socket.close(a);
|
||||
|
||||
// ── nonblocking listener: accept_nb ───────────────────────────────
|
||||
lfd := socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0);
|
||||
if lfd < 0 { print("listener socket failed\n"); return 1; }
|
||||
one : i32 = 1;
|
||||
socket.setsockopt(lfd, socket.SOL_SOCKET, socket.SO_REUSEADDR, @one, 4);
|
||||
addr : socket.SockAddr = .{
|
||||
sin_len = 16, sin_family = xx socket.AF_INET,
|
||||
sin_port = socket.htons(PORT), sin_addr = 0x0100007F, // 127.0.0.1
|
||||
};
|
||||
if socket.bind(lfd, @addr, 16) != 0 { print("bind failed\n"); return 1; }
|
||||
if socket.listen(lfd, 4) != 0 { print("listen failed\n"); return 1; }
|
||||
if !socket.set_nonblocking(lfd) { print("listener set_nonblocking failed\n"); return 1; }
|
||||
|
||||
afd, ae := socket.accept_nb(lfd);
|
||||
if ae != error.WouldBlock {
|
||||
print("empty backlog: expected WouldBlock\n");
|
||||
return 1;
|
||||
}
|
||||
print("empty backlog: WouldBlock\n");
|
||||
|
||||
// A blocking loopback connect completes the handshake against the
|
||||
// listen queue without an accept having run yet.
|
||||
cfd := socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0);
|
||||
if cfd < 0 { print("client socket failed\n"); return 1; }
|
||||
if socket.connect(cfd, @addr, 16) != 0 {
|
||||
print("connect failed: errno {}\n", socket.errno());
|
||||
return 1;
|
||||
}
|
||||
got := -1;
|
||||
tries := 0;
|
||||
while got < 0 and tries < 1000 {
|
||||
c2, ae2 := socket.accept_nb(lfd);
|
||||
if !ae2 { got = xx c2; }
|
||||
else if ae2 != error.WouldBlock { print("accept_nb fault\n"); return 1; }
|
||||
tries += 1;
|
||||
}
|
||||
if got < 0 { print("accept never produced the connection\n"); return 1; }
|
||||
print("accept after connect: ok\n");
|
||||
|
||||
socket.close(xx got);
|
||||
socket.close(cfd);
|
||||
socket.close(lfd);
|
||||
print("socket nonblocking ok\n");
|
||||
return 0;
|
||||
}
|
||||
55
examples/1631-net-kqueue.sx
Normal file
55
examples/1631-net-kqueue.sx
Normal file
@@ -0,0 +1,55 @@
|
||||
// std/net/kqueue (PLAN-HTTPZ S3): readiness without blocking — an idle
|
||||
// registration times out at zero cost, a write makes the peer readable
|
||||
// (with the pending byte count in `data` and the registration's udata
|
||||
// handed back), and a peer close reports EV_EOF.
|
||||
#import "modules/std.sx";
|
||||
kq :: #import "modules/std/net/kqueue.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];
|
||||
|
||||
q := kq.kqueue();
|
||||
if q < 0 { print("kqueue failed\n"); return 1; }
|
||||
if !kq.kq_apply(q, kq.kev_change(a, kq.EVFILT_READ, kq.EV_ADD, 7777)) {
|
||||
print("EV_ADD failed\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
evs : [4]kq.Kevent = ---;
|
||||
|
||||
// Nothing pending: a bounded wait returns 0 events.
|
||||
n := kq.kq_wait(q, @evs[0], 4, 50);
|
||||
if n != 0 { print("idle wait: expected 0 events, got {}\n", n); return 1; }
|
||||
print("idle wait: timeout, 0 events\n");
|
||||
|
||||
// Bytes pending: READ readiness with the byte count and our udata.
|
||||
msg := "ping";
|
||||
socket.write(b, msg.ptr, 4);
|
||||
n = kq.kq_wait(q, @evs[0], 4, 1000);
|
||||
if n != 1 { print("after write: expected 1 event, got {}\n", n); return 1; }
|
||||
if evs[0].ident != xx a { print("event names the wrong fd\n"); return 1; }
|
||||
if evs[0].filter != kq.EVFILT_READ { print("event names the wrong filter\n"); return 1; }
|
||||
if evs[0].udata != 7777 { print("udata did not round-trip\n"); return 1; }
|
||||
if evs[0].data != 4 { print("pending byte count: expected 4, got {}\n", evs[0].data); return 1; }
|
||||
print("after write: READ ready, 4 pending, udata 7777\n");
|
||||
|
||||
// Drain, then close the peer: readiness again, now flagged EV_EOF.
|
||||
buf : [16]u8 = ---;
|
||||
socket.read(a, @buf[0], 16);
|
||||
socket.close(b);
|
||||
n = kq.kq_wait(q, @evs[0], 4, 1000);
|
||||
if n != 1 { print("after close: expected 1 event, got {}\n", n); return 1; }
|
||||
if (evs[0].flags & kq.EV_EOF) == 0 { print("after close: EV_EOF not set\n"); return 1; }
|
||||
print("after close: EV_EOF\n");
|
||||
|
||||
socket.close(a);
|
||||
socket.close(q);
|
||||
print("kqueue ok\n");
|
||||
return 0;
|
||||
}
|
||||
71
examples/1632-event-loop.sx
Normal file
71
examples/1632-event-loop.sx
Normal 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;
|
||||
}
|
||||
249
examples/1633-http-server.sx
Normal file
249
examples/1633-http-server.sx
Normal file
@@ -0,0 +1,249 @@
|
||||
// std.http S7a (PLAN-HTTPZ): a live single-worker server and its
|
||||
// clients driven in ONE thread via Server.tick — keep-alive reuse,
|
||||
// POST body echo, the per-connection request cap closing politely,
|
||||
// 404 routing, and half-a-header eviction at the request deadline
|
||||
// while the server keeps serving others.
|
||||
#import "modules/std.sx";
|
||||
|
||||
PORT :: 18933;
|
||||
|
||||
handler :: (req: *http.Request, resp: *http.Response, ctx: usize) {
|
||||
if req.path == "/hello" {
|
||||
resp.body = concat("hello ", req.method);
|
||||
// the ctx word arrives verbatim (init passed 77)
|
||||
if ctx != 77 { resp.status = 500; resp.body = "ctx lost"; }
|
||||
return;
|
||||
}
|
||||
if req.path == "/echo" {
|
||||
resp.body = req.body;
|
||||
return;
|
||||
}
|
||||
resp.status = 404;
|
||||
resp.body = "nope";
|
||||
}
|
||||
|
||||
contains :: (hay: string, needle: string) -> bool {
|
||||
if needle.len > hay.len { return false; }
|
||||
i := 0;
|
||||
while i + needle.len <= hay.len {
|
||||
j := 0;
|
||||
ok := true;
|
||||
while j < needle.len {
|
||||
if hay[i + j] != needle[j] { ok = false; break; }
|
||||
j += 1;
|
||||
}
|
||||
if ok { return true; }
|
||||
i += 1;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Connect a nonblocking loopback client.
|
||||
dial_port :: (port: i64) -> i32 {
|
||||
fd := socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0);
|
||||
if fd < 0 { return -1; }
|
||||
addr : socket.SockAddr = .{
|
||||
sin_len = 16, sin_family = xx socket.AF_INET,
|
||||
sin_port = socket.htons(port), sin_addr = 0x0100007F,
|
||||
};
|
||||
if socket.connect(fd, @addr, 16) != 0 { socket.close(fd); return -1; }
|
||||
if !socket.set_nonblocking(fd) { socket.close(fd); return -1; }
|
||||
return fd;
|
||||
}
|
||||
|
||||
dial :: () -> i32 {
|
||||
return dial_port(PORT);
|
||||
}
|
||||
|
||||
// True when `buf[0..len]` holds a complete response (headers + body).
|
||||
resp_complete :: (buf: [*]u8, len: i64) -> bool {
|
||||
s := string.{ ptr = buf, len = xx len };
|
||||
he := -1;
|
||||
i := 0;
|
||||
while i + 3 < s.len {
|
||||
if s[i] == 13 and s[i+1] == 10 and s[i+2] == 13 and s[i+3] == 10 { he = i; break; }
|
||||
i += 1;
|
||||
}
|
||||
if he < 0 { return false; }
|
||||
// Content-Length digits
|
||||
cl : i64 = 0;
|
||||
seen := false;
|
||||
j := 0;
|
||||
needle := "Content-Length: ";
|
||||
while j + needle.len < s.len {
|
||||
k := 0;
|
||||
ok := true;
|
||||
while k < needle.len { if s[j + k] != needle[k] { ok = false; break; } k += 1; }
|
||||
if ok {
|
||||
d := j + needle.len;
|
||||
while d < s.len and s[d] >= 48 and s[d] <= 57 { cl = cl * 10 + (s[d] - 48); d += 1; }
|
||||
seen = true;
|
||||
break;
|
||||
}
|
||||
j += 1;
|
||||
}
|
||||
if !seen { return false; }
|
||||
return len >= he + 4 + cl;
|
||||
}
|
||||
|
||||
// Send a request and tick the server until its full response arrives.
|
||||
// Returns the response text ("" = the connection closed instead).
|
||||
roundtrip :: (srv: *http.Server, fd: i32, reqtext: string, scratch: [*]u8) -> string {
|
||||
socket.write(fd, reqtext.ptr, xx reqtext.len);
|
||||
total : i64 = 0;
|
||||
tries := 0;
|
||||
while tries < 400 {
|
||||
srv.tick(5) catch {};
|
||||
n, re := socket.read_nb(fd, @scratch[total], xx (4096 - total));
|
||||
if !re { total += n; }
|
||||
else if re == error.Closed { return string.{ ptr = scratch, len = xx total }; }
|
||||
if resp_complete(scratch, total) { return string.{ ptr = scratch, len = xx total }; }
|
||||
tries += 1;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
main :: () -> i32 {
|
||||
cfg : http.Config = .{
|
||||
port = PORT,
|
||||
timeout_request_ms = 150,
|
||||
timeout_keepalive_ms = 400,
|
||||
request_count = 3,
|
||||
max_conn = 8,
|
||||
};
|
||||
srv, se := http.Server.init(cfg, handler, 77);
|
||||
if se { print("server init failed\n"); return 1; }
|
||||
|
||||
buf : [4096]u8 = ---;
|
||||
|
||||
// ── 1. GET, keep-alive default ────────────────────────────────────
|
||||
c1 := dial();
|
||||
if c1 < 0 { print("dial failed\n"); return 1; }
|
||||
r1 := roundtrip(@srv, c1, "GET /hello HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r1, "HTTP/1.1 200 OK") { print("case1: bad status\n"); return 1; }
|
||||
if !contains(r1, "hello GET") { print("case1: bad body\n"); return 1; }
|
||||
if !contains(r1, "Connection: keep-alive") { print("case1: expected keep-alive\n"); return 1; }
|
||||
print("GET 200, keep-alive\n");
|
||||
|
||||
// ── 2. same socket again: the connection was actually reused ─────
|
||||
r2 := roundtrip(@srv, c1, "GET /hello HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r2, "hello GET") { print("case2: keep-alive reuse failed\n"); return 1; }
|
||||
print("keep-alive reuse ok\n");
|
||||
|
||||
// ── 3. third request hits request_count: Connection: close + EOF ─
|
||||
r3 := roundtrip(@srv, c1, "GET /hello HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r3, "Connection: close") { print("case3: expected close at cap\n"); return 1; }
|
||||
drained := false;
|
||||
tries := 0;
|
||||
while !drained and tries < 200 {
|
||||
srv.tick(5) catch {};
|
||||
zq, ze := socket.read_nb(c1, @buf[0], 64);
|
||||
if ze == error.Closed { drained = true; }
|
||||
if !ze and zq == 0 { drained = true; }
|
||||
tries += 1;
|
||||
}
|
||||
if !drained { print("case3: server did not close at the cap\n"); return 1; }
|
||||
socket.close(c1);
|
||||
print("request cap: close + EOF\n");
|
||||
|
||||
// ── 4. POST body echo ─────────────────────────────────────────────
|
||||
c2 := dial();
|
||||
if c2 < 0 { print("dial2 failed\n"); return 1; }
|
||||
r4 := roundtrip(@srv, c2, "POST /echo HTTP/1.1\r\nHost: t\r\nContent-Length: 9\r\n\r\nping-pong", @buf[0]);
|
||||
if !contains(r4, "ping-pong") { print("case4: body not echoed\n"); return 1; }
|
||||
print("POST echo ok\n");
|
||||
|
||||
// ── 5. unknown path routes 404 ────────────────────────────────────
|
||||
r5 := roundtrip(@srv, c2, "GET /missing HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r5, "HTTP/1.1 404 Not Found") { print("case5: expected 404\n"); return 1; }
|
||||
socket.close(c2);
|
||||
print("404 routing ok\n");
|
||||
|
||||
// ── 5b. a body past READ_BUF_INITIAL forces the buffer to grow ────
|
||||
big_n := 50000;
|
||||
payload : [*]u8 = xx context.allocator.alloc_bytes(xx big_n);
|
||||
f := 0;
|
||||
while f < big_n { payload[f] = 97 + cast(u8)(f % 26); f += 1; }
|
||||
breq := concat("POST /echo HTTP/1.1\r\nHost: t\r\nContent-Length: ", concat(int_to_string(big_n), "\r\n\r\n"));
|
||||
breq = concat(breq, string.{ ptr = payload, len = xx big_n });
|
||||
c2b := dial();
|
||||
if c2b < 0 { print("dial2b failed\n"); return 1; }
|
||||
bigbuf : [*]u8 = xx context.allocator.alloc_bytes(xx (big_n + 4096));
|
||||
socket.write(c2b, breq.ptr, xx breq.len);
|
||||
btotal : i64 = 0;
|
||||
btries := 0;
|
||||
while btries < 2000 {
|
||||
srv.tick(5) catch {};
|
||||
bn, bre := socket.read_nb(c2b, @bigbuf[btotal], xx (big_n + 4096 - btotal));
|
||||
if !bre { btotal += bn; }
|
||||
else if bre == error.Closed { break; }
|
||||
if resp_complete(bigbuf, btotal) { break; }
|
||||
btries += 1;
|
||||
}
|
||||
bresp := string.{ ptr = bigbuf, len = xx btotal };
|
||||
if !contains(bresp, "HTTP/1.1 200 OK") { print("case5b: big echo not 200\n"); return 1; }
|
||||
if !contains(bresp, concat("Content-Length: ", int_to_string(big_n))) { print("case5b: wrong echo length\n"); return 1; }
|
||||
if bigbuf[btotal - 1] != 97 + cast(u8)((big_n - 1) % 26) { print("case5b: tail byte wrong\n"); return 1; }
|
||||
socket.close(c2b);
|
||||
print("big body grows the buffer and echoes intact\n");
|
||||
|
||||
// ── 6. half a header is evicted at the request deadline, while a
|
||||
// healthy client keeps being served ──────────────────────────
|
||||
c3 := dial();
|
||||
if c3 < 0 { print("dial3 failed\n"); return 1; }
|
||||
half := "GET /hel";
|
||||
socket.write(c3, half.ptr, xx half.len);
|
||||
gone := event.deadline_in(300); // > timeout_request_ms
|
||||
while !event.expired(gone) { srv.tick(5) catch {}; }
|
||||
c4 := dial();
|
||||
if c4 < 0 { print("dial4 failed\n"); return 1; }
|
||||
r6 := roundtrip(@srv, c4, "GET /hello HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r6, "hello GET") { print("case6: healthy client starved\n"); return 1; }
|
||||
evicted := false;
|
||||
tries = 0;
|
||||
while !evicted and tries < 200 {
|
||||
srv.tick(5) catch {};
|
||||
zq2, ze2 := socket.read_nb(c3, @buf[0], 64);
|
||||
if ze2 == error.Closed { evicted = true; }
|
||||
if !ze2 and zq2 == 0 { evicted = true; }
|
||||
tries += 1;
|
||||
}
|
||||
if !evicted { print("case6: half-header connection never evicted\n"); return 1; }
|
||||
socket.close(c3);
|
||||
socket.close(c4);
|
||||
print("slow client evicted, healthy client served\n");
|
||||
|
||||
srv.close();
|
||||
|
||||
// ── pooled dispatch (S7b): same contract through worker threads ──
|
||||
// thread_pool_count > 0 runs handlers on a pool; completions come
|
||||
// back through the loop's wake channel. Same assertions: routing,
|
||||
// body echo, keep-alive reuse — now crossing threads per request.
|
||||
pcfg : http.Config = .{
|
||||
port = PORT + 1,
|
||||
timeout_request_ms = 1000,
|
||||
timeout_keepalive_ms = 1000,
|
||||
request_count = 50,
|
||||
max_conn = 8,
|
||||
thread_pool_count = 2,
|
||||
thread_pool_backlog = 16,
|
||||
};
|
||||
psrv, pse := http.Server.init(pcfg, handler, 77);
|
||||
if pse { print("pooled server init failed\n"); return 1; }
|
||||
|
||||
c5 := dial_port(PORT + 1);
|
||||
if c5 < 0 { print("dial5 failed\n"); return 1; }
|
||||
r7 := roundtrip(@psrv, c5, "GET /hello HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r7, "HTTP/1.1 200 OK") { print("pooled: bad status\n"); return 1; }
|
||||
if !contains(r7, "hello GET") { print("pooled: bad body\n"); return 1; }
|
||||
r8 := roundtrip(@psrv, c5, "POST /echo HTTP/1.1\r\nHost: t\r\nContent-Length: 9\r\n\r\nping-pong", @buf[0]);
|
||||
if !contains(r8, "ping-pong") { print("pooled: echo failed\n"); return 1; }
|
||||
r9 := roundtrip(@psrv, c5, "GET /missing HTTP/1.1\r\nHost: t\r\n\r\n", @buf[0]);
|
||||
if !contains(r9, "HTTP/1.1 404 Not Found") { print("pooled: expected 404\n"); return 1; }
|
||||
socket.close(c5);
|
||||
psrv.close();
|
||||
print("pooled dispatch: GET, echo, 404 across worker threads ok\n");
|
||||
|
||||
print("http server ok\n");
|
||||
return 0;
|
||||
}
|
||||
12
examples/1634-protocol-call-arity.sx
Normal file
12
examples/1634-protocol-call-arity.sx
Normal file
@@ -0,0 +1,12 @@
|
||||
// issue 0131 regression: a protocol method call must arity-check like a
|
||||
// plain call. `Allocator.dealloc_bytes` declares (ptr); calling it with
|
||||
// an extra argument used to compile and silently drop the extra.
|
||||
#import "modules/std.sx";
|
||||
|
||||
main :: () -> i32 {
|
||||
gpa := GPA.init();
|
||||
a : Allocator = xx gpa;
|
||||
p := a.alloc_bytes(64);
|
||||
a.dealloc_bytes(p, 12345);
|
||||
return 0;
|
||||
}
|
||||
26
examples/1635-cfnptr-qsort.sx
Normal file
26
examples/1635-cfnptr-qsort.sx
Normal file
@@ -0,0 +1,26 @@
|
||||
// PLAN-HTTPZ C2: an sx `callconv(.c)` function passes by name as a
|
||||
// typed C function pointer — libc qsort drives an sx comparator.
|
||||
#import "modules/std.sx";
|
||||
|
||||
clib :: #library "c";
|
||||
qsort :: (base: [*]u8, nel: usize, width: usize, compar: (*void, *void) -> i32 callconv(.c)) #foreign clib;
|
||||
|
||||
cmp_i32 :: (a: *void, b: *void) -> i32 callconv(.c) {
|
||||
pa : *i32 = xx a;
|
||||
pb : *i32 = xx b;
|
||||
if pa.* < pb.* { return -1; }
|
||||
if pa.* > pb.* { return 1; }
|
||||
return 0;
|
||||
}
|
||||
|
||||
main :: () -> i32 {
|
||||
arr : [5]i32 = .[ 4, 1, 5, 2, 3 ];
|
||||
qsort(xx @arr[0], 5, 4, cmp_i32);
|
||||
i := 0;
|
||||
while i < 5 {
|
||||
if arr[i] != cast(i32)(i + 1) { print("not sorted at {}\n", i); return 1; }
|
||||
i += 1;
|
||||
}
|
||||
print("qsort via sx comparator ok\n");
|
||||
return 0;
|
||||
}
|
||||
29
examples/1636-cfnptr-pthread-reentry.sx
Normal file
29
examples/1636-cfnptr-pthread-reentry.sx
Normal file
@@ -0,0 +1,29 @@
|
||||
// PLAN-HTTPZ C2: the C->sx re-entry contract. A real OS thread enters
|
||||
// sx through a `callconv(.c)` entry (which has NO implicit context),
|
||||
// fabricates its own Context via `push Context.{ allocator = xx gpa }`,
|
||||
// and calls default-conv sx code that allocates through it.
|
||||
#import "modules/std.sx";
|
||||
|
||||
clib :: #library "c";
|
||||
pthread_create :: (thread: *usize, attr: *void, start: (*void) -> *void callconv(.c), arg: *void) -> i32 #foreign clib;
|
||||
pthread_join :: (thread: usize, retval: **void) -> i32 #foreign clib;
|
||||
|
||||
entry :: (arg: *void) -> *void callconv(.c) {
|
||||
p : *i64 = xx arg;
|
||||
gpa := GPA.init();
|
||||
push Context.{ allocator = xx gpa } {
|
||||
s := concat("th", "read"); // allocate through the thread's OWN context
|
||||
if s.len == 6 { p.* = p.* * 2; }
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
main :: () -> i32 {
|
||||
v : i64 = 21;
|
||||
th : usize = 0;
|
||||
if pthread_create(@th, null, entry, xx @v) != 0 { print("create failed\n"); return 1; }
|
||||
pthread_join(th, null);
|
||||
if v != 42 { print("wrong result: {}\n", v); return 1; }
|
||||
print("pthread into sx ok: {}\n", v);
|
||||
return 0;
|
||||
}
|
||||
116
examples/1637-std-thread.sx
Normal file
116
examples/1637-std-thread.sx
Normal file
@@ -0,0 +1,116 @@
|
||||
// std.thread (PLAN-HTTPZ S6): raw threads contend correctly on a Mutex,
|
||||
// the Pool runs every submitted task exactly once across its workers,
|
||||
// a full backlog applies backpressure (submit returns false), and
|
||||
// shutdown joins cleanly with queued work finished.
|
||||
#import "modules/std.sx";
|
||||
|
||||
Shared :: struct {
|
||||
mu: thread.Mutex = .{};
|
||||
counter: i64 = 0;
|
||||
gate: i64 = 0;
|
||||
}
|
||||
|
||||
// Raw-thread entry: C->sx boundary, own fabricated context.
|
||||
bump_entry :: (arg: *void) -> *void callconv(.c) {
|
||||
sh : *Shared = xx arg;
|
||||
gpa := GPA.init();
|
||||
push Context.{ allocator = xx gpa } {
|
||||
i := 0;
|
||||
while i < 1000 {
|
||||
sh.mu.lock();
|
||||
sh.counter += 1;
|
||||
sh.mu.unlock();
|
||||
i += 1;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Pool tasks are default-conv: they run inside a worker's context.
|
||||
AddArg :: struct {
|
||||
sh: *Shared;
|
||||
v: i64;
|
||||
}
|
||||
|
||||
add_task :: (arg: usize) {
|
||||
a : *AddArg = xx arg;
|
||||
a.sh.mu.lock();
|
||||
a.sh.counter += a.v;
|
||||
a.sh.mu.unlock();
|
||||
}
|
||||
|
||||
// Holds its worker hostage until the gate opens (backpressure case).
|
||||
gate_task :: (arg: usize) {
|
||||
sh : *Shared = xx arg;
|
||||
while true {
|
||||
sh.mu.lock();
|
||||
g := sh.gate;
|
||||
sh.mu.unlock();
|
||||
if g != 0 { return; }
|
||||
}
|
||||
}
|
||||
|
||||
main :: () -> i32 {
|
||||
sh : Shared = .{};
|
||||
if !sh.mu.setup() { print("mutex setup failed\n"); return 1; }
|
||||
|
||||
// ── 4 raw threads, 1000 locked increments each ────────────────────
|
||||
ths : [4]thread.Thread = ---;
|
||||
i := 0;
|
||||
while i < 4 {
|
||||
t, te := thread.Thread.spawn(bump_entry, xx @sh);
|
||||
if te { print("spawn failed\n"); return 1; }
|
||||
ths[i] = t;
|
||||
i += 1;
|
||||
}
|
||||
i = 0;
|
||||
while i < 4 {
|
||||
ths[i].join();
|
||||
i += 1;
|
||||
}
|
||||
if sh.counter != 4000 { print("raw threads: expected 4000, got {}\n", sh.counter); return 1; }
|
||||
print("raw threads: 4 x 1000 locked increments = {}\n", sh.counter);
|
||||
|
||||
// ── pool: 100 tasks, each adds its index+1; sum = 5050 ───────────
|
||||
sh.counter = 0;
|
||||
pool, pe := thread.Pool.create(4, 128);
|
||||
if pe { print("pool create failed\n"); return 1; }
|
||||
args : [*]AddArg = xx context.allocator.alloc_bytes(100 * size_of(AddArg));
|
||||
n := 0;
|
||||
while n < 100 {
|
||||
args[n] = AddArg.{ sh = @sh, v = xx (n + 1) };
|
||||
if !pool.submit(add_task, xx @args[n]) { print("submit unexpectedly refused\n"); return 1; }
|
||||
n += 1;
|
||||
}
|
||||
pool.shutdown(); // queued tasks finish before workers exit
|
||||
if sh.counter != 5050 { print("pool: expected 5050, got {}\n", sh.counter); return 1; }
|
||||
print("pool: 100 tasks across 4 workers summed to {}\n", sh.counter);
|
||||
|
||||
// ── backpressure: 1 worker held at the gate, backlog 2 fills ─────
|
||||
sh.gate = 0;
|
||||
p2, pe2 := thread.Pool.create(1, 2);
|
||||
if pe2 { print("pool2 create failed\n"); return 1; }
|
||||
if !p2.submit(gate_task, xx @sh) { print("gate submit refused\n"); return 1; }
|
||||
// give the worker a beat to take the gate task off the queue
|
||||
spins := 0;
|
||||
taken := false;
|
||||
while !taken and spins < 100000000 {
|
||||
p2.mu.lock();
|
||||
taken = p2.len == 0;
|
||||
p2.mu.unlock();
|
||||
spins += 1;
|
||||
}
|
||||
if !taken { print("worker never took the gate task\n"); return 1; }
|
||||
if !p2.submit(gate_task_noop, 0) { print("backlog slot 1 refused\n"); return 1; }
|
||||
if !p2.submit(gate_task_noop, 0) { print("backlog slot 2 refused\n"); return 1; }
|
||||
if p2.submit(gate_task_noop, 0) { print("full backlog must refuse\n"); return 1; }
|
||||
print("backpressure: full backlog refuses\n");
|
||||
sh.mu.lock();
|
||||
sh.gate = 1;
|
||||
sh.mu.unlock();
|
||||
p2.shutdown();
|
||||
print("std.thread ok\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
gate_task_noop :: (arg: usize) {}
|
||||
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
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
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
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
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
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -311,9 +311,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -794,6 +827,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal i64 @accept_c(ptr %0) #0 {
|
||||
entry:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -803,9 +803,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1287,115 +1320,325 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.76(i64, ptr) #0
|
||||
declare i64 @now_secs(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.77(i64, ptr) #0
|
||||
declare i64 @mono_ms(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
|
||||
declare i32 @kqueue() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
|
||||
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.80(i64) #0
|
||||
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
|
||||
declare i1 @kq_apply(ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
|
||||
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
|
||||
declare i64 @now_secs.75(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
|
||||
declare i64 @mono_ms.76(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.85(i64) #0
|
||||
declare i64 @Loop.init(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
|
||||
declare void @Loop.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
|
||||
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
|
||||
declare void @Loop.del_read(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
|
||||
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.90(i64) #0
|
||||
declare void @Loop.del_write(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.91(i64) #0
|
||||
declare i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.92(i64) #0
|
||||
declare void @Loop.wake(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.93(i64) #0
|
||||
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.target_triple.94(i64) #0
|
||||
declare i64 @deadline_in(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_macos.95(i64) #0
|
||||
declare i1 @expired(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios.96(i64) #0
|
||||
declare i64 @remaining_ms(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_device.97(i64) #0
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_android.99(i64) #0
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_count.100(i64) #0
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_at.101(i64, i64) #0
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_path_count.102(i64) #0
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.manifest_path.106(i64) #0
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.keystore_path.107(i64) #0
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.jni_main_count.108(i64) #0
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @build_options.111() #0
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.78(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.85(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.86(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.87(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.88(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.89(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.90(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.91(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.92(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.93(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.94(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.95(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 {
|
||||
@@ -1438,14 +1681,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)
|
||||
@@ -1461,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.129, i64 9 })
|
||||
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.131, i64 9 })
|
||||
ret { ptr, i64 } %call
|
||||
}
|
||||
|
||||
@@ -1541,17 +1784,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -819,9 +819,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1303,115 +1336,325 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.76(i64, ptr) #0
|
||||
declare i64 @now_secs(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.77(i64, ptr) #0
|
||||
declare i64 @mono_ms(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
|
||||
declare i32 @kqueue() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
|
||||
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.80(i64) #0
|
||||
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
|
||||
declare i1 @kq_apply(ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
|
||||
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
|
||||
declare i64 @now_secs.75(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
|
||||
declare i64 @mono_ms.76(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.85(i64) #0
|
||||
declare i64 @Loop.init(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
|
||||
declare void @Loop.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
|
||||
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
|
||||
declare void @Loop.del_read(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
|
||||
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.90(i64) #0
|
||||
declare void @Loop.del_write(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.91(i64) #0
|
||||
declare i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.92(i64) #0
|
||||
declare void @Loop.wake(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.93(i64) #0
|
||||
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.target_triple.94(i64) #0
|
||||
declare i64 @deadline_in(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_macos.95(i64) #0
|
||||
declare i1 @expired(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios.96(i64) #0
|
||||
declare i64 @remaining_ms(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_device.97(i64) #0
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_android.99(i64) #0
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_count.100(i64) #0
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_at.101(i64, i64) #0
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_path_count.102(i64) #0
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.manifest_path.106(i64) #0
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.keystore_path.107(i64) #0
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.jni_main_count.108(i64) #0
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @build_options.111() #0
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.78(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.85(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.86(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.87(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.88(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.89(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.90(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.91(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.92(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.93(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.94(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.95(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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
|
||||
@@ -1498,7 +1741,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
|
||||
@@ -1509,7 +1752,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
|
||||
@@ -1524,7 +1767,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
|
||||
@@ -1541,7 +1784,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
|
||||
@@ -1588,14 +1831,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)
|
||||
@@ -1611,7 +1854,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
|
||||
}
|
||||
|
||||
@@ -1619,14 +1862,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)
|
||||
@@ -1642,7 +1885,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
|
||||
}
|
||||
|
||||
@@ -1650,14 +1893,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)
|
||||
@@ -1673,7 +1916,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
|
||||
}
|
||||
|
||||
@@ -1681,14 +1924,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)
|
||||
@@ -1704,7 +1947,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
|
||||
}
|
||||
|
||||
@@ -1712,14 +1955,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)
|
||||
@@ -1735,7 +1978,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
|
||||
}
|
||||
|
||||
@@ -1793,17 +2036,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
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1279,115 +1312,325 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.76(i64, ptr) #0
|
||||
declare i64 @now_secs(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.77(i64, ptr) #0
|
||||
declare i64 @mono_ms(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
|
||||
declare i32 @kqueue() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
|
||||
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.80(i64) #0
|
||||
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
|
||||
declare i1 @kq_apply(ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
|
||||
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
|
||||
declare i64 @now_secs.75(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
|
||||
declare i64 @mono_ms.76(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.85(i64) #0
|
||||
declare i64 @Loop.init(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
|
||||
declare void @Loop.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
|
||||
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
|
||||
declare void @Loop.del_read(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
|
||||
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.90(i64) #0
|
||||
declare void @Loop.del_write(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.91(i64) #0
|
||||
declare i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.92(i64) #0
|
||||
declare void @Loop.wake(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.93(i64) #0
|
||||
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.target_triple.94(i64) #0
|
||||
declare i64 @deadline_in(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_macos.95(i64) #0
|
||||
declare i1 @expired(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios.96(i64) #0
|
||||
declare i64 @remaining_ms(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_device.97(i64) #0
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_android.99(i64) #0
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_count.100(i64) #0
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_at.101(i64, i64) #0
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_path_count.102(i64) #0
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.manifest_path.106(i64) #0
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.keystore_path.107(i64) #0
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.jni_main_count.108(i64) #0
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @build_options.111() #0
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.78(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.85(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.86(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.87(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.88(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.89(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.90(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.91(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.92(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.93(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.94(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.95(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 {
|
||||
@@ -1423,14 +1666,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)
|
||||
@@ -1446,7 +1689,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
|
||||
}
|
||||
|
||||
@@ -1458,7 +1701,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
@@ -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
|
||||
|
||||
@@ -821,9 +821,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1305,115 +1338,325 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.76(i64, ptr) #0
|
||||
declare i64 @now_secs(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.77(i64, ptr) #0
|
||||
declare i64 @mono_ms(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
|
||||
declare i32 @kqueue() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
|
||||
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.80(i64) #0
|
||||
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
|
||||
declare i1 @kq_apply(ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
|
||||
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
|
||||
declare i64 @now_secs.75(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
|
||||
declare i64 @mono_ms.76(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.85(i64) #0
|
||||
declare i64 @Loop.init(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
|
||||
declare void @Loop.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
|
||||
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
|
||||
declare void @Loop.del_read(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
|
||||
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.90(i64) #0
|
||||
declare void @Loop.del_write(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.91(i64) #0
|
||||
declare i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.92(i64) #0
|
||||
declare void @Loop.wake(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.93(i64) #0
|
||||
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.target_triple.94(i64) #0
|
||||
declare i64 @deadline_in(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_macos.95(i64) #0
|
||||
declare i1 @expired(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios.96(i64) #0
|
||||
declare i64 @remaining_ms(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_device.97(i64) #0
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_android.99(i64) #0
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_count.100(i64) #0
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_at.101(i64, i64) #0
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_path_count.102(i64) #0
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.manifest_path.106(i64) #0
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.keystore_path.107(i64) #0
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.jni_main_count.108(i64) #0
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @build_options.111() #0
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.78(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.85(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.86(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.87(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.88(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.89(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.90(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.91(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.92(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.93(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.94(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.95(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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
|
||||
@@ -1495,17 +1738,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
|
||||
@@ -1524,6 +1764,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
|
||||
@@ -1572,14 +1815,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)
|
||||
@@ -1595,7 +1838,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
|
||||
}
|
||||
|
||||
@@ -1603,17 +1846,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -797,9 +797,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1280,6 +1313,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1306,7 +1549,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
|
||||
|
||||
@@ -1331,7 +1574,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
|
||||
|
||||
@@ -1383,14 +1626,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)
|
||||
@@ -1406,6 +1649,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal i32 @read_int(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1304,7 +1547,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
|
||||
|
||||
@@ -1358,14 +1601,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)
|
||||
@@ -1381,6 +1624,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal i64 @read_long(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1304,7 +1547,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
|
||||
|
||||
@@ -1358,14 +1601,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)
|
||||
@@ -1381,6 +1624,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal double @read_double(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1304,7 +1547,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
|
||||
|
||||
@@ -1358,14 +1601,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)
|
||||
@@ -1381,6 +1624,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal i1 @read_bool(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1304,7 +1547,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
|
||||
|
||||
@@ -1358,14 +1601,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)
|
||||
@@ -1381,6 +1624,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal ptr @get_window(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1304,7 +1547,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
|
||||
|
||||
@@ -1358,14 +1601,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)
|
||||
@@ -1381,6 +1624,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal i32 @call_static_max(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1301,7 +1544,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
|
||||
|
||||
@@ -1355,14 +1598,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)
|
||||
@@ -1378,6 +1621,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1305,7 +1548,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
|
||||
|
||||
@@ -1358,14 +1601,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)
|
||||
@@ -1381,6 +1624,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -795,9 +795,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -1278,6 +1311,216 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
; Function Attrs: nounwind
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Loop.wake(ptr, ptr) #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
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
|
||||
entry:
|
||||
@@ -1304,7 +1547,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
|
||||
|
||||
@@ -1356,14 +1599,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)
|
||||
@@ -1379,6 +1622,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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
@@ -318,9 +318,42 @@ declare i32 @listen(i32, i32) #0
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @accept(i32, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @connect(i32, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @shutdown(i32, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @socketpair(i32, i32, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @fcntl(i32, i32, ...) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i16 @htons(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @__error() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @errno(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @is_wouldblock(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @set_nonblocking(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @accept_nb(ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @read_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @write_nb(ptr, i32, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
|
||||
|
||||
@@ -802,115 +835,325 @@ declare void @log_emit(ptr, ptr, ptr) #0
|
||||
declare void @assert.74(ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.75(i64, ptr) #0
|
||||
declare i32 @clock_gettime(i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.76(i64, ptr) #0
|
||||
declare i64 @now_secs(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.77(i64, ptr) #0
|
||||
declare i64 @mono_ms(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.78(i64, ptr) #0
|
||||
declare i32 @kqueue() #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.79(i64, ptr, ptr) #0
|
||||
declare i32 @kevent(i32, ptr, i32, ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.80(i64) #0
|
||||
declare void @kev_change(ptr sret({ i64, i16, i16, i32, i64, i64 }), ptr, i32, i16, i16, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.81(i64, i64) #0
|
||||
declare i1 @kq_apply(ptr, i32, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.82(i64, i64) #0
|
||||
declare i32 @kq_wait(ptr, i32, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.83(i64, ptr) #0
|
||||
declare i64 @now_secs.75(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.84(i64, ptr) #0
|
||||
declare i64 @mono_ms.76(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.85(i64) #0
|
||||
declare i64 @Loop.init(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.86(i64, ptr) #0
|
||||
declare void @Loop.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.87(i64, ptr) #0
|
||||
declare i32 @Loop.add_read(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.88(i64, ptr) #0
|
||||
declare void @Loop.del_read(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.89(i64, ptr) #0
|
||||
declare i32 @Loop.add_write(ptr, ptr, i32, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.90(i64) #0
|
||||
declare void @Loop.del_write(ptr, ptr, i32) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.91(i64) #0
|
||||
declare i32 @Loop.add_wake(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.92(i64) #0
|
||||
declare void @Loop.wake(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.93(i64) #0
|
||||
declare [2 x i64] @Loop.wait(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.target_triple.94(i64) #0
|
||||
declare i64 @deadline_in(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_macos.95(i64) #0
|
||||
declare i1 @expired(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios.96(i64) #0
|
||||
declare i64 @remaining_ms(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_device.97(i64) #0
|
||||
declare ptr @find_header(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_ios_simulator.98(i64) #0
|
||||
declare i1 @ascii_ieq(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @BuildOptions.is_android.99(i64) #0
|
||||
declare ptr @reason_for(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_count.100(i64) #0
|
||||
declare void @run_handler_job(ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_at.101(i64, i64) #0
|
||||
declare [2 x i64] @serialize_bytes(ptr, ptr, i1, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.framework_path_count.102(i64) #0
|
||||
declare void @Server.init(ptr sret({ { { i64, i32, i64, i64, i64, i64, i64, i64, i64 }, { i32 }, i32, ptr, { ptr, ptr, ptr }, ptr, i64, ptr }, i32 }), ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.framework_path_at.103(i64, i64) #0
|
||||
declare void @Server.close(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_manifest_path.104(i64, ptr) #0
|
||||
declare i64 @Server.free_slot(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_keystore_path.105(i64, ptr) #0
|
||||
declare void @Server.conn_close(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.manifest_path.106(i64) #0
|
||||
declare i32 @Server.tick(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.keystore_path.107(i64) #0
|
||||
declare void @Server.run(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.jni_main_count.108(i64) #0
|
||||
declare void @Server.accept_ready(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_foreign_path_at.109(i64, i64) #0
|
||||
declare i1 @Server.grow_read_buf(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.jni_main_java_source_at.110(i64, i64) #0
|
||||
declare void @Server.read_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @build_options.111() #0
|
||||
declare void @Server.serve_buffered(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Server.try_serve_one(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.serialize_response(ptr, ptr, i64, ptr, i1) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.drain_completions(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.write_more(ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Server.respond_error_close(ptr, ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_create(ptr, ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_join(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_detach(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_lock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_unlock(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_mutex_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_init(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_wait(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_signal(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_broadcast(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i32 @pthread_cond_destroy(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Mutex.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.lock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.unlock(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Mutex.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Cond.setup(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.wait(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.signal(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.broadcast(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Cond.destroy(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Thread.spawn(ptr, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.join(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Thread.detach(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare [2 x i64] @Pool.create(ptr, i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i1 @Pool.submit(ptr, ptr, ptr, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @Pool.shutdown(ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @pool_worker(ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_link_flag.77(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_framework.78(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_output_path.79(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_wasm_shell.80(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.add_asset_dir.81(i64, ptr, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare i64 @BuildOptions.asset_dir_count.82(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_src_at.83(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.asset_dir_dest_at.84(i64, i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_callback.85(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_post_link_module.86(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.binary_path.87(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_path.88(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_bundle_id.89(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_codesign_identity.90(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare void @BuildOptions.set_provisioning_profile.91(i64, ptr) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_path.92(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.bundle_id.93(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.codesign_identity.94(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
declare ptr @BuildOptions.provisioning_profile.95(i64) #0
|
||||
|
||||
; Function Attrs: nounwind
|
||||
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 {
|
||||
@@ -950,7 +1193,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
|
||||
@@ -966,7 +1209,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)
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
|
||||
1
examples/expected/1624-vendor-sqlite-module.exit
Normal file
1
examples/expected/1624-vendor-sqlite-module.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
1
examples/expected/1624-vendor-sqlite-module.stderr
Normal file
1
examples/expected/1624-vendor-sqlite-module.stderr
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
2
examples/expected/1624-vendor-sqlite-module.stdout
Normal file
2
examples/expected/1624-vendor-sqlite-module.stdout
Normal file
@@ -0,0 +1,2 @@
|
||||
row: b 2
|
||||
vendored sqlite 3.53.2 ok
|
||||
1
examples/expected/1625-vendor-stb-image-decode.exit
Normal file
1
examples/expected/1625-vendor-stb-image-decode.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
1
examples/expected/1625-vendor-stb-image-decode.stderr
Normal file
1
examples/expected/1625-vendor-stb-image-decode.stderr
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
2
examples/expected/1625-vendor-stb-image-decode.stdout
Normal file
2
examples/expected/1625-vendor-stb-image-decode.stdout
Normal file
@@ -0,0 +1,2 @@
|
||||
decoded 2x2 (3 channels)
|
||||
top-left pixel: 0 0 255
|
||||
1
examples/expected/1626-vendor-stb-truetype-metrics.exit
Normal file
1
examples/expected/1626-vendor-stb-truetype-metrics.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
@@ -0,0 +1 @@
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
font offset >= 0: true
|
||||
init ok: true
|
||||
scale > 0: true
|
||||
ascent > 0, descent < 0: true true
|
||||
1
examples/expected/1627-vendor-kbts-shape-context.exit
Normal file
1
examples/expected/1627-vendor-kbts-shape-context.exit
Normal file
@@ -0,0 +1 @@
|
||||
0
|
||||
1
examples/expected/1627-vendor-kbts-shape-context.stderr
Normal file
1
examples/expected/1627-vendor-kbts-shape-context.stderr
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
3
examples/expected/1627-vendor-kbts-shape-context.stdout
Normal file
3
examples/expected/1627-vendor-kbts-shape-context.stdout
Normal file
@@ -0,0 +1,3 @@
|
||||
context created: true
|
||||
font pushed: true
|
||||
context destroyed
|
||||
1
examples/expected/1628-cimport-duplicate-export.exit
Normal file
1
examples/expected/1628-cimport-duplicate-export.exit
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user