std: the prelude becomes a pure re-export facade — implementations move to std/core.sx, std/fmt.sx, std/list.sx

std.sx now contains only alias declarations (the re-export mechanism:
own decls carry one flat-import level) over three part-files: core.sx
(builtins, libc escape hatch, Source_Location/Allocator/Context/Into,
the reserved `string` decl — which needs and permits no alias), fmt.sx
(print/format/any_to_string/string ops/cstring/alloc_slice), list.sx
(List). The namespace tail is unchanged; the part-file namespaces
(core/fmt/list) carry alongside it. Consumer surface is byte-identical
— every bare prelude name resolves through the aliases (0120/0121
machinery). 37 .ir snapshots re-pinned: pure string-constant
renumbering from the changed import graph (digit-normalized diff is
empty). Gates: zig build test 426/426, suite 588/588, m3te 23/23,
game SxChess builds + bundles.
This commit is contained in:
agra
2026-06-11 19:25:49 +03:00
parent 340be402a5
commit 49a36bb492
43 changed files with 35649 additions and 35322 deletions

View File

@@ -2,30 +2,30 @@
@g_should_call = internal global i1 false
@__sx_default_context = internal constant { { ptr, ptr, ptr }, ptr } { { ptr, ptr, ptr } { ptr null, ptr @__thunk_CAllocator_Allocator_alloc_bytes, ptr @__thunk_CAllocator_Allocator_dealloc_bytes }, ptr null }
@str = private unnamed_addr constant [2 x i8] c"0\00", align 1
@str.127 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.128 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.129 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.130 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.131 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.132 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.133 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.134 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.135 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.136 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.137 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.138 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.139 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.140 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.141 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.142 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.143 = 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.129 = private unnamed_addr constant [15 x i8] c"result := \22\22; \00", align 1
@str.130 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.131 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.132 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.133 = private unnamed_addr constant [44 x i8] c"result = concat(result, any_to_string(args[\00", align 1
@str.134 = private unnamed_addr constant [6 x i8] c"])); \00", align 1
@str.135 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.136 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.137 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.138 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.139 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.140 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.141 = private unnamed_addr constant [37 x i8] c"result = concat(result, substr(fmt, \00", align 1
@str.142 = private unnamed_addr constant [3 x i8] c", \00", align 1
@str.143 = private unnamed_addr constant [5 x i8] c")); \00", align 1
@str.144 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.145 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.146 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.147 = 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.146 = private unnamed_addr constant [5 x i8] c"noop\00", align 1
@str.147 = private unnamed_addr constant [4 x i8] c"()V\00", align 1
@str.148 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
@str.149 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1
@str.150 = private unnamed_addr constant [4 x i8] c"ok\0A\00", align 1
; Function Attrs: nounwind
declare void @out(ptr) #0
@@ -39,85 +39,7 @@ declare ptr @memcpy(ptr, ptr, i64)
declare ptr @memset(ptr, i32, i64)
; Function Attrs: nounwind
declare ptr @mem_realloc(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind
define internal ptr @CAllocator.alloc_bytes(ptr %0, ptr %1, i64 %2) #0 {
entry:
%alloca = alloca ptr, align 8
store ptr %1, ptr %alloca, align 8
%allocaN = alloca i64, align 8
store i64 %2, ptr %allocaN, align 8
%load = load i64, ptr %allocaN, align 8
%call = call ptr @malloc(i64 %load)
ret ptr %call
}
; Function Attrs: nounwind
define internal void @CAllocator.dealloc_bytes(ptr %0, ptr %1, ptr %2) #0 {
entry:
%alloca = alloca ptr, align 8
store ptr %1, ptr %alloca, align 8
%allocaN = alloca ptr, align 8
store ptr %2, ptr %allocaN, align 8
%load = load ptr, ptr %allocaN, align 8
call void @free(ptr %load)
ret void
}
; Function Attrs: nounwind
declare i64 @GPA.init(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BufAlloc.init(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes(ptr, ptr, ptr) #0
declare void @out.1(ptr) #0
; Function Attrs: nounwind
define internal { ptr, i64 } @cstring(ptr %0, i64 %1) #0 {
@@ -333,7 +255,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.127, i64 14 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.129, i64 14 }, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
store i64 0, ptr %allocaN, align 8
%allocaN = alloca i64, align 8
@@ -429,7 +351,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.128, i64 36 })
%call = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.130, 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
@@ -437,7 +359,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.129, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.131, 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,13 +369,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.130, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.132, 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.131, i64 43 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.133, 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
@@ -461,7 +383,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.132, i64 5 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.134, i64 5 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 1
@@ -475,7 +397,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.133, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.135, 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
@@ -483,7 +405,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.134, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.136, 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
@@ -494,7 +416,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.135, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.137, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -551,7 +473,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.136, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.138, 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
@@ -559,7 +481,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.137, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.139, 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
@@ -570,7 +492,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.138, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.140, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
%loadN = load i64, ptr %allocaN, align 8
%addN = add i64 %loadN, 2
@@ -590,7 +512,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.139, i64 36 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.141, 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
@@ -598,7 +520,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.140, i64 2 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.142, 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
@@ -609,7 +531,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.141, i64 4 })
%callN = call { ptr, i64 } @concat(ptr %0, { ptr, i64 } %loadN, { ptr, i64 } { ptr @str.143, i64 4 })
store { ptr, i64 } %callN, ptr %allocaN, align 8
br label %if.merge.38
@@ -619,67 +541,151 @@ if.merge.38: ; preds = %if.then.37, %while.
}
; Function Attrs: nounwind
declare ptr @mem_realloc.1(ptr, ptr, ptr, i64, i64, i64) #0
declare void @out.2(ptr) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.2(ptr, ptr, i64) #0
declare ptr @mem_realloc(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.3(ptr, ptr, ptr) #0
define internal ptr @CAllocator.alloc_bytes(ptr %0, ptr %1, i64 %2) #0 {
entry:
%alloca = alloca ptr, align 8
store ptr %1, ptr %alloca, align 8
%allocaN = alloca i64, align 8
store i64 %2, ptr %allocaN, align 8
%load = load i64, ptr %allocaN, align 8
%call = call ptr @malloc(i64 %load)
ret ptr %call
}
; Function Attrs: nounwind
declare i64 @GPA.init.4(ptr) #0
define internal void @CAllocator.dealloc_bytes(ptr %0, ptr %1, ptr %2) #0 {
entry:
%alloca = alloca ptr, align 8
store ptr %1, ptr %alloca, align 8
%allocaN = alloca ptr, align 8
store ptr %2, ptr %allocaN, align 8
%load = load ptr, ptr %allocaN, align 8
call void @free(ptr %load)
ret void
}
; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.5(ptr, ptr, i64) #0
declare i64 @GPA.init(ptr) #0
; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.6(ptr, ptr, ptr) #0
declare ptr @GPA.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.7(ptr, ptr, i64) #0
declare void @GPA.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.init.8(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
declare void @Arena.add_chunk(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.9(ptr, ptr) #0
declare void @Arena.init(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.deinit.10(ptr, ptr) #0
declare void @Arena.reset(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.11(ptr, ptr, i64) #0
declare void @Arena.deinit(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.12(ptr, ptr, ptr) #0
declare ptr @Arena.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.init.13(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
declare void @Arena.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.14(ptr, ptr) #0
declare void @BufAlloc.init(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.15(ptr, ptr, i64) #0
declare void @BufAlloc.reset(ptr, ptr) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.16(ptr, ptr, ptr) #0
declare ptr @BufAlloc.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.17(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
declare void @BufAlloc.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.18(ptr, ptr) #0
declare void @TrackingAllocator.init(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.19(ptr, ptr) #0
declare i64 @TrackingAllocator.leak_count(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.20(ptr, ptr, i64) #0
declare void @TrackingAllocator.report(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.21(ptr, ptr, ptr) #0
declare ptr @TrackingAllocator.alloc_bytes(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @mem_realloc.3(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.4(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.5(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.6(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.7(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.8(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.9(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.10(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.11(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.12(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.13(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.14(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BufAlloc.init.15(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.16(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.17(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.18(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.19(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.20(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.21(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.22(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.23(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @escape(ptr, ptr) #0
@@ -855,166 +861,166 @@ declare i32 @listen(i32, i32) #0
declare i32 @accept(i32, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @read.22(i32, ptr, i64) #0
declare i64 @read.24(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i32 @close.23(i32) #0
declare i32 @close.25(i32) #0
; Function Attrs: nounwind
declare i16 @htons(ptr, i64) #0
; Function Attrs: nounwind
declare ptr @mem_realloc.24(ptr, ptr, ptr, i64, i64, i64) #0
declare ptr @mem_realloc.26(ptr, ptr, ptr, i64, i64, i64) #0
; Function Attrs: nounwind
declare ptr @CAllocator.alloc_bytes.25(ptr, ptr, i64) #0
declare ptr @CAllocator.alloc_bytes.27(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @CAllocator.dealloc_bytes.26(ptr, ptr, ptr) #0
declare void @CAllocator.dealloc_bytes.28(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @GPA.init.27(ptr) #0
declare i64 @GPA.init.29(ptr) #0
; Function Attrs: nounwind
declare ptr @GPA.alloc_bytes.28(ptr, ptr, i64) #0
declare ptr @GPA.alloc_bytes.30(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @GPA.dealloc_bytes.29(ptr, ptr, ptr) #0
declare void @GPA.dealloc_bytes.31(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.add_chunk.30(ptr, ptr, i64) #0
declare void @Arena.add_chunk.32(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.init.31(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
declare void @Arena.init.33(ptr sret({ ptr, i64, { ptr, ptr, ptr } }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.reset.32(ptr, ptr) #0
declare void @Arena.reset.34(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Arena.deinit.33(ptr, ptr) #0
declare void @Arena.deinit.35(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @Arena.alloc_bytes.34(ptr, ptr, i64) #0
declare ptr @Arena.alloc_bytes.36(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @Arena.dealloc_bytes.35(ptr, ptr, ptr) #0
declare void @Arena.dealloc_bytes.37(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @BufAlloc.init.36(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
declare void @BufAlloc.init.38(ptr sret({ ptr, i64, i64 }), ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.reset.37(ptr, ptr) #0
declare void @BufAlloc.reset.39(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @BufAlloc.alloc_bytes.38(ptr, ptr, i64) #0
declare ptr @BufAlloc.alloc_bytes.40(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @BufAlloc.dealloc_bytes.39(ptr, ptr, ptr) #0
declare void @BufAlloc.dealloc_bytes.41(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.init.40(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
declare void @TrackingAllocator.init.42(ptr sret({ { ptr, ptr, ptr }, i64, i64, i64 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @TrackingAllocator.leak_count.41(ptr, ptr) #0
declare i64 @TrackingAllocator.leak_count.43(ptr, ptr) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.report.42(ptr, ptr) #0
declare void @TrackingAllocator.report.44(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @TrackingAllocator.alloc_bytes.43(ptr, ptr, i64) #0
declare ptr @TrackingAllocator.alloc_bytes.45(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @TrackingAllocator.dealloc_bytes.44(ptr, ptr, ptr) #0
declare void @TrackingAllocator.dealloc_bytes.46(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.45(ptr, i32, ...) #0
declare i32 @open.47(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.46(i32) #0
declare i32 @close.48(i32) #0
; Function Attrs: nounwind
declare i64 @read.47(i32, ptr, i64) #0
declare i64 @read.49(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.48(i32, i64, i32) #0
declare i64 @lseek.50(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.49(ptr) #0
declare i32 @unlink.51(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.50(ptr) #0
declare i32 @rmdir.52(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.51(ptr, i32) #0
declare i32 @mkdir.53(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.52(ptr, i32) #0
declare i32 @access.54(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.53(ptr, i32) #0
declare i32 @chmod.55(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.54(ptr, ptr) #0
declare i32 @rename.56(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.55(ptr, ptr) #0
declare i1 @File.is_valid.57(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.56(ptr, ptr) #0
declare i1 @File.close.58(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.57(ptr, ptr, ptr) #0
declare i64 @File.read.59(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.58(ptr, ptr, ptr) #0
declare i64 @File.write.60(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.59(ptr, ptr, i64, i64) #0
declare i64 @File.seek.61(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.60(ptr, i64) #0
declare i32 @mode_to_flags.62(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.61(ptr, ptr, i64) #0
declare i64 @open_file.63(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.62(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
declare void @read_file.64(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.63(ptr, ptr, ptr) #0
declare i1 @write_file.65(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.64(ptr, ptr, ptr) #0
declare i1 @append_file.66(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.65(ptr, ptr) #0
declare i1 @exists.67(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.66(ptr, ptr) #0
declare i1 @delete_file.68(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.67(ptr, ptr) #0
declare i1 @delete_dir.69(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.68(ptr, ptr) #0
declare i1 @create_dir.70(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.69(ptr, ptr, i32) #0
declare i1 @set_mode.71(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.70(ptr, ptr, ptr) #0
declare i1 @move.72(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.71(ptr, ptr) #0
declare i1 @create_dir_all.73(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.72(ptr, ptr, ptr) #0
declare i1 @copy_file.74(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.73(ptr, ptr) #0
declare ptr @basename.75(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.74(ptr, ptr) #0
declare ptr @dirname.76(ptr, ptr) #0
; Function Attrs: nounwind
declare void @Array.add(ptr, ptr, ptr, ptr) #0
@@ -1212,64 +1218,64 @@ declare ptr @BuildOptions.jni_main_java_source_at(i64, i64) #0
declare i64 @build_options() #0
; Function Attrs: nounwind
declare ptr @spaces.75(ptr, i32) #0
declare ptr @spaces.77(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @sx_trace_len.76() #0
declare i32 @sx_trace_len.78() #0
; Function Attrs: nounwind
declare i32 @sx_trace_truncated.77() #0
declare i32 @sx_trace_truncated.79() #0
; Function Attrs: nounwind
declare i64 @sx_trace_frame_at.78(i32) #0
declare i64 @sx_trace_frame_at.80(i32) #0
; Function Attrs: nounwind
declare ptr @to_string.79(ptr) #0
declare ptr @to_string.81(ptr) #0
; Function Attrs: nounwind
declare void @print_current.80(ptr) #0
declare void @print_current.82(ptr) #0
; Function Attrs: nounwind
declare void @print_interpreter_frames.81(ptr) #0
declare void @print_interpreter_frames.83(ptr) #0
; Function Attrs: nounwind
declare ptr @popen.82(ptr, ptr) #0
declare ptr @popen.84(ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @pclose.83(ptr) #0
declare i32 @pclose.85(ptr) #0
; Function Attrs: nounwind
declare i64 @fread.84(ptr, i64, i64, ptr) #0
declare i64 @fread.86(ptr, i64, i64, ptr) #0
; Function Attrs: nounwind
declare i32 @feof.85(ptr) #0
declare i32 @feof.87(ptr) #0
; Function Attrs: nounwind
declare ptr @getenv.86(ptr) #0
declare ptr @getenv.88(ptr) #0
; Function Attrs: nounwind
declare i64 @strlen.87(ptr) #0
declare i64 @strlen.89(ptr) #0
; Function Attrs: nounwind
declare i32 @system.88(ptr) #0
declare i32 @system.90(ptr) #0
; Function Attrs: nounwind
declare void @run.89(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
declare void @run.91(ptr sret({ { i32, { ptr, i64 } }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @env.90(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
declare void @env.92(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @find_executable.91(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
declare void @find_executable.93(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @_exit.92(i32) #0
declare void @_exit.94(i32) #0
; Function Attrs: nounwind
declare void @exit.93(ptr, i8, ptr) #0
declare void @exit.95(ptr, i8, ptr) #0
; Function Attrs: nounwind
declare void @assert.94(ptr, i1, ptr, ptr) #0
declare void @assert.96(ptr, i1, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @_NSGetArgv() #0
@@ -1299,97 +1305,97 @@ declare ptr @Parsed.value_of(ptr, ptr, ptr) #0
declare i1 @is_long_flag(ptr, ptr) #0
; Function Attrs: nounwind
declare void @parse.95(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
declare void @parse.97(ptr sret({ { { ptr, i64 }, { ptr, i64 }, i64, i1, { ptr, i64 }, { ptr, i64 }, [16 x { i1, { ptr, i64 } }] }, i32 }), ptr, ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i32 @open.96(ptr, i32, ...) #0
declare i32 @open.98(ptr, i32, ...) #0
; Function Attrs: nounwind
declare i32 @close.97(i32) #0
declare i32 @close.99(i32) #0
; Function Attrs: nounwind
declare i64 @read.98(i32, ptr, i64) #0
declare i64 @read.100(i32, ptr, i64) #0
; Function Attrs: nounwind
declare i64 @lseek.99(i32, i64, i32) #0
declare i64 @lseek.101(i32, i64, i32) #0
; Function Attrs: nounwind
declare i32 @unlink.100(ptr) #0
declare i32 @unlink.102(ptr) #0
; Function Attrs: nounwind
declare i32 @rmdir.101(ptr) #0
declare i32 @rmdir.103(ptr) #0
; Function Attrs: nounwind
declare i32 @mkdir.102(ptr, i32) #0
declare i32 @mkdir.104(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @access.103(ptr, i32) #0
declare i32 @access.105(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @chmod.104(ptr, i32) #0
declare i32 @chmod.106(ptr, i32) #0
; Function Attrs: nounwind
declare i32 @rename.105(ptr, ptr) #0
declare i32 @rename.107(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.is_valid.106(ptr, ptr) #0
declare i1 @File.is_valid.108(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @File.close.107(ptr, ptr) #0
declare i1 @File.close.109(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.read.108(ptr, ptr, ptr) #0
declare i64 @File.read.110(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.write.109(ptr, ptr, ptr) #0
declare i64 @File.write.111(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @File.seek.110(ptr, ptr, i64, i64) #0
declare i64 @File.seek.112(ptr, ptr, i64, i64) #0
; Function Attrs: nounwind
declare i32 @mode_to_flags.111(ptr, i64) #0
declare i32 @mode_to_flags.113(ptr, i64) #0
; Function Attrs: nounwind
declare i64 @open_file.112(ptr, ptr, i64) #0
declare i64 @open_file.114(ptr, ptr, i64) #0
; Function Attrs: nounwind
declare void @read_file.113(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
declare void @read_file.115(ptr sret({ { ptr, i64 }, i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @write_file.114(ptr, ptr, ptr) #0
declare i1 @write_file.116(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @append_file.115(ptr, ptr, ptr) #0
declare i1 @append_file.117(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @exists.116(ptr, ptr) #0
declare i1 @exists.118(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_file.117(ptr, ptr) #0
declare i1 @delete_file.119(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @delete_dir.118(ptr, ptr) #0
declare i1 @delete_dir.120(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir.119(ptr, ptr) #0
declare i1 @create_dir.121(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @set_mode.120(ptr, ptr, i32) #0
declare i1 @set_mode.122(ptr, ptr, i32) #0
; Function Attrs: nounwind
declare i1 @move.121(ptr, ptr, ptr) #0
declare i1 @move.123(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @create_dir_all.122(ptr, ptr) #0
declare i1 @create_dir_all.124(ptr, ptr) #0
; Function Attrs: nounwind
declare i1 @copy_file.123(ptr, ptr, ptr) #0
declare i1 @copy_file.125(ptr, ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @basename.124(ptr, ptr) #0
declare ptr @basename.126(ptr, ptr) #0
; Function Attrs: nounwind
declare ptr @dirname.125(ptr, ptr) #0
declare ptr @dirname.127(ptr, ptr) #0
; Function Attrs: nounwind
declare i64 @rotr(ptr, i64, i64) #0
@@ -1428,7 +1434,7 @@ declare [64 x i8] @sha256_hex(ptr, ptr) #0
declare void @sha256_file(ptr sret({ [64 x i8], i1 }), ptr, ptr) #0
; Function Attrs: nounwind
declare void @assert.126(ptr, i1) #0
declare void @assert.128(ptr, i1) #0
; Function Attrs: nounwind
define internal void @unused_jni(ptr %0, ptr %1, ptr %2) #0 {
@@ -1456,7 +1462,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.142, ptr @str.143)
%jni.fresh.mid = call ptr %jni.GetMethodID(ptr %load, ptr %jni.global.cls, ptr @str.144, ptr @str.145)
store ptr %jni.fresh.mid, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont
@@ -1481,7 +1487,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.144, ptr @str.145)
%jni.fresh.mid14 = call ptr %jni.GetMethodID13(ptr %load, ptr %jni.global.cls12, ptr @str.146, ptr @str.147)
store ptr %jni.fresh.mid14, ptr @SX_JNI_MID_noop____V, align 8
br label %jni.cont8
@@ -1533,14 +1539,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.146, i64 3 }, ptr %alloca, align 8
store { ptr, i64 } { ptr @str.148, 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.147, i64 0 }, ptr %allocaN, align 8
store { ptr, i64 } { ptr @str.149, 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)
@@ -1556,6 +1562,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.148, i64 3 })
%call = call { ptr, i64 } @build_format(ptr %0, { ptr, i64 } { ptr @str.150, i64 3 })
ret { ptr, i64 } %call
}