diff --git a/Makefile b/Makefile index 6d0bc725..62e72400 100644 --- a/Makefile +++ b/Makefile @@ -1033,6 +1033,7 @@ MEMCHECK_CASES := \ tests/cases/test_empty_list_field_ownership \ tests/cases/test_list_bytes_ownership \ tests/cases/test_result_unwrap_or_fallback_leak \ + tests/cases/test_borrowed_operand_extraction \ tests/cases/test_struct_closure_field tests/cases/test_generic_struct_field_dtor \ tests/cases/test_iterator_drain tests/cases/test_method_fresh_string_return \ tests/cases/test_lazy_adapter_pipeline tests/cases/test_named_local_adapter_chain \ diff --git a/self-host/bootstrap/ir_driver.ir b/self-host/bootstrap/ir_driver.ir index 74fb4fb1..4e4d2895 100644 --- a/self-host/bootstrap/ir_driver.ir +++ b/self-host/bootstrap/ir_driver.ir @@ -120807,161 +120807,164 @@ string m46s1192 "__for_len_" string m46s1193 "__for_idx_" string m46s1194 "next" string m46s1195 "assign" -string m46s1196 "catch" -string m46s1197 "closure_ref " -string m46s1198 "index out of bounds" -string m46s1199 " 0.0" -string m46s1200 "field_init" -string m46s1201 "__arg_" -string m46s1202 "__fnval_" -string m46s1203 "__spawn_" -string m46s1204 "__lambda_" -string m46s1205 "concat " -string m46s1206 "__last_call" -string m46s1207 "list_join_int" -string m46s1208 "__cl_field" -string m46s1209 "uint_to_string" -string m46s1210 "select" -string m46s1211 "sleep" -string m46s1212 "mod " -string m46s1213 "time" -string m46s1214 "pith_select_next_index" -string m46s1215 "select_offset" -string m46s1216 "select_deadline" -string m46s1217 "handler" -string m46s1218 "result_to_string" -string m46s1219 "legacy_result" -string m46s1220 "_m" -string m46s1221 "__tuple_dtor_" -string m46s1222 "p" -string m46s1223 "c" -string m46s1224 "u" -string m46s1225 "t" -string m46s1226 "l" -string m46s1227 "assert" -string m46s1228 "ord" -string m46s1229 "__callee" -string m46s1230 "file_path" -string m46s1231 "decode_file_path" -string m46s1232 "decode_file" -string m46s1233 "__idx_opt_result" -string m46s1234 "__list_index_i" -string m46s1235 "__list_index_result" -string m46s1236 "__reduce_i" -string m46s1237 "__reduce_acc" -string m46s1238 "__reduce_fn" -string m46s1239 "__filter_i" -string m46s1240 "__filter_fn" -string m46s1241 "__map_i" -string m46s1242 "__map_fn" -string m46s1243 "pith_assert_eq_fail" -string m46s1244 "pith_list_eq_scalar" -string m46s1245 "pith_list_eq_string" -string m46s1246 "bytes_eq" -string m46s1247 "binop " -string m46s1248 "pith_cstring_lte" -string m46s1249 "pith_cstring_lt" -string m46s1250 "chr" -string m46s1251 "byte_at" -string m46s1252 "\"" -string m46s1253 "\\" -string m46s1254 "r" -string m46s1255 "n" -string m46s1256 "__closure" -string m46s1257 "param __closure" -string m46s1258 "pith_closure_set_env_rc" -string m46s1259 "(" -string m46s1260 "show" -string m46s1261 "pith_display_map" -string m46s1262 "pith_display_list" -string m46s1263 " format_pad string 4 " -string m46s1264 "float_format" -string m46s1265 "^" -string m46s1266 ">" -string m46s1267 "<" -string m46s1268 "unwrap of none" -string m46s1269 "fix" -string m46s1270 "file" -string m46s1271 "message" -string m46s1272 "code" -string m46s1273 "severity" -string m46s1274 "Diagnostic" -string m46s1275 "current_column" -string m46s1276 "current_line" -string m46s1277 "struct " -string m46s1278 " 16 unknown err" -string m46s1279 " 8 unknown ok" -string m46s1280 "__tuple_cascade_" -string m46s1281 "00" -string m46s1282 "none" -string m46s1283 "is_none" -string m46s1284 "is_some" -string m46s1285 "trim_right" -string m46s1286 "trim_left" -string m46s1287 "interp" -string m46s1288 "func " -string m46s1289 " pith_struct_weak_retain void 1 " -string m46s1290 "IrSelectParts(" -string m46s1291 "probe_arms,itimeout_idx,idefault_idx" -string m46s1292 "probe_arms" -string m46s1293 "probe_arms: " -string m46s1294 "timeout_idx" -string m46s1295 ", timeout_idx: " -string m46s1296 "default_idx" -string m46s1297 ", default_idx: " -string m46s1298 "LambdaParts(" -string m46s1299 "params,ibody_idx,captures" -string m46s1300 "params" -string m46s1301 "params: " -string m46s1302 "captures" -string m46s1303 ", captures: " -string m46s1304 "parse_int failed" -string m46s1305 "file_open_read failed" -string m46s1306 "file_open_write failed" -string m46s1307 "file_open_append failed" -string m46s1308 "byte_buffer_write failed" -string m46s1309 "byte_buffer_write_string_utf8 failed" -string m46s1310 "byte_buffer_write_byte failed" -string m46s1311 "file_write failed" -string m46s1312 "file_write_bytes failed" -string m46s1313 "tcp_connect failed" -string m46s1314 "tcp_listen failed" -string m46s1315 "tcp_accept failed" -string m46s1316 "tcp_write failed" -string m46s1317 "tcp_write_bytes failed" -string m46s1318 "process_spawn failed" -string m46s1319 "process_spawn_argv failed" -string m46s1320 "process_output_argv failed" -string m46s1321 "process_write failed" -string m46s1322 "process_write_bytes failed" -string m46s1323 "crypto_x25519_keygen failed" -string m46s1324 "write_file failed" -string m46s1325 "append_file failed" -string m46s1326 "write_file_bytes failed" -string m46s1327 "append_file_bytes failed" -string m46s1328 "read_file failed" -string m46s1329 "exec_output failed" -string m46s1330 "dns_resolve failed" -string m46s1331 "bytes_to_string_utf8 failed" -string m46s1332 "bytes_substring_utf8 failed" -string m46s1333 "file_read failed" -string m46s1334 "tcp_read failed" -string m46s1335 "process_read failed" -string m46s1336 "process_read_err failed" -string m46s1337 "read_file_bytes failed" -string m46s1338 "b64_decode failed" -string m46s1339 "from_hex failed" -string m46s1340 "file_read_bytes failed" -string m46s1341 "tcp_read_bytes failed" -string m46s1342 "process_read_bytes failed" -string m46s1343 "process_read_err_bytes failed" -string m46s1344 "crypto_x25519_public_key failed" -string m46s1345 "crypto_x25519_shared_secret failed" -string m46s1346 "crypto_aes_128_gcm_seal failed" -string m46s1347 "crypto_aes_128_gcm_open failed" -string m46s1348 "crypto_chacha20_poly1305_seal failed" -string m46s1349 "crypto_chacha20_poly1305_open failed" -string m46s1350 "crypto_sign_rsa_pss_sha256_pkcs8 failed" +string m46s1196 "borrowed" +string m46s1197 "catch" +string m46s1198 "closure_ref " +string m46s1199 "index out of bounds" +string m46s1200 " 0.0" +string m46s1201 "field_init" +string m46s1202 "__arg_" +string m46s1203 "__fnval_" +string m46s1204 "__spawn_" +string m46s1205 "__lambda_" +string m46s1206 "concat " +string m46s1207 "__last_call" +string m46s1208 "list_join_int" +string m46s1209 "__cl_field" +string m46s1210 "uint_to_string" +string m46s1211 "select" +string m46s1212 "sleep" +string m46s1213 "mod " +string m46s1214 "time" +string m46s1215 "pith_select_next_index" +string m46s1216 "select_offset" +string m46s1217 "select_deadline" +string m46s1218 "handler" +string m46s1219 "result_to_string" +string m46s1220 "opaque" +string m46s1221 "owned" +string m46s1222 "legacy_result" +string m46s1223 "_m" +string m46s1224 "__tuple_dtor_" +string m46s1225 "p" +string m46s1226 "c" +string m46s1227 "u" +string m46s1228 "t" +string m46s1229 "l" +string m46s1230 "assert" +string m46s1231 "ord" +string m46s1232 "__callee" +string m46s1233 "file_path" +string m46s1234 "decode_file_path" +string m46s1235 "decode_file" +string m46s1236 "__idx_opt_result" +string m46s1237 "__list_index_i" +string m46s1238 "__list_index_result" +string m46s1239 "__reduce_i" +string m46s1240 "__reduce_acc" +string m46s1241 "__reduce_fn" +string m46s1242 "__filter_i" +string m46s1243 "__filter_fn" +string m46s1244 "__map_i" +string m46s1245 "__map_fn" +string m46s1246 "pith_assert_eq_fail" +string m46s1247 "pith_list_eq_scalar" +string m46s1248 "pith_list_eq_string" +string m46s1249 "bytes_eq" +string m46s1250 "binop " +string m46s1251 "pith_cstring_lte" +string m46s1252 "pith_cstring_lt" +string m46s1253 "chr" +string m46s1254 "byte_at" +string m46s1255 "\"" +string m46s1256 "\\" +string m46s1257 "r" +string m46s1258 "n" +string m46s1259 "__closure" +string m46s1260 "param __closure" +string m46s1261 "pith_closure_set_env_rc" +string m46s1262 "(" +string m46s1263 "show" +string m46s1264 "pith_display_map" +string m46s1265 "pith_display_list" +string m46s1266 " format_pad string 4 " +string m46s1267 "float_format" +string m46s1268 "^" +string m46s1269 ">" +string m46s1270 "<" +string m46s1271 "unwrap of none" +string m46s1272 "fix" +string m46s1273 "file" +string m46s1274 "message" +string m46s1275 "code" +string m46s1276 "severity" +string m46s1277 "Diagnostic" +string m46s1278 "current_column" +string m46s1279 "current_line" +string m46s1280 "struct " +string m46s1281 " 16 unknown err" +string m46s1282 " 8 unknown ok" +string m46s1283 "__tuple_cascade_" +string m46s1284 "00" +string m46s1285 "none" +string m46s1286 "is_none" +string m46s1287 "is_some" +string m46s1288 "trim_right" +string m46s1289 "trim_left" +string m46s1290 "interp" +string m46s1291 "func " +string m46s1292 " pith_struct_weak_retain void 1 " +string m46s1293 "IrSelectParts(" +string m46s1294 "probe_arms,itimeout_idx,idefault_idx" +string m46s1295 "probe_arms" +string m46s1296 "probe_arms: " +string m46s1297 "timeout_idx" +string m46s1298 ", timeout_idx: " +string m46s1299 "default_idx" +string m46s1300 ", default_idx: " +string m46s1301 "LambdaParts(" +string m46s1302 "params,ibody_idx,captures" +string m46s1303 "params" +string m46s1304 "params: " +string m46s1305 "captures" +string m46s1306 ", captures: " +string m46s1307 "parse_int failed" +string m46s1308 "file_open_read failed" +string m46s1309 "file_open_write failed" +string m46s1310 "file_open_append failed" +string m46s1311 "byte_buffer_write failed" +string m46s1312 "byte_buffer_write_string_utf8 failed" +string m46s1313 "byte_buffer_write_byte failed" +string m46s1314 "file_write failed" +string m46s1315 "file_write_bytes failed" +string m46s1316 "tcp_connect failed" +string m46s1317 "tcp_listen failed" +string m46s1318 "tcp_accept failed" +string m46s1319 "tcp_write failed" +string m46s1320 "tcp_write_bytes failed" +string m46s1321 "process_spawn failed" +string m46s1322 "process_spawn_argv failed" +string m46s1323 "process_output_argv failed" +string m46s1324 "process_write failed" +string m46s1325 "process_write_bytes failed" +string m46s1326 "crypto_x25519_keygen failed" +string m46s1327 "write_file failed" +string m46s1328 "append_file failed" +string m46s1329 "write_file_bytes failed" +string m46s1330 "append_file_bytes failed" +string m46s1331 "read_file failed" +string m46s1332 "exec_output failed" +string m46s1333 "dns_resolve failed" +string m46s1334 "bytes_to_string_utf8 failed" +string m46s1335 "bytes_substring_utf8 failed" +string m46s1336 "file_read failed" +string m46s1337 "tcp_read failed" +string m46s1338 "process_read failed" +string m46s1339 "process_read_err failed" +string m46s1340 "read_file_bytes failed" +string m46s1341 "b64_decode failed" +string m46s1342 "from_hex failed" +string m46s1343 "file_read_bytes failed" +string m46s1344 "tcp_read_bytes failed" +string m46s1345 "process_read_bytes failed" +string m46s1346 "process_read_err_bytes failed" +string m46s1347 "crypto_x25519_public_key failed" +string m46s1348 "crypto_x25519_shared_secret failed" +string m46s1349 "crypto_aes_128_gcm_seal failed" +string m46s1350 "crypto_aes_128_gcm_open failed" +string m46s1351 "crypto_chacha20_poly1305_seal failed" +string m46s1352 "crypto_chacha20_poly1305_open failed" +string m46s1353 "crypto_sign_rsa_pss_sha256_pkcs8 failed" struct Node kind value children line col struct Token kind value current_line current_column struct TypeInfo kind name fields field_types field_pub field_mut param_types return_type inner key_type value_type elements variants variant_types @@ -123469,7 +123472,7 @@ call 5 pith_struct_release void 1 2 store vnode 4 load 6 vnode field 7 6 0 string kind -strref 8 m46s1282 +strref 8 m46s1285 call 9 pith_cstring_eq bool 2 7 8 call 10 pith_cstring_release void 1 8 brif 9 L195 L196 @@ -123543,7 +123546,7 @@ call 63 int_to_string string 1 62 concat 64 61 63 call 65 pith_cstring_release void 1 61 call 66 pith_cstring_release void 1 63 -strref 67 m46s1289 +strref 67 m46s1292 concat 68 64 67 call 69 pith_cstring_release void 1 64 call 70 pith_cstring_release void 1 67 @@ -123615,7 +123618,7 @@ brif 29 L205 L206 label L205 load 30 actual field 31 30 8 string value -strref 32 m46s1259 +strref 32 m46s1262 concat 33 31 32 call 34 pith_cstring_release void 1 32 call 35 ir_builder_ir_str string 1 33 @@ -123780,7 +123783,7 @@ func ir_emitter_core_ir_emit_func_header 3 void param name param param_count param ret_type -strref 3 m46s1288 +strref 3 m46s1291 load 4 name concat 5 3 4 call 6 pith_cstring_release void 1 3 @@ -124412,7 +124415,7 @@ brif 74 L320 L319 label L319 load 76 node field 77 76 0 string kind -strref 78 m46s1287 +strref 78 m46s1290 call 79 pith_cstring_eq bool 2 77 78 call 80 pith_cstring_release void 1 78 store __or_70_319 79 @@ -125042,14 +125045,14 @@ store __or_52_417 52 iconst 53 0 store __or_53_417 53 load 54 mname -strref 55 m46s1286 +strref 55 m46s1289 call 56 pith_cstring_eq bool 2 54 55 call 57 pith_cstring_release void 1 55 store __or_53_417 56 brif 56 L418 L417 label L417 load 58 mname -strref 59 m46s1285 +strref 59 m46s1288 call 60 pith_cstring_eq bool 2 58 59 call 61 pith_cstring_release void 1 59 store __or_53_417 60 @@ -125528,7 +125531,7 @@ store __or_79_481 89 brif 89 L484 L483 label L483 load 90 f -strref 91 m46s1284 +strref 91 m46s1287 call 92 pith_cstring_eq bool 2 90 91 call 93 pith_cstring_release void 1 91 store __or_79_481 92 @@ -125538,7 +125541,7 @@ store __or_78_481 94 brif 94 L486 L485 label L485 load 95 f -strref 96 m46s1283 +strref 96 m46s1286 call 97 pith_cstring_eq bool 2 95 96 call 98 pith_cstring_release void 1 96 store __or_78_481 97 @@ -125671,7 +125674,7 @@ brif 181 L502 L501 label L501 load 183 a field 184 183 0 string kind -strref 185 m46s1282 +strref 185 m46s1285 call 186 pith_cstring_eq bool 2 184 185 call 187 pith_cstring_release void 1 185 store __or_177_501 186 @@ -125690,7 +125693,7 @@ brif 193 L504 L503 label L503 load 195 b field 196 195 0 string kind -strref 197 m46s1282 +strref 197 m46s1285 call 198 pith_cstring_eq bool 2 196 197 call 199 pith_cstring_release void 1 197 store __or_189_503 198 @@ -126323,7 +126326,7 @@ call 69 pith_cstring_release void 1 68 ret 61 label L588 label L586 -strref 70 m46s1281 +strref 70 m46s1284 load 71 info call 72 pith_struct_release void 1 71 load 73 ok_code @@ -126342,11 +126345,11 @@ ret 83 endfunc func ir_emitter_core_ir_tuple_cascade_helper_name 1 string param sig -strref 1 m46s1280 +strref 1 m46s1283 load 2 sig concat 3 1 2 call 4 pith_cstring_release void 1 1 -strref 5 m46s1220 +strref 5 m46s1223 concat 6 3 5 call 7 pith_cstring_release void 1 3 call 8 pith_cstring_release void 1 5 @@ -126737,7 +126740,7 @@ call 196 int_to_string string 1 195 concat 197 192 196 call 198 pith_cstring_release void 1 192 call 199 pith_cstring_release void 1 196 -strref 200 m46s1279 +strref 200 m46s1282 concat 201 197 200 call 202 pith_cstring_release void 1 197 call 203 pith_cstring_release void 1 200 @@ -126780,7 +126783,7 @@ call 233 int_to_string string 1 232 concat 234 229 233 call 235 pith_cstring_release void 1 229 call 236 pith_cstring_release void 1 233 -strref 237 m46s1278 +strref 237 m46s1281 concat 238 234 237 call 239 pith_cstring_release void 1 234 call 240 pith_cstring_release void 1 237 @@ -128930,7 +128933,7 @@ call 69 pith_list_push_value void 2 67 68 jmp L935 label L937 label L935 -strref 70 m46s1277 +strref 70 m46s1280 load 71 name concat 72 70 71 call 73 pith_cstring_release void 1 70 @@ -130654,7 +130657,7 @@ call 69 pith_list_push_value void 2 67 68 jmp L1130 label L1132 label L1130 -strref 70 m46s1277 +strref 70 m46s1280 load 71 sname concat 72 70 71 call 73 pith_cstring_release void 1 70 @@ -130873,7 +130876,7 @@ call 136 map_insert void 3 132 133 135 load 137 emit_decl brif 137 L1158 L1159 label L1158 -strref 138 m46s1277 +strref 138 m46s1280 load 139 sname concat 140 138 139 call 141 pith_cstring_release void 1 138 @@ -131331,10 +131334,10 @@ call 39 pith_cstring_release void 1 37 strref 40 m46s6 call 41 pith_list_push_value void 2 36 40 call 42 pith_cstring_release void 1 40 -strref 43 m46s1276 +strref 43 m46s1279 call 44 pith_list_push_value void 2 36 43 call 45 pith_cstring_release void 1 43 -strref 46 m46s1275 +strref 46 m46s1278 call 47 pith_list_push_value void 2 36 46 call 48 pith_cstring_release void 1 46 call 49 pith_list_new_cstr list 0 @@ -131441,18 +131444,18 @@ call 149 pith_list_push_value void 2 108 148 call 150 pith_cstring_release void 1 148 call 151 ir_emitter_core_ir_register_struct_layout void 3 64 65 108 call 152 pith_cstring_release void 1 64 -strref 153 m46s1274 +strref 153 m46s1277 call 154 pith_list_new_cstr list 0 -strref 155 m46s1273 +strref 155 m46s1276 call 156 pith_list_push_value void 2 154 155 call 157 pith_cstring_release void 1 155 -strref 158 m46s1272 +strref 158 m46s1275 call 159 pith_list_push_value void 2 154 158 call 160 pith_cstring_release void 1 158 -strref 161 m46s1271 +strref 161 m46s1274 call 162 pith_list_push_value void 2 154 161 call 163 pith_cstring_release void 1 161 -strref 164 m46s1270 +strref 164 m46s1273 call 165 pith_list_push_value void 2 154 164 call 166 pith_cstring_release void 1 164 strref 167 m46s10 @@ -131461,7 +131464,7 @@ call 169 pith_cstring_release void 1 167 strref 170 m46s12 call 171 pith_list_push_value void 2 154 170 call 172 pith_cstring_release void 1 170 -strref 173 m46s1269 +strref 173 m46s1272 call 174 pith_list_push_value void 2 154 173 call 175 pith_cstring_release void 1 173 call 176 pith_list_new_cstr list 0 @@ -135222,7 +135225,7 @@ strref 89 m46s82 call 90 ir_emitter_core_ir_emit_string_cleanup void 1 89 call 91 pith_cstring_release void 1 89 load 92 si -strref 93 m46s1268 +strref 93 m46s1271 call 94 ir_builder_ir_str string 1 93 call 95 pith_cstring_release void 1 93 call 96 pith_cstring_release void 1 92 @@ -135399,14 +135402,14 @@ store __or_8_1670 8 iconst 9 0 store __or_9_1670 9 load 10 c0 -strref 11 m46s1267 +strref 11 m46s1270 call 12 pith_cstring_eq bool 2 10 11 call 13 pith_cstring_release void 1 11 store __or_9_1670 12 brif 12 L1671 L1670 label L1670 load 14 c0 -strref 15 m46s1266 +strref 15 m46s1269 call 16 pith_cstring_eq bool 2 14 15 call 17 pith_cstring_release void 1 15 store __or_9_1670 16 @@ -135416,7 +135419,7 @@ store __or_8_1670 18 brif 18 L1673 L1672 label L1672 load 19 c0 -strref 20 m46s1265 +strref 20 m46s1268 call 21 pith_cstring_eq bool 2 19 20 call 22 pith_cstring_release void 1 20 store __or_8_1670 21 @@ -135582,7 +135585,7 @@ call 5 pith_cstring_char_at_strict string 2 3 4 call 6 pith_cstring_release void 1 2 store c0 5 load 7 c0 -strref 8 m46s1267 +strref 8 m46s1270 call 9 pith_cstring_eq bool 2 7 8 call 10 pith_cstring_release void 1 8 brif 9 L1694 L1695 @@ -135594,7 +135597,7 @@ ret 11 label L1695 label L1693 load 14 c0 -strref 15 m46s1265 +strref 15 m46s1268 call 16 pith_cstring_eq bool 2 14 15 call 17 pith_cstring_release void 1 15 brif 16 L1697 L1698 @@ -135631,14 +135634,14 @@ store __or_8_1702 8 iconst 9 0 store __or_9_1702 9 load 10 c0 -strref 11 m46s1267 +strref 11 m46s1270 call 12 pith_cstring_eq bool 2 10 11 call 13 pith_cstring_release void 1 11 store __or_9_1702 12 brif 12 L1703 L1702 label L1702 load 14 c0 -strref 15 m46s1266 +strref 15 m46s1269 call 16 pith_cstring_eq bool 2 14 15 call 17 pith_cstring_release void 1 15 store __or_9_1702 16 @@ -135648,7 +135651,7 @@ store __or_8_1702 18 brif 18 L1705 L1704 label L1704 load 19 c0 -strref 20 m46s1265 +strref 20 m46s1268 call 21 pith_cstring_eq bool 2 19 20 call 22 pith_cstring_release void 1 20 store __or_8_1702 21 @@ -135766,7 +135769,7 @@ call 49 pith_cstring_release void 1 45 call 50 ir_builder_ir_reg int 0 store str_r 50 load 51 str_r -strref 52 m46s1264 +strref 52 m46s1267 strref 53 m46s672 load 54 raw_r load 55 prec_r @@ -135862,7 +135865,7 @@ call 130 int_to_string string 1 129 concat 131 128 130 call 132 pith_cstring_release void 1 128 call 133 pith_cstring_release void 1 130 -strref 134 m46s1263 +strref 134 m46s1266 concat 135 131 134 call 136 pith_cstring_release void 1 131 call 137 pith_cstring_release void 1 134 @@ -136298,7 +136301,7 @@ call 45 pith_cstring_release void 1 42 call 46 ir_builder_ir_reg int 0 store r 46 load 47 r -strref 48 m46s1262 +strref 48 m46s1265 strref 49 m46s672 load 50 list_r load 51 kind_r @@ -136362,7 +136365,7 @@ call 40 pith_cstring_release void 1 36 call 41 ir_builder_ir_reg int 0 store r 41 load 42 r -strref 43 m46s1261 +strref 43 m46s1264 strref 44 m46s672 load 45 map_r load 46 kk_r @@ -136388,7 +136391,7 @@ iconst 5 0 store label 5 load 6 show_name load 7 struct_name -strref 8 m46s1260 +strref 8 m46s1263 call 9 ir_emitter_core_ir_lookup_impl_method_name string 2 7 8 call 10 pith_cstring_release void 1 8 call 11 pith_cstring_release void 1 6 @@ -136432,7 +136435,7 @@ concat 40 36 39 call 41 pith_cstring_release void 1 36 call 42 pith_cstring_release void 1 39 load 43 struct_name -strref 44 m46s1259 +strref 44 m46s1262 concat 45 43 44 call 46 pith_cstring_release void 1 44 call 47 ir_builder_ir_str string 1 45 @@ -136512,7 +136515,7 @@ call 105 ir_builder_ir_emit void 1 102 call 106 pith_cstring_release void 1 102 call 107 ir_builder_ir_reg int 0 store with_label 107 -strref 108 m46s1205 +strref 108 m46s1206 load 109 with_label call 110 int_to_string string 1 109 concat 111 108 110 @@ -136670,7 +136673,7 @@ label L1788 label L1780 call 241 ir_builder_ir_reg int 0 store next_acc 241 -strref 242 m46s1205 +strref 242 m46s1206 load 243 next_acc call 244 int_to_string string 1 243 concat 245 242 244 @@ -136763,7 +136766,7 @@ call 309 ir_builder_ir_emit void 1 306 call 310 pith_cstring_release void 1 306 call 311 ir_builder_ir_reg int 0 store out_r 311 -strref 312 m46s1205 +strref 312 m46s1206 load 313 out_r call 314 int_to_string string 1 313 concat 315 312 314 @@ -136985,7 +136988,7 @@ call 76 pith_cstring_release void 1 73 call 77 ir_builder_ir_emit void 1 74 call 78 pith_cstring_release void 1 74 call 79 ir_builder_ir_reg int 0 -strref 80 m46s1258 +strref 80 m46s1261 strref 81 m46s823 iconst 82 4 strref 83 m46s333 @@ -137053,11 +137056,11 @@ func ir_emitter_core_ir_emit_lambda_hidden_param 0 void call 0 ir_builder_ir_reg int 0 store closure_r 0 load 1 ir_builder_ir_var_regs -strref 2 m46s1256 +strref 2 m46s1259 load 3 closure_r call 4 map_insert void 3 1 2 3 call 5 pith_cstring_release void 1 2 -strref 6 m46s1257 +strref 6 m46s1260 call 7 ir_builder_ir_emit void 1 6 call 8 pith_cstring_release void 1 6 iconst 9 0 @@ -137066,7 +137069,7 @@ endfunc func ir_emitter_core_ir_emit_lambda_capture_loads 1 void param captures load 1 ir_builder_ir_var_regs -strref 2 m46s1256 +strref 2 m46s1259 call 3 map_get_strict int 2 1 2 store closure_r 3 load 4 captures @@ -137280,7 +137283,7 @@ label L1836 call 56 ir_builder_ir_reg int 0 store eq_r 56 load 57 eq_r -strref 58 m46s1246 +strref 58 m46s1249 strref 59 m46s670 load 60 left_r load 61 right_r @@ -137800,7 +137803,7 @@ call 24 pith_cstring_char_at_strict string 2 22 23 call 25 pith_cstring_release void 1 21 store c 24 load 26 c -strref 27 m46s1253 +strref 27 m46s1256 call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 brif 28 L1902 L1903 @@ -137849,7 +137852,7 @@ call 56 pith_cstring_char_at_strict string 2 54 55 call 57 pith_cstring_release void 1 53 store e 56 load 58 e -strref 59 m46s1255 +strref 59 m46s1258 call 60 pith_cstring_eq bool 2 58 59 call 61 pith_cstring_release void 1 59 brif 60 L1910 L1911 @@ -137863,7 +137866,7 @@ ret 62 label L1911 label L1909 load 67 e -strref 68 m46s1225 +strref 68 m46s1228 call 69 pith_cstring_eq bool 2 67 68 call 70 pith_cstring_release void 1 68 brif 69 L1913 L1914 @@ -137877,7 +137880,7 @@ ret 71 label L1914 label L1912 load 76 e -strref 77 m46s1254 +strref 77 m46s1257 call 78 pith_cstring_eq bool 2 76 77 call 79 pith_cstring_release void 1 77 brif 78 L1916 L1917 @@ -137905,7 +137908,7 @@ ret 89 label L1920 label L1918 load 94 e -strref 95 m46s1253 +strref 95 m46s1256 call 96 pith_cstring_eq bool 2 94 95 call 97 pith_cstring_release void 1 95 brif 96 L1922 L1923 @@ -137919,7 +137922,7 @@ ret 98 label L1923 label L1921 load 103 e -strref 104 m46s1252 +strref 104 m46s1255 call 105 pith_cstring_eq bool 2 103 104 call 106 pith_cstring_release void 1 104 brif 105 L1925 L1926 @@ -138016,7 +138019,7 @@ store idx_r 31 call 32 ir_builder_ir_reg int 0 store r 32 load 33 r -strref 34 m46s1251 +strref 34 m46s1254 strref 35 m46s668 load 36 obj_r load 37 idx_r @@ -138178,7 +138181,7 @@ brif 147 L1956 L1957 label L1956 load 149 callee field 150 149 8 string value -strref 151 m46s1250 +strref 151 m46s1253 call 152 pith_cstring_eq bool 2 150 151 call 153 pith_cstring_release void 1 151 store __and_143_1956 152 @@ -138388,7 +138391,7 @@ brif 89 L1977 L1978 label L1977 load 91 callee field 92 91 8 string value -strref 93 m46s1250 +strref 93 m46s1253 call 94 pith_cstring_eq bool 2 92 93 call 95 pith_cstring_release void 1 93 store __and_85_1977 94 @@ -139659,7 +139662,7 @@ label L2095 load 82 __and_76_2094 brif 82 L2092 L2093 label L2092 -strref 83 m46s1205 +strref 83 m46s1206 load 84 r call 85 int_to_string string 1 84 concat 86 83 85 @@ -139738,7 +139741,7 @@ load 150 is_bytes_op brif 150 L2101 L2102 label L2101 load 151 r -strref 152 m46s1246 +strref 152 m46s1249 strref 153 m46s670 load 154 left_r load 155 right_r @@ -139914,7 +139917,7 @@ call 288 pith_cstring_release void 1 286 brif 287 L2122 L2123 label L2122 load 289 r -strref 290 m46s1249 +strref 290 m46s1252 strref 291 m46s670 load 292 left_r load 293 right_r @@ -139930,7 +139933,7 @@ call 300 pith_cstring_release void 1 298 brif 299 L2124 L2125 label L2124 load 301 r -strref 302 m46s1248 +strref 302 m46s1251 strref 303 m46s670 load 304 left_r load 305 right_r @@ -139946,7 +139949,7 @@ call 312 pith_cstring_release void 1 310 brif 311 L2126 L2127 label L2126 load 313 r -strref 314 m46s1249 +strref 314 m46s1252 strref 315 m46s670 load 316 right_r load 317 left_r @@ -139956,7 +139959,7 @@ call 320 pith_cstring_release void 1 315 jmp L2121 label L2127 load 321 r -strref 322 m46s1248 +strref 322 m46s1251 strref 323 m46s670 load 324 right_r load 325 left_r @@ -139988,7 +139991,7 @@ call 347 ir_operator_helpers_ir_emit_simple_binary void 4 343 344 345 346 label L2116 jmp L2113 label L2115 -strref 348 m46s1247 +strref 348 m46s1250 load 349 r call 350 int_to_string string 1 349 concat 351 348 350 @@ -140207,7 +140210,7 @@ call 34 ir_call_emit_ir_emit_label void 1 33 call 35 ir_builder_ir_reg int 0 store assert_r 35 load 36 assert_r -strref 37 m46s1227 +strref 37 m46s1230 strref 38 m46s817 load 39 arg_regs iconst 40 0 @@ -140502,7 +140505,7 @@ call 36 pith_cstring_release void 1 34 brif 35 L2187 L2188 label L2187 load 37 cmp_r -strref 38 m46s1246 +strref 38 m46s1249 strref 39 m46s670 load 40 arg_regs iconst 41 0 @@ -140522,7 +140525,7 @@ call 52 pith_cstring_release void 1 50 brif 51 L2189 L2190 label L2189 load 53 cmp_r -strref 54 m46s1245 +strref 54 m46s1248 strref 55 m46s670 load 56 arg_regs iconst 57 0 @@ -140542,7 +140545,7 @@ call 68 pith_cstring_release void 1 66 brif 67 L2191 L2192 label L2191 load 69 cmp_r -strref 70 m46s1244 +strref 70 m46s1247 strref 71 m46s670 load 72 arg_regs iconst 73 0 @@ -140621,7 +140624,7 @@ call 139 pith_cstring_release void 1 135 call 140 ir_builder_ir_reg int 0 store fail_r 140 load 141 fail_r -strref 142 m46s1243 +strref 142 m46s1246 strref 143 m46s817 load 144 arg_regs iconst 145 0 @@ -140926,7 +140929,7 @@ load 9 mapper_idx call 10 ir_emitter_core_ir_expr int 1 9 store mapper_r 10 load 11 mapper_name -strref 12 m46s1242 +strref 12 m46s1245 call 13 ir_emitter_core_ir_temp_name string 1 12 call 14 pith_cstring_release void 1 12 call 15 pith_cstring_release void 1 11 @@ -140982,7 +140985,7 @@ load 54 elem_kind call 55 ir_alias_registry_ir_retkind string 1 54 load 56 mapped_kind call 57 ir_alias_registry_ir_retkind string 1 56 -strref 58 m46s1241 +strref 58 m46s1244 call 59 ir_emitter_core_ir_temp_name string 1 58 call 60 pith_cstring_release void 1 58 call 61 ir_list_helpers_ir_emit_list_map_loop int 6 50 51 53 55 57 59 @@ -141059,7 +141062,7 @@ load 8 keep_idx call 9 ir_emitter_core_ir_expr int 1 8 store keep_r 9 load 10 keep_name -strref 11 m46s1240 +strref 11 m46s1243 call 12 ir_emitter_core_ir_temp_name string 1 11 call 13 pith_cstring_release void 1 11 call 14 pith_cstring_release void 1 10 @@ -141122,7 +141125,7 @@ load 55 result_kind call 56 ir_alias_registry_ir_retkind string 1 55 load 57 elem_kind call 58 ir_alias_registry_ir_retkind string 1 57 -strref 59 m46s1239 +strref 59 m46s1242 call 60 ir_emitter_core_ir_temp_name string 1 59 call 61 pith_cstring_release void 1 59 call 62 ir_list_helpers_ir_emit_list_filter_loop int 5 53 54 56 58 60 @@ -141205,13 +141208,13 @@ load 12 reducer_idx call 13 ir_emitter_core_ir_expr int 1 12 store reducer_r 13 load 14 reducer_name -strref 15 m46s1238 +strref 15 m46s1241 call 16 ir_emitter_core_ir_temp_name string 1 15 call 17 pith_cstring_release void 1 15 call 18 pith_cstring_release void 1 14 store reducer_name 16 load 19 acc_name -strref 20 m46s1237 +strref 20 m46s1240 call 21 ir_emitter_core_ir_temp_name string 1 20 call 22 pith_cstring_release void 1 20 call 23 pith_cstring_release void 1 19 @@ -141290,7 +141293,7 @@ load 80 elem_kind call 81 ir_alias_registry_ir_retkind string 1 80 load 82 result_kind call 83 ir_alias_registry_ir_retkind string 1 82 -strref 84 m46s1236 +strref 84 m46s1239 call 85 ir_emitter_core_ir_temp_name string 1 84 call 86 pith_cstring_release void 1 84 call 87 ir_list_helpers_ir_emit_list_reduce_loop int 6 77 78 79 81 83 85 @@ -141433,10 +141436,10 @@ load 33 list_r load 34 target_r load 35 elem_kind call 36 ir_alias_registry_ir_retkind string 1 35 -strref 37 m46s1235 +strref 37 m46s1238 call 38 ir_emitter_core_ir_temp_name string 1 37 call 39 pith_cstring_release void 1 37 -strref 40 m46s1234 +strref 40 m46s1237 call 41 ir_emitter_core_ir_temp_name string 1 40 call 42 pith_cstring_release void 1 40 call 43 ir_list_helpers_ir_emit_list_index_search_loop int 5 33 34 36 38 41 @@ -141529,7 +141532,7 @@ call 52 ir_builder_ir_label string 0 call 53 pith_cstring_release void 1 51 store merge_l 52 load 54 result_name -strref 55 m46s1233 +strref 55 m46s1236 call 56 ir_emitter_core_ir_temp_name string 1 55 call 57 pith_cstring_release void 1 55 call 58 pith_cstring_release void 1 54 @@ -141952,15 +141955,15 @@ label L2282 iconst 92 0 store __or_92_2290 92 load 93 callee_idx -strref 94 m46s1232 +strref 94 m46s1235 call 95 ir_alias_registry_ir_is_json_decode_callee bool 2 93 94 call 96 pith_cstring_release void 1 94 store __or_92_2290 95 brif 95 L2291 L2290 label L2290 load 97 callee_idx -strref 98 m46s1232 -strref 99 m46s1230 +strref 98 m46s1235 +strref 99 m46s1233 call 100 ir_emitter_core_ir_is_local_generic_callee bool 3 97 98 99 call 101 pith_cstring_release void 1 98 call 102 pith_cstring_release void 1 99 @@ -141981,15 +141984,15 @@ label L2287 iconst 110 0 store __or_110_2295 110 load 111 callee_idx -strref 112 m46s1231 +strref 112 m46s1234 call 113 ir_alias_registry_ir_is_json_decode_callee bool 2 111 112 call 114 pith_cstring_release void 1 112 store __or_110_2295 113 brif 113 L2296 L2295 label L2295 load 115 callee_idx -strref 116 m46s1231 -strref 117 m46s1230 +strref 116 m46s1234 +strref 117 m46s1233 call 118 ir_emitter_core_ir_is_local_generic_callee bool 3 115 116 117 call 119 pith_cstring_release void 1 116 call 120 pith_cstring_release void 1 117 @@ -142125,15 +142128,15 @@ label L2313 iconst 70 0 store __or_70_2319 70 load 71 callee_idx -strref 72 m46s1232 +strref 72 m46s1235 call 73 ir_alias_registry_ir_is_toml_decode_callee bool 2 71 72 call 74 pith_cstring_release void 1 72 store __or_70_2319 73 brif 73 L2320 L2319 label L2319 load 75 callee_idx -strref 76 m46s1232 -strref 77 m46s1230 +strref 76 m46s1235 +strref 77 m46s1233 call 78 ir_emitter_core_ir_is_local_generic_callee bool 3 75 76 77 call 79 pith_cstring_release void 1 76 call 80 pith_cstring_release void 1 77 @@ -142154,15 +142157,15 @@ label L2316 iconst 88 0 store __or_88_2324 88 load 89 callee_idx -strref 90 m46s1231 +strref 90 m46s1234 call 91 ir_alias_registry_ir_is_toml_decode_callee bool 2 89 90 call 92 pith_cstring_release void 1 90 store __or_88_2324 91 brif 91 L2325 L2324 label L2324 load 93 callee_idx -strref 94 m46s1231 -strref 95 m46s1230 +strref 94 m46s1234 +strref 95 m46s1233 call 96 ir_emitter_core_ir_is_local_generic_callee bool 3 93 94 95 call 97 pith_cstring_release void 1 94 call 98 pith_cstring_release void 1 95 @@ -143707,7 +143710,7 @@ load 6 callee_idx call 7 ir_emitter_core_ir_expr int 1 6 store callee_r 7 load 8 tmp -strref 9 m46s1229 +strref 9 m46s1232 call 10 ir_builder_ir_new_temp_name string 1 9 call 11 pith_cstring_release void 1 9 call 12 pith_cstring_release void 1 8 @@ -143979,7 +143982,7 @@ iconst 109 0 store __and_109_2519 109 load 110 callee field 111 110 0 string name -strref 112 m46s1228 +strref 112 m46s1231 call 113 pith_cstring_eq bool 2 111 112 call 114 pith_cstring_release void 1 112 store __and_109_2519 113 @@ -144137,7 +144140,7 @@ brif 220 L2538 L2539 label L2538 load 221 callee field 222 221 0 string name -strref 223 m46s1227 +strref 223 m46s1230 call 224 pith_cstring_eq bool 2 222 223 call 225 pith_cstring_release void 1 223 store __and_219_2538 224 @@ -145141,7 +145144,7 @@ call 8 pith_cstring_eq bool 2 6 7 call 9 pith_cstring_release void 1 7 brif 8 L2665 L2666 label L2665 -strref 10 m46s1226 +strref 10 m46s1229 ret 10 label L2666 label L2664 @@ -145161,7 +145164,7 @@ call 18 pith_cstring_eq bool 2 16 17 call 19 pith_cstring_release void 1 17 brif 18 L2671 L2672 label L2671 -strref 20 m46s1225 +strref 20 m46s1228 ret 20 label L2672 label L2670 @@ -145181,7 +145184,7 @@ call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 brif 28 L2677 L2678 label L2677 -strref 30 m46s1224 +strref 30 m46s1227 ret 30 label L2678 label L2676 @@ -145191,7 +145194,7 @@ call 33 pith_cstring_eq bool 2 31 32 call 34 pith_cstring_release void 1 32 brif 33 L2680 L2681 label L2680 -strref 35 m46s1223 +strref 35 m46s1226 ret 35 label L2681 label L2679 @@ -145201,7 +145204,7 @@ call 38 pith_cstring_eq bool 2 36 37 call 39 pith_cstring_release void 1 37 brif 38 L2683 L2684 label L2683 -strref 40 m46s1222 +strref 40 m46s1225 ret 40 label L2684 label L2682 @@ -145223,7 +145226,7 @@ ret 5 label L2687 label L2685 load 6 code -strref 7 m46s1226 +strref 7 m46s1229 call 8 pith_cstring_eq bool 2 6 7 call 9 pith_cstring_release void 1 7 brif 8 L2689 L2690 @@ -145243,7 +145246,7 @@ ret 15 label L2693 label L2691 load 16 code -strref 17 m46s1225 +strref 17 m46s1228 call 18 pith_cstring_eq bool 2 16 17 call 19 pith_cstring_release void 1 17 brif 18 L2695 L2696 @@ -145263,7 +145266,7 @@ ret 25 label L2699 label L2697 load 26 code -strref 27 m46s1224 +strref 27 m46s1227 call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 brif 28 L2701 L2702 @@ -145273,7 +145276,7 @@ ret 30 label L2702 label L2700 load 31 code -strref 32 m46s1223 +strref 32 m46s1226 call 33 pith_cstring_eq bool 2 31 32 call 34 pith_cstring_release void 1 32 brif 33 L2704 L2705 @@ -145283,7 +145286,7 @@ ret 35 label L2705 label L2703 load 36 code -strref 37 m46s1222 +strref 37 m46s1225 call 38 pith_cstring_eq bool 2 36 37 call 39 pith_cstring_release void 1 37 brif 38 L2707 L2708 @@ -145349,11 +145352,11 @@ ret 31 endfunc func ir_emitter_core_ir_tuple_dtor_name 1 string param sig -strref 1 m46s1221 +strref 1 m46s1224 load 2 sig concat 3 1 2 call 4 pith_cstring_release void 1 1 -strref 5 m46s1220 +strref 5 m46s1223 concat 6 3 5 call 7 pith_cstring_release void 1 3 call 8 pith_cstring_release void 1 5 @@ -146421,7 +146424,7 @@ store err_l 5 iconst 6 0 store merge_l 6 load 7 temp_name -strref 8 m46s1219 +strref 8 m46s1222 call 9 ir_builder_ir_new_temp_name string 1 8 call 10 pith_cstring_release void 1 8 call 11 pith_cstring_release void 1 7 @@ -146445,7 +146448,7 @@ call 24 int_to_string string 1 23 concat 25 22 24 call 26 pith_cstring_release void 1 22 call 27 pith_cstring_release void 1 24 -strref 28 m46s1199 +strref 28 m46s1200 concat 29 25 28 call 30 pith_cstring_release void 1 25 call 31 pith_cstring_release void 1 28 @@ -146817,182 +146820,361 @@ call 46 pith_struct_release void 1 45 iconst 47 0 ret 47 endfunc -func ir_emitter_core_ir_emit_result_unwrap_or 1 int -param node +func ir_emitter_core_ir_extraction_operand_class 1 string +param idx iconst 1 0 -store temp_name 1 +store node 1 +load 2 node +load 3 idx +call 4 ast_get_node struct:Node 1 3 +call 5 pith_struct_release void 1 2 +store node 4 +iconst 6 0 +store __and_6_2841 6 +load 7 node +field 8 7 0 string kind +strref 9 m46s509 +call 10 pith_cstring_eq bool 2 8 9 +call 11 pith_cstring_release void 1 9 +store __and_6_2841 10 +brif 10 L2841 L2842 +label L2841 +load 12 node +field 13 12 16 list children +call 14 pith_list_len int 1 13 +iconst 15 0 +gt 16 14 15 +store __and_6_2841 16 +label L2842 +load 17 __and_6_2841 +brif 17 L2839 L2840 +label L2839 +load 18 node +field 19 18 16 list children +iconst 20 0 +call 21 pith_list_get_value_strict int 2 19 20 +call 22 ir_emitter_core_ir_extraction_operand_class string 1 21 +load 23 node +call 24 pith_struct_release void 1 23 +ret 22 +label L2840 +label L2838 +iconst 25 0 +store __or_25_2846 25 +iconst 26 0 +store __or_26_2846 26 +load 27 node +field 28 27 0 string kind +strref 29 m46s44 +call 30 pith_cstring_eq bool 2 28 29 +call 31 pith_cstring_release void 1 29 +store __or_26_2846 30 +brif 30 L2847 L2846 +label L2846 +load 32 node +field 33 32 0 string kind +strref 34 m46s129 +call 35 pith_cstring_eq bool 2 33 34 +call 36 pith_cstring_release void 1 34 +store __or_26_2846 35 +label L2847 +load 37 __or_26_2846 +store __or_25_2846 37 +brif 37 L2849 L2848 +label L2848 +load 38 node +field 39 38 0 string kind +strref 40 m46s495 +call 41 pith_cstring_eq bool 2 39 40 +call 42 pith_cstring_release void 1 40 +store __or_25_2846 41 +label L2849 +load 43 __or_25_2846 +brif 43 L2844 L2845 +label L2844 +strref 44 m46s1221 +load 45 node +call 46 pith_struct_release void 1 45 +ret 44 +label L2845 +label L2843 +iconst 47 0 +store __or_47_2853 47 +iconst 48 0 +store __or_48_2853 48 +load 49 node +field 50 49 0 string kind +strref 51 m46s37 +call 52 pith_cstring_eq bool 2 50 51 +call 53 pith_cstring_release void 1 51 +store __or_48_2853 52 +brif 52 L2854 L2853 +label L2853 +load 54 node +field 55 54 0 string kind +strref 56 m46s36 +call 57 pith_cstring_eq bool 2 55 56 +call 58 pith_cstring_release void 1 56 +store __or_48_2853 57 +label L2854 +load 59 __or_48_2853 +store __or_47_2853 59 +brif 59 L2856 L2855 +label L2855 +load 60 node +field 61 60 0 string kind +strref 62 m46s35 +call 63 pith_cstring_eq bool 2 61 62 +call 64 pith_cstring_release void 1 62 +store __or_47_2853 63 +label L2856 +load 65 __or_47_2853 +brif 65 L2851 L2852 +label L2851 +strref 66 m46s1196 +load 67 node +call 68 pith_struct_release void 1 67 +ret 66 +label L2852 +label L2850 +strref 69 m46s1220 +load 70 node +call 71 pith_struct_release void 1 70 +ret 69 +load 72 node +call 73 pith_struct_release void 1 72 +iconst 74 0 +ret 74 +endfunc +func ir_emitter_core_ir_emit_result_unwrap_or 2 int +param idx +param node iconst 2 0 -store ok_l 2 +store operand_class 2 iconst 3 0 -store fallback_l 3 +store temp_name 3 iconst 4 0 -store merge_l 4 -load 5 node -field 6 5 16 list children -iconst 7 0 -call 8 pith_list_get_value_strict int 2 6 7 -call 9 ir_emitter_core_ir_expr int 1 8 -store recv_r 9 -load 10 node -field 11 10 16 list children -iconst 12 0 -call 13 pith_list_get_value_strict int 2 11 12 -call 14 checker_c_get_expr_type int 1 13 -store recv_tid 14 -load 15 recv_r -strref 16 m46s184 -call 17 ir_result_abi_ir_emit_result_flag_field int 2 15 16 -call 18 pith_cstring_release void 1 16 -store cond_r 17 -load 19 temp_name -strref 20 m46s285 -call 21 ir_builder_ir_new_temp_name string 1 20 -call 22 pith_cstring_release void 1 20 -call 23 pith_cstring_release void 1 19 -store temp_name 21 -load 24 node -iconst 25 0 -call 26 ir_emitter_core_ir_method_call_arg_expr int 2 24 25 -store arg_idx 26 -load 27 ok_l -call 28 ir_builder_ir_label string 0 -call 29 pith_cstring_release void 1 27 -store ok_l 28 -load 30 fallback_l -call 31 ir_builder_ir_label string 0 -call 32 pith_cstring_release void 1 30 -store fallback_l 31 -load 33 merge_l -call 34 ir_builder_ir_label string 0 -call 35 pith_cstring_release void 1 33 -store merge_l 34 -strref 36 m46s829 -load 37 cond_r -call 38 int_to_string string 1 37 -concat 39 36 38 -call 40 pith_cstring_release void 1 36 -call 41 pith_cstring_release void 1 38 -strref 42 m46s333 -concat 43 39 42 -call 44 pith_cstring_release void 1 39 -call 45 pith_cstring_release void 1 42 -load 46 ok_l -concat 47 43 46 -call 48 pith_cstring_release void 1 43 -strref 49 m46s333 -concat 50 47 49 -call 51 pith_cstring_release void 1 47 -call 52 pith_cstring_release void 1 49 -load 53 fallback_l -concat 54 50 53 -call 55 pith_cstring_release void 1 50 -call 56 ir_builder_ir_emit void 1 54 -call 57 pith_cstring_release void 1 54 -load 58 ok_l -call 59 ir_call_emit_ir_emit_label void 1 58 -load 60 recv_r -load 61 recv_tid -strref 62 m46s182 -call 63 ir_result_abi_ir_emit_result_value_field int 3 60 61 62 -call 64 pith_cstring_release void 1 62 -store ok_value_r 63 -call 65 ir_builder_ir_reg int 0 -strref 66 m46s893 -strref 67 m46s823 -load 68 recv_r -call 69 ir_call_emit_ir_emit_call1 void 4 65 66 67 68 -call 70 pith_cstring_release void 1 66 -call 71 pith_cstring_release void 1 67 -strref 72 m46s825 -load 73 temp_name -concat 74 72 73 -call 75 pith_cstring_release void 1 72 -strref 76 m46s333 -concat 77 74 76 -call 78 pith_cstring_release void 1 74 -call 79 pith_cstring_release void 1 76 -load 80 ok_value_r -call 81 int_to_string string 1 80 -concat 82 77 81 -call 83 pith_cstring_release void 1 77 -call 84 pith_cstring_release void 1 81 -call 85 ir_builder_ir_emit void 1 82 -call 86 pith_cstring_release void 1 82 -strref 87 m46s828 -load 88 merge_l -concat 89 87 88 +store ok_l 4 +iconst 5 0 +store fallback_l 5 +iconst 6 0 +store merge_l 6 +load 7 node +field 8 7 16 list children +iconst 9 0 +call 10 pith_list_get_value_strict int 2 8 9 +call 11 ir_emitter_core_ir_expr int 1 10 +store recv_r 11 +load 12 node +field 13 12 16 list children +iconst 14 0 +call 15 pith_list_get_value_strict int 2 13 14 +call 16 checker_c_get_expr_type int 1 15 +store recv_tid 16 +load 17 operand_class +load 18 node +field 19 18 16 list children +iconst 20 0 +call 21 pith_list_get_value_strict int 2 19 20 +call 22 ir_emitter_core_ir_extraction_operand_class string 1 21 +call 23 pith_cstring_release void 1 17 +store operand_class 22 +load 24 recv_r +strref 25 m46s184 +call 26 ir_result_abi_ir_emit_result_flag_field int 2 24 25 +call 27 pith_cstring_release void 1 25 +store cond_r 26 +load 28 temp_name +strref 29 m46s285 +call 30 ir_builder_ir_new_temp_name string 1 29 +call 31 pith_cstring_release void 1 29 +call 32 pith_cstring_release void 1 28 +store temp_name 30 +load 33 node +iconst 34 0 +call 35 ir_emitter_core_ir_method_call_arg_expr int 2 33 34 +store arg_idx 35 +load 36 ok_l +call 37 ir_builder_ir_label string 0 +call 38 pith_cstring_release void 1 36 +store ok_l 37 +load 39 fallback_l +call 40 ir_builder_ir_label string 0 +call 41 pith_cstring_release void 1 39 +store fallback_l 40 +load 42 merge_l +call 43 ir_builder_ir_label string 0 +call 44 pith_cstring_release void 1 42 +store merge_l 43 +strref 45 m46s829 +load 46 cond_r +call 47 int_to_string string 1 46 +concat 48 45 47 +call 49 pith_cstring_release void 1 45 +call 50 pith_cstring_release void 1 47 +strref 51 m46s333 +concat 52 48 51 +call 53 pith_cstring_release void 1 48 +call 54 pith_cstring_release void 1 51 +load 55 ok_l +concat 56 52 55 +call 57 pith_cstring_release void 1 52 +strref 58 m46s333 +concat 59 56 58 +call 60 pith_cstring_release void 1 56 +call 61 pith_cstring_release void 1 58 +load 62 fallback_l +concat 63 59 62 +call 64 pith_cstring_release void 1 59 +call 65 ir_builder_ir_emit void 1 63 +call 66 pith_cstring_release void 1 63 +load 67 ok_l +call 68 ir_call_emit_ir_emit_label void 1 67 +load 69 recv_r +load 70 recv_tid +strref 71 m46s182 +call 72 ir_result_abi_ir_emit_result_value_field int 3 69 70 71 +call 73 pith_cstring_release void 1 71 +store ok_value_r 72 +load 74 operand_class +strref 75 m46s1196 +call 76 pith_cstring_eq bool 2 74 75 +call 77 pith_cstring_release void 1 75 +brif 76 L2858 L2859 +label L2858 +load 78 idx +call 79 ir_emitter_core_ir_string_expr_is_borrowed bool 1 78 +iconst 81 1 +sub 80 81 79 +brif 80 L2861 L2862 +label L2861 +load 82 ok_value_r +load 83 recv_tid +strref 84 m46s182 +call 85 ir_result_abi_ir_result_field_kind string 2 83 84 +call 86 pith_cstring_release void 1 84 +call 87 ir_struct_registry_ir_rc_kind string 1 85 +call 88 pith_cstring_release void 1 85 +call 89 ir_ownership_ir_rc_retain_reg void 2 82 87 call 90 pith_cstring_release void 1 87 -call 91 ir_builder_ir_emit void 1 89 -call 92 pith_cstring_release void 1 89 -load 93 fallback_l -call 94 ir_call_emit_ir_emit_label void 1 93 -load 95 arg_idx -call 96 ir_emitter_core_ir_expr int 1 95 -store fallback_r 96 -load 97 recv_r -load 98 recv_tid -call 99 ir_emitter_core_ir_emit_release_result_error void 2 97 98 -call 100 ir_builder_ir_reg int 0 -strref 101 m46s893 -strref 102 m46s823 -load 103 recv_r -call 104 ir_call_emit_ir_emit_call1 void 4 100 101 102 103 -call 105 pith_cstring_release void 1 101 -call 106 pith_cstring_release void 1 102 -strref 107 m46s825 -load 108 temp_name -concat 109 107 108 +jmp L2860 +label L2862 +label L2860 +jmp L2857 +label L2859 +call 91 ir_builder_ir_reg int 0 +strref 92 m46s893 +strref 93 m46s823 +load 94 recv_r +call 95 ir_call_emit_ir_emit_call1 void 4 91 92 93 94 +call 96 pith_cstring_release void 1 92 +call 97 pith_cstring_release void 1 93 +label L2857 +strref 98 m46s825 +load 99 temp_name +concat 100 98 99 +call 101 pith_cstring_release void 1 98 +strref 102 m46s333 +concat 103 100 102 +call 104 pith_cstring_release void 1 100 +call 105 pith_cstring_release void 1 102 +load 106 ok_value_r +call 107 int_to_string string 1 106 +concat 108 103 107 +call 109 pith_cstring_release void 1 103 call 110 pith_cstring_release void 1 107 -strref 111 m46s333 -concat 112 109 111 -call 113 pith_cstring_release void 1 109 -call 114 pith_cstring_release void 1 111 -load 115 fallback_r -call 116 int_to_string string 1 115 -concat 117 112 116 -call 118 pith_cstring_release void 1 112 -call 119 pith_cstring_release void 1 116 -call 120 ir_builder_ir_emit void 1 117 -call 121 pith_cstring_release void 1 117 -load 122 merge_l -call 123 ir_call_emit_ir_emit_label void 1 122 -call 124 ir_builder_ir_reg int 0 -store r 124 -strref 125 m46s824 -load 126 r -call 127 int_to_string string 1 126 -concat 128 125 127 -call 129 pith_cstring_release void 1 125 -call 130 pith_cstring_release void 1 127 -strref 131 m46s333 -concat 132 128 131 -call 133 pith_cstring_release void 1 128 -call 134 pith_cstring_release void 1 131 -load 135 temp_name -concat 136 132 135 -call 137 pith_cstring_release void 1 132 -call 138 ir_builder_ir_emit void 1 136 -call 139 pith_cstring_release void 1 136 -load 140 r -load 141 temp_name -call 142 pith_cstring_release void 1 141 -load 143 ok_l -call 144 pith_cstring_release void 1 143 -load 145 fallback_l -call 146 pith_cstring_release void 1 145 -load 147 merge_l -call 148 pith_cstring_release void 1 147 -ret 140 -load 149 temp_name -call 150 pith_cstring_release void 1 149 -load 151 ok_l -call 152 pith_cstring_release void 1 151 -load 153 fallback_l -call 154 pith_cstring_release void 1 153 -load 155 merge_l -call 156 pith_cstring_release void 1 155 -iconst 157 0 -ret 157 +call 111 ir_builder_ir_emit void 1 108 +call 112 pith_cstring_release void 1 108 +strref 113 m46s828 +load 114 merge_l +concat 115 113 114 +call 116 pith_cstring_release void 1 113 +call 117 ir_builder_ir_emit void 1 115 +call 118 pith_cstring_release void 1 115 +load 119 fallback_l +call 120 ir_call_emit_ir_emit_label void 1 119 +load 121 arg_idx +call 122 ir_emitter_core_ir_expr int 1 121 +store fallback_r 122 +load 123 operand_class +strref 124 m46s1196 +call 126 pith_cstring_eq bool 2 123 124 +iconst 127 1 +sub 125 127 126 +call 128 pith_cstring_release void 1 124 +brif 125 L2864 L2865 +label L2864 +load 129 recv_r +load 130 recv_tid +call 131 ir_emitter_core_ir_emit_release_result_error void 2 129 130 +call 132 ir_builder_ir_reg int 0 +strref 133 m46s893 +strref 134 m46s823 +load 135 recv_r +call 136 ir_call_emit_ir_emit_call1 void 4 132 133 134 135 +call 137 pith_cstring_release void 1 133 +call 138 pith_cstring_release void 1 134 +jmp L2863 +label L2865 +label L2863 +strref 139 m46s825 +load 140 temp_name +concat 141 139 140 +call 142 pith_cstring_release void 1 139 +strref 143 m46s333 +concat 144 141 143 +call 145 pith_cstring_release void 1 141 +call 146 pith_cstring_release void 1 143 +load 147 fallback_r +call 148 int_to_string string 1 147 +concat 149 144 148 +call 150 pith_cstring_release void 1 144 +call 151 pith_cstring_release void 1 148 +call 152 ir_builder_ir_emit void 1 149 +call 153 pith_cstring_release void 1 149 +load 154 merge_l +call 155 ir_call_emit_ir_emit_label void 1 154 +call 156 ir_builder_ir_reg int 0 +store r 156 +strref 157 m46s824 +load 158 r +call 159 int_to_string string 1 158 +concat 160 157 159 +call 161 pith_cstring_release void 1 157 +call 162 pith_cstring_release void 1 159 +strref 163 m46s333 +concat 164 160 163 +call 165 pith_cstring_release void 1 160 +call 166 pith_cstring_release void 1 163 +load 167 temp_name +concat 168 164 167 +call 169 pith_cstring_release void 1 164 +call 170 ir_builder_ir_emit void 1 168 +call 171 pith_cstring_release void 1 168 +load 172 r +load 173 operand_class +call 174 pith_cstring_release void 1 173 +load 175 temp_name +call 176 pith_cstring_release void 1 175 +load 177 ok_l +call 178 pith_cstring_release void 1 177 +load 179 fallback_l +call 180 pith_cstring_release void 1 179 +load 181 merge_l +call 182 pith_cstring_release void 1 181 +ret 172 +load 183 operand_class +call 184 pith_cstring_release void 1 183 +load 185 temp_name +call 186 pith_cstring_release void 1 185 +load 187 ok_l +call 188 pith_cstring_release void 1 187 +load 189 fallback_l +call 190 pith_cstring_release void 1 189 +load 191 merge_l +call 192 pith_cstring_release void 1 191 +iconst 193 0 +ret 193 endfunc func ir_emitter_core_ir_emit_result_value_to_string 2 int param recv_r @@ -147018,8 +147200,8 @@ store err_tid 12 load 13 recv_tid iconst 14 0 gte 15 13 14 -brif 15 L2839 L2840 -label L2839 +brif 15 L2867 L2868 +label L2867 load 16 recv_info load 17 recv_tid call 18 types_get_type_info struct:TypeInfo 1 17 @@ -147030,27 +147212,27 @@ field 21 20 0 string kind strref 22 m46s22 call 23 pith_cstring_eq bool 2 21 22 call 24 pith_cstring_release void 1 22 -brif 23 L2842 L2843 -label L2842 +brif 23 L2870 L2871 +label L2870 load 25 recv_info field 26 25 64 int inner store ok_tid 26 load 27 recv_info field 28 27 80 int value_type store err_tid 28 -jmp L2841 -label L2843 -label L2841 -jmp L2838 -label L2840 -label L2838 +jmp L2869 +label L2871 +label L2869 +jmp L2866 +label L2868 +label L2866 load 29 recv_r strref 30 m46s184 call 31 ir_result_abi_ir_emit_result_flag_field int 2 29 30 call 32 pith_cstring_release void 1 30 store cond_r 31 load 33 temp_name -strref 34 m46s1218 +strref 34 m46s1219 call 35 ir_builder_ir_new_temp_name string 1 34 call 36 pith_cstring_release void 1 34 call 37 pith_cstring_release void 1 33 @@ -147205,24 +147387,24 @@ load 8 value_type strref 9 m46s672 call 10 pith_cstring_eq bool 2 8 9 call 11 pith_cstring_release void 1 9 -brif 10 L2845 L2846 -label L2845 +brif 10 L2873 L2874 +label L2873 load 12 value_r load 13 value_type call 14 pith_cstring_release void 1 13 load 15 value_info call 16 pith_struct_release void 1 15 ret 12 -label L2846 -label L2844 +label L2874 +label L2872 call 17 ir_builder_ir_reg int 0 store out_r 17 load 18 value_type strref 19 m46s670 call 20 pith_cstring_eq bool 2 18 19 call 21 pith_cstring_release void 1 19 -brif 20 L2848 L2849 -label L2848 +brif 20 L2876 L2877 +label L2876 load 22 out_r strref 23 m46s660 strref 24 m46s672 @@ -147236,14 +147418,14 @@ call 31 pith_cstring_release void 1 30 load 32 value_info call 33 pith_struct_release void 1 32 ret 29 -label L2849 -label L2847 +label L2877 +label L2875 load 34 value_type strref 35 m46s669 call 36 pith_cstring_eq bool 2 34 35 call 37 pith_cstring_release void 1 35 -brif 36 L2851 L2852 -label L2851 +brif 36 L2879 L2880 +label L2879 load 38 out_r strref 39 m46s661 strref 40 m46s672 @@ -147257,14 +147439,14 @@ call 47 pith_cstring_release void 1 46 load 48 value_info call 49 pith_struct_release void 1 48 ret 45 -label L2852 -label L2850 +label L2880 +label L2878 load 50 value_type strref 51 m46s668 call 52 pith_cstring_eq bool 2 50 51 call 53 pith_cstring_release void 1 51 -brif 52 L2854 L2855 -label L2854 +brif 52 L2882 L2883 +label L2882 load 54 out_r strref 55 m46s659 strref 56 m46s672 @@ -147278,13 +147460,13 @@ call 63 pith_cstring_release void 1 62 load 64 value_info call 65 pith_struct_release void 1 64 ret 61 -label L2855 -label L2853 +label L2883 +label L2881 load 66 value_tid iconst 67 0 gte 68 66 67 -brif 68 L2857 L2858 -label L2857 +brif 68 L2885 L2886 +label L2885 load 69 value_info load 70 value_tid call 71 types_get_type_info struct:TypeInfo 1 70 @@ -147295,8 +147477,8 @@ field 74 73 0 string kind strref 75 m46s22 call 76 pith_cstring_eq bool 2 74 75 call 77 pith_cstring_release void 1 75 -brif 76 L2860 L2861 -label L2860 +brif 76 L2888 L2889 +label L2888 load 78 value_r load 79 value_tid call 80 ir_emitter_core_ir_emit_result_value_to_string int 2 78 79 @@ -147305,11 +147487,11 @@ call 82 pith_cstring_release void 1 81 load 83 value_info call 84 pith_struct_release void 1 83 ret 80 -label L2861 -label L2859 -jmp L2856 -label L2858 -label L2856 +label L2889 +label L2887 +jmp L2884 +label L2886 +label L2884 load 85 value_r load 86 value_type call 87 pith_cstring_release void 1 86 @@ -147377,39 +147559,39 @@ call 20 pith_cstring_retain void 1 19 call 21 pith_cstring_release void 1 17 store call_name 19 iconst 22 0 -store __and_22_2865 22 +store __and_22_2893 22 load 23 call_name call 24 string_len int 1 23 iconst 25 0 eq 26 24 25 -store __and_22_2865 26 -brif 26 L2865 L2866 -label L2865 +store __and_22_2893 26 +brif 26 L2893 L2894 +label L2893 load 27 handler_node field 28 27 0 string kind strref 29 m46s37 call 30 pith_cstring_eq bool 2 28 29 call 31 pith_cstring_release void 1 29 -store __and_22_2865 30 -label L2866 -load 32 __and_22_2865 -brif 32 L2863 L2864 -label L2863 +store __and_22_2893 30 +label L2894 +load 32 __and_22_2893 +brif 32 L2891 L2892 +label L2891 load 33 call_name load 34 handler_node field 35 34 8 string value call 36 pith_cstring_retain void 1 35 call 37 pith_cstring_release void 1 33 store call_name 35 -jmp L2862 -label L2864 -label L2862 +jmp L2890 +label L2892 +label L2890 load 38 call_name call 39 string_len int 1 38 iconst 40 0 gt 41 39 40 -brif 41 L2868 L2869 -label L2868 +brif 41 L2896 L2897 +label L2896 call 42 ir_builder_ir_reg int 0 store out_r 42 load 43 legacy_kind @@ -147426,16 +147608,16 @@ load 51 legacy_kind call 52 string_len int 1 51 iconst 53 0 gt 54 52 53 -brif 54 L2871 L2872 -label L2871 +brif 54 L2899 L2900 +label L2899 load 55 call_type load 56 legacy_kind call 57 pith_cstring_retain void 1 56 call 58 pith_cstring_release void 1 55 store call_type 56 -jmp L2870 -label L2872 -label L2870 +jmp L2898 +label L2900 +label L2898 load 59 out_r load 60 call_name load 61 call_type @@ -147449,23 +147631,23 @@ call 68 pith_cstring_release void 1 65 call 69 ir_call_emit_ir_emit_call_text void 5 59 60 61 62 66 call 70 pith_cstring_release void 1 66 iconst 71 0 -store __and_71_2876 71 +store __and_71_2904 71 load 72 legacy_kind call 73 string_len int 1 72 iconst 74 0 gt 75 73 74 -store __and_71_2876 75 -brif 75 L2876 L2877 -label L2876 +store __and_71_2904 75 +brif 75 L2904 L2905 +label L2904 load 76 ret_type strref 77 m46s23 call 78 pith_cstring_eq bool 2 76 77 call 79 pith_cstring_release void 1 77 -store __and_71_2876 78 -label L2877 -load 80 __and_71_2876 -brif 80 L2874 L2875 -label L2874 +store __and_71_2904 78 +label L2905 +load 80 __and_71_2904 +brif 80 L2902 L2903 +label L2902 load 81 out_r load 82 legacy_kind load 83 call_name @@ -147483,8 +147665,8 @@ call 94 pith_cstring_release void 1 93 load 95 handler_name call 96 pith_cstring_release void 1 95 ret 84 -label L2875 -label L2873 +label L2903 +label L2901 load 97 out_r load 98 handler_node call 99 pith_struct_release void 1 98 @@ -147499,13 +147681,13 @@ call 107 pith_cstring_release void 1 106 load 108 handler_name call 109 pith_cstring_release void 1 108 ret 97 -label L2869 -label L2867 +label L2897 +label L2895 load 110 handler_idx call 111 ir_emitter_core_ir_expr int 1 110 store handler_r 111 load 112 handler_name -strref 113 m46s1217 +strref 113 m46s1218 call 114 ir_builder_ir_new_temp_name string 1 113 call 115 pith_cstring_release void 1 113 call 116 pith_cstring_release void 1 112 @@ -147758,7 +147940,7 @@ call 4 ast_get_node struct:Node 1 3 call 5 pith_struct_release void 1 2 store recv_node 4 iconst 6 0 -store __or_6_2881 6 +store __or_6_2909 6 load 7 recv_node field 8 7 0 string kind strref 9 m46s129 @@ -147766,25 +147948,25 @@ call 11 pith_cstring_eq bool 2 8 9 iconst 12 1 sub 10 12 11 call 13 pith_cstring_release void 1 9 -store __or_6_2881 10 -brif 10 L2882 L2881 -label L2881 +store __or_6_2909 10 +brif 10 L2910 L2909 +label L2909 load 14 recv_node field 15 14 16 list children call 16 pith_list_len int 1 15 iconst 17 0 eq 18 16 17 -store __or_6_2881 18 -label L2882 -load 19 __or_6_2881 -brif 19 L2879 L2880 -label L2879 +store __or_6_2909 18 +label L2910 +load 19 __or_6_2909 +brif 19 L2907 L2908 +label L2907 call 20 ir_result_abi_ir_zero_reg int 0 load 21 recv_node call 22 pith_struct_release void 1 21 ret 20 -label L2880 -label L2878 +label L2908 +label L2906 load 23 recv_node field 24 23 16 list children iconst 25 0 @@ -147819,7 +148001,7 @@ call 4 ast_get_node struct:Node 1 3 call 5 pith_struct_release void 1 2 store send_node 4 iconst 6 0 -store __or_6_2886 6 +store __or_6_2914 6 load 7 send_node field 8 7 0 string kind strref 9 m46s129 @@ -147827,25 +148009,25 @@ call 11 pith_cstring_eq bool 2 8 9 iconst 12 1 sub 10 12 11 call 13 pith_cstring_release void 1 9 -store __or_6_2886 10 -brif 10 L2887 L2886 -label L2886 +store __or_6_2914 10 +brif 10 L2915 L2914 +label L2914 load 14 send_node field 15 14 16 list children call 16 pith_list_len int 1 15 iconst 17 0 eq 18 16 17 -store __or_6_2886 18 -label L2887 -load 19 __or_6_2886 -brif 19 L2884 L2885 -label L2884 +store __or_6_2914 18 +label L2915 +load 19 __or_6_2914 +brif 19 L2912 L2913 +label L2912 call 20 ir_result_abi_ir_zero_reg int 0 load 21 send_node call 22 pith_struct_release void 1 21 ret 20 -label L2885 -label L2883 +label L2913 +label L2911 load 23 send_node field 24 23 16 list children iconst 25 0 @@ -147859,14 +148041,14 @@ store arg_idx 30 load 31 arg_idx iconst 32 0 lt 33 31 32 -brif 33 L2889 L2890 -label L2889 +brif 33 L2917 L2918 +label L2917 call 34 ir_result_abi_ir_zero_reg int 0 load 35 send_node call 36 pith_struct_release void 1 35 ret 34 -label L2890 -label L2888 +label L2918 +label L2916 load 37 arg_idx call 38 ir_emitter_core_ir_expr int 1 37 store val_r 38 @@ -147914,21 +148096,21 @@ load 15 bind_name call 16 string_len int 1 15 iconst 17 0 gt 18 16 17 -brif 18 L2892 L2893 -label L2892 +brif 18 L2920 L2921 +label L2920 load 19 bind_type call 20 string_len int 1 19 iconst 21 0 gt 22 20 21 -brif 22 L2895 L2896 -label L2895 +brif 22 L2923 L2924 +label L2923 load 23 ir_builder_ir_var_types load 24 bind_name load 25 bind_type call 26 map_insert void 3 23 24 25 -jmp L2894 -label L2896 -label L2894 +jmp L2922 +label L2924 +label L2922 strref 27 m46s825 load 28 bind_name concat 29 27 28 @@ -147944,9 +148126,9 @@ call 38 pith_cstring_release void 1 32 call 39 pith_cstring_release void 1 36 call 40 ir_builder_ir_emit void 1 37 call 41 pith_cstring_release void 1 37 -jmp L2891 -label L2893 -label L2891 +jmp L2919 +label L2921 +label L2919 load 42 body_node load 43 body_idx call 44 ast_get_node struct:Node 1 43 @@ -147959,41 +148141,41 @@ field 48 47 0 string kind strref 49 m46s65 call 50 pith_cstring_eq bool 2 48 49 call 51 pith_cstring_release void 1 49 -brif 50 L2898 L2899 -label L2898 +brif 50 L2926 L2927 +label L2926 load 52 body_node field 53 52 16 list children call 54 pith_list_len int 1 53 iconst 55 0 gt 56 54 55 -brif 56 L2901 L2902 -label L2901 +brif 56 L2929 L2930 +label L2929 load 57 body_node field 58 57 16 list children iconst 59 0 call 60 pith_list_get_value_strict int 2 58 59 call 61 ir_emitter_core_ir_expr int 1 60 store body_r 61 -jmp L2900 -label L2902 -label L2900 -jmp L2897 -label L2899 +jmp L2928 +label L2930 +label L2928 +jmp L2925 +label L2927 load 62 body_node field 63 62 0 string kind strref 64 m46s64 call 65 pith_cstring_eq bool 2 63 64 call 66 pith_cstring_release void 1 64 -brif 65 L2903 L2904 -label L2903 +brif 65 L2931 L2932 +label L2931 load 67 body_idx call 68 ir_emitter_core_ir_block int 1 67 -jmp L2897 -label L2904 +jmp L2925 +label L2932 load 69 body_idx call 70 ir_emitter_core_ir_expr int 1 69 store body_r 70 -label L2897 +label L2925 load 71 saved_vars call 72 pith_map_retain_handle void 1 71 store ir_builder_ir_var_regs 71 @@ -148034,12 +148216,12 @@ iconst 9 0 store __for_idx_344 9 store __for_len_344 8 store __for_iter_344 7 -label L2905 +label L2933 load 10 __for_idx_344 load 11 __for_len_344 lt 12 10 11 -brif 12 L2906 L2908 -label L2906 +brif 12 L2934 L2936 +label L2934 load 13 __for_iter_344 load 14 __for_idx_344 call 15 pith_list_get_value unknown 2 13 14 @@ -148050,38 +148232,38 @@ call 18 ast_get_node struct:Node 1 17 call 19 pith_struct_release void 1 16 store arm_node 18 iconst 20 0 -store __or_20_2912 20 +store __or_20_2940 20 load 21 arm_node field 22 21 0 string kind strref 23 m46s138 call 24 pith_cstring_eq bool 2 22 23 call 25 pith_cstring_release void 1 23 -store __or_20_2912 24 -brif 24 L2913 L2912 -label L2912 +store __or_20_2940 24 +brif 24 L2941 L2940 +label L2940 load 26 arm_node field 27 26 0 string kind strref 28 m46s137 call 29 pith_cstring_eq bool 2 27 28 call 30 pith_cstring_release void 1 28 -store __or_20_2912 29 -label L2913 -load 31 __or_20_2912 -brif 31 L2910 L2911 -label L2910 +store __or_20_2940 29 +label L2941 +load 31 __or_20_2940 +brif 31 L2938 L2939 +label L2938 load 32 probe_arms load 33 arm_idx call 34 pith_list_push_value void 2 32 33 -jmp L2909 -label L2911 -label L2909 -label L2907 +jmp L2937 +label L2939 +label L2937 +label L2935 load 35 __for_idx_344 iconst 36 1 add 37 35 36 store __for_idx_344 37 -jmp L2905 -label L2908 +jmp L2933 +label L2936 load 38 probe_arms load 39 arm_node call 40 pith_struct_release void 1 39 @@ -148112,12 +148294,12 @@ iconst 11 0 store __for_idx_345 11 store __for_len_345 10 store __for_iter_345 9 -label L2914 +label L2942 load 12 __for_idx_345 load 13 __for_len_345 lt 14 12 13 -brif 14 L2915 L2917 -label L2915 +brif 14 L2943 L2945 +label L2943 load 15 __for_iter_345 load 16 __for_idx_345 call 17 pith_list_get_value unknown 2 15 16 @@ -148128,57 +148310,57 @@ call 20 ast_get_node struct:Node 1 19 call 21 pith_struct_release void 1 18 store arm_node 20 iconst 22 0 -store __and_22_2921 22 +store __and_22_2949 22 load 23 arm_node field 24 23 0 string kind strref 25 m46s136 call 26 pith_cstring_eq bool 2 24 25 call 27 pith_cstring_release void 1 25 -store __and_22_2921 26 -brif 26 L2921 L2922 -label L2921 +store __and_22_2949 26 +brif 26 L2949 L2950 +label L2949 load 28 timeout_idx iconst 29 0 lt 30 28 29 -store __and_22_2921 30 -label L2922 -load 31 __and_22_2921 -brif 31 L2919 L2920 -label L2919 +store __and_22_2949 30 +label L2950 +load 31 __and_22_2949 +brif 31 L2947 L2948 +label L2947 load 32 child store timeout_idx 32 -jmp L2918 -label L2920 +jmp L2946 +label L2948 iconst 33 0 -store __and_33_2925 33 +store __and_33_2953 33 load 34 arm_node field 35 34 0 string kind strref 36 m46s135 call 37 pith_cstring_eq bool 2 35 36 call 38 pith_cstring_release void 1 36 -store __and_33_2925 37 -brif 37 L2925 L2926 -label L2925 +store __and_33_2953 37 +brif 37 L2953 L2954 +label L2953 load 39 default_idx iconst 40 0 lt 41 39 40 -store __and_33_2925 41 -label L2926 -load 42 __and_33_2925 -brif 42 L2923 L2924 -label L2923 +store __and_33_2953 41 +label L2954 +load 42 __and_33_2953 +brif 42 L2951 L2952 +label L2951 load 43 child store default_idx 43 -jmp L2918 -label L2924 -label L2918 -label L2916 +jmp L2946 +label L2952 +label L2946 +label L2944 load 44 __for_idx_345 iconst 45 1 add 46 44 45 store __for_idx_345 46 -jmp L2914 -label L2917 +jmp L2942 +label L2945 load 47 node call 48 ir_emitter_core_ir_select_probe_arm_indices list 1 47 load 49 timeout_idx @@ -148214,25 +148396,25 @@ call 8 ast_get_node struct:Node 1 7 call 9 pith_struct_release void 1 6 store arm_node 8 iconst 10 0 -store __and_10_2930 10 +store __and_10_2958 10 load 11 arm_node field 12 11 0 string kind strref 13 m46s138 call 14 pith_cstring_eq bool 2 12 13 call 15 pith_cstring_release void 1 13 -store __and_10_2930 14 -brif 14 L2930 L2931 -label L2930 +store __and_10_2958 14 +brif 14 L2958 L2959 +label L2958 load 16 arm_node field 17 16 16 list children call 18 pith_list_len int 1 17 iconst 19 2 gte 20 18 19 -store __and_10_2930 20 -label L2931 -load 21 __and_10_2930 -brif 21 L2928 L2929 -label L2928 +store __and_10_2958 20 +label L2959 +load 21 __and_10_2958 +brif 21 L2956 L2957 +label L2956 load 22 arm_node field 23 22 16 list children iconst 24 0 @@ -148312,28 +148494,28 @@ call 92 ir_builder_ir_emit void 1 90 call 93 pith_cstring_release void 1 90 load 94 next_l call 95 ir_call_emit_ir_emit_label void 1 94 -jmp L2927 -label L2929 +jmp L2955 +label L2957 iconst 96 0 -store __and_96_2934 96 +store __and_96_2962 96 load 97 arm_node field 98 97 0 string kind strref 99 m46s137 call 100 pith_cstring_eq bool 2 98 99 call 101 pith_cstring_release void 1 99 -store __and_96_2934 100 -brif 100 L2934 L2935 -label L2934 +store __and_96_2962 100 +brif 100 L2962 L2963 +label L2962 load 102 arm_node field 103 102 16 list children call 104 pith_list_len int 1 103 iconst 105 2 gte 106 104 105 -store __and_96_2934 106 -label L2935 -load 107 __and_96_2934 -brif 107 L2932 L2933 -label L2932 +store __and_96_2962 106 +label L2963 +load 107 __and_96_2962 +brif 107 L2960 L2961 +label L2960 load 108 arm_node field 109 108 16 list children iconst 110 0 @@ -148406,9 +148588,9 @@ call 172 ir_builder_ir_emit void 1 170 call 173 pith_cstring_release void 1 170 load 174 next_l call 175 ir_call_emit_ir_emit_label void 1 174 -jmp L2927 -label L2933 -label L2927 +jmp L2955 +label L2961 +label L2955 load 176 arm_node call 177 pith_struct_release void 1 176 load 178 hit_l @@ -148427,18 +148609,18 @@ store timeout_node 2 load 3 timeout_idx iconst 4 0 lt 5 3 4 -brif 5 L2937 L2938 -label L2937 +brif 5 L2965 L2966 +label L2965 strref 6 m46s82 load 7 deadline_name call 8 pith_cstring_release void 1 7 load 9 timeout_node call 10 pith_struct_release void 1 9 ret 6 -label L2938 -label L2936 +label L2966 +label L2964 load 11 deadline_name -strref 12 m46s1216 +strref 12 m46s1217 call 13 ir_builder_ir_new_temp_name string 1 12 call 14 pith_cstring_release void 1 12 call 15 pith_cstring_release void 1 11 @@ -148457,7 +148639,7 @@ store timeout_r 24 call 25 ir_builder_ir_reg int 0 store now_r 25 load 26 now_r -strref 27 m46s1213 +strref 27 m46s1214 strref 28 m46s668 call 29 ir_call_emit_ir_emit_call0 void 3 26 27 28 call 30 pith_cstring_release void 1 27 @@ -148523,16 +148705,16 @@ store offset_name 1 load 2 probe_count iconst 3 1 lte 4 2 3 -brif 4 L2940 L2941 -label L2940 +brif 4 L2968 L2969 +label L2968 strref 5 m46s82 load 6 offset_name call 7 pith_cstring_release void 1 6 ret 5 -label L2941 -label L2939 +label L2969 +label L2967 load 8 offset_name -strref 9 m46s1215 +strref 9 m46s1216 call 10 ir_builder_ir_new_temp_name string 1 9 call 11 pith_cstring_release void 1 9 call 12 pith_cstring_release void 1 8 @@ -148559,7 +148741,7 @@ call 30 pith_cstring_release void 1 26 call 31 ir_builder_ir_reg int 0 store seed_r 31 load 32 seed_r -strref 33 m46s1214 +strref 33 m46s1215 strref 34 m46s668 load 35 count_r call 36 ir_call_emit_ir_emit_call1 void 4 32 33 34 35 @@ -148624,12 +148806,12 @@ call 26 ir_builder_ir_emit void 1 24 call 27 pith_cstring_release void 1 24 iconst 28 0 store i 28 -label L2942 +label L2970 load 29 i load 30 probe_count lt 31 29 30 -brif 31 L2943 L2944 -label L2943 +brif 31 L2971 L2972 +label L2971 load 32 case_l call 33 ir_builder_ir_label string 0 call 34 pith_cstring_release void 1 32 @@ -148711,12 +148893,12 @@ load 105 case_l call 106 ir_call_emit_ir_emit_label void 1 105 iconst 107 0 store j 107 -label L2945 +label L2973 load 108 j load 109 probe_count lt 110 108 109 -brif 110 L2946 L2947 -label L2946 +brif 110 L2974 L2975 +label L2974 load 111 i load 112 j add 113 111 112 @@ -148733,8 +148915,8 @@ load 122 j iconst 123 1 add 124 122 123 store j 124 -jmp L2945 -label L2947 +jmp L2973 +label L2975 strref 125 m46s828 load 126 probe_done_l concat 127 125 126 @@ -148747,8 +148929,8 @@ load 133 i iconst 134 1 add 135 133 134 store i 135 -jmp L2942 -label L2944 +jmp L2970 +label L2972 load 136 probe_done_l call 137 ir_call_emit_ir_emit_label void 1 136 load 138 probe_done_l @@ -148771,17 +148953,17 @@ store probe_count 5 load 6 probe_count iconst 7 0 eq 8 6 7 -brif 8 L2949 L2950 -label L2949 +brif 8 L2977 L2978 +label L2977 iconst 9 0 ret 9 -label L2950 -label L2948 +label L2978 +label L2976 load 10 probe_count iconst 11 1 eq 12 10 11 -brif 12 L2952 L2953 -label L2952 +brif 12 L2980 L2981 +label L2980 load 13 probe_arms iconst 14 0 call 15 pith_list_get_value_strict int 2 13 14 @@ -148790,8 +148972,8 @@ load 17 end_l call 18 ir_emitter_core_ir_emit_select_probe_arm void 3 15 16 17 iconst 19 0 ret 19 -label L2953 -label L2951 +label L2981 +label L2979 load 20 probe_arms load 21 offset_name load 22 result_temp @@ -148809,14 +148991,14 @@ store default_node 3 load 4 default_idx iconst 5 0 lt 6 4 5 -brif 6 L2955 L2956 -label L2955 +brif 6 L2983 L2984 +label L2983 load 7 default_node call 8 pith_struct_release void 1 7 iconst 9 0 ret 9 -label L2956 -label L2954 +label L2984 +label L2982 load 10 default_node load 11 default_idx call 12 ast_get_node struct:Node 1 11 @@ -148827,14 +149009,14 @@ field 15 14 16 list children call 16 pith_list_len int 1 15 iconst 17 0 eq 18 16 17 -brif 18 L2958 L2959 -label L2958 +brif 18 L2986 L2987 +label L2986 load 19 default_node call 20 pith_struct_release void 1 19 iconst 21 0 ret 21 -label L2959 -label L2957 +label L2987 +label L2985 load 22 default_node field 23 22 16 list children iconst 24 0 @@ -148886,8 +149068,8 @@ store timeout_node 6 load 7 timeout_idx iconst 8 0 lt 9 7 8 -brif 9 L2961 L2962 -label L2961 +brif 9 L2989 L2990 +label L2989 load 10 timeout_l call 11 pith_cstring_release void 1 10 load 12 wait_l @@ -148896,12 +149078,12 @@ load 14 timeout_node call 15 pith_struct_release void 1 14 iconst 16 0 ret 16 -label L2962 -label L2960 +label L2990 +label L2988 call 17 ir_builder_ir_reg int 0 store now_r 17 load 18 now_r -strref 19 m46s1213 +strref 19 m46s1214 strref 20 m46s668 call 21 ir_call_emit_ir_emit_call0 void 3 18 19 20 call 22 pith_cstring_release void 1 19 @@ -149037,12 +149219,12 @@ param offset_name load 2 probe_count iconst 3 1 lte 4 2 3 -brif 4 L2964 L2965 -label L2964 +brif 4 L2992 L2993 +label L2992 iconst 5 0 ret 5 -label L2965 -label L2963 +label L2993 +label L2991 call 6 ir_builder_ir_reg int 0 store next_offset_r 6 call 7 ir_builder_ir_reg int 0 @@ -149123,7 +149305,7 @@ call 77 pith_cstring_release void 1 71 call 78 pith_cstring_release void 1 75 call 79 ir_builder_ir_emit void 1 76 call 80 pith_cstring_release void 1 76 -strref 81 m46s1212 +strref 81 m46s1213 load 82 next_offset_r call 83 int_to_string string 1 82 concat 84 81 83 @@ -149191,7 +149373,7 @@ call 18 pith_cstring_release void 1 14 call 19 ir_builder_ir_reg int 0 store sleep_r 19 load 20 sleep_r -strref 21 m46s1211 +strref 21 m46s1212 strref 22 m46s817 load 23 delay_r call 24 ir_call_emit_ir_emit_call1 void 4 20 21 22 23 @@ -149221,7 +149403,7 @@ store end_l 5 iconst 6 0 store offset_name 6 load 7 result_temp -strref 8 m46s1210 +strref 8 m46s1211 call 9 ir_builder_ir_new_temp_name string 1 8 call 10 pith_cstring_release void 1 8 call 11 pith_cstring_release void 1 7 @@ -149328,43 +149510,43 @@ endfunc func ir_emitter_core_ir_is_channel_send_name 1 bool param emit_name iconst 1 0 -store __or_1_2969 1 +store __or_1_2997 1 load 2 emit_name strref 3 m46s128 call 4 pith_cstring_eq bool 2 2 3 call 5 pith_cstring_release void 1 3 -store __or_1_2969 4 -brif 4 L2970 L2969 -label L2969 +store __or_1_2997 4 +brif 4 L2998 L2997 +label L2997 load 6 emit_name strref 7 m46s655 call 8 pith_cstring_eq bool 2 6 7 call 9 pith_cstring_release void 1 7 -store __or_1_2969 8 -label L2970 -load 10 __or_1_2969 -brif 10 L2967 L2968 -label L2967 +store __or_1_2997 8 +label L2998 +load 10 __or_1_2997 +brif 10 L2995 L2996 +label L2995 iconst 11 1 ret 11 -label L2968 -label L2966 +label L2996 +label L2994 iconst 12 0 -store __or_12_2971 12 +store __or_12_2999 12 load 13 emit_name strref 14 m46s214 call 15 pith_cstring_eq bool 2 13 14 call 16 pith_cstring_release void 1 14 -store __or_12_2971 15 -brif 15 L2972 L2971 -label L2971 +store __or_12_2999 15 +brif 15 L3000 L2999 +label L2999 load 17 emit_name strref 18 m46s654 call 19 pith_cstring_eq bool 2 17 18 call 20 pith_cstring_release void 1 18 -store __or_12_2971 19 -label L2972 -load 21 __or_12_2971 +store __or_12_2999 19 +label L3000 +load 21 __or_12_2999 ret 21 iconst 22 0 ret 22 @@ -149377,36 +149559,36 @@ store variant_r 2 load 3 variant_r iconst 4 0 gte 5 3 4 -brif 5 L2974 L2975 -label L2974 +brif 5 L3002 L3003 +label L3002 load 6 variant_r ret 6 -label L2975 -label L2973 +label L3003 +label L3001 load 7 idx call 8 ir_emitter_core_ir_emit_typed_receiver_method int 1 7 store typed_r 8 load 9 typed_r iconst 10 0 gte 11 9 10 -brif 11 L2977 L2978 -label L2977 +brif 11 L3005 L3006 +label L3005 load 12 typed_r ret 12 -label L2978 -label L2976 +label L3006 +label L3004 load 13 idx call 14 ir_emitter_core_ir_emit_module_alias_method int 1 13 store alias_r 14 load 15 alias_r iconst 16 0 gte 17 15 16 -brif 17 L2980 L2981 -label L2980 +brif 17 L3008 L3009 +label L3008 load 18 alias_r ret 18 -label L2981 -label L2979 +label L3009 +label L3007 load 19 idx call 20 ir_emitter_core_ir_emit_general_method_call int 1 19 ret 20 @@ -149444,8 +149626,8 @@ field 18 17 16 list children call 19 pith_list_len int 1 18 iconst 20 0 gt 21 19 20 -brif 21 L2983 L2984 -label L2983 +brif 21 L3011 L3012 +label L3011 load 22 ctor_recv load 23 node field 24 23 16 list children @@ -149455,24 +149637,24 @@ call 27 ast_get_node struct:Node 1 26 call 28 pith_struct_release void 1 22 store ctor_recv 27 iconst 29 0 -store __and_29_2988 29 +store __and_29_3016 29 load 30 ctor_recv field 31 30 0 string kind strref 32 m46s37 call 33 pith_cstring_eq bool 2 31 32 call 34 pith_cstring_release void 1 32 -store __and_29_2988 33 -brif 33 L2988 L2989 -label L2988 +store __and_29_3016 33 +brif 33 L3016 L3017 +label L3016 load 35 ir_struct_registry_ir_boxed_enums load 36 ctor_recv field 37 36 8 string value call 38 contains_key bool 2 35 37 -store __and_29_2988 38 -label L2989 -load 39 __and_29_2988 -brif 39 L2986 L2987 -label L2986 +store __and_29_3016 38 +label L3017 +load 39 __and_29_3016 +brif 39 L3014 L3015 +label L3014 load 40 ctor_key load 41 ctor_recv field 42 41 8 string value @@ -149487,8 +149669,8 @@ store ctor_key 47 load 50 ir_struct_registry_ir_struct_field_index_lookup load 51 ctor_key call 52 contains_key bool 2 50 51 -brif 52 L2991 L2992 -label L2991 +brif 52 L3019 L3020 +label L3019 load 53 node load 54 ctor_recv field 55 54 8 string value @@ -149507,31 +149689,31 @@ call 67 pith_struct_release void 1 66 load 68 qual_key call 69 pith_cstring_release void 1 68 ret 57 -label L2992 -label L2990 -jmp L2985 -label L2987 -label L2985 +label L3020 +label L3018 +jmp L3013 +label L3015 +label L3013 iconst 70 0 -store __and_70_2996 70 +store __and_70_3024 70 load 71 ctor_recv field 72 71 0 string kind strref 73 m46s36 call 74 pith_cstring_eq bool 2 72 73 call 75 pith_cstring_release void 1 73 -store __and_70_2996 74 -brif 74 L2996 L2997 -label L2996 +store __and_70_3024 74 +brif 74 L3024 L3025 +label L3024 load 76 ctor_recv field 77 76 16 list children call 78 pith_list_len int 1 77 iconst 79 0 gt 80 78 79 -store __and_70_2996 80 -label L2997 -load 81 __and_70_2996 -brif 81 L2994 L2995 -label L2994 +store __and_70_3024 80 +label L3025 +load 81 __and_70_3024 +brif 81 L3022 L3023 +label L3022 load 82 qual_mod load 83 ctor_recv field 84 83 16 list children @@ -149541,36 +149723,36 @@ call 87 ast_get_node struct:Node 1 86 call 88 pith_struct_release void 1 82 store qual_mod 87 iconst 89 0 -store __and_89_3001 89 +store __and_89_3029 89 iconst 90 0 -store __and_90_3001 90 +store __and_90_3029 90 load 91 qual_mod field 92 91 0 string kind strref 93 m46s37 call 94 pith_cstring_eq bool 2 92 93 call 95 pith_cstring_release void 1 93 -store __and_90_3001 94 -brif 94 L3001 L3002 -label L3001 +store __and_90_3029 94 +brif 94 L3029 L3030 +label L3029 load 96 ir_alias_registry_ir_module_aliases load 97 qual_mod field 98 97 8 string value call 99 contains_key bool 2 96 98 -store __and_90_3001 99 -label L3002 -load 100 __and_90_3001 -store __and_89_3001 100 -brif 100 L3003 L3004 -label L3003 +store __and_90_3029 99 +label L3030 +load 100 __and_90_3029 +store __and_89_3029 100 +brif 100 L3031 L3032 +label L3031 load 101 ir_struct_registry_ir_boxed_enums load 102 ctor_recv field 103 102 8 string value call 104 contains_key bool 2 101 103 -store __and_89_3001 104 -label L3004 -load 105 __and_89_3001 -brif 105 L2999 L3000 -label L2999 +store __and_89_3029 104 +label L3032 +load 105 __and_89_3029 +brif 105 L3027 L3028 +label L3027 load 106 qual_key load 107 ctor_recv field 108 107 8 string value @@ -149585,8 +149767,8 @@ store qual_key 113 load 116 ir_struct_registry_ir_struct_field_index_lookup load 117 qual_key call 118 contains_key bool 2 116 117 -brif 118 L3006 L3007 -label L3006 +brif 118 L3034 L3035 +label L3034 load 119 node load 120 ctor_recv field 121 120 8 string value @@ -149605,17 +149787,17 @@ call 133 pith_struct_release void 1 132 load 134 qual_key call 135 pith_cstring_release void 1 134 ret 123 -label L3007 -label L3005 -jmp L2998 -label L3000 -label L2998 -jmp L2993 -label L2995 -label L2993 -jmp L2982 -label L2984 -label L2982 +label L3035 +label L3033 +jmp L3026 +label L3028 +label L3026 +jmp L3021 +label L3023 +label L3021 +jmp L3010 +label L3012 +label L3010 iconst 136 0 iconst 137 1 sub 138 136 137 @@ -149682,8 +149864,8 @@ field 20 19 16 list children call 21 pith_list_len int 1 20 iconst 22 0 gt 23 21 22 -brif 23 L3009 L3010 -label L3009 +brif 23 L3037 L3038 +label L3037 load 24 node field 25 24 16 list children iconst 26 0 @@ -149693,91 +149875,91 @@ store recv_tid 28 load 29 recv_tid iconst 30 0 gte 31 29 30 -brif 31 L3012 L3013 -label L3012 +brif 31 L3040 L3041 +label L3040 load 32 recv_info load 33 recv_tid call 34 types_get_type_info struct:TypeInfo 1 33 call 35 pith_struct_release void 1 32 store recv_info 34 iconst 36 0 -store __and_36_3017 36 +store __and_36_3045 36 load 37 recv_info field 38 37 0 string kind strref 39 m46s494 call 40 pith_cstring_eq bool 2 38 39 call 41 pith_cstring_release void 1 39 -store __and_36_3017 40 -brif 40 L3017 L3018 -label L3017 +store __and_36_3045 40 +brif 40 L3045 L3046 +label L3045 load 42 mname strref 43 m46s270 call 44 pith_cstring_eq bool 2 42 43 call 45 pith_cstring_release void 1 43 -store __and_36_3017 44 -label L3018 -load 46 __and_36_3017 -brif 46 L3015 L3016 -label L3015 +store __and_36_3045 44 +label L3046 +load 46 __and_36_3045 +brif 46 L3043 L3044 +label L3043 iconst 47 0 -store __or_47_3022 47 +store __or_47_3050 47 iconst 48 0 -store __or_48_3022 48 +store __or_48_3050 48 iconst 49 0 -store __or_49_3022 49 +store __or_49_3050 49 iconst 50 0 -store __or_50_3022 50 +store __or_50_3050 50 load 51 recv_info field 52 51 8 string name strref 53 m46s493 call 54 pith_cstring_eq bool 2 52 53 call 55 pith_cstring_release void 1 53 -store __or_50_3022 54 -brif 54 L3023 L3022 -label L3022 +store __or_50_3050 54 +brif 54 L3051 L3050 +label L3050 load 56 recv_info field 57 56 8 string name strref 58 m46s488 call 59 pith_cstring_eq bool 2 57 58 call 60 pith_cstring_release void 1 58 -store __or_50_3022 59 -label L3023 -load 61 __or_50_3022 -store __or_49_3022 61 -brif 61 L3025 L3024 -label L3024 +store __or_50_3050 59 +label L3051 +load 61 __or_50_3050 +store __or_49_3050 61 +brif 61 L3053 L3052 +label L3052 load 62 recv_info field 63 62 8 string name strref 64 m46s487 call 65 pith_cstring_eq bool 2 63 64 call 66 pith_cstring_release void 1 64 -store __or_49_3022 65 -label L3025 -load 67 __or_49_3022 -store __or_48_3022 67 -brif 67 L3027 L3026 -label L3026 +store __or_49_3050 65 +label L3053 +load 67 __or_49_3050 +store __or_48_3050 67 +brif 67 L3055 L3054 +label L3054 load 68 recv_info field 69 68 8 string name strref 70 m46s486 call 71 pith_cstring_eq bool 2 69 70 call 72 pith_cstring_release void 1 70 -store __or_48_3022 71 -label L3027 -load 73 __or_48_3022 -store __or_47_3022 73 -brif 73 L3029 L3028 -label L3028 +store __or_48_3050 71 +label L3055 +load 73 __or_48_3050 +store __or_47_3050 73 +brif 73 L3057 L3056 +label L3056 load 74 recv_info field 75 74 8 string name strref 76 m46s485 call 77 pith_cstring_eq bool 2 75 76 call 78 pith_cstring_release void 1 76 -store __or_47_3022 77 -label L3029 -load 79 __or_47_3022 -brif 79 L3020 L3021 -label L3020 +store __or_47_3050 77 +label L3057 +load 79 __or_47_3050 +brif 79 L3048 L3049 +label L3048 load 80 node field 81 80 16 list children iconst 82 0 @@ -149787,7 +149969,7 @@ store obj_r 84 call 85 ir_builder_ir_reg int 0 store out_r 85 load 86 out_r -strref 87 m46s1209 +strref 87 m46s1210 strref 88 m46s672 load 89 obj_r call 90 ir_call_emit_ir_emit_call1 void 4 86 87 88 89 @@ -149811,610 +149993,611 @@ call 107 pith_cstring_release void 1 106 load 108 end_l call 109 pith_cstring_release void 1 108 ret 93 -label L3021 -label L3019 -jmp L3014 -label L3016 -label L3014 +label L3049 +label L3047 +jmp L3042 +label L3044 +label L3042 load 110 recv_info field 111 110 0 string kind strref 112 m46s22 call 113 pith_cstring_eq bool 2 111 112 call 114 pith_cstring_release void 1 112 -brif 113 L3031 L3032 -label L3031 +brif 113 L3059 L3060 +label L3059 load 115 mname strref 116 m46s285 call 117 pith_cstring_eq bool 2 115 116 call 118 pith_cstring_release void 1 116 -brif 117 L3034 L3035 -label L3034 -load 119 node -call 120 ir_emitter_core_ir_emit_result_unwrap_or int 1 119 -load 121 node -call 122 pith_struct_release void 1 121 -load 123 mname -call 124 pith_cstring_release void 1 123 -load 125 recv_info -call 126 pith_struct_release void 1 125 -load 127 inner_kind -call 128 pith_cstring_release void 1 127 -load 129 tmp -call 130 pith_cstring_release void 1 129 -load 131 some_l -call 132 pith_cstring_release void 1 131 -load 133 none_l -call 134 pith_cstring_release void 1 133 -load 135 end_l -call 136 pith_cstring_release void 1 135 -ret 120 -label L3035 -label L3033 -load 137 mname -strref 138 m46s283 -call 139 pith_cstring_eq bool 2 137 138 -call 140 pith_cstring_release void 1 138 -brif 139 L3037 L3038 -label L3037 -load 141 idx -load 142 node -call 143 ir_emitter_core_ir_emit_result_or_else int 2 141 142 -load 144 node -call 145 pith_struct_release void 1 144 -load 146 mname -call 147 pith_cstring_release void 1 146 -load 148 recv_info -call 149 pith_struct_release void 1 148 -load 150 inner_kind -call 151 pith_cstring_release void 1 150 -load 152 tmp -call 153 pith_cstring_release void 1 152 -load 154 some_l -call 155 pith_cstring_release void 1 154 -load 156 none_l -call 157 pith_cstring_release void 1 156 -load 158 end_l -call 159 pith_cstring_release void 1 158 -ret 143 -label L3038 -label L3036 -load 160 mname -strref 161 m46s270 -call 162 pith_cstring_eq bool 2 160 161 -call 163 pith_cstring_release void 1 161 -brif 162 L3040 L3041 -label L3040 -load 164 node -call 165 ir_emitter_core_ir_emit_result_to_string int 1 164 -load 166 node -call 167 pith_struct_release void 1 166 -load 168 mname -call 169 pith_cstring_release void 1 168 -load 170 recv_info -call 171 pith_struct_release void 1 170 -load 172 inner_kind -call 173 pith_cstring_release void 1 172 -load 174 tmp -call 175 pith_cstring_release void 1 174 -load 176 some_l -call 177 pith_cstring_release void 1 176 -load 178 none_l -call 179 pith_cstring_release void 1 178 -load 180 end_l -call 181 pith_cstring_release void 1 180 -ret 165 -label L3041 -label L3039 -jmp L3030 -label L3032 -label L3030 -iconst 182 0 -store __and_182_3045 182 -load 183 recv_info -field 184 183 0 string kind -strref 185 m46s21 -call 186 pith_cstring_eq bool 2 184 185 -call 187 pith_cstring_release void 1 185 -store __and_182_3045 186 -brif 186 L3045 L3046 -label L3045 -load 188 mname -strref 189 m46s6 -call 190 pith_cstring_eq bool 2 188 189 -call 191 pith_cstring_release void 1 189 -store __and_182_3045 190 -label L3046 -load 192 __and_182_3045 -brif 192 L3043 L3044 -label L3043 -load 193 node -field 194 193 16 list children -iconst 195 0 -call 196 pith_list_get_value_strict int 2 194 195 -call 197 ir_emitter_core_ir_expr int 1 196 -store obj_r 197 -load 198 obj_r -load 199 recv_tid -call 200 ir_optionals_ir_optional_value_field int 2 198 199 -store val_r 200 -load 201 node -field 202 201 16 list children -iconst 203 0 -call 204 pith_list_get_value_strict int 2 202 203 -load 205 obj_r -call 206 ir_emitter_core_ir_release_weak_shell void 2 204 205 -load 207 val_r -load 208 node -call 209 pith_struct_release void 1 208 -load 210 mname -call 211 pith_cstring_release void 1 210 -load 212 recv_info -call 213 pith_struct_release void 1 212 -load 214 inner_kind -call 215 pith_cstring_release void 1 214 -load 216 tmp -call 217 pith_cstring_release void 1 216 -load 218 some_l -call 219 pith_cstring_release void 1 218 -load 220 none_l -call 221 pith_cstring_release void 1 220 -load 222 end_l -call 223 pith_cstring_release void 1 222 -ret 207 -label L3044 -label L3042 -iconst 224 0 -store __and_224_3050 224 -load 225 recv_info -field 226 225 0 string kind -strref 227 m46s21 -call 228 pith_cstring_eq bool 2 226 227 -call 229 pith_cstring_release void 1 227 -store __and_224_3050 228 -brif 228 L3050 L3051 -label L3050 -load 230 mname -strref 231 m46s285 -call 232 pith_cstring_eq bool 2 230 231 -call 233 pith_cstring_release void 1 231 -store __and_224_3050 232 -label L3051 -load 234 __and_224_3050 -brif 234 L3048 L3049 -label L3048 -load 235 node -field 236 235 16 list children -iconst 237 0 -call 238 pith_list_get_value_strict int 2 236 237 -call 239 ir_emitter_core_ir_expr int 1 238 -store obj_r 239 -load 240 node -field 241 240 16 list children -iconst 242 0 -call 243 pith_list_get_value_strict int 2 241 242 -call 244 ir_emitter_core_ir_optional_subject_is_owned bool 1 243 -store owns_subject 244 -load 245 inner_kind -load 246 recv_info -field 247 246 64 int inner -call 248 ir_type_helpers_ir_type_from_tid string 1 247 -call 249 ir_struct_registry_ir_rc_kind string 1 248 -call 250 pith_cstring_release void 1 248 -call 251 pith_cstring_release void 1 245 -store inner_kind 249 -load 252 obj_r -call 253 ir_optionals_ir_optional_flag_field int 1 252 -store flag_r 253 -load 254 tmp -strref 255 m46s285 -call 256 ir_builder_ir_new_temp_name string 1 255 -call 257 pith_cstring_release void 1 255 -call 258 pith_cstring_release void 1 254 -store tmp 256 -load 259 some_l -call 260 ir_builder_ir_label string 0 -call 261 pith_cstring_release void 1 259 -store some_l 260 -load 262 none_l -call 263 ir_builder_ir_label string 0 -call 264 pith_cstring_release void 1 262 -store none_l 263 -load 265 end_l -call 266 ir_builder_ir_label string 0 -call 267 pith_cstring_release void 1 265 -store end_l 266 -strref 268 m46s829 -load 269 flag_r -call 270 int_to_string string 1 269 -concat 271 268 270 -call 272 pith_cstring_release void 1 268 -call 273 pith_cstring_release void 1 270 -strref 274 m46s333 -concat 275 271 274 -call 276 pith_cstring_release void 1 271 -call 277 pith_cstring_release void 1 274 -load 278 some_l -concat 279 275 278 -call 280 pith_cstring_release void 1 275 -strref 281 m46s333 -concat 282 279 281 -call 283 pith_cstring_release void 1 279 -call 284 pith_cstring_release void 1 281 -load 285 none_l -concat 286 282 285 -call 287 pith_cstring_release void 1 282 -call 288 ir_builder_ir_emit void 1 286 -call 289 pith_cstring_release void 1 286 -load 290 some_l -call 291 ir_call_emit_ir_emit_label void 1 290 -load 292 obj_r -load 293 recv_tid -call 294 ir_optionals_ir_optional_value_field int 2 292 293 -store inner_r 294 -iconst 295 0 -store __and_295_3055 295 -load 296 owns_subject -store __and_295_3055 296 -brif 296 L3055 L3056 -label L3055 -load 297 inner_kind -call 298 string_len int 1 297 -iconst 299 0 -gt 300 298 299 -store __and_295_3055 300 -label L3056 -load 301 __and_295_3055 -brif 301 L3053 L3054 -label L3053 -load 302 inner_r -load 303 inner_kind -call 304 ir_ownership_ir_rc_retain_reg void 2 302 303 -jmp L3052 -label L3054 -label L3052 -strref 305 m46s825 -load 306 tmp -concat 307 305 306 -call 308 pith_cstring_release void 1 305 -strref 309 m46s333 -concat 310 307 309 -call 311 pith_cstring_release void 1 307 -call 312 pith_cstring_release void 1 309 -load 313 inner_r -call 314 int_to_string string 1 313 -concat 315 310 314 -call 316 pith_cstring_release void 1 310 -call 317 pith_cstring_release void 1 314 -call 318 ir_builder_ir_emit void 1 315 -call 319 pith_cstring_release void 1 315 -strref 320 m46s828 -load 321 end_l -concat 322 320 321 -call 323 pith_cstring_release void 1 320 -call 324 ir_builder_ir_emit void 1 322 -call 325 pith_cstring_release void 1 322 -load 326 none_l -call 327 ir_call_emit_ir_emit_label void 1 326 -load 328 node -iconst 329 0 -call 330 ir_emitter_core_ir_method_call_arg_expr int 2 328 329 -store default_idx 330 -load 331 default_idx -call 332 ir_emitter_core_ir_expr int 1 331 -store default_r 332 -strref 333 m46s825 -load 334 tmp -concat 335 333 334 -call 336 pith_cstring_release void 1 333 -strref 337 m46s333 -concat 338 335 337 -call 339 pith_cstring_release void 1 335 -call 340 pith_cstring_release void 1 337 -load 341 default_r -call 342 int_to_string string 1 341 -concat 343 338 342 -call 344 pith_cstring_release void 1 338 -call 345 pith_cstring_release void 1 342 -call 346 ir_builder_ir_emit void 1 343 -call 347 pith_cstring_release void 1 343 -load 348 end_l -call 349 ir_call_emit_ir_emit_label void 1 348 -load 350 owns_subject -brif 350 L3058 L3059 -label L3058 -call 351 ir_builder_ir_reg int 0 -strref 352 m46s893 -strref 353 m46s823 -load 354 obj_r -call 355 ir_call_emit_ir_emit_call1 void 4 351 352 353 354 -call 356 pith_cstring_release void 1 352 -call 357 pith_cstring_release void 1 353 -jmp L3057 -label L3059 -label L3057 -call 358 ir_builder_ir_reg int 0 -store out_r 358 -strref 359 m46s824 -load 360 out_r -call 361 int_to_string string 1 360 -concat 362 359 361 -call 363 pith_cstring_release void 1 359 -call 364 pith_cstring_release void 1 361 -strref 365 m46s333 -concat 366 362 365 -call 367 pith_cstring_release void 1 362 -call 368 pith_cstring_release void 1 365 -load 369 tmp -concat 370 366 369 -call 371 pith_cstring_release void 1 366 -call 372 ir_builder_ir_emit void 1 370 -call 373 pith_cstring_release void 1 370 -load 374 out_r -load 375 node -call 376 pith_struct_release void 1 375 -load 377 mname -call 378 pith_cstring_release void 1 377 -load 379 recv_info -call 380 pith_struct_release void 1 379 -load 381 inner_kind -call 382 pith_cstring_release void 1 381 -load 383 tmp -call 384 pith_cstring_release void 1 383 -load 385 some_l -call 386 pith_cstring_release void 1 385 -load 387 none_l -call 388 pith_cstring_release void 1 387 -load 389 end_l -call 390 pith_cstring_release void 1 389 -ret 374 -label L3049 -label L3047 -jmp L3011 -label L3013 -label L3011 -jmp L3008 -label L3010 -label L3008 -iconst 391 0 -store __and_391_3063 391 -iconst 392 0 -store __and_392_3063 392 -load 393 mname -strref 394 m46s6 -call 395 pith_cstring_eq bool 2 393 394 -call 396 pith_cstring_release void 1 394 -store __and_392_3063 395 -brif 395 L3063 L3064 +brif 117 L3062 L3063 +label L3062 +load 119 idx +load 120 node +call 121 ir_emitter_core_ir_emit_result_unwrap_or int 2 119 120 +load 122 node +call 123 pith_struct_release void 1 122 +load 124 mname +call 125 pith_cstring_release void 1 124 +load 126 recv_info +call 127 pith_struct_release void 1 126 +load 128 inner_kind +call 129 pith_cstring_release void 1 128 +load 130 tmp +call 131 pith_cstring_release void 1 130 +load 132 some_l +call 133 pith_cstring_release void 1 132 +load 134 none_l +call 135 pith_cstring_release void 1 134 +load 136 end_l +call 137 pith_cstring_release void 1 136 +ret 121 label L3063 -load 397 ir_emitter_core_ir_current_impl_subst_params -call 398 pith_list_len int 1 397 -iconst 399 0 -gt 400 398 399 -store __and_392_3063 400 -label L3064 -load 401 __and_392_3063 -store __and_391_3063 401 -brif 401 L3065 L3066 +label L3061 +load 138 mname +strref 139 m46s283 +call 140 pith_cstring_eq bool 2 138 139 +call 141 pith_cstring_release void 1 139 +brif 140 L3065 L3066 label L3065 -load 402 node -field 403 402 16 list children -call 404 pith_list_len int 1 403 -iconst 405 1 -eq 406 404 405 -store __and_391_3063 406 +load 142 idx +load 143 node +call 144 ir_emitter_core_ir_emit_result_or_else int 2 142 143 +load 145 node +call 146 pith_struct_release void 1 145 +load 147 mname +call 148 pith_cstring_release void 1 147 +load 149 recv_info +call 150 pith_struct_release void 1 149 +load 151 inner_kind +call 152 pith_cstring_release void 1 151 +load 153 tmp +call 154 pith_cstring_release void 1 153 +load 155 some_l +call 156 pith_cstring_release void 1 155 +load 157 none_l +call 158 pith_cstring_release void 1 157 +load 159 end_l +call 160 pith_cstring_release void 1 159 +ret 144 label L3066 -load 407 __and_391_3063 -brif 407 L3061 L3062 -label L3061 -load 408 node -field 409 408 16 list children -iconst 410 0 -call 411 pith_list_get_value_strict int 2 409 410 -call 412 ir_emitter_core_ir_expr int 1 411 -store obj_r 412 -call 413 ir_builder_ir_reg int 0 -store r 413 -strref 414 m46s832 -load 415 r -call 416 int_to_string string 1 415 -concat 417 414 416 -call 418 pith_cstring_release void 1 414 -call 419 pith_cstring_release void 1 416 -strref 420 m46s333 -concat 421 417 420 -call 422 pith_cstring_release void 1 417 -call 423 pith_cstring_release void 1 420 -load 424 obj_r -call 425 int_to_string string 1 424 -concat 426 421 425 -call 427 pith_cstring_release void 1 421 -call 428 pith_cstring_release void 1 425 -strref 429 m46s1164 -concat 430 426 429 -call 431 pith_cstring_release void 1 426 -call 432 pith_cstring_release void 1 429 -call 433 ir_builder_ir_emit void 1 430 -call 434 pith_cstring_release void 1 430 -load 435 r -load 436 node -call 437 pith_struct_release void 1 436 -load 438 mname -call 439 pith_cstring_release void 1 438 -load 440 recv_info -call 441 pith_struct_release void 1 440 -load 442 inner_kind -call 443 pith_cstring_release void 1 442 -load 444 tmp -call 445 pith_cstring_release void 1 444 -load 446 some_l -call 447 pith_cstring_release void 1 446 -load 448 none_l -call 449 pith_cstring_release void 1 448 -load 450 end_l -call 451 pith_cstring_release void 1 450 -ret 435 -label L3062 -label L3060 -iconst 452 0 -iconst 453 1 -sub 454 452 453 -load 455 node -call 456 pith_struct_release void 1 455 -load 457 mname -call 458 pith_cstring_release void 1 457 -load 459 recv_info -call 460 pith_struct_release void 1 459 -load 461 inner_kind -call 462 pith_cstring_release void 1 461 -load 463 tmp -call 464 pith_cstring_release void 1 463 -load 465 some_l -call 466 pith_cstring_release void 1 465 -load 467 none_l -call 468 pith_cstring_release void 1 467 -load 469 end_l -call 470 pith_cstring_release void 1 469 -ret 454 -load 471 node -call 472 pith_struct_release void 1 471 -load 473 mname -call 474 pith_cstring_release void 1 473 -load 475 recv_info -call 476 pith_struct_release void 1 475 -load 477 inner_kind -call 478 pith_cstring_release void 1 477 -load 479 tmp -call 480 pith_cstring_release void 1 479 -load 481 some_l -call 482 pith_cstring_release void 1 481 -load 483 none_l -call 484 pith_cstring_release void 1 483 -load 485 end_l -call 486 pith_cstring_release void 1 485 -iconst 487 0 -ret 487 -endfunc -func ir_emitter_core_ir_emit_module_alias_method 1 int -param idx -iconst 1 0 -store node 1 -iconst 2 0 -store alias_fname 2 -iconst 3 0 -store call_name 3 -iconst 4 0 -store alias_expr_info 4 -iconst 5 0 -store ctor_args 5 -iconst 6 0 -store generic_ret_type 6 -iconst 7 0 -store mct 7 -iconst 8 0 -store arg_regs 8 -iconst 9 0 -store ret_type 9 -load 10 node -load 11 idx -call 12 ast_get_node struct:Node 1 11 -call 13 pith_struct_release void 1 10 -store node 12 -load 14 alias_fname -load 15 idx -call 16 ir_alias_registry_ir_resolve_module_alias_method_call_name string 1 15 -call 17 pith_cstring_release void 1 14 -store alias_fname 16 -load 18 alias_fname -call 19 string_len int 1 18 -iconst 20 0 -gt 21 19 20 -brif 21 L3068 L3069 +label L3064 +load 161 mname +strref 162 m46s270 +call 163 pith_cstring_eq bool 2 161 162 +call 164 pith_cstring_release void 1 162 +brif 163 L3068 L3069 label L3068 -load 22 call_name -load 23 alias_fname -call 24 pith_cstring_retain void 1 23 -call 25 pith_cstring_release void 1 22 -store call_name 23 -load 26 idx -call 27 checker_c_get_expr_type int 1 26 -store alias_expr_tid 27 -load 28 alias_expr_tid -iconst 29 0 -gte 30 28 29 -brif 30 L3071 L3072 -label L3071 -load 31 alias_expr_info -load 32 alias_expr_tid -call 33 types_get_type_info struct:TypeInfo 1 32 -call 34 pith_struct_release void 1 31 -store alias_expr_info 33 -iconst 35 0 -store __and_35_3076 35 -load 36 alias_expr_info -field 37 36 0 string kind -strref 38 m46s15 -call 39 pith_cstring_eq bool 2 37 38 -call 40 pith_cstring_release void 1 38 -store __and_35_3076 39 -brif 39 L3076 L3077 -label L3076 -load 41 alias_expr_info -field 42 41 8 string name -load 43 call_name -call 44 pith_cstring_eq bool 2 42 43 -store __and_35_3076 44 -label L3077 -load 45 __and_35_3076 -brif 45 L3074 L3075 +load 165 node +call 166 ir_emitter_core_ir_emit_result_to_string int 1 165 +load 167 node +call 168 pith_struct_release void 1 167 +load 169 mname +call 170 pith_cstring_release void 1 169 +load 171 recv_info +call 172 pith_struct_release void 1 171 +load 173 inner_kind +call 174 pith_cstring_release void 1 173 +load 175 tmp +call 176 pith_cstring_release void 1 175 +load 177 some_l +call 178 pith_cstring_release void 1 177 +load 179 none_l +call 180 pith_cstring_release void 1 179 +load 181 end_l +call 182 pith_cstring_release void 1 181 +ret 166 +label L3069 +label L3067 +jmp L3058 +label L3060 +label L3058 +iconst 183 0 +store __and_183_3073 183 +load 184 recv_info +field 185 184 0 string kind +strref 186 m46s21 +call 187 pith_cstring_eq bool 2 185 186 +call 188 pith_cstring_release void 1 186 +store __and_183_3073 187 +brif 187 L3073 L3074 +label L3073 +load 189 mname +strref 190 m46s6 +call 191 pith_cstring_eq bool 2 189 190 +call 192 pith_cstring_release void 1 190 +store __and_183_3073 191 label L3074 -load 46 ctor_args -call 47 pith_list_new_default list 0 -call 48 pith_list_release_handle void 1 46 -store ctor_args 47 -load 49 node -field 50 49 16 list children -call 51 pith_auto_len int 1 50 -iconst 52 0 -store __for_idx_346 52 -store __for_len_346 51 -store __for_iter_346 50 +load 193 __and_183_3073 +brif 193 L3071 L3072 +label L3071 +load 194 node +field 195 194 16 list children +iconst 196 0 +call 197 pith_list_get_value_strict int 2 195 196 +call 198 ir_emitter_core_ir_expr int 1 197 +store obj_r 198 +load 199 obj_r +load 200 recv_tid +call 201 ir_optionals_ir_optional_value_field int 2 199 200 +store val_r 201 +load 202 node +field 203 202 16 list children +iconst 204 0 +call 205 pith_list_get_value_strict int 2 203 204 +load 206 obj_r +call 207 ir_emitter_core_ir_release_weak_shell void 2 205 206 +load 208 val_r +load 209 node +call 210 pith_struct_release void 1 209 +load 211 mname +call 212 pith_cstring_release void 1 211 +load 213 recv_info +call 214 pith_struct_release void 1 213 +load 215 inner_kind +call 216 pith_cstring_release void 1 215 +load 217 tmp +call 218 pith_cstring_release void 1 217 +load 219 some_l +call 220 pith_cstring_release void 1 219 +load 221 none_l +call 222 pith_cstring_release void 1 221 +load 223 end_l +call 224 pith_cstring_release void 1 223 +ret 208 +label L3072 +label L3070 +iconst 225 0 +store __and_225_3078 225 +load 226 recv_info +field 227 226 0 string kind +strref 228 m46s21 +call 229 pith_cstring_eq bool 2 227 228 +call 230 pith_cstring_release void 1 228 +store __and_225_3078 229 +brif 229 L3078 L3079 label L3078 -load 53 __for_idx_346 -load 54 __for_len_346 -lt 55 53 54 -brif 55 L3079 L3081 +load 231 mname +strref 232 m46s285 +call 233 pith_cstring_eq bool 2 231 232 +call 234 pith_cstring_release void 1 232 +store __and_225_3078 233 label L3079 -load 56 __for_iter_346 -load 57 __for_idx_346 -call 58 pith_list_get_value unknown 2 56 57 -store child 58 -load 59 __for_idx_346 -store ci 59 -load 60 ci -iconst 61 0 -eq 62 60 61 -brif 62 L3083 L3084 -label L3083 -jmp L3080 -label L3084 -label L3082 -load 63 ctor_args -load 64 child -call 65 pith_list_push_value void 2 63 64 -label L3080 -load 66 __for_idx_346 -iconst 67 1 -add 68 66 67 -store __for_idx_346 68 -jmp L3078 -label L3081 -load 69 call_name -load 70 ctor_args -load 71 alias_expr_tid -call 72 ir_emitter_core_ir_emit_struct_positional_init int 3 69 70 71 -load 73 node -call 74 pith_struct_release void 1 73 -load 75 alias_fname +load 235 __and_225_3078 +brif 235 L3076 L3077 +label L3076 +load 236 node +field 237 236 16 list children +iconst 238 0 +call 239 pith_list_get_value_strict int 2 237 238 +call 240 ir_emitter_core_ir_expr int 1 239 +store obj_r 240 +load 241 node +field 242 241 16 list children +iconst 243 0 +call 244 pith_list_get_value_strict int 2 242 243 +call 245 ir_emitter_core_ir_optional_subject_is_owned bool 1 244 +store owns_subject 245 +load 246 inner_kind +load 247 recv_info +field 248 247 64 int inner +call 249 ir_type_helpers_ir_type_from_tid string 1 248 +call 250 ir_struct_registry_ir_rc_kind string 1 249 +call 251 pith_cstring_release void 1 249 +call 252 pith_cstring_release void 1 246 +store inner_kind 250 +load 253 obj_r +call 254 ir_optionals_ir_optional_flag_field int 1 253 +store flag_r 254 +load 255 tmp +strref 256 m46s285 +call 257 ir_builder_ir_new_temp_name string 1 256 +call 258 pith_cstring_release void 1 256 +call 259 pith_cstring_release void 1 255 +store tmp 257 +load 260 some_l +call 261 ir_builder_ir_label string 0 +call 262 pith_cstring_release void 1 260 +store some_l 261 +load 263 none_l +call 264 ir_builder_ir_label string 0 +call 265 pith_cstring_release void 1 263 +store none_l 264 +load 266 end_l +call 267 ir_builder_ir_label string 0 +call 268 pith_cstring_release void 1 266 +store end_l 267 +strref 269 m46s829 +load 270 flag_r +call 271 int_to_string string 1 270 +concat 272 269 271 +call 273 pith_cstring_release void 1 269 +call 274 pith_cstring_release void 1 271 +strref 275 m46s333 +concat 276 272 275 +call 277 pith_cstring_release void 1 272 +call 278 pith_cstring_release void 1 275 +load 279 some_l +concat 280 276 279 +call 281 pith_cstring_release void 1 276 +strref 282 m46s333 +concat 283 280 282 +call 284 pith_cstring_release void 1 280 +call 285 pith_cstring_release void 1 282 +load 286 none_l +concat 287 283 286 +call 288 pith_cstring_release void 1 283 +call 289 ir_builder_ir_emit void 1 287 +call 290 pith_cstring_release void 1 287 +load 291 some_l +call 292 ir_call_emit_ir_emit_label void 1 291 +load 293 obj_r +load 294 recv_tid +call 295 ir_optionals_ir_optional_value_field int 2 293 294 +store inner_r 295 +iconst 296 0 +store __and_296_3083 296 +load 297 inner_kind +call 298 string_len int 1 297 +iconst 299 0 +gt 300 298 299 +store __and_296_3083 300 +brif 300 L3083 L3084 +label L3083 +load 301 owns_subject +store __and_296_3083 301 +label L3084 +load 302 __and_296_3083 +brif 302 L3081 L3082 +label L3081 +load 303 inner_r +load 304 inner_kind +call 305 ir_ownership_ir_rc_retain_reg void 2 303 304 +jmp L3080 +label L3082 +label L3080 +strref 306 m46s825 +load 307 tmp +concat 308 306 307 +call 309 pith_cstring_release void 1 306 +strref 310 m46s333 +concat 311 308 310 +call 312 pith_cstring_release void 1 308 +call 313 pith_cstring_release void 1 310 +load 314 inner_r +call 315 int_to_string string 1 314 +concat 316 311 315 +call 317 pith_cstring_release void 1 311 +call 318 pith_cstring_release void 1 315 +call 319 ir_builder_ir_emit void 1 316 +call 320 pith_cstring_release void 1 316 +strref 321 m46s828 +load 322 end_l +concat 323 321 322 +call 324 pith_cstring_release void 1 321 +call 325 ir_builder_ir_emit void 1 323 +call 326 pith_cstring_release void 1 323 +load 327 none_l +call 328 ir_call_emit_ir_emit_label void 1 327 +load 329 node +iconst 330 0 +call 331 ir_emitter_core_ir_method_call_arg_expr int 2 329 330 +store default_idx 331 +load 332 default_idx +call 333 ir_emitter_core_ir_expr int 1 332 +store default_r 333 +strref 334 m46s825 +load 335 tmp +concat 336 334 335 +call 337 pith_cstring_release void 1 334 +strref 338 m46s333 +concat 339 336 338 +call 340 pith_cstring_release void 1 336 +call 341 pith_cstring_release void 1 338 +load 342 default_r +call 343 int_to_string string 1 342 +concat 344 339 343 +call 345 pith_cstring_release void 1 339 +call 346 pith_cstring_release void 1 343 +call 347 ir_builder_ir_emit void 1 344 +call 348 pith_cstring_release void 1 344 +load 349 end_l +call 350 ir_call_emit_ir_emit_label void 1 349 +load 351 owns_subject +brif 351 L3086 L3087 +label L3086 +call 352 ir_builder_ir_reg int 0 +strref 353 m46s893 +strref 354 m46s823 +load 355 obj_r +call 356 ir_call_emit_ir_emit_call1 void 4 352 353 354 355 +call 357 pith_cstring_release void 1 353 +call 358 pith_cstring_release void 1 354 +jmp L3085 +label L3087 +label L3085 +call 359 ir_builder_ir_reg int 0 +store out_r 359 +strref 360 m46s824 +load 361 out_r +call 362 int_to_string string 1 361 +concat 363 360 362 +call 364 pith_cstring_release void 1 360 +call 365 pith_cstring_release void 1 362 +strref 366 m46s333 +concat 367 363 366 +call 368 pith_cstring_release void 1 363 +call 369 pith_cstring_release void 1 366 +load 370 tmp +concat 371 367 370 +call 372 pith_cstring_release void 1 367 +call 373 ir_builder_ir_emit void 1 371 +call 374 pith_cstring_release void 1 371 +load 375 out_r +load 376 node +call 377 pith_struct_release void 1 376 +load 378 mname +call 379 pith_cstring_release void 1 378 +load 380 recv_info +call 381 pith_struct_release void 1 380 +load 382 inner_kind +call 383 pith_cstring_release void 1 382 +load 384 tmp +call 385 pith_cstring_release void 1 384 +load 386 some_l +call 387 pith_cstring_release void 1 386 +load 388 none_l +call 389 pith_cstring_release void 1 388 +load 390 end_l +call 391 pith_cstring_release void 1 390 +ret 375 +label L3077 +label L3075 +jmp L3039 +label L3041 +label L3039 +jmp L3036 +label L3038 +label L3036 +iconst 392 0 +store __and_392_3091 392 +iconst 393 0 +store __and_393_3091 393 +load 394 mname +strref 395 m46s6 +call 396 pith_cstring_eq bool 2 394 395 +call 397 pith_cstring_release void 1 395 +store __and_393_3091 396 +brif 396 L3091 L3092 +label L3091 +load 398 ir_emitter_core_ir_current_impl_subst_params +call 399 pith_list_len int 1 398 +iconst 400 0 +gt 401 399 400 +store __and_393_3091 401 +label L3092 +load 402 __and_393_3091 +store __and_392_3091 402 +brif 402 L3093 L3094 +label L3093 +load 403 node +field 404 403 16 list children +call 405 pith_list_len int 1 404 +iconst 406 1 +eq 407 405 406 +store __and_392_3091 407 +label L3094 +load 408 __and_392_3091 +brif 408 L3089 L3090 +label L3089 +load 409 node +field 410 409 16 list children +iconst 411 0 +call 412 pith_list_get_value_strict int 2 410 411 +call 413 ir_emitter_core_ir_expr int 1 412 +store obj_r 413 +call 414 ir_builder_ir_reg int 0 +store r 414 +strref 415 m46s832 +load 416 r +call 417 int_to_string string 1 416 +concat 418 415 417 +call 419 pith_cstring_release void 1 415 +call 420 pith_cstring_release void 1 417 +strref 421 m46s333 +concat 422 418 421 +call 423 pith_cstring_release void 1 418 +call 424 pith_cstring_release void 1 421 +load 425 obj_r +call 426 int_to_string string 1 425 +concat 427 422 426 +call 428 pith_cstring_release void 1 422 +call 429 pith_cstring_release void 1 426 +strref 430 m46s1164 +concat 431 427 430 +call 432 pith_cstring_release void 1 427 +call 433 pith_cstring_release void 1 430 +call 434 ir_builder_ir_emit void 1 431 +call 435 pith_cstring_release void 1 431 +load 436 r +load 437 node +call 438 pith_struct_release void 1 437 +load 439 mname +call 440 pith_cstring_release void 1 439 +load 441 recv_info +call 442 pith_struct_release void 1 441 +load 443 inner_kind +call 444 pith_cstring_release void 1 443 +load 445 tmp +call 446 pith_cstring_release void 1 445 +load 447 some_l +call 448 pith_cstring_release void 1 447 +load 449 none_l +call 450 pith_cstring_release void 1 449 +load 451 end_l +call 452 pith_cstring_release void 1 451 +ret 436 +label L3090 +label L3088 +iconst 453 0 +iconst 454 1 +sub 455 453 454 +load 456 node +call 457 pith_struct_release void 1 456 +load 458 mname +call 459 pith_cstring_release void 1 458 +load 460 recv_info +call 461 pith_struct_release void 1 460 +load 462 inner_kind +call 463 pith_cstring_release void 1 462 +load 464 tmp +call 465 pith_cstring_release void 1 464 +load 466 some_l +call 467 pith_cstring_release void 1 466 +load 468 none_l +call 469 pith_cstring_release void 1 468 +load 470 end_l +call 471 pith_cstring_release void 1 470 +ret 455 +load 472 node +call 473 pith_struct_release void 1 472 +load 474 mname +call 475 pith_cstring_release void 1 474 +load 476 recv_info +call 477 pith_struct_release void 1 476 +load 478 inner_kind +call 479 pith_cstring_release void 1 478 +load 480 tmp +call 481 pith_cstring_release void 1 480 +load 482 some_l +call 483 pith_cstring_release void 1 482 +load 484 none_l +call 485 pith_cstring_release void 1 484 +load 486 end_l +call 487 pith_cstring_release void 1 486 +iconst 488 0 +ret 488 +endfunc +func ir_emitter_core_ir_emit_module_alias_method 1 int +param idx +iconst 1 0 +store node 1 +iconst 2 0 +store alias_fname 2 +iconst 3 0 +store call_name 3 +iconst 4 0 +store alias_expr_info 4 +iconst 5 0 +store ctor_args 5 +iconst 6 0 +store generic_ret_type 6 +iconst 7 0 +store mct 7 +iconst 8 0 +store arg_regs 8 +iconst 9 0 +store ret_type 9 +load 10 node +load 11 idx +call 12 ast_get_node struct:Node 1 11 +call 13 pith_struct_release void 1 10 +store node 12 +load 14 alias_fname +load 15 idx +call 16 ir_alias_registry_ir_resolve_module_alias_method_call_name string 1 15 +call 17 pith_cstring_release void 1 14 +store alias_fname 16 +load 18 alias_fname +call 19 string_len int 1 18 +iconst 20 0 +gt 21 19 20 +brif 21 L3096 L3097 +label L3096 +load 22 call_name +load 23 alias_fname +call 24 pith_cstring_retain void 1 23 +call 25 pith_cstring_release void 1 22 +store call_name 23 +load 26 idx +call 27 checker_c_get_expr_type int 1 26 +store alias_expr_tid 27 +load 28 alias_expr_tid +iconst 29 0 +gte 30 28 29 +brif 30 L3099 L3100 +label L3099 +load 31 alias_expr_info +load 32 alias_expr_tid +call 33 types_get_type_info struct:TypeInfo 1 32 +call 34 pith_struct_release void 1 31 +store alias_expr_info 33 +iconst 35 0 +store __and_35_3104 35 +load 36 alias_expr_info +field 37 36 0 string kind +strref 38 m46s15 +call 39 pith_cstring_eq bool 2 37 38 +call 40 pith_cstring_release void 1 38 +store __and_35_3104 39 +brif 39 L3104 L3105 +label L3104 +load 41 alias_expr_info +field 42 41 8 string name +load 43 call_name +call 44 pith_cstring_eq bool 2 42 43 +store __and_35_3104 44 +label L3105 +load 45 __and_35_3104 +brif 45 L3102 L3103 +label L3102 +load 46 ctor_args +call 47 pith_list_new_default list 0 +call 48 pith_list_release_handle void 1 46 +store ctor_args 47 +load 49 node +field 50 49 16 list children +call 51 pith_auto_len int 1 50 +iconst 52 0 +store __for_idx_346 52 +store __for_len_346 51 +store __for_iter_346 50 +label L3106 +load 53 __for_idx_346 +load 54 __for_len_346 +lt 55 53 54 +brif 55 L3107 L3109 +label L3107 +load 56 __for_iter_346 +load 57 __for_idx_346 +call 58 pith_list_get_value unknown 2 56 57 +store child 58 +load 59 __for_idx_346 +store ci 59 +load 60 ci +iconst 61 0 +eq 62 60 61 +brif 62 L3111 L3112 +label L3111 +jmp L3108 +label L3112 +label L3110 +load 63 ctor_args +load 64 child +call 65 pith_list_push_value void 2 63 64 +label L3108 +load 66 __for_idx_346 +iconst 67 1 +add 68 66 67 +store __for_idx_346 68 +jmp L3106 +label L3109 +load 69 call_name +load 70 ctor_args +load 71 alias_expr_tid +call 72 ir_emitter_core_ir_emit_struct_positional_init int 3 69 70 71 +load 73 node +call 74 pith_struct_release void 1 73 +load 75 alias_fname call 76 pith_cstring_release void 1 75 load 77 call_name call 78 pith_cstring_release void 1 77 @@ -150431,15 +150614,15 @@ call 88 pith_list_release_handle void 1 87 load 89 ret_type call 90 pith_cstring_release void 1 89 ret 72 -label L3075 -label L3073 -jmp L3070 -label L3072 -label L3070 +label L3103 +label L3101 +jmp L3098 +label L3100 +label L3098 load 91 call_name call 92 ir_generics_ir_is_generic_function_name bool 1 91 -brif 92 L3086 L3087 -label L3086 +brif 92 L3114 L3115 +label L3114 load 93 generic_ret_type load 94 idx call 95 ir_type_helpers_ir_checked_type string 1 94 @@ -150449,16 +150632,16 @@ load 97 generic_ret_type call 98 string_len int 1 97 iconst 99 0 eq 100 98 99 -brif 100 L3089 L3090 -label L3089 +brif 100 L3117 L3118 +label L3117 load 101 generic_ret_type load 102 idx call 103 ir_emitter_core_ir_infer_type string 1 102 call 104 pith_cstring_release void 1 101 store generic_ret_type 103 -jmp L3088 -label L3090 -label L3088 +jmp L3116 +label L3118 +label L3116 load 105 mct load 106 call_name load 107 node @@ -150477,9 +150660,9 @@ load 118 generic_ret_type call 119 ir_generics_ir_queue_generic_specialization string 3 116 117 118 call 120 pith_cstring_release void 1 115 store call_name 119 -jmp L3085 -label L3087 -label L3085 +jmp L3113 +label L3115 +label L3113 load 121 arg_regs load 122 node iconst 123 1 @@ -150522,36 +150705,36 @@ iconst 153 1 load 154 arg_regs call 155 ir_emitter_core_ir_release_owned_string_args void 3 152 153 154 iconst 156 0 -store __and_156_3094 156 +store __and_156_3122 156 iconst 157 0 -store __and_157_3094 157 +store __and_157_3122 157 load 158 uses_result_abi -store __and_157_3094 158 -brif 158 L3094 L3095 -label L3094 +store __and_157_3122 158 +brif 158 L3122 L3123 +label L3122 load 159 ret_type strref 160 m46s23 call 162 pith_cstring_eq bool 2 159 160 iconst 163 1 sub 161 163 162 call 164 pith_cstring_release void 1 160 -store __and_157_3094 161 -label L3095 -load 165 __and_157_3094 -store __and_156_3094 165 -brif 165 L3096 L3097 -label L3096 +store __and_157_3122 161 +label L3123 +load 165 __and_157_3122 +store __and_156_3122 165 +brif 165 L3124 L3125 +label L3124 load 166 idx call 167 ir_type_helpers_ir_checked_result_kind string 1 166 strref 168 m46s23 call 169 pith_cstring_eq bool 2 167 168 call 170 pith_cstring_release void 1 167 call 171 pith_cstring_release void 1 168 -store __and_156_3094 169 -label L3097 -load 172 __and_156_3094 -brif 172 L3092 L3093 -label L3092 +store __and_156_3122 169 +label L3125 +load 172 __and_156_3122 +brif 172 L3120 L3121 +label L3120 load 173 r load 174 ret_type load 175 call_name @@ -150575,8 +150758,8 @@ call 192 pith_list_release_handle void 1 191 load 193 ret_type call 194 pith_cstring_release void 1 193 ret 176 -label L3093 -label L3091 +label L3121 +label L3119 load 195 r load 196 node call 197 pith_struct_release void 1 196 @@ -150597,8 +150780,8 @@ call 211 pith_list_release_handle void 1 210 load 212 ret_type call 213 pith_cstring_release void 1 212 ret 195 -label L3069 -label L3067 +label L3097 +label L3095 iconst 214 0 iconst 215 1 sub 216 214 215 @@ -150700,8 +150883,8 @@ store self_hosted_list_r 34 load 35 self_hosted_list_r iconst 36 0 gte 37 35 36 -brif 37 L3099 L3100 -label L3099 +brif 37 L3127 L3128 +label L3127 load 38 self_hosted_list_r load 39 node call 40 pith_struct_release void 1 39 @@ -150734,8 +150917,8 @@ call 66 pith_list_release_handle void 1 65 load 67 recv_kind call 68 pith_cstring_release void 1 67 ret 38 -label L3100 -label L3098 +label L3128 +label L3126 load 69 cf_struct load 70 obj_type call 71 ir_method_tables_ir_strip_type_args string 1 70 @@ -150745,8 +150928,8 @@ load 73 cf_struct call 74 string_len int 1 73 iconst 75 0 gt 76 74 75 -brif 76 L3102 L3103 -label L3102 +brif 76 L3130 L3131 +label L3130 load 77 field_key load 78 cf_struct strref 79 m46s26 @@ -150764,22 +150947,22 @@ call 89 ir_emitter_core_ir_lookup_impl_method_name string 2 87 88 call 90 pith_cstring_release void 1 86 store existing_method 89 iconst 91 0 -store __and_91_3107 91 +store __and_91_3135 91 load 92 ir_struct_registry_ir_struct_field_index_lookup load 93 field_key call 94 contains_key bool 2 92 93 -store __and_91_3107 94 -brif 94 L3107 L3108 -label L3107 +store __and_91_3135 94 +brif 94 L3135 L3136 +label L3135 load 95 existing_method call 96 string_len int 1 95 iconst 97 0 eq 98 96 97 -store __and_91_3107 98 -label L3108 -load 99 __and_91_3107 -brif 99 L3105 L3106 -label L3105 +store __and_91_3135 98 +label L3136 +load 99 __and_91_3135 +brif 99 L3133 L3134 +label L3133 load 100 node field 101 100 16 list children iconst 102 0 @@ -150829,7 +151012,7 @@ call 142 pith_cstring_release void 1 137 call 143 ir_builder_ir_emit void 1 141 call 144 pith_cstring_release void 1 141 load 145 tmp_name -strref 146 m46s1208 +strref 146 m46s1209 call 147 ir_emitter_core_ir_temp_name string 1 146 call 148 pith_cstring_release void 1 146 call 149 pith_cstring_release void 1 145 @@ -150855,7 +151038,7 @@ call 167 pith_list_release_handle void 1 165 store arg_regs 166 iconst 168 0 store ai 168 -label L3109 +label L3137 load 169 ai load 170 node field 171 170 16 list children @@ -150863,8 +151046,8 @@ call 172 pith_list_len int 1 171 iconst 173 1 sub 174 172 173 lt 175 169 174 -brif 175 L3110 L3111 -label L3110 +brif 175 L3138 L3139 +label L3138 load 176 node load 177 ai call 178 ir_emitter_core_ir_method_call_arg_expr int 2 176 177 @@ -150877,8 +151060,8 @@ load 183 ai iconst 184 1 add 185 183 184 store ai 185 -jmp L3109 -label L3111 +jmp L3137 +label L3139 call 186 ir_builder_ir_reg int 0 store r 186 strref 187 m46s1028 @@ -150943,11 +151126,11 @@ call 245 pith_list_release_handle void 1 244 load 246 recv_kind call 247 pith_cstring_release void 1 246 ret 217 -label L3106 -label L3104 -jmp L3101 -label L3103 -label L3101 +label L3134 +label L3132 +jmp L3129 +label L3131 +label L3129 load 248 emit_name load 249 mname load 250 obj_type @@ -150955,14 +151138,14 @@ call 251 ir_metadata_ir_method_emit_name string 2 249 250 call 252 pith_cstring_release void 1 248 store emit_name 251 iconst 253 0 -store __and_253_3115 253 +store __and_253_3143 253 load 254 emit_name strref 255 m46s704 call 256 pith_cstring_eq bool 2 254 255 call 257 pith_cstring_release void 1 255 -store __and_253_3115 256 -brif 256 L3115 L3116 -label L3115 +store __and_253_3143 256 +brif 256 L3143 L3144 +label L3143 load 258 node field 259 258 16 list children iconst 260 0 @@ -150972,31 +151155,31 @@ strref 263 m46s668 call 264 pith_cstring_eq bool 2 262 263 call 265 pith_cstring_release void 1 262 call 266 pith_cstring_release void 1 263 -store __and_253_3115 264 -label L3116 -load 267 __and_253_3115 -brif 267 L3113 L3114 -label L3113 +store __and_253_3143 264 +label L3144 +load 267 __and_253_3143 +brif 267 L3141 L3142 +label L3141 load 268 emit_name -strref 269 m46s1207 +strref 269 m46s1208 call 270 pith_cstring_release void 1 268 store emit_name 269 -jmp L3112 -label L3114 -label L3112 +jmp L3140 +label L3142 +label L3140 load 271 emit_name call 272 ir_metadata_ir_is_bool_returning_method bool 1 271 -brif 272 L3118 L3119 -label L3118 +brif 272 L3146 L3147 +label L3146 load 273 ir_builder_ir_var_types -strref 274 m46s1206 +strref 274 m46s1207 strref 275 m46s670 call 276 map_insert void 3 273 274 275 call 277 pith_cstring_release void 1 274 call 278 pith_cstring_release void 1 275 -jmp L3117 -label L3119 -label L3117 +jmp L3145 +label L3147 +label L3145 load 279 impl_name load 280 obj_type load 281 mname @@ -151007,33 +151190,33 @@ load 284 impl_name call 285 string_len int 1 284 iconst 286 0 eq 287 285 286 -brif 287 L3121 L3122 -label L3121 +brif 287 L3149 L3150 +label L3149 load 288 impl_name load 289 obj_type load 290 mname call 291 ir_emitter_core_ir_lookup_impl_method_name string 2 289 290 call 292 pith_cstring_release void 1 288 store impl_name 291 -jmp L3120 -label L3122 -label L3120 +jmp L3148 +label L3150 +label L3148 load 293 impl_name call 294 string_len int 1 293 iconst 295 0 gt 296 294 295 store impl_dispatch 296 load 297 impl_dispatch -brif 297 L3124 L3125 -label L3124 +brif 297 L3152 L3153 +label L3152 load 298 emit_name load 299 impl_name call 300 pith_cstring_retain void 1 299 call 301 pith_cstring_release void 1 298 store emit_name 299 -jmp L3123 -label L3125 -label L3123 +jmp L3151 +label L3153 +label L3151 load 302 call_regs load 303 node call 304 ir_emitter_core_ir_collect_method_call_regs list 1 303 @@ -151049,15 +151232,15 @@ call 311 pith_list_release_handle void 1 309 store arg_regs 310 iconst 312 0 store ci 312 -label L3126 +label L3154 load 313 ci iconst 314 1 add 315 313 314 load 316 call_regs call 317 pith_list_len int 1 316 lt 318 315 317 -brif 318 L3127 L3128 -label L3127 +brif 318 L3155 L3156 +label L3155 load 319 arg_regs load 320 call_regs load 321 ci @@ -151069,8 +151252,8 @@ load 326 ci iconst 327 1 add 328 326 327 store ci 328 -jmp L3126 -label L3128 +jmp L3154 +label L3156 call 329 ir_builder_ir_reg int 0 store r 329 load 330 emit_name @@ -151095,144 +151278,144 @@ call 345 pith_cstring_release void 1 340 store ret_type 344 load 346 emit_name call 347 ir_metadata_ir_is_void_method bool 1 346 -brif 347 L3130 L3131 -label L3130 +brif 347 L3158 L3159 +label L3158 load 348 ret_type strref 349 m46s823 call 350 pith_cstring_release void 1 348 store ret_type 349 -jmp L3129 -label L3131 -label L3129 +jmp L3157 +label L3159 +label L3157 iconst 351 0 iconst 352 1 sub 353 351 352 store store_value_pos 353 iconst 354 0 -store __or_354_3135 354 +store __or_354_3163 354 iconst 355 0 -store __or_355_3135 355 +store __or_355_3163 355 iconst 356 0 -store __or_356_3135 356 +store __or_356_3163 356 load 357 emit_name call 358 ir_emitter_core_ir_is_channel_send_name bool 1 357 -store __or_356_3135 358 -brif 358 L3136 L3135 -label L3135 +store __or_356_3163 358 +brif 358 L3164 L3163 +label L3163 load 359 emit_name strref 360 m46s268 call 361 pith_cstring_eq bool 2 359 360 call 362 pith_cstring_release void 1 360 -store __or_356_3135 361 -label L3136 -load 363 __or_356_3135 -store __or_355_3135 363 -brif 363 L3138 L3137 -label L3137 +store __or_356_3163 361 +label L3164 +load 363 __or_356_3163 +store __or_355_3163 363 +brif 363 L3166 L3165 +label L3165 load 364 emit_name strref 365 m46s746 call 366 pith_cstring_eq bool 2 364 365 call 367 pith_cstring_release void 1 365 -store __or_355_3135 366 -label L3138 -load 368 __or_355_3135 -store __or_354_3135 368 -brif 368 L3140 L3139 -label L3139 +store __or_355_3163 366 +label L3166 +load 368 __or_355_3163 +store __or_354_3163 368 +brif 368 L3168 L3167 +label L3167 load 369 emit_name strref 370 m46s747 call 371 pith_cstring_eq bool 2 369 370 call 372 pith_cstring_release void 1 370 -store __or_354_3135 371 -label L3140 -load 373 __or_354_3135 -brif 373 L3133 L3134 -label L3133 +store __or_354_3163 371 +label L3168 +load 373 __or_354_3163 +brif 373 L3161 L3162 +label L3161 iconst 374 0 store store_value_pos 374 -jmp L3132 -label L3134 +jmp L3160 +label L3162 iconst 375 0 -store __or_375_3143 375 +store __or_375_3171 375 iconst 376 0 -store __or_376_3143 376 +store __or_376_3171 376 iconst 377 0 -store __or_377_3143 377 +store __or_377_3171 377 iconst 378 0 -store __or_378_3143 378 +store __or_378_3171 378 load 379 emit_name strref 380 m46s247 call 381 pith_cstring_eq bool 2 379 380 call 382 pith_cstring_release void 1 380 -store __or_378_3143 381 -brif 381 L3144 L3143 -label L3143 +store __or_378_3171 381 +brif 381 L3172 L3171 +label L3171 load 383 emit_name strref 384 m46s690 call 385 pith_cstring_eq bool 2 383 384 call 386 pith_cstring_release void 1 384 -store __or_378_3143 385 -label L3144 -load 387 __or_378_3143 -store __or_377_3143 387 -brif 387 L3146 L3145 -label L3145 +store __or_378_3171 385 +label L3172 +load 387 __or_378_3171 +store __or_377_3171 387 +brif 387 L3174 L3173 +label L3173 load 388 emit_name strref 389 m46s691 call 390 pith_cstring_eq bool 2 388 389 call 391 pith_cstring_release void 1 389 -store __or_377_3143 390 -label L3146 -load 392 __or_377_3143 -store __or_376_3143 392 -brif 392 L3148 L3147 -label L3147 +store __or_377_3171 390 +label L3174 +load 392 __or_377_3171 +store __or_376_3171 392 +brif 392 L3176 L3175 +label L3175 load 393 emit_name strref 394 m46s18 call 395 pith_cstring_eq bool 2 393 394 call 396 pith_cstring_release void 1 394 -store __or_376_3143 395 -label L3148 -load 397 __or_376_3143 -store __or_375_3143 397 -brif 397 L3150 L3149 -label L3149 +store __or_376_3171 395 +label L3176 +load 397 __or_376_3171 +store __or_375_3171 397 +brif 397 L3178 L3177 +label L3177 load 398 emit_name strref 399 m46s769 call 400 pith_cstring_eq bool 2 398 399 call 401 pith_cstring_release void 1 399 -store __or_375_3143 400 -label L3150 -load 402 __or_375_3143 -brif 402 L3141 L3142 -label L3141 +store __or_375_3171 400 +label L3178 +load 402 __or_375_3171 +brif 402 L3169 L3170 +label L3169 iconst 403 1 store store_value_pos 403 -jmp L3132 -label L3142 -label L3132 +jmp L3160 +label L3170 +label L3160 load 404 impl_dispatch iconst 406 1 sub 405 406 404 -brif 405 L3152 L3153 -label L3152 +brif 405 L3180 L3181 +label L3180 iconst 407 0 -store __and_407_3157 407 +store __and_407_3185 407 load 408 store_value_pos iconst 409 0 gte 410 408 409 -store __and_407_3157 410 -brif 410 L3157 L3158 -label L3157 +store __and_407_3185 410 +brif 410 L3185 L3186 +label L3185 load 411 store_value_pos load 412 arg_regs call 413 pith_list_len int 1 412 lt 414 411 413 -store __and_407_3157 414 -label L3158 -load 415 __and_407_3157 -brif 415 L3155 L3156 -label L3155 +store __and_407_3185 414 +label L3186 +load 415 __and_407_3185 +brif 415 L3183 L3184 +label L3183 load 416 node load 417 store_value_pos call 418 ir_emitter_core_ir_method_call_arg_expr int 2 416 417 @@ -151240,8 +151423,8 @@ store value_expr 418 load 419 value_expr iconst 420 0 gte 421 419 420 -brif 421 L3160 L3161 -label L3160 +brif 421 L3188 L3189 +label L3188 load 422 store_kind load 423 value_expr call 424 ir_emitter_core_ir_infer_type string 1 423 @@ -151253,105 +151436,105 @@ iconst 428 0 store compensate 428 load 429 emit_name call 430 ir_emitter_core_ir_is_channel_send_name bool 1 429 -brif 430 L3163 L3164 -label L3163 +brif 430 L3191 L3192 +label L3191 load 431 store_kind call 432 string_len int 1 431 iconst 433 0 gt 434 432 433 store compensate 434 -jmp L3162 -label L3164 +jmp L3190 +label L3192 load 435 store_kind strref 436 m46s671 call 437 pith_cstring_eq bool 2 435 436 call 438 pith_cstring_release void 1 436 -brif 437 L3165 L3166 -label L3165 +brif 437 L3193 L3194 +label L3193 load 439 emit_name call 440 ir_emitter_core_ir_is_list_store_name bool 1 439 iconst 442 1 sub 441 442 440 store compensate 441 -jmp L3162 -label L3166 +jmp L3190 +label L3194 iconst 443 0 -store __or_443_3169 443 +store __or_443_3197 443 iconst 444 0 -store __or_444_3169 444 +store __or_444_3197 444 iconst 445 0 -store __or_445_3169 445 +store __or_445_3197 445 load 446 store_kind strref 447 m46s20 call 448 pith_cstring_eq bool 2 446 447 call 449 pith_cstring_release void 1 447 -store __or_445_3169 448 -brif 448 L3170 L3169 -label L3169 +store __or_445_3197 448 +brif 448 L3198 L3197 +label L3197 load 450 store_kind strref 451 m46s19 call 452 pith_cstring_eq bool 2 450 451 call 453 pith_cstring_release void 1 451 -store __or_445_3169 452 -label L3170 -load 454 __or_445_3169 -store __or_444_3169 454 -brif 454 L3172 L3171 -label L3171 +store __or_445_3197 452 +label L3198 +load 454 __or_445_3197 +store __or_444_3197 454 +brif 454 L3200 L3199 +label L3199 load 455 store_kind strref 456 m46s18 call 457 pith_cstring_eq bool 2 455 456 call 458 pith_cstring_release void 1 456 -store __or_444_3169 457 -label L3172 -load 459 __or_444_3169 -store __or_443_3169 459 -brif 459 L3174 L3173 -label L3173 +store __or_444_3197 457 +label L3200 +load 459 __or_444_3197 +store __or_443_3197 459 +brif 459 L3202 L3201 +label L3201 load 460 store_kind strref 461 m46s15 call 462 pith_cstring_eq bool 2 460 461 call 463 pith_cstring_release void 1 461 -store __or_443_3169 462 -label L3174 -load 464 __or_443_3169 -brif 464 L3167 L3168 -label L3167 +store __or_443_3197 462 +label L3202 +load 464 __or_443_3197 +brif 464 L3195 L3196 +label L3195 iconst 465 1 store compensate 465 -jmp L3162 -label L3168 -label L3162 +jmp L3190 +label L3196 +label L3190 iconst 466 0 -store __and_466_3178 466 +store __and_466_3206 466 load 467 compensate -store __and_466_3178 467 -brif 467 L3178 L3179 -label L3178 +store __and_466_3206 467 +brif 467 L3206 L3207 +label L3206 load 468 value_expr call 469 ir_emitter_core_ir_string_expr_is_borrowed bool 1 468 -store __and_466_3178 469 -label L3179 -load 470 __and_466_3178 -brif 470 L3176 L3177 -label L3176 +store __and_466_3206 469 +label L3207 +load 470 __and_466_3206 +brif 470 L3204 L3205 +label L3204 load 471 arg_regs load 472 store_value_pos call 473 pith_list_get_value_strict int 2 471 472 load 474 store_kind call 475 ir_ownership_ir_rc_retain_reg void 2 473 474 -jmp L3175 -label L3177 -label L3175 -jmp L3159 -label L3161 -label L3159 -jmp L3154 -label L3156 -label L3154 -jmp L3151 -label L3153 -label L3151 +jmp L3203 +label L3205 +label L3203 +jmp L3187 +label L3189 +label L3187 +jmp L3182 +label L3184 +label L3182 +jmp L3179 +label L3181 +label L3179 load 476 call_args load 477 obj_r load 478 arg_regs @@ -151359,22 +151542,22 @@ call 479 ir_call_helpers_ir_method_call_arg_regs list 2 477 478 call 480 pith_list_release_handle void 1 476 store call_args 479 iconst 481 0 -store __and_481_3183 481 +store __and_481_3211 481 load 482 emit_name strref 483 m46s658 call 484 pith_cstring_eq bool 2 482 483 call 485 pith_cstring_release void 1 483 -store __and_481_3183 484 -brif 484 L3183 L3184 -label L3183 +store __and_481_3211 484 +brif 484 L3211 L3212 +label L3211 load 486 impl_dispatch iconst 488 1 sub 487 488 486 -store __and_481_3183 487 -label L3184 -load 489 __and_481_3183 -brif 489 L3181 L3182 -label L3181 +store __and_481_3211 487 +label L3212 +load 489 __and_481_3211 +brif 489 L3209 L3210 +label L3209 load 490 obj_r load 491 node call 492 pith_struct_release void 1 491 @@ -151407,8 +151590,8 @@ call 518 pith_list_release_handle void 1 517 load 519 recv_kind call 520 pith_cstring_release void 1 519 ret 490 -label L3182 -label L3180 +label L3210 +label L3208 load 521 r load 522 emit_name load 523 ret_type @@ -151421,71 +151604,71 @@ call 529 pith_cstring_release void 1 527 load 530 store_value_pos store release_skip_pos 530 iconst 531 0 -store __and_531_3188 531 +store __and_531_3216 531 iconst 532 0 -store __and_532_3188 532 +store __and_532_3216 532 load 533 store_value_pos iconst 534 0 gte 535 533 534 -store __and_532_3188 535 -brif 535 L3188 L3189 -label L3188 +store __and_532_3216 535 +brif 535 L3216 L3217 +label L3216 iconst 536 0 -store __or_536_3190 536 +store __or_536_3218 536 iconst 537 0 -store __or_537_3190 537 +store __or_537_3218 537 load 538 emit_name strref 539 m46s247 call 540 pith_cstring_eq bool 2 538 539 call 541 pith_cstring_release void 1 539 -store __or_537_3190 540 -brif 540 L3191 L3190 -label L3190 +store __or_537_3218 540 +brif 540 L3219 L3218 +label L3218 load 542 emit_name strref 543 m46s690 call 544 pith_cstring_eq bool 2 542 543 call 545 pith_cstring_release void 1 543 -store __or_537_3190 544 -label L3191 -load 546 __or_537_3190 -store __or_536_3190 546 -brif 546 L3193 L3192 -label L3192 +store __or_537_3218 544 +label L3219 +load 546 __or_537_3218 +store __or_536_3218 546 +brif 546 L3221 L3220 +label L3220 load 547 emit_name strref 548 m46s691 call 549 pith_cstring_eq bool 2 547 548 call 550 pith_cstring_release void 1 548 -store __or_536_3190 549 -label L3193 -load 551 __or_536_3190 -store __and_532_3188 551 -label L3189 -load 552 __and_532_3188 -store __and_531_3188 552 -brif 552 L3194 L3195 -label L3194 +store __or_536_3218 549 +label L3221 +load 551 __or_536_3218 +store __and_532_3216 551 +label L3217 +load 552 __and_532_3216 +store __and_531_3216 552 +brif 552 L3222 L3223 +label L3222 load 553 node field 554 553 16 list children call 555 pith_list_len int 1 554 iconst 556 0 gt 557 555 556 -store __and_531_3188 557 -label L3195 -load 558 __and_531_3188 -brif 558 L3186 L3187 -label L3186 +store __and_531_3216 557 +label L3223 +load 558 __and_531_3216 +brif 558 L3214 L3215 +label L3214 load 559 node load 560 store_value_pos call 561 ir_emitter_core_ir_method_call_arg_expr int 2 559 560 store skip_expr 561 iconst 562 0 -store __and_562_3199 562 +store __and_562_3227 562 load 563 skip_expr iconst 564 0 gte 565 563 564 -store __and_562_3199 565 -brif 565 L3199 L3200 -label L3199 +store __and_562_3227 565 +brif 565 L3227 L3228 +label L3227 load 566 skip_expr call 567 ir_emitter_core_ir_infer_type string 1 566 call 568 ir_struct_registry_ir_rc_kind string 1 567 @@ -151494,11 +151677,11 @@ strref 570 m46s672 call 571 pith_cstring_eq bool 2 568 570 call 572 pith_cstring_release void 1 568 call 573 pith_cstring_release void 1 570 -store __and_562_3199 571 -label L3200 -load 574 __and_562_3199 -brif 574 L3197 L3198 -label L3197 +store __and_562_3227 571 +label L3228 +load 574 __and_562_3227 +brif 574 L3225 L3226 +label L3225 load 575 node field 576 575 16 list children iconst 577 0 @@ -151508,21 +151691,21 @@ strref 580 m46s672 call 581 pith_cstring_eq bool 2 579 580 call 582 pith_cstring_release void 1 579 call 583 pith_cstring_release void 1 580 -brif 581 L3202 L3203 -label L3202 +brif 581 L3230 L3231 +label L3230 iconst 584 0 iconst 585 1 sub 586 584 585 store release_skip_pos 586 -jmp L3201 -label L3203 -label L3201 -jmp L3196 -label L3198 -label L3196 -jmp L3185 -label L3187 -label L3185 +jmp L3229 +label L3231 +label L3229 +jmp L3224 +label L3226 +label L3224 +jmp L3213 +label L3215 +label L3213 load 587 node load 588 arg_regs load 589 release_skip_pos @@ -151532,8 +151715,8 @@ field 592 591 16 list children call 593 pith_list_len int 1 592 iconst 594 0 gt 595 593 594 -brif 595 L3205 L3206 -label L3205 +brif 595 L3233 L3234 +label L3233 load 596 node field 597 596 16 list children iconst 598 0 @@ -151547,63 +151730,63 @@ call 604 pith_cstring_release void 1 602 call 605 pith_cstring_release void 1 600 store recv_kind 603 iconst 606 0 -store __and_606_3210 606 +store __and_606_3238 606 load 607 recv_kind call 608 string_len int 1 607 iconst 609 0 gt 610 608 609 -store __and_606_3210 610 -brif 610 L3210 L3211 -label L3210 +store __and_606_3238 610 +brif 610 L3238 L3239 +label L3238 load 611 recv_idx call 612 ir_emitter_core_ir_string_expr_is_borrowed bool 1 611 iconst 614 1 sub 613 614 612 -store __and_606_3210 613 -label L3211 -load 615 __and_606_3210 -brif 615 L3208 L3209 -label L3208 +store __and_606_3238 613 +label L3239 +load 615 __and_606_3238 +brif 615 L3236 L3237 +label L3236 load 616 obj_r load 617 recv_kind call 618 ir_ownership_ir_rc_release_reg void 2 616 617 -jmp L3207 -label L3209 -label L3207 -jmp L3204 -label L3206 -label L3204 +jmp L3235 +label L3237 +label L3235 +jmp L3232 +label L3234 +label L3232 iconst 619 0 -store __and_619_3215 619 +store __and_619_3243 619 iconst 620 0 -store __and_620_3215 620 +store __and_620_3243 620 load 621 uses_result_abi -store __and_620_3215 621 -brif 621 L3215 L3216 -label L3215 +store __and_620_3243 621 +brif 621 L3243 L3244 +label L3243 load 622 ret_type strref 623 m46s23 call 625 pith_cstring_eq bool 2 622 623 iconst 626 1 sub 624 626 625 call 627 pith_cstring_release void 1 623 -store __and_620_3215 624 -label L3216 -load 628 __and_620_3215 -store __and_619_3215 628 -brif 628 L3217 L3218 -label L3217 +store __and_620_3243 624 +label L3244 +load 628 __and_620_3243 +store __and_619_3243 628 +brif 628 L3245 L3246 +label L3245 load 629 idx call 630 ir_type_helpers_ir_checked_result_kind string 1 629 strref 631 m46s23 call 632 pith_cstring_eq bool 2 630 631 call 633 pith_cstring_release void 1 630 call 634 pith_cstring_release void 1 631 -store __and_619_3215 632 -label L3218 -load 635 __and_619_3215 -brif 635 L3213 L3214 -label L3213 +store __and_619_3243 632 +label L3246 +load 635 __and_619_3243 +brif 635 L3241 L3242 +label L3241 load 636 r load 637 ret_type load 638 emit_name @@ -151639,12 +151822,12 @@ call 667 pith_list_release_handle void 1 666 load 668 recv_kind call 669 pith_cstring_release void 1 668 ret 639 -label L3214 -label L3212 +label L3242 +label L3240 load 670 emit_name call 671 ir_metadata_ir_is_void_method bool 1 670 -brif 671 L3220 L3221 -label L3220 +brif 671 L3248 L3249 +label L3248 load 672 obj_r load 673 node call 674 pith_struct_release void 1 673 @@ -151677,8 +151860,8 @@ call 700 pith_list_release_handle void 1 699 load 701 recv_kind call 702 pith_cstring_release void 1 701 ret 672 -label L3221 -label L3219 +label L3249 +label L3247 load 703 r load 704 node call 705 pith_struct_release void 1 704 @@ -151760,8 +151943,8 @@ field 8 7 0 string kind strref 9 m46s506 call 10 pith_cstring_eq bool 2 8 9 call 11 pith_cstring_release void 1 9 -brif 10 L3223 L3224 -label L3223 +brif 10 L3251 L3252 +label L3251 load 12 si load 13 cn field 14 13 8 string value @@ -151791,15 +151974,15 @@ call 35 pith_struct_release void 1 34 load 36 si call 37 pith_cstring_release void 1 36 ret 33 -label L3224 -label L3222 +label L3252 +label L3250 load 38 cn field 39 38 0 string kind strref 40 m46s507 call 41 pith_cstring_eq bool 2 39 40 call 42 pith_cstring_release void 1 40 -brif 41 L3226 L3227 -label L3226 +brif 41 L3254 L3255 +label L3254 load 43 cn call 44 ir_emitter_core_ir_emit_interp_spec_part int 1 43 load 45 cn @@ -151807,8 +151990,8 @@ call 46 pith_struct_release void 1 45 load 47 si call 48 pith_cstring_release void 1 47 ret 44 -label L3227 -label L3225 +label L3255 +label L3253 load 49 child call 50 ir_emitter_core_ir_string_interp_expr_part int 1 49 load 51 cn @@ -151837,29 +152020,29 @@ field 7 6 0 string kind strref 8 m46s507 call 9 pith_cstring_eq bool 2 7 8 call 10 pith_cstring_release void 1 8 -brif 9 L3229 L3230 -label L3229 +brif 9 L3257 L3258 +label L3257 iconst 11 1 load 12 cn call 13 pith_struct_release void 1 12 ret 11 -label L3230 -label L3228 +label L3258 +label L3256 load 14 cn field 15 14 0 string kind strref 16 m46s506 call 17 pith_cstring_eq bool 2 15 16 call 18 pith_cstring_release void 1 16 -brif 17 L3232 L3233 -label L3232 +brif 17 L3260 L3261 +label L3260 iconst 19 1 load 20 cn call 21 pith_struct_release void 1 20 ret 19 -label L3233 -label L3231 +label L3261 +label L3259 iconst 22 0 -store __or_22_3234 22 +store __or_22_3262 22 load 23 child call 24 ir_emitter_core_ir_infer_type string 1 23 strref 25 m46s672 @@ -151868,16 +152051,16 @@ iconst 28 1 sub 26 28 27 call 29 pith_cstring_release void 1 24 call 30 pith_cstring_release void 1 25 -store __or_22_3234 26 -brif 26 L3235 L3234 -label L3234 +store __or_22_3262 26 +brif 26 L3263 L3262 +label L3262 load 31 child call 32 ir_emitter_core_ir_string_expr_is_borrowed bool 1 31 iconst 34 1 sub 33 34 32 -store __or_22_3234 33 -label L3235 -load 35 __or_22_3234 +store __or_22_3262 33 +label L3263 +load 35 __or_22_3262 load 36 cn call 37 pith_struct_release void 1 36 ret 35 @@ -151911,13 +152094,13 @@ field 14 13 16 list children call 15 pith_list_retain_handle void 1 14 call 16 pith_list_release_handle void 1 12 store kids4_children 14 -label L3236 +label L3264 load 17 _fi4 load 18 kids4_children call 19 pith_list_len int 1 18 lt 20 17 19 -brif 20 L3237 L3238 -label L3237 +brif 20 L3265 L3266 +label L3265 load 21 kids4_children load 22 _fi4 call 23 pith_list_get_value_strict int 2 21 22 @@ -151931,17 +152114,17 @@ store part_owned 27 load 28 result_r iconst 29 0 lt 30 28 29 -brif 30 L3240 L3241 -label L3240 +brif 30 L3268 L3269 +label L3268 load 31 part_r store result_r 31 load 32 part_owned store result_owned 32 -jmp L3239 -label L3241 +jmp L3267 +label L3269 call 33 ir_builder_ir_reg int 0 store nr 33 -strref 34 m46s1205 +strref 34 m46s1206 load 35 nr call 36 int_to_string string 1 35 concat 37 34 36 @@ -151968,37 +152151,37 @@ call 57 pith_cstring_release void 1 54 call 58 ir_builder_ir_emit void 1 55 call 59 pith_cstring_release void 1 55 load 60 result_owned -brif 60 L3243 L3244 -label L3243 +brif 60 L3271 L3272 +label L3271 load 61 result_r call 62 ir_ownership_ir_string_release_reg void 1 61 -jmp L3242 -label L3244 -label L3242 +jmp L3270 +label L3272 +label L3270 load 63 part_owned -brif 63 L3246 L3247 -label L3246 +brif 63 L3274 L3275 +label L3274 load 64 part_r call 65 ir_ownership_ir_string_release_reg void 1 64 -jmp L3245 -label L3247 -label L3245 +jmp L3273 +label L3275 +label L3273 load 66 nr store result_r 66 iconst 67 1 store result_owned 67 -label L3239 +label L3267 load 68 _fi4 iconst 69 1 add 70 68 69 store _fi4 70 -jmp L3236 -label L3238 +jmp L3264 +label L3266 load 71 result_r iconst 72 0 lt 73 71 72 -brif 73 L3249 L3250 -label L3249 +brif 73 L3277 L3278 +label L3277 call 74 ir_builder_ir_reg int 0 store result_r 74 strref 75 m46s883 @@ -152021,19 +152204,19 @@ call 91 ir_builder_ir_emit void 1 88 call 92 pith_cstring_release void 1 88 iconst 93 1 store result_owned 93 -jmp L3248 -label L3250 -label L3248 +jmp L3276 +label L3278 +label L3276 load 94 result_owned iconst 96 1 sub 95 96 94 -brif 95 L3252 L3253 -label L3252 +brif 95 L3280 L3281 +label L3280 load 97 result_r call 98 ir_ownership_ir_string_retain_reg void 1 97 -jmp L3251 -label L3253 -label L3251 +jmp L3279 +label L3281 +label L3279 load 99 result_r load 100 node call 101 pith_struct_release void 1 100 @@ -152065,13 +152248,13 @@ sub 9 7 8 store body_idx 9 iconst 10 0 store i 10 -label L3254 +label L3282 load 11 i load 12 idx call 13 ast_node_child_count int 1 12 lt 14 11 13 -brif 14 L3255 L3256 -label L3255 +brif 14 L3283 L3284 +label L3283 load 15 idx load 16 i call 17 ast_node_child int 2 15 16 @@ -152086,45 +152269,45 @@ field 23 22 0 string kind strref 24 m46s68 call 25 pith_cstring_eq bool 2 23 24 call 26 pith_cstring_release void 1 24 -brif 25 L3258 L3259 -label L3258 +brif 25 L3286 L3287 +label L3286 load 27 params load 28 cn field 29 28 8 string value call 30 pith_list_push_value void 2 27 29 -jmp L3257 -label L3259 +jmp L3285 +label L3287 iconst 31 0 -store __or_31_3262 31 +store __or_31_3290 31 load 32 cn field 33 32 0 string kind strref 34 m46s65 call 35 pith_cstring_eq bool 2 33 34 call 36 pith_cstring_release void 1 34 -store __or_31_3262 35 -brif 35 L3263 L3262 -label L3262 +store __or_31_3290 35 +brif 35 L3291 L3290 +label L3290 load 37 cn field 38 37 0 string kind strref 39 m46s64 call 40 pith_cstring_eq bool 2 38 39 call 41 pith_cstring_release void 1 39 -store __or_31_3262 40 -label L3263 -load 42 __or_31_3262 -brif 42 L3260 L3261 -label L3260 +store __or_31_3290 40 +label L3291 +load 42 __or_31_3290 +brif 42 L3288 L3289 +label L3288 load 43 child store body_idx 43 -jmp L3257 -label L3261 -label L3257 +jmp L3285 +label L3289 +label L3285 load 44 i iconst 45 1 add 46 44 45 store i 46 -jmp L3254 -label L3256 +jmp L3282 +label L3284 load 47 captures call 48 pith_list_new_cstr list 0 call 49 pith_list_release_handle void 1 47 @@ -152132,17 +152315,17 @@ store captures 48 load 50 body_idx iconst 51 0 gte 52 50 51 -brif 52 L3265 L3266 -label L3265 +brif 52 L3293 L3294 +label L3293 load 53 captures load 54 body_idx load 55 params call 56 ir_emitter_core_ir_find_free_vars list_string 2 54 55 call 57 pith_list_release_handle void 1 53 store captures 56 -jmp L3264 -label L3266 -label L3264 +jmp L3292 +label L3294 +label L3292 load 58 params call 59 pith_list_retain_handle void 1 58 load 60 body_idx @@ -152190,12 +152373,12 @@ iconst 3 0 store __for_idx_347 3 store __for_len_347 2 store __for_iter_347 1 -label L3267 +label L3295 load 4 __for_idx_347 load 5 __for_len_347 lt 6 4 5 -brif 6 L3268 L3270 -label L3268 +brif 6 L3296 L3298 +label L3296 load 7 __for_iter_347 load 8 __for_idx_347 call 9 pith_list_get_value_unchecked string 2 7 8 @@ -152212,13 +152395,13 @@ concat 17 15 16 call 18 pith_cstring_release void 1 15 call 19 ir_builder_ir_emit void 1 17 call 20 pith_cstring_release void 1 17 -label L3269 +label L3297 load 21 __for_idx_347 iconst 22 1 add 23 21 22 store __for_idx_347 23 -jmp L3267 -label L3270 +jmp L3295 +label L3298 iconst 24 0 ret 24 endfunc @@ -152228,30 +152411,30 @@ load 1 expr_idx call 2 ir_emitter_core_ir_expr int 1 1 store br 2 iconst 3 0 -store __and_3_3274 3 +store __and_3_3302 3 load 4 expr_idx call 5 ir_emitter_core_ir_infer_type string 1 4 strref 6 m46s672 call 7 pith_cstring_eq bool 2 5 6 call 8 pith_cstring_release void 1 5 call 9 pith_cstring_release void 1 6 -store __and_3_3274 7 -brif 7 L3274 L3275 -label L3274 +store __and_3_3302 7 +brif 7 L3302 L3303 +label L3302 load 10 expr_idx call 11 ir_emitter_core_ir_string_expr_is_borrowed bool 1 10 -store __and_3_3274 11 -label L3275 -load 12 __and_3_3274 -brif 12 L3272 L3273 -label L3272 +store __and_3_3302 11 +label L3303 +load 12 __and_3_3302 +brif 12 L3300 L3301 +label L3300 load 13 br strref 14 m46s672 call 15 ir_ownership_ir_rc_retain_reg void 2 13 14 call 16 pith_cstring_release void 1 14 -jmp L3271 -label L3273 -label L3271 +jmp L3299 +label L3301 +label L3299 strref 17 m46s844 load 18 br call 19 int_to_string string 1 18 @@ -152268,54 +152451,54 @@ param body_idx load 1 body_idx iconst 2 0 lt 3 1 2 -brif 3 L3277 L3278 -label L3277 +brif 3 L3305 L3306 +label L3305 iconst 4 0 ret 4 -label L3278 -label L3276 +label L3306 +label L3304 iconst 5 0 -store __and_5_3282 5 +store __and_5_3310 5 load 6 body_idx call 7 ast_node_kind string 1 6 strref 8 m46s65 call 9 pith_cstring_eq bool 2 7 8 call 10 pith_cstring_release void 1 7 call 11 pith_cstring_release void 1 8 -store __and_5_3282 9 -brif 9 L3282 L3283 -label L3282 +store __and_5_3310 9 +brif 9 L3310 L3311 +label L3310 load 12 body_idx call 13 ast_node_child_count int 1 12 iconst 14 0 gt 15 13 14 -store __and_5_3282 15 -label L3283 -load 16 __and_5_3282 -brif 16 L3280 L3281 -label L3280 +store __and_5_3310 15 +label L3311 +load 16 __and_5_3310 +brif 16 L3308 L3309 +label L3308 load 17 body_idx iconst 18 0 call 19 ast_node_child int 2 17 18 call 20 ir_emitter_core_ir_emit_lambda_expr_return void 1 19 iconst 21 0 ret 21 -label L3281 -label L3279 +label L3309 +label L3307 load 22 body_idx call 23 ast_node_kind string 1 22 strref 24 m46s64 call 25 pith_cstring_eq bool 2 23 24 call 26 pith_cstring_release void 1 23 call 27 pith_cstring_release void 1 24 -brif 25 L3285 L3286 -label L3285 +brif 25 L3313 L3314 +label L3313 load 28 body_idx call 29 ir_emitter_core_ir_block int 1 28 iconst 30 0 ret 30 -label L3286 -label L3284 +label L3314 +label L3312 load 31 body_idx call 32 ir_emitter_core_ir_emit_lambda_expr_return void 1 31 iconst 33 0 @@ -152391,7 +152574,7 @@ store saved_loop_iter_vars 10 iconst 11 0 store saved_loop_iter_kinds 11 load 12 lambda_name -strref 13 m46s1204 +strref 13 m46s1205 load 14 ir_emitter_core_ir_lambda_count call 15 int_to_string string 1 14 concat 16 13 15 @@ -152509,7 +152692,7 @@ call 104 pith_list_retain_handle void 1 103 store ir_emitter_core_ir_loop_iter_kinds 103 call 105 ir_builder_ir_reg int 0 store r 105 -strref 106 m46s1197 +strref 106 m46s1198 load 107 r call 108 int_to_string string 1 107 concat 109 106 108 @@ -152596,7 +152779,7 @@ store saved_vars 7 iconst 8 0 store saved_types 8 load 9 wrapper_name -strref 10 m46s1203 +strref 10 m46s1204 load 11 ir_emitter_core_ir_lambda_count call 12 int_to_string string 1 11 concat 13 10 12 @@ -152622,8 +152805,8 @@ field 28 27 16 list children call 29 pith_list_len int 1 28 iconst 30 0 gt 31 29 30 -brif 31 L3288 L3289 -label L3288 +brif 31 L3316 L3317 +label L3316 load 32 callee load 33 call_node field 34 33 16 list children @@ -152637,8 +152820,8 @@ field 40 39 0 string name call 41 string_len int 1 40 iconst 42 0 eq 43 41 42 -brif 43 L3291 L3292 -label L3291 +brif 43 L3319 L3320 +label L3319 load 44 captures load 45 call_node field 46 45 16 list children @@ -152648,19 +152831,19 @@ call 49 pith_list_new_default list 0 call 50 ir_emitter_core_ir_find_free_vars list_string 2 48 49 call 51 pith_list_release_handle void 1 44 store captures 50 -jmp L3290 -label L3292 -label L3290 +jmp L3318 +label L3320 +label L3318 iconst 52 1 store i 52 -label L3293 +label L3321 load 53 i load 54 call_node field 55 54 16 list children call 56 pith_list_len int 1 55 lt 57 53 56 -brif 57 L3294 L3295 -label L3294 +brif 57 L3322 L3323 +label L3322 load 58 free_in_arg load 59 call_node field 60 59 16 list children @@ -152672,13 +152855,13 @@ call 65 pith_list_release_handle void 1 58 store free_in_arg 64 iconst 66 0 store j 66 -label L3296 +label L3324 load 67 j load 68 free_in_arg call 69 pith_list_len int 1 68 lt 70 67 69 -brif 70 L3297 L3298 -label L3297 +brif 70 L3325 L3326 +label L3325 load 71 captures load 72 free_in_arg load 73 j @@ -152686,31 +152869,31 @@ call 74 pith_list_get_value_strict string 2 72 73 call 75 ir_ast_helpers_ir_list_contains bool 2 71 74 iconst 77 1 sub 76 77 75 -brif 76 L3300 L3301 -label L3300 +brif 76 L3328 L3329 +label L3328 load 78 captures load 79 free_in_arg load 80 j call 81 pith_list_get_value_strict string 2 79 80 call 82 pith_list_push_value void 2 78 81 -jmp L3299 -label L3301 -label L3299 +jmp L3327 +label L3329 +label L3327 load 83 j iconst 84 1 add 85 83 84 store j 85 -jmp L3296 -label L3298 +jmp L3324 +label L3326 load 86 i iconst 87 1 add 88 86 87 store i 88 -jmp L3293 -label L3295 -jmp L3287 -label L3289 -label L3287 +jmp L3321 +label L3323 +jmp L3315 +label L3317 +label L3315 load 89 saved_builder call 90 ir_builder_ir_builder_snapshot struct:IrBuilderSnapshot 0 call 91 pith_struct_release void 1 89 @@ -152750,7 +152933,7 @@ load 121 saved_types call 122 ir_emitter_core_ir_finish_lambda_emit void 3 119 120 121 call 123 ir_builder_ir_reg int 0 store closure_r 123 -strref 124 m46s1197 +strref 124 m46s1198 load 125 closure_r call 126 int_to_string string 1 125 concat 127 124 126 @@ -152810,38 +152993,38 @@ param name load 1 ir_alias_registry_ir_import_renames load 2 name call 3 contains_key bool 2 1 2 -brif 3 L3303 L3304 -label L3303 +brif 3 L3331 L3332 +label L3331 load 4 ir_alias_registry_ir_import_renames load 5 name call 6 map_get_strict string 2 4 5 call 7 pith_cstring_retain void 1 6 ret 6 -label L3304 -label L3302 +label L3332 +label L3330 iconst 8 0 -store __and_8_3308 8 +store __and_8_3336 8 load 9 ir_alias_registry_ir_active_generic_module_path call 10 string_len int 1 9 iconst 11 0 gt 12 10 11 -store __and_8_3308 12 -brif 12 L3308 L3309 -label L3308 +store __and_8_3336 12 +brif 12 L3336 L3337 +label L3336 load 13 ir_alias_registry_ir_active_generic_module_path load 14 name call 15 ir_alias_registry_ir_import_declares_global bool 2 13 14 -store __and_8_3308 15 -label L3309 -load 16 __and_8_3308 -brif 16 L3306 L3307 -label L3306 +store __and_8_3336 15 +label L3337 +load 16 __and_8_3336 +brif 16 L3334 L3335 +label L3334 load 17 ir_alias_registry_ir_active_generic_module_path load 18 name call 19 ir_names_ir_import_target_name string 2 17 18 ret 19 -label L3307 -label L3305 +label L3335 +label L3333 load 20 name call 21 pith_cstring_retain void 1 20 ret 20 @@ -152854,27 +153037,27 @@ param name iconst 2 0 store callee 2 iconst 3 0 -store __or_3_3313 3 +store __or_3_3341 3 load 4 ir_builder_ir_var_regs load 5 name call 6 contains_key bool 2 4 5 -store __or_3_3313 6 -brif 6 L3314 L3313 -label L3313 +store __or_3_3341 6 +brif 6 L3342 L3341 +label L3341 load 7 ir_builder_ir_var_types load 8 name call 9 contains_key bool 2 7 8 -store __or_3_3313 9 -label L3314 -load 10 __or_3_3313 -brif 10 L3311 L3312 -label L3311 +store __or_3_3341 9 +label L3342 +load 10 __or_3_3341 +brif 10 L3339 L3340 +label L3339 iconst 11 0 load 12 callee call 13 pith_struct_release void 1 12 ret 11 -label L3312 -label L3310 +label L3340 +label L3338 load 14 callee load 15 name call 16 ir_emitter_core_ir_ident_callee struct:ResolvedCallee 1 15 @@ -152915,8 +153098,8 @@ store arg_regs 10 load 11 ir_emitter_core_ir_named_fn_value_wrappers load 12 target_name call 13 contains_key bool 2 11 12 -brif 13 L3316 L3317 -label L3316 +brif 13 L3344 L3345 +label L3344 load 14 ir_emitter_core_ir_named_fn_value_wrappers load 15 target_name call 16 map_get_strict string 2 14 15 @@ -152940,10 +153123,10 @@ call 33 pith_cstring_release void 1 32 load 34 arg_regs call 35 pith_list_release_handle void 1 34 ret 16 -label L3317 -label L3315 +label L3345 +label L3343 load 36 wrapper_name -strref 37 m46s1202 +strref 37 m46s1203 load 38 ir_emitter_core_ir_lambda_count call 39 int_to_string string 1 38 concat 40 37 39 @@ -152972,15 +153155,15 @@ load 57 ret_type call 58 string_len int 1 57 iconst 59 0 eq 60 58 59 -brif 60 L3319 L3320 -label L3319 +brif 60 L3347 L3348 +label L3347 load 61 ret_type strref 62 m46s817 call 63 pith_cstring_release void 1 61 store ret_type 62 -jmp L3318 -label L3320 -label L3318 +jmp L3346 +label L3348 +label L3346 load 64 saved_builder call 65 ir_builder_ir_builder_snapshot struct:IrBuilderSnapshot 0 call 66 pith_struct_release void 1 64 @@ -153003,17 +153186,17 @@ field 78 77 0 string kind strref 79 m46s24 call 80 pith_cstring_eq bool 2 78 79 call 81 pith_cstring_release void 1 79 -brif 80 L3322 L3323 -label L3322 +brif 80 L3350 L3351 +label L3350 load 82 info field 83 82 48 list param_types call 84 pith_list_len int 1 83 iconst 85 1 add 86 84 85 store param_count 86 -jmp L3321 -label L3323 -label L3321 +jmp L3349 +label L3351 +label L3349 load 87 wrapper_name load 88 param_count load 89 ret_type @@ -153028,20 +153211,20 @@ field 96 95 0 string kind strref 97 m46s24 call 98 pith_cstring_eq bool 2 96 97 call 99 pith_cstring_release void 1 97 -brif 98 L3325 L3326 -label L3325 +brif 98 L3353 L3354 +label L3353 iconst 100 0 store i 100 -label L3327 +label L3355 load 101 i load 102 info field 103 102 48 list param_types call 104 pith_list_len int 1 103 lt 105 101 104 -brif 105 L3328 L3329 -label L3328 +brif 105 L3356 L3357 +label L3356 load 106 arg_name -strref 107 m46s1201 +strref 107 m46s1202 load 108 i call 109 int_to_string string 1 108 concat 110 107 109 @@ -153060,11 +153243,11 @@ load 121 i iconst 122 1 add 123 121 122 store i 123 -jmp L3327 -label L3329 -jmp L3324 -label L3326 -label L3324 +jmp L3355 +label L3357 +jmp L3352 +label L3354 +label L3352 load 124 arg_regs call 125 pith_list_new_default list 0 call 126 pith_list_release_handle void 1 124 @@ -153075,12 +153258,12 @@ iconst 129 0 store __for_idx_348 129 store __for_len_348 128 store __for_iter_348 127 -label L3330 +label L3358 load 130 __for_idx_348 load 131 __for_len_348 lt 132 130 131 -brif 132 L3331 L3333 -label L3331 +brif 132 L3359 L3361 +label L3359 load 133 __for_iter_348 load 134 __for_idx_348 call 135 pith_list_get_value_unchecked string 2 133 134 @@ -153105,19 +153288,19 @@ call 151 pith_cstring_release void 1 148 load 152 arg_regs load 153 arg_r call 154 pith_list_push_value void 2 152 153 -label L3332 +label L3360 load 155 __for_idx_348 iconst 156 1 add 157 155 156 store __for_idx_348 157 -jmp L3330 -label L3333 +jmp L3358 +label L3361 load 158 ret_type strref 159 m46s823 call 160 pith_cstring_eq bool 2 158 159 call 161 pith_cstring_release void 1 159 -brif 160 L3335 L3336 -label L3335 +brif 160 L3363 L3364 +label L3363 call 162 ir_builder_ir_reg int 0 store call_r 162 load 163 call_r @@ -153152,8 +153335,8 @@ call 190 pith_cstring_release void 1 186 call 191 pith_cstring_release void 1 188 call 192 ir_builder_ir_emit void 1 189 call 193 pith_cstring_release void 1 189 -jmp L3334 -label L3336 +jmp L3362 +label L3364 call 194 ir_builder_ir_reg int 0 store call_r 194 load 195 call_r @@ -153173,7 +153356,7 @@ call 208 pith_cstring_release void 1 204 call 209 pith_cstring_release void 1 206 call 210 ir_builder_ir_emit void 1 207 call 211 pith_cstring_release void 1 207 -label L3334 +label L3362 call 212 ir_emitter_core_ir_emit_lambda_default_return void 0 load 213 saved_builder load 214 saved_vars @@ -153234,8 +153417,8 @@ store r 4 load 5 idx load 6 name call 7 ir_emitter_core_ir_ident_is_function_value bool 2 5 6 -brif 7 L3338 L3339 -label L3338 +brif 7 L3366 L3367 +label L3366 load 8 callee load 9 name call 10 ir_emitter_core_ir_ident_callee struct:ResolvedCallee 1 9 @@ -153248,7 +153431,7 @@ field 15 14 0 string name call 16 ir_emitter_core_ir_named_function_value_wrapper string 2 13 15 call 17 pith_cstring_release void 1 12 store wrapper_name 16 -strref 18 m46s1197 +strref 18 m46s1198 load 19 r call 20 int_to_string string 1 19 concat 21 18 20 @@ -153269,8 +153452,8 @@ call 35 pith_struct_release void 1 34 load 36 wrapper_name call 37 pith_cstring_release void 1 36 ret 33 -label L3339 -label L3337 +label L3367 +label L3365 load 38 r load 39 name call 40 ir_emitter_core_ir_emit_name_load void 2 38 39 @@ -153297,12 +153480,12 @@ iconst 4 0 store __for_idx_349 4 store __for_len_349 3 store __for_iter_349 2 -label L3340 +label L3368 load 5 __for_idx_349 load 6 __for_len_349 lt 7 5 6 -brif 7 L3341 L3343 -label L3341 +brif 7 L3369 L3371 +label L3369 load 8 __for_iter_349 load 9 __for_idx_349 call 10 pith_list_get_value unknown 2 8 9 @@ -153313,38 +153496,38 @@ call 13 ast_get_node struct:Node 1 12 call 14 pith_struct_release void 1 11 store an 13 iconst 15 0 -store __and_15_3347 15 +store __and_15_3375 15 load 16 an field 17 16 0 string kind strref 18 m46s42 call 19 pith_cstring_eq bool 2 17 18 call 20 pith_cstring_release void 1 18 -store __and_15_3347 19 -brif 19 L3347 L3348 -label L3347 +store __and_15_3375 19 +brif 19 L3375 L3376 +label L3375 load 21 an field 22 21 8 string value call 23 string_len int 1 22 iconst 24 0 gt 25 23 24 -store __and_15_3347 25 -label L3348 -load 26 __and_15_3347 -brif 26 L3345 L3346 -label L3345 +store __and_15_3375 25 +label L3376 +load 26 __and_15_3375 +brif 26 L3373 L3374 +label L3373 iconst 27 1 load 28 an call 29 pith_struct_release void 1 28 ret 27 -label L3346 -label L3344 -label L3342 +label L3374 +label L3372 +label L3370 load 30 __for_idx_349 iconst 31 1 add 32 30 31 store __for_idx_349 32 -jmp L3340 -label L3343 +jmp L3368 +label L3371 iconst 33 0 load 34 an call 35 pith_struct_release void 1 34 @@ -153362,8 +153545,8 @@ store info 2 load 3 tid iconst 4 0 gte 5 3 4 -brif 5 L3350 L3351 -label L3350 +brif 5 L3378 L3379 +label L3378 load 6 info load 7 tid call 8 types_get_type_info struct:TypeInfo 1 7 @@ -153374,19 +153557,19 @@ field 11 10 0 string kind strref 12 m46s15 call 13 pith_cstring_eq bool 2 11 12 call 14 pith_cstring_release void 1 12 -brif 13 L3353 L3354 -label L3353 +brif 13 L3381 L3382 +label L3381 load 15 info field 16 15 16 list_string fields call 17 pith_list_len int 1 16 load 18 info call 19 pith_struct_release void 1 18 ret 17 -label L3354 -label L3352 -jmp L3349 -label L3351 -label L3349 +label L3382 +label L3380 +jmp L3377 +label L3379 +label L3377 load 20 sname call 21 ir_struct_registry_ir_struct_field_count int 1 20 load 22 info @@ -153406,44 +153589,44 @@ store info 3 load 4 tid iconst 5 0 gte 6 4 5 -brif 6 L3356 L3357 -label L3356 +brif 6 L3384 L3385 +label L3384 load 7 info load 8 tid call 9 types_get_type_info struct:TypeInfo 1 8 call 10 pith_struct_release void 1 7 store info 9 iconst 11 0 -store __and_11_3361 11 +store __and_11_3389 11 iconst 12 0 -store __and_12_3361 12 +store __and_12_3389 12 load 13 info field 14 13 0 string kind strref 15 m46s15 call 16 pith_cstring_eq bool 2 14 15 call 17 pith_cstring_release void 1 15 -store __and_12_3361 16 -brif 16 L3361 L3362 -label L3361 +store __and_12_3389 16 +brif 16 L3389 L3390 +label L3389 load 18 field_index iconst 19 0 gte 20 18 19 -store __and_12_3361 20 -label L3362 -load 21 __and_12_3361 -store __and_11_3361 21 -brif 21 L3363 L3364 -label L3363 +store __and_12_3389 20 +label L3390 +load 21 __and_12_3389 +store __and_11_3389 21 +brif 21 L3391 L3392 +label L3391 load 22 field_index load 23 info field 24 23 16 list_string fields call 25 pith_list_len int 1 24 lt 26 22 25 -store __and_11_3361 26 -label L3364 -load 27 __and_11_3361 -brif 27 L3359 L3360 -label L3359 +store __and_11_3389 26 +label L3392 +load 27 __and_11_3389 +brif 27 L3387 L3388 +label L3387 load 28 info field 29 28 16 list_string fields load 30 field_index @@ -153452,11 +153635,11 @@ call 32 pith_cstring_retain void 1 31 load 33 info call 34 pith_struct_release void 1 33 ret 31 -label L3360 -label L3358 -jmp L3355 -label L3357 -label L3355 +label L3388 +label L3386 +jmp L3383 +label L3385 +label L3383 load 35 sname load 36 field_index call 37 ir_struct_registry_ir_struct_field_name_at string 2 35 36 @@ -153477,8 +153660,8 @@ store info 3 load 4 tid iconst 5 0 gte 6 4 5 -brif 6 L3366 L3367 -label L3366 +brif 6 L3394 L3395 +label L3394 load 7 info load 8 tid call 9 types_get_type_info struct:TypeInfo 1 8 @@ -153489,8 +153672,8 @@ field 12 11 0 string kind strref 13 m46s15 call 14 pith_cstring_eq bool 2 12 13 call 15 pith_cstring_release void 1 13 -brif 14 L3369 L3370 -label L3369 +brif 14 L3397 L3398 +label L3397 load 16 info field 17 16 16 list_string fields call 18 pith_auto_len int 1 17 @@ -153498,12 +153681,12 @@ iconst 19 0 store __for_idx_350 19 store __for_len_350 18 store __for_iter_350 17 -label L3371 +label L3399 load 20 __for_idx_350 load 21 __for_len_350 lt 22 20 21 -brif 22 L3372 L3374 -label L3372 +brif 22 L3400 L3402 +label L3400 load 23 __for_iter_350 load 24 __for_idx_350 call 25 pith_list_get_value_unchecked string 2 23 24 @@ -153511,23 +153694,23 @@ store name 25 load 26 __for_idx_350 store i 26 iconst 27 0 -store __and_27_3378 27 +store __and_27_3406 27 load 28 name load 29 field_name call 30 pith_cstring_eq bool 2 28 29 -store __and_27_3378 30 -brif 30 L3378 L3379 -label L3378 +store __and_27_3406 30 +brif 30 L3406 L3407 +label L3406 load 31 i load 32 info field 33 32 24 list field_types call 34 pith_list_len int 1 33 lt 35 31 34 -store __and_27_3378 35 -label L3379 -load 36 __and_27_3378 -brif 36 L3376 L3377 -label L3376 +store __and_27_3406 35 +label L3407 +load 36 __and_27_3406 +brif 36 L3404 L3405 +label L3404 load 37 info field 38 37 24 list field_types load 39 i @@ -153536,21 +153719,21 @@ call 41 ir_type_helpers_ir_type_from_tid string 1 40 load 42 info call 43 pith_struct_release void 1 42 ret 41 -label L3377 -label L3375 -label L3373 +label L3405 +label L3403 +label L3401 load 44 __for_idx_350 iconst 45 1 add 46 44 45 store __for_idx_350 46 -jmp L3371 -label L3374 -jmp L3368 -label L3370 -label L3368 -jmp L3365 -label L3367 -label L3365 +jmp L3399 +label L3402 +jmp L3396 +label L3398 +label L3396 +jmp L3393 +label L3395 +label L3393 load 47 sname load 48 field_name call 49 ir_struct_registry_ir_struct_field_type_name string 2 47 48 @@ -153586,12 +153769,12 @@ call 13 pith_list_release_handle void 1 11 store field_regs 12 iconst 14 0 store field_idx 14 -label L3380 +label L3408 load 15 field_idx load 16 total_fields lt 17 15 16 -brif 17 L3381 L3382 -label L3381 +brif 17 L3409 L3410 +label L3409 load 18 field_name load 19 sname load 20 tid @@ -153616,12 +153799,12 @@ iconst 35 0 store __for_idx_351 35 store __for_len_351 34 store __for_iter_351 33 -label L3383 +label L3411 load 36 __for_idx_351 load 37 __for_len_351 lt 38 36 37 -brif 38 L3384 L3386 -label L3384 +brif 38 L3412 L3414 +label L3412 load 39 __for_iter_351 load 40 __for_idx_351 call 41 pith_list_get_value unknown 2 39 40 @@ -153632,93 +153815,93 @@ call 44 ast_get_node struct:Node 1 43 call 45 pith_struct_release void 1 42 store an 44 iconst 46 0 -store __and_46_3390 46 +store __and_46_3418 46 iconst 47 0 -store __and_47_3390 47 +store __and_47_3418 47 load 48 an field 49 48 0 string kind strref 50 m46s42 call 51 pith_cstring_eq bool 2 49 50 call 52 pith_cstring_release void 1 50 -store __and_47_3390 51 -brif 51 L3390 L3391 -label L3390 +store __and_47_3418 51 +brif 51 L3418 L3419 +label L3418 load 53 an field 54 53 8 string value load 55 field_name call 56 pith_cstring_eq bool 2 54 55 -store __and_47_3390 56 -label L3391 -load 57 __and_47_3390 -store __and_46_3390 57 -brif 57 L3392 L3393 -label L3392 +store __and_47_3418 56 +label L3419 +load 57 __and_47_3418 +store __and_46_3418 57 +brif 57 L3420 L3421 +label L3420 load 58 an field 59 58 16 list children call 60 pith_list_len int 1 59 iconst 61 0 gt 62 60 61 -store __and_46_3390 62 -label L3393 -load 63 __and_46_3390 -brif 63 L3388 L3389 -label L3388 +store __and_46_3418 62 +label L3421 +load 63 __and_46_3418 +brif 63 L3416 L3417 +label L3416 load 64 an field 65 64 16 list children iconst 66 0 call 67 pith_list_get_value_strict int 2 65 66 store value_node 67 -jmp L3387 -label L3389 -label L3387 -label L3385 +jmp L3415 +label L3417 +label L3415 +label L3413 load 68 __for_idx_351 iconst 69 1 add 70 68 69 store __for_idx_351 70 -jmp L3383 -label L3386 +jmp L3411 +label L3414 load 71 sname load 72 field_name call 73 ir_emitter_core_ir_struct_field_is_weak bool 2 71 72 -brif 73 L3395 L3396 -label L3395 +brif 73 L3423 L3424 +label L3423 load 74 value_node store init_node 74 load 75 init_node iconst 76 0 lt 77 75 76 -brif 77 L3398 L3399 -label L3398 +brif 77 L3426 L3427 +label L3426 load 78 sname load 79 field_name call 80 ir_struct_registry_ir_struct_field_default_node int 2 78 79 store init_node 80 -jmp L3397 -label L3399 -label L3397 +jmp L3425 +label L3427 +label L3425 load 81 init_node iconst 82 0 gte 83 81 82 -brif 83 L3401 L3402 -label L3401 +brif 83 L3429 L3430 +label L3429 load 84 field_regs load 85 init_node call 86 ir_emitter_core_ir_emit_weak_payload int 1 85 call 87 pith_list_push_value void 2 84 86 -jmp L3400 -label L3402 +jmp L3428 +label L3430 load 88 field_regs call 89 ir_result_abi_ir_zero_reg int 0 call 90 pith_list_push_value void 2 88 89 -label L3400 -jmp L3394 -label L3396 +label L3428 +jmp L3422 +label L3424 load 91 value_node iconst 92 0 gte 93 91 92 -brif 93 L3403 L3404 -label L3403 +brif 93 L3431 L3432 +label L3431 load 94 value_node load 95 field_type call 96 ir_emitter_core_ir_emit_value_for_target int 2 94 95 @@ -153729,46 +153912,46 @@ call 99 ir_struct_registry_ir_rc_kind string 1 98 call 100 pith_cstring_release void 1 97 store named_field_kind 99 iconst 101 0 -store __and_101_3408 101 +store __and_101_3436 101 iconst 102 0 -store __and_102_3408 102 +store __and_102_3436 102 load 103 named_field_kind call 104 string_len int 1 103 iconst 105 0 gt 106 104 105 -store __and_102_3408 106 -brif 106 L3408 L3409 -label L3408 +store __and_102_3436 106 +brif 106 L3436 L3437 +label L3436 load 107 named_field_kind strref 108 m46s23 call 110 pith_cstring_eq bool 2 107 108 iconst 111 1 sub 109 111 110 call 112 pith_cstring_release void 1 108 -store __and_102_3408 109 -label L3409 -load 113 __and_102_3408 -store __and_101_3408 113 -brif 113 L3410 L3411 -label L3410 +store __and_102_3436 109 +label L3437 +load 113 __and_102_3436 +store __and_101_3436 113 +brif 113 L3438 L3439 +label L3438 load 114 value_node call 115 ir_emitter_core_ir_string_expr_is_borrowed bool 1 114 -store __and_101_3408 115 -label L3411 -load 116 __and_101_3408 -brif 116 L3406 L3407 -label L3406 +store __and_101_3436 115 +label L3439 +load 116 __and_101_3436 +brif 116 L3434 L3435 +label L3434 load 117 fr load 118 named_field_kind call 119 ir_ownership_ir_rc_retain_reg void 2 117 118 -jmp L3405 -label L3407 -label L3405 +jmp L3433 +label L3435 +label L3433 load 120 field_regs load 121 fr call 122 pith_list_push_value void 2 120 121 -jmp L3394 -label L3404 +jmp L3422 +label L3432 load 123 sname load 124 field_name call 125 ir_struct_registry_ir_struct_field_default_node int 2 123 124 @@ -153776,26 +153959,26 @@ store default_idx 125 load 126 default_idx iconst 127 0 gte 128 126 127 -brif 128 L3413 L3414 -label L3413 +brif 128 L3441 L3442 +label L3441 load 129 field_regs load 130 default_idx load 131 field_type call 132 ir_emitter_core_ir_emit_value_for_target int 2 130 131 call 133 pith_list_push_value void 2 129 132 -jmp L3412 -label L3414 +jmp L3440 +label L3442 load 134 field_regs call 135 ir_result_abi_ir_zero_reg int 0 call 136 pith_list_push_value void 2 134 135 -label L3412 -label L3394 +label L3440 +label L3422 load 137 field_idx iconst 138 1 add 139 137 138 store field_idx 139 -jmp L3380 -label L3382 +jmp L3408 +label L3410 call 140 ir_builder_ir_reg int 0 store r 140 call 141 ir_builder_ir_reg int 0 @@ -153833,12 +154016,12 @@ iconst 171 0 store __for_idx_352 171 store __for_len_352 170 store __for_iter_352 169 -label L3415 +label L3443 load 172 __for_idx_352 load 173 __for_len_352 lt 174 172 173 -brif 174 L3416 L3418 -label L3416 +brif 174 L3444 L3446 +label L3444 load 175 __for_iter_352 load 176 __for_idx_352 call 177 pith_list_get_value unknown 2 175 176 @@ -153871,13 +154054,13 @@ call 201 pith_cstring_release void 1 195 call 202 pith_cstring_release void 1 199 call 203 ir_builder_ir_emit void 1 200 call 204 pith_cstring_release void 1 200 -label L3417 +label L3445 load 205 __for_idx_352 iconst 206 1 add 207 205 206 store __for_idx_352 207 -jmp L3415 -label L3418 +jmp L3443 +label L3446 load 208 r load 209 sname call 210 ir_emitter_core_ir_emit_attach_dtor void 2 208 209 @@ -153922,8 +154105,8 @@ iconst 7 0 store pos_field_kind 7 load 8 arg_nodes call 9 ir_emitter_core_ir_struct_args_have_names bool 1 8 -brif 9 L3420 L3421 -label L3420 +brif 9 L3448 L3449 +label L3448 load 10 sname load 11 arg_nodes load 12 tid @@ -153939,21 +154122,21 @@ call 21 pith_cstring_release void 1 20 load 22 pos_field_kind call 23 pith_cstring_release void 1 22 ret 13 -label L3421 -label L3419 +label L3449 +label L3447 load 24 field_regs call 25 pith_list_new_default list 0 call 26 pith_list_release_handle void 1 24 store field_regs 25 iconst 27 0 store field_idx 27 -label L3422 +label L3450 load 28 field_idx load 29 arg_nodes call 30 pith_list_len int 1 29 lt 31 28 30 -brif 31 L3423 L3424 -label L3423 +brif 31 L3451 L3452 +label L3451 load 32 arg_nodes load 33 field_idx call 34 pith_list_get_value_strict int 2 32 33 @@ -153980,65 +154163,65 @@ store ftype 49 load 51 child store value_idx 51 iconst 52 0 -store __and_52_3428 52 +store __and_52_3456 52 load 53 cn field 54 53 0 string kind -strref 55 m46s1200 +strref 55 m46s1201 call 56 pith_cstring_eq bool 2 54 55 call 57 pith_cstring_release void 1 55 -store __and_52_3428 56 -brif 56 L3428 L3429 -label L3428 +store __and_52_3456 56 +brif 56 L3456 L3457 +label L3456 load 58 cn field 59 58 16 list children call 60 pith_list_len int 1 59 iconst 61 0 gt 62 60 61 -store __and_52_3428 62 -label L3429 -load 63 __and_52_3428 -brif 63 L3426 L3427 -label L3426 +store __and_52_3456 62 +label L3457 +load 63 __and_52_3456 +brif 63 L3454 L3455 +label L3454 load 64 cn field 65 64 16 list children iconst 66 0 call 67 pith_list_get_value_strict int 2 65 66 store value_idx 67 -jmp L3425 -label L3427 +jmp L3453 +label L3455 iconst 68 0 -store __and_68_3432 68 +store __and_68_3460 68 load 69 cn field 70 69 0 string kind strref 71 m46s42 call 72 pith_cstring_eq bool 2 70 71 call 73 pith_cstring_release void 1 71 -store __and_68_3432 72 -brif 72 L3432 L3433 -label L3432 +store __and_68_3460 72 +brif 72 L3460 L3461 +label L3460 load 74 cn field 75 74 16 list children call 76 pith_list_len int 1 75 iconst 77 0 gt 78 76 77 -store __and_68_3432 78 -label L3433 -load 79 __and_68_3432 -brif 79 L3430 L3431 -label L3430 +store __and_68_3460 78 +label L3461 +load 79 __and_68_3460 +brif 79 L3458 L3459 +label L3458 load 80 cn field 81 80 16 list children iconst 82 0 call 83 pith_list_get_value_strict int 2 81 82 store value_idx 83 -jmp L3425 -label L3431 -label L3425 +jmp L3453 +label L3459 +label L3453 load 84 sname load 85 field_name call 86 ir_emitter_core_ir_struct_field_is_weak bool 2 84 85 -brif 86 L3435 L3436 -label L3435 +brif 86 L3463 L3464 +label L3463 load 87 field_regs load 88 value_idx call 89 ir_emitter_core_ir_emit_weak_payload int 1 88 @@ -154047,9 +154230,9 @@ load 91 field_idx iconst 92 1 add 93 91 92 store field_idx 93 -jmp L3422 -label L3436 -label L3434 +jmp L3450 +label L3464 +label L3462 load 94 value_idx load 95 ftype call 96 ir_emitter_core_ir_emit_value_for_target int 2 94 95 @@ -154060,41 +154243,41 @@ call 99 ir_struct_registry_ir_rc_kind string 1 98 call 100 pith_cstring_release void 1 97 store pos_field_kind 99 iconst 101 0 -store __and_101_3440 101 +store __and_101_3468 101 iconst 102 0 -store __and_102_3440 102 +store __and_102_3468 102 load 103 pos_field_kind call 104 string_len int 1 103 iconst 105 0 gt 106 104 105 -store __and_102_3440 106 -brif 106 L3440 L3441 -label L3440 +store __and_102_3468 106 +brif 106 L3468 L3469 +label L3468 load 107 pos_field_kind strref 108 m46s23 call 110 pith_cstring_eq bool 2 107 108 iconst 111 1 sub 109 111 110 call 112 pith_cstring_release void 1 108 -store __and_102_3440 109 -label L3441 -load 113 __and_102_3440 -store __and_101_3440 113 -brif 113 L3442 L3443 -label L3442 +store __and_102_3468 109 +label L3469 +load 113 __and_102_3468 +store __and_101_3468 113 +brif 113 L3470 L3471 +label L3470 load 114 value_idx call 115 ir_emitter_core_ir_string_expr_is_borrowed bool 1 114 -store __and_101_3440 115 -label L3443 -load 116 __and_101_3440 -brif 116 L3438 L3439 -label L3438 +store __and_101_3468 115 +label L3471 +load 116 __and_101_3468 +brif 116 L3466 L3467 +label L3466 load 117 fr load 118 pos_field_kind call 119 ir_ownership_ir_rc_retain_reg void 2 117 118 -jmp L3437 -label L3439 -label L3437 +jmp L3465 +label L3467 +label L3465 load 120 field_regs load 121 fr call 122 pith_list_push_value void 2 120 121 @@ -154102,18 +154285,18 @@ load 123 field_idx iconst 124 1 add 125 123 124 store field_idx 125 -jmp L3422 -label L3424 +jmp L3450 +label L3452 load 126 sname load 127 tid call 128 ir_emitter_core_ir_ctor_field_count int 2 126 127 store total_fields 128 -label L3444 +label L3472 load 129 field_idx load 130 total_fields lt 131 129 130 -brif 131 L3445 L3446 -label L3445 +brif 131 L3473 L3474 +label L3473 load 132 field_name load 133 sname load 134 tid @@ -154128,8 +154311,8 @@ store default_idx 140 load 141 default_idx iconst 142 0 gte 143 141 142 -brif 143 L3448 L3449 -label L3448 +brif 143 L3476 L3477 +label L3476 load 144 field_regs load 145 default_idx load 146 sname @@ -154139,18 +154322,18 @@ call 149 ir_emitter_core_ir_ctor_field_type_name string 3 146 147 148 call 150 ir_emitter_core_ir_emit_value_for_target int 2 145 149 call 151 pith_cstring_release void 1 149 call 152 pith_list_push_value void 2 144 150 -jmp L3447 -label L3449 +jmp L3475 +label L3477 load 153 field_regs call 154 ir_result_abi_ir_zero_reg int 0 call 155 pith_list_push_value void 2 153 154 -label L3447 +label L3475 load 156 field_idx iconst 157 1 add 158 156 157 store field_idx 158 -jmp L3444 -label L3446 +jmp L3472 +label L3474 call 159 ir_builder_ir_reg int 0 store r 159 call 160 ir_builder_ir_reg int 0 @@ -154188,12 +154371,12 @@ iconst 190 0 store __for_idx_353 190 store __for_len_353 189 store __for_iter_353 188 -label L3450 +label L3478 load 191 __for_idx_353 load 192 __for_len_353 lt 193 191 192 -brif 193 L3451 L3453 -label L3451 +brif 193 L3479 L3481 +label L3479 load 194 __for_iter_353 load 195 __for_idx_353 call 196 pith_list_get_value unknown 2 194 195 @@ -154226,13 +154409,13 @@ call 220 pith_cstring_release void 1 214 call 221 pith_cstring_release void 1 218 call 222 ir_builder_ir_emit void 1 219 call 223 pith_cstring_release void 1 219 -label L3452 +label L3480 load 224 __for_idx_353 iconst 225 1 add 226 224 225 store __for_idx_353 226 -jmp L3450 -label L3453 +jmp L3478 +label L3481 load 227 r load 228 sname call 229 ir_emitter_core_ir_emit_attach_dtor void 2 227 228 @@ -154284,8 +154467,8 @@ field 3 2 16 list children call 4 pith_list_len int 1 3 iconst 5 0 gt 6 4 5 -brif 6 L3455 L3456 -label L3455 +brif 6 L3483 L3484 +label L3483 load 7 inner load 8 node field 9 8 16 list children @@ -154299,8 +154482,8 @@ field 15 14 0 string kind strref 16 m46s44 call 17 pith_cstring_eq bool 2 15 16 call 18 pith_cstring_release void 1 16 -brif 17 L3458 L3459 -label L3458 +brif 17 L3486 L3487 +label L3486 load 19 node field 20 19 16 list children iconst 21 0 @@ -154320,11 +154503,11 @@ load 32 r load 33 inner call 34 pith_struct_release void 1 33 ret 32 -label L3459 -label L3457 -jmp L3454 -label L3456 -label L3454 +label L3487 +label L3485 +jmp L3482 +label L3484 +label L3482 call 35 ir_builder_ir_reg int 0 store r 35 strref 36 m46s827 @@ -154353,365 +154536,461 @@ param node iconst 1 0 store result_kind 1 iconst 2 0 -store ok_l 2 +store operand_class 2 iconst 3 0 -store err_l 3 +store ok_l 3 iconst 4 0 -store merge_l 4 -load 5 node -field 6 5 16 list children -call 7 pith_list_len int 1 6 -iconst 8 0 -gt 9 7 8 -brif 9 L3461 L3462 -label L3461 -load 10 result_kind -load 11 node -field 12 11 16 list children -iconst 13 0 -call 14 pith_list_get_value_strict int 2 12 13 -call 15 ir_emitter_core_ir_expr_result_kind string 1 14 -call 16 pith_cstring_release void 1 10 -store result_kind 15 -load 17 node -field 18 17 16 list children -iconst 19 0 -call 20 pith_list_get_value_strict int 2 18 19 -call 21 ir_emitter_core_ir_expr int 1 20 -store val_r 21 -load 22 result_kind -strref 23 m46s23 -call 24 pith_cstring_eq bool 2 22 23 -call 25 pith_cstring_release void 1 23 -brif 24 L3464 L3465 -label L3464 -load 26 val_r -strref 27 m46s184 -call 28 ir_result_abi_ir_emit_result_flag_field int 2 26 27 -call 29 pith_cstring_release void 1 27 -store cond_r 28 -load 30 ok_l -call 31 ir_builder_ir_label string 0 -call 32 pith_cstring_release void 1 30 -store ok_l 31 -load 33 err_l -call 34 ir_builder_ir_label string 0 -call 35 pith_cstring_release void 1 33 -store err_l 34 -load 36 merge_l -call 37 ir_builder_ir_label string 0 -call 38 pith_cstring_release void 1 36 -store merge_l 37 -strref 39 m46s829 -load 40 cond_r -call 41 int_to_string string 1 40 -concat 42 39 41 -call 43 pith_cstring_release void 1 39 -call 44 pith_cstring_release void 1 41 -strref 45 m46s333 -concat 46 42 45 -call 47 pith_cstring_release void 1 42 -call 48 pith_cstring_release void 1 45 -load 49 ok_l -concat 50 46 49 -call 51 pith_cstring_release void 1 46 -strref 52 m46s333 -concat 53 50 52 -call 54 pith_cstring_release void 1 50 -call 55 pith_cstring_release void 1 52 -load 56 err_l -concat 57 53 56 -call 58 pith_cstring_release void 1 53 -call 59 ir_builder_ir_emit void 1 57 -call 60 pith_cstring_release void 1 57 -load 61 ok_l -call 62 ir_call_emit_ir_emit_label void 1 61 -load 63 val_r -load 64 node -field 65 64 16 list children -iconst 66 0 -call 67 pith_list_get_value_strict int 2 65 66 -call 68 ir_emitter_core_ir_emit_result_ok_field_for_expr int 2 63 67 -store decoded_r 68 -call 69 ir_builder_ir_reg int 0 -strref 70 m46s893 -strref 71 m46s823 -load 72 val_r -call 73 ir_call_emit_ir_emit_call1 void 4 69 70 71 72 -call 74 pith_cstring_release void 1 70 -call 75 pith_cstring_release void 1 71 -strref 76 m46s828 -load 77 merge_l -concat 78 76 77 -call 79 pith_cstring_release void 1 76 -call 80 ir_builder_ir_emit void 1 78 -call 81 pith_cstring_release void 1 78 -load 82 err_l -call 83 ir_call_emit_ir_emit_label void 1 82 -iconst 84 0 -store __and_84_3469 84 -load 85 ir_emitter_core_ir_emit_tests -store __and_84_3469 85 -brif 85 L3469 L3470 -label L3469 -load 86 ir_emitter_core_ir_emitting_test_func -store __and_84_3469 86 -label L3470 -load 87 __and_84_3469 -brif 87 L3467 L3468 -label L3467 -call 88 ir_emitter_core_ir_test_assert_fail_return void 0 -jmp L3466 -label L3468 -iconst 89 1 -call 90 ir_emitter_core_ir_defer_emit_to_function_frame void 1 89 -strref 91 m46s82 -call 92 ir_emitter_core_ir_emit_string_cleanup void 1 91 -call 93 pith_cstring_release void 1 91 -strref 94 m46s844 -load 95 val_r -call 96 int_to_string string 1 95 -concat 97 94 96 -call 98 pith_cstring_release void 1 94 +store err_l 4 +iconst 5 0 +store merge_l 5 +iconst 6 0 +store err_kind 6 +load 7 node +field 8 7 16 list children +call 9 pith_list_len int 1 8 +iconst 10 0 +gt 11 9 10 +brif 11 L3489 L3490 +label L3489 +load 12 result_kind +load 13 node +field 14 13 16 list children +iconst 15 0 +call 16 pith_list_get_value_strict int 2 14 15 +call 17 ir_emitter_core_ir_expr_result_kind string 1 16 +call 18 pith_cstring_release void 1 12 +store result_kind 17 +load 19 node +field 20 19 16 list children +iconst 21 0 +call 22 pith_list_get_value_strict int 2 20 21 +call 23 ir_emitter_core_ir_expr int 1 22 +store val_r 23 +load 24 result_kind +strref 25 m46s23 +call 26 pith_cstring_eq bool 2 24 25 +call 27 pith_cstring_release void 1 25 +brif 26 L3492 L3493 +label L3492 +load 28 operand_class +load 29 node +field 30 29 16 list children +iconst 31 0 +call 32 pith_list_get_value_strict int 2 30 31 +call 33 ir_emitter_core_ir_extraction_operand_class string 1 32 +call 34 pith_cstring_release void 1 28 +store operand_class 33 +load 35 node +field 36 35 16 list children +iconst 37 0 +call 38 pith_list_get_value_strict int 2 36 37 +call 39 checker_c_get_expr_type int 1 38 +store operand_tid 39 +load 40 val_r +strref 41 m46s184 +call 42 ir_result_abi_ir_emit_result_flag_field int 2 40 41 +call 43 pith_cstring_release void 1 41 +store cond_r 42 +load 44 ok_l +call 45 ir_builder_ir_label string 0 +call 46 pith_cstring_release void 1 44 +store ok_l 45 +load 47 err_l +call 48 ir_builder_ir_label string 0 +call 49 pith_cstring_release void 1 47 +store err_l 48 +load 50 merge_l +call 51 ir_builder_ir_label string 0 +call 52 pith_cstring_release void 1 50 +store merge_l 51 +strref 53 m46s829 +load 54 cond_r +call 55 int_to_string string 1 54 +concat 56 53 55 +call 57 pith_cstring_release void 1 53 +call 58 pith_cstring_release void 1 55 +strref 59 m46s333 +concat 60 56 59 +call 61 pith_cstring_release void 1 56 +call 62 pith_cstring_release void 1 59 +load 63 ok_l +concat 64 60 63 +call 65 pith_cstring_release void 1 60 +strref 66 m46s333 +concat 67 64 66 +call 68 pith_cstring_release void 1 64 +call 69 pith_cstring_release void 1 66 +load 70 err_l +concat 71 67 70 +call 72 pith_cstring_release void 1 67 +call 73 ir_builder_ir_emit void 1 71 +call 74 pith_cstring_release void 1 71 +load 75 ok_l +call 76 ir_call_emit_ir_emit_label void 1 75 +load 77 val_r +load 78 node +field 79 78 16 list children +iconst 80 0 +call 81 pith_list_get_value_strict int 2 79 80 +call 82 ir_emitter_core_ir_emit_result_ok_field_for_expr int 2 77 81 +store decoded_r 82 +load 83 operand_class +strref 84 m46s1196 +call 86 pith_cstring_eq bool 2 83 84 +iconst 87 1 +sub 85 87 86 +call 88 pith_cstring_release void 1 84 +brif 85 L3495 L3496 +label L3495 +call 89 ir_builder_ir_reg int 0 +strref 90 m46s893 +strref 91 m46s823 +load 92 val_r +call 93 ir_call_emit_ir_emit_call1 void 4 89 90 91 92 +call 94 pith_cstring_release void 1 90 +call 95 pith_cstring_release void 1 91 +jmp L3494 +label L3496 +label L3494 +strref 96 m46s828 +load 97 merge_l +concat 98 96 97 call 99 pith_cstring_release void 1 96 -call 100 ir_builder_ir_emit void 1 97 -call 101 pith_cstring_release void 1 97 -label L3466 -load 102 merge_l +call 100 ir_builder_ir_emit void 1 98 +call 101 pith_cstring_release void 1 98 +load 102 err_l call 103 ir_call_emit_ir_emit_label void 1 102 -load 104 decoded_r -load 105 result_kind -call 106 pith_cstring_release void 1 105 -load 107 ok_l -call 108 pith_cstring_release void 1 107 -load 109 err_l -call 110 pith_cstring_release void 1 109 -load 111 merge_l -call 112 pith_cstring_release void 1 111 -ret 104 -label L3465 -label L3463 -load 113 val_r -store cond_r 113 -load 114 val_r -store decoded_r 114 -load 115 result_kind -call 116 ir_result_abi_ir_uses_result_abi bool 1 115 -brif 116 L3472 L3473 -label L3472 -load 117 val_r -load 118 result_kind -call 119 ir_result_abi_ir_decode_result_value int 2 117 118 -store decoded_r 119 -jmp L3471 -label L3473 -load 120 result_kind -call 121 string_len int 1 120 -iconst 122 0 -gt 123 121 122 -brif 123 L3474 L3475 -label L3474 -call 124 ir_builder_ir_reg int 0 -store zero_cmp 124 -load 125 result_kind -strref 126 m46s669 -call 127 pith_cstring_eq bool 2 125 126 -call 128 pith_cstring_release void 1 126 -brif 127 L3477 L3478 -label L3477 -strref 129 m46s1039 -load 130 zero_cmp -call 131 int_to_string string 1 130 -concat 132 129 131 -call 133 pith_cstring_release void 1 129 -call 134 pith_cstring_release void 1 131 -strref 135 m46s1199 -concat 136 132 135 -call 137 pith_cstring_release void 1 132 -call 138 pith_cstring_release void 1 135 -call 139 ir_builder_ir_emit void 1 136 -call 140 pith_cstring_release void 1 136 -jmp L3476 -label L3478 -strref 141 m46s827 -load 142 zero_cmp -call 143 int_to_string string 1 142 -concat 144 141 143 -call 145 pith_cstring_release void 1 141 -call 146 pith_cstring_release void 1 143 -strref 147 m46s826 -concat 148 144 147 -call 149 pith_cstring_release void 1 144 -call 150 pith_cstring_release void 1 147 -call 151 ir_builder_ir_emit void 1 148 -call 152 pith_cstring_release void 1 148 -label L3476 -call 153 ir_builder_ir_reg int 0 -store cond_r 153 -strref 154 m46s1030 -load 155 cond_r -call 156 int_to_string string 1 155 -concat 157 154 156 -call 158 pith_cstring_release void 1 154 -call 159 pith_cstring_release void 1 156 -strref 160 m46s333 -concat 161 157 160 -call 162 pith_cstring_release void 1 157 -call 163 pith_cstring_release void 1 160 -load 164 val_r -call 165 int_to_string string 1 164 -concat 166 161 165 -call 167 pith_cstring_release void 1 161 -call 168 pith_cstring_release void 1 165 -strref 169 m46s333 -concat 170 166 169 -call 171 pith_cstring_release void 1 166 -call 172 pith_cstring_release void 1 169 -load 173 zero_cmp -call 174 int_to_string string 1 173 -concat 175 170 174 -call 176 pith_cstring_release void 1 170 -call 177 pith_cstring_release void 1 174 -call 178 ir_builder_ir_emit void 1 175 -call 179 pith_cstring_release void 1 175 -jmp L3471 -label L3475 -label L3471 -load 180 ok_l -call 181 ir_builder_ir_label string 0 -call 182 pith_cstring_release void 1 180 -store ok_l 181 -load 183 err_l -call 184 ir_builder_ir_label string 0 -call 185 pith_cstring_release void 1 183 -store err_l 184 -load 186 merge_l -call 187 ir_builder_ir_label string 0 -call 188 pith_cstring_release void 1 186 -store merge_l 187 -strref 189 m46s829 -load 190 cond_r -call 191 int_to_string string 1 190 -concat 192 189 191 -call 193 pith_cstring_release void 1 189 -call 194 pith_cstring_release void 1 191 -strref 195 m46s333 -concat 196 192 195 -call 197 pith_cstring_release void 1 192 -call 198 pith_cstring_release void 1 195 -load 199 ok_l -concat 200 196 199 -call 201 pith_cstring_release void 1 196 -strref 202 m46s333 -concat 203 200 202 -call 204 pith_cstring_release void 1 200 -call 205 pith_cstring_release void 1 202 -load 206 err_l -concat 207 203 206 -call 208 pith_cstring_release void 1 203 -call 209 ir_builder_ir_emit void 1 207 -call 210 pith_cstring_release void 1 207 -load 211 ok_l -call 212 ir_call_emit_ir_emit_label void 1 211 -strref 213 m46s828 -load 214 merge_l -concat 215 213 214 -call 216 pith_cstring_release void 1 213 -call 217 ir_builder_ir_emit void 1 215 -call 218 pith_cstring_release void 1 215 -load 219 err_l -call 220 ir_call_emit_ir_emit_label void 1 219 -iconst 221 0 -store __and_221_3482 221 -load 222 ir_emitter_core_ir_emit_tests -store __and_221_3482 222 -brif 222 L3482 L3483 -label L3482 -load 223 ir_emitter_core_ir_emitting_test_func -store __and_221_3482 223 -label L3483 -load 224 __and_221_3482 -brif 224 L3480 L3481 -label L3480 -call 225 ir_emitter_core_ir_test_assert_fail_return void 0 -jmp L3479 -label L3481 -iconst 226 1 -call 227 ir_emitter_core_ir_defer_emit_to_function_frame void 1 226 -strref 228 m46s82 -call 229 ir_emitter_core_ir_emit_string_cleanup void 1 228 -call 230 pith_cstring_release void 1 228 -call 231 ir_builder_ir_reg int 0 -store zero 231 -strref 232 m46s827 -load 233 zero -call 234 int_to_string string 1 233 -concat 235 232 234 -call 236 pith_cstring_release void 1 232 -call 237 pith_cstring_release void 1 234 -strref 238 m46s826 -concat 239 235 238 -call 240 pith_cstring_release void 1 235 -call 241 pith_cstring_release void 1 238 -call 242 ir_builder_ir_emit void 1 239 -call 243 pith_cstring_release void 1 239 -strref 244 m46s844 -load 245 zero -call 246 int_to_string string 1 245 -concat 247 244 246 -call 248 pith_cstring_release void 1 244 -call 249 pith_cstring_release void 1 246 -call 250 ir_builder_ir_emit void 1 247 -call 251 pith_cstring_release void 1 247 -label L3479 -load 252 merge_l -call 253 ir_call_emit_ir_emit_label void 1 252 -load 254 decoded_r -load 255 result_kind -call 256 pith_cstring_release void 1 255 -load 257 ok_l -call 258 pith_cstring_release void 1 257 -load 259 err_l -call 260 pith_cstring_release void 1 259 -load 261 merge_l -call 262 pith_cstring_release void 1 261 -ret 254 -label L3462 -label L3460 -call 263 ir_builder_ir_reg int 0 -store r 263 -strref 264 m46s827 -load 265 r -call 266 int_to_string string 1 265 -concat 267 264 266 -call 268 pith_cstring_release void 1 264 -call 269 pith_cstring_release void 1 266 -strref 270 m46s826 -concat 271 267 270 -call 272 pith_cstring_release void 1 267 +iconst 104 0 +store __and_104_3500 104 +load 105 ir_emitter_core_ir_emit_tests +store __and_104_3500 105 +brif 105 L3500 L3501 +label L3500 +load 106 ir_emitter_core_ir_emitting_test_func +store __and_104_3500 106 +label L3501 +load 107 __and_104_3500 +brif 107 L3498 L3499 +label L3498 +call 108 ir_emitter_core_ir_test_assert_fail_return void 0 +jmp L3497 +label L3499 +load 109 operand_class +strref 110 m46s1196 +call 111 pith_cstring_eq bool 2 109 110 +call 112 pith_cstring_release void 1 110 +brif 111 L3502 L3503 +label L3502 +load 113 err_kind +load 114 operand_tid +strref 115 m46s181 +call 116 ir_result_abi_ir_result_field_kind string 2 114 115 +call 117 pith_cstring_release void 1 115 +call 118 ir_struct_registry_ir_rc_kind string 1 116 +call 119 pith_cstring_release void 1 116 +call 120 pith_cstring_release void 1 113 +store err_kind 118 +load 121 val_r +load 122 operand_tid +strref 123 m46s181 +call 124 ir_result_abi_ir_emit_result_value_field int 3 121 122 123 +call 125 pith_cstring_release void 1 123 +store err_r 124 +load 126 err_kind +call 127 string_len int 1 126 +iconst 128 0 +gt 129 127 128 +brif 129 L3505 L3506 +label L3505 +load 130 err_r +load 131 err_kind +call 132 ir_ownership_ir_rc_retain_reg void 2 130 131 +jmp L3504 +label L3506 +label L3504 +load 133 err_r +call 134 ir_emitter_core_ir_emit_err_result_tuple int 1 133 +store fresh_err_r 134 +iconst 135 1 +call 136 ir_emitter_core_ir_defer_emit_to_function_frame void 1 135 +strref 137 m46s82 +call 138 ir_emitter_core_ir_emit_string_cleanup void 1 137 +call 139 pith_cstring_release void 1 137 +strref 140 m46s844 +load 141 fresh_err_r +call 142 int_to_string string 1 141 +concat 143 140 142 +call 144 pith_cstring_release void 1 140 +call 145 pith_cstring_release void 1 142 +call 146 ir_builder_ir_emit void 1 143 +call 147 pith_cstring_release void 1 143 +jmp L3497 +label L3503 +iconst 148 1 +call 149 ir_emitter_core_ir_defer_emit_to_function_frame void 1 148 +strref 150 m46s82 +call 151 ir_emitter_core_ir_emit_string_cleanup void 1 150 +call 152 pith_cstring_release void 1 150 +strref 153 m46s844 +load 154 val_r +call 155 int_to_string string 1 154 +concat 156 153 155 +call 157 pith_cstring_release void 1 153 +call 158 pith_cstring_release void 1 155 +call 159 ir_builder_ir_emit void 1 156 +call 160 pith_cstring_release void 1 156 +label L3497 +load 161 merge_l +call 162 ir_call_emit_ir_emit_label void 1 161 +load 163 decoded_r +load 164 result_kind +call 165 pith_cstring_release void 1 164 +load 166 operand_class +call 167 pith_cstring_release void 1 166 +load 168 ok_l +call 169 pith_cstring_release void 1 168 +load 170 err_l +call 171 pith_cstring_release void 1 170 +load 172 merge_l +call 173 pith_cstring_release void 1 172 +load 174 err_kind +call 175 pith_cstring_release void 1 174 +ret 163 +label L3493 +label L3491 +load 176 val_r +store cond_r 176 +load 177 val_r +store decoded_r 177 +load 178 result_kind +call 179 ir_result_abi_ir_uses_result_abi bool 1 178 +brif 179 L3508 L3509 +label L3508 +load 180 val_r +load 181 result_kind +call 182 ir_result_abi_ir_decode_result_value int 2 180 181 +store decoded_r 182 +jmp L3507 +label L3509 +load 183 result_kind +call 184 string_len int 1 183 +iconst 185 0 +gt 186 184 185 +brif 186 L3510 L3511 +label L3510 +call 187 ir_builder_ir_reg int 0 +store zero_cmp 187 +load 188 result_kind +strref 189 m46s669 +call 190 pith_cstring_eq bool 2 188 189 +call 191 pith_cstring_release void 1 189 +brif 190 L3513 L3514 +label L3513 +strref 192 m46s1039 +load 193 zero_cmp +call 194 int_to_string string 1 193 +concat 195 192 194 +call 196 pith_cstring_release void 1 192 +call 197 pith_cstring_release void 1 194 +strref 198 m46s1200 +concat 199 195 198 +call 200 pith_cstring_release void 1 195 +call 201 pith_cstring_release void 1 198 +call 202 ir_builder_ir_emit void 1 199 +call 203 pith_cstring_release void 1 199 +jmp L3512 +label L3514 +strref 204 m46s827 +load 205 zero_cmp +call 206 int_to_string string 1 205 +concat 207 204 206 +call 208 pith_cstring_release void 1 204 +call 209 pith_cstring_release void 1 206 +strref 210 m46s826 +concat 211 207 210 +call 212 pith_cstring_release void 1 207 +call 213 pith_cstring_release void 1 210 +call 214 ir_builder_ir_emit void 1 211 +call 215 pith_cstring_release void 1 211 +label L3512 +call 216 ir_builder_ir_reg int 0 +store cond_r 216 +strref 217 m46s1030 +load 218 cond_r +call 219 int_to_string string 1 218 +concat 220 217 219 +call 221 pith_cstring_release void 1 217 +call 222 pith_cstring_release void 1 219 +strref 223 m46s333 +concat 224 220 223 +call 225 pith_cstring_release void 1 220 +call 226 pith_cstring_release void 1 223 +load 227 val_r +call 228 int_to_string string 1 227 +concat 229 224 228 +call 230 pith_cstring_release void 1 224 +call 231 pith_cstring_release void 1 228 +strref 232 m46s333 +concat 233 229 232 +call 234 pith_cstring_release void 1 229 +call 235 pith_cstring_release void 1 232 +load 236 zero_cmp +call 237 int_to_string string 1 236 +concat 238 233 237 +call 239 pith_cstring_release void 1 233 +call 240 pith_cstring_release void 1 237 +call 241 ir_builder_ir_emit void 1 238 +call 242 pith_cstring_release void 1 238 +jmp L3507 +label L3511 +label L3507 +load 243 ok_l +call 244 ir_builder_ir_label string 0 +call 245 pith_cstring_release void 1 243 +store ok_l 244 +load 246 err_l +call 247 ir_builder_ir_label string 0 +call 248 pith_cstring_release void 1 246 +store err_l 247 +load 249 merge_l +call 250 ir_builder_ir_label string 0 +call 251 pith_cstring_release void 1 249 +store merge_l 250 +strref 252 m46s829 +load 253 cond_r +call 254 int_to_string string 1 253 +concat 255 252 254 +call 256 pith_cstring_release void 1 252 +call 257 pith_cstring_release void 1 254 +strref 258 m46s333 +concat 259 255 258 +call 260 pith_cstring_release void 1 255 +call 261 pith_cstring_release void 1 258 +load 262 ok_l +concat 263 259 262 +call 264 pith_cstring_release void 1 259 +strref 265 m46s333 +concat 266 263 265 +call 267 pith_cstring_release void 1 263 +call 268 pith_cstring_release void 1 265 +load 269 err_l +concat 270 266 269 +call 271 pith_cstring_release void 1 266 +call 272 ir_builder_ir_emit void 1 270 call 273 pith_cstring_release void 1 270 -call 274 ir_builder_ir_emit void 1 271 -call 275 pith_cstring_release void 1 271 -load 276 r -load 277 result_kind -call 278 pith_cstring_release void 1 277 -load 279 ok_l -call 280 pith_cstring_release void 1 279 -load 281 err_l -call 282 pith_cstring_release void 1 281 -load 283 merge_l -call 284 pith_cstring_release void 1 283 -ret 276 -load 285 result_kind -call 286 pith_cstring_release void 1 285 -load 287 ok_l -call 288 pith_cstring_release void 1 287 -load 289 err_l -call 290 pith_cstring_release void 1 289 -load 291 merge_l -call 292 pith_cstring_release void 1 291 -iconst 293 0 -ret 293 +load 274 ok_l +call 275 ir_call_emit_ir_emit_label void 1 274 +strref 276 m46s828 +load 277 merge_l +concat 278 276 277 +call 279 pith_cstring_release void 1 276 +call 280 ir_builder_ir_emit void 1 278 +call 281 pith_cstring_release void 1 278 +load 282 err_l +call 283 ir_call_emit_ir_emit_label void 1 282 +iconst 284 0 +store __and_284_3518 284 +load 285 ir_emitter_core_ir_emit_tests +store __and_284_3518 285 +brif 285 L3518 L3519 +label L3518 +load 286 ir_emitter_core_ir_emitting_test_func +store __and_284_3518 286 +label L3519 +load 287 __and_284_3518 +brif 287 L3516 L3517 +label L3516 +call 288 ir_emitter_core_ir_test_assert_fail_return void 0 +jmp L3515 +label L3517 +iconst 289 1 +call 290 ir_emitter_core_ir_defer_emit_to_function_frame void 1 289 +strref 291 m46s82 +call 292 ir_emitter_core_ir_emit_string_cleanup void 1 291 +call 293 pith_cstring_release void 1 291 +call 294 ir_builder_ir_reg int 0 +store zero 294 +strref 295 m46s827 +load 296 zero +call 297 int_to_string string 1 296 +concat 298 295 297 +call 299 pith_cstring_release void 1 295 +call 300 pith_cstring_release void 1 297 +strref 301 m46s826 +concat 302 298 301 +call 303 pith_cstring_release void 1 298 +call 304 pith_cstring_release void 1 301 +call 305 ir_builder_ir_emit void 1 302 +call 306 pith_cstring_release void 1 302 +strref 307 m46s844 +load 308 zero +call 309 int_to_string string 1 308 +concat 310 307 309 +call 311 pith_cstring_release void 1 307 +call 312 pith_cstring_release void 1 309 +call 313 ir_builder_ir_emit void 1 310 +call 314 pith_cstring_release void 1 310 +label L3515 +load 315 merge_l +call 316 ir_call_emit_ir_emit_label void 1 315 +load 317 decoded_r +load 318 result_kind +call 319 pith_cstring_release void 1 318 +load 320 operand_class +call 321 pith_cstring_release void 1 320 +load 322 ok_l +call 323 pith_cstring_release void 1 322 +load 324 err_l +call 325 pith_cstring_release void 1 324 +load 326 merge_l +call 327 pith_cstring_release void 1 326 +load 328 err_kind +call 329 pith_cstring_release void 1 328 +ret 317 +label L3490 +label L3488 +call 330 ir_builder_ir_reg int 0 +store r 330 +strref 331 m46s827 +load 332 r +call 333 int_to_string string 1 332 +concat 334 331 333 +call 335 pith_cstring_release void 1 331 +call 336 pith_cstring_release void 1 333 +strref 337 m46s826 +concat 338 334 337 +call 339 pith_cstring_release void 1 334 +call 340 pith_cstring_release void 1 337 +call 341 ir_builder_ir_emit void 1 338 +call 342 pith_cstring_release void 1 338 +load 343 r +load 344 result_kind +call 345 pith_cstring_release void 1 344 +load 346 operand_class +call 347 pith_cstring_release void 1 346 +load 348 ok_l +call 349 pith_cstring_release void 1 348 +load 350 err_l +call 351 pith_cstring_release void 1 350 +load 352 merge_l +call 353 pith_cstring_release void 1 352 +load 354 err_kind +call 355 pith_cstring_release void 1 354 +ret 343 +load 356 result_kind +call 357 pith_cstring_release void 1 356 +load 358 operand_class +call 359 pith_cstring_release void 1 358 +load 360 ok_l +call 361 pith_cstring_release void 1 360 +load 362 err_l +call 363 pith_cstring_release void 1 362 +load 364 merge_l +call 365 pith_cstring_release void 1 364 +load 366 err_kind +call 367 pith_cstring_release void 1 366 +iconst 368 0 +ret 368 endfunc func ir_emitter_core_ir_emit_fail_expr 1 int param node @@ -154728,8 +155007,8 @@ field 6 5 16 list children call 7 pith_list_len int 1 6 iconst 8 0 gt 9 7 8 -brif 9 L3485 L3486 -label L3485 +brif 9 L3521 L3522 +label L3521 load 10 node field 11 10 16 list children iconst 12 0 @@ -154762,53 +155041,53 @@ load 34 err_kind call 35 string_len int 1 34 iconst 36 0 gt 37 35 36 -brif 37 L3488 L3489 -label L3488 +brif 37 L3524 L3525 +label L3524 iconst 38 0 -store __and_38_3493 38 +store __and_38_3529 38 load 39 expr_node field 40 39 0 string kind strref 41 m46s37 call 42 pith_cstring_eq bool 2 40 41 call 43 pith_cstring_release void 1 41 -store __and_38_3493 42 -brif 42 L3493 L3494 -label L3493 +store __and_38_3529 42 +brif 42 L3529 L3530 +label L3529 load 44 expr_node field 45 44 8 string value call 46 ir_emitter_core_ir_rc_local_kind string 1 45 load 47 err_kind call 48 pith_cstring_eq bool 2 46 47 call 49 pith_cstring_release void 1 46 -store __and_38_3493 48 -label L3494 -load 50 __and_38_3493 -brif 50 L3491 L3492 -label L3491 +store __and_38_3529 48 +label L3530 +load 50 __and_38_3529 +brif 50 L3527 L3528 +label L3527 load 51 exclude load 52 expr_node field 53 52 8 string value call 54 pith_cstring_retain void 1 53 call 55 pith_cstring_release void 1 51 store exclude 53 -jmp L3490 -label L3492 +jmp L3526 +label L3528 load 56 node field 57 56 16 list children iconst 58 0 call 59 pith_list_get_value_strict int 2 57 58 call 60 ir_emitter_core_ir_string_expr_is_borrowed bool 1 59 -brif 60 L3495 L3496 -label L3495 +brif 60 L3531 L3532 +label L3531 load 61 err_r load 62 err_kind call 63 ir_ownership_ir_rc_retain_reg void 2 61 62 -jmp L3490 -label L3496 -label L3490 -jmp L3487 -label L3489 -label L3487 +jmp L3526 +label L3532 +label L3526 +jmp L3523 +label L3525 +label L3523 load 64 err_r call 65 ir_emitter_core_ir_emit_err_result_tuple int 1 64 store tuple_r 65 @@ -154824,8 +155103,8 @@ call 74 pith_cstring_release void 1 70 call 75 pith_cstring_release void 1 72 call 76 ir_builder_ir_emit void 1 73 call 77 pith_cstring_release void 1 73 -jmp L3484 -label L3486 +jmp L3520 +label L3522 iconst 78 1 call 79 ir_emitter_core_ir_defer_emit_to_function_frame void 1 78 strref 80 m46s82 @@ -154840,7 +155119,7 @@ call 88 pith_cstring_release void 1 83 call 89 pith_cstring_release void 1 86 call 90 ir_builder_ir_emit void 1 87 call 91 pith_cstring_release void 1 87 -label L3484 +label L3520 load 92 ub call 93 ir_builder_ir_label string 0 call 94 pith_cstring_release void 1 92 @@ -154922,8 +155201,8 @@ load 27 obj_type call 28 string_len int 1 27 iconst 29 0 eq 30 28 29 -brif 30 L3498 L3499 -label L3498 +brif 30 L3534 L3535 +label L3534 load 31 obj_type load 32 node field 33 32 16 list children @@ -154932,15 +155211,15 @@ call 35 pith_list_get_value_strict int 2 33 34 call 36 ir_emitter_core_ir_infer_type string 1 35 call 37 pith_cstring_release void 1 31 store obj_type 36 -jmp L3497 -label L3499 -label L3497 +jmp L3533 +label L3535 +label L3533 load 38 value_type call 39 string_len int 1 38 iconst 40 0 eq 41 39 40 -brif 41 L3501 L3502 -label L3501 +brif 41 L3537 L3538 +label L3537 load 42 value_type load 43 node field 44 43 16 list children @@ -154949,36 +155228,36 @@ call 46 pith_list_get_value_strict int 2 44 45 call 47 ir_emitter_core_ir_lookup_map_value_type_for_expr string 1 46 call 48 pith_cstring_release void 1 42 store value_type 47 -jmp L3500 -label L3502 -label L3500 +jmp L3536 +label L3538 +label L3536 load 49 value_type call 50 string_len int 1 49 iconst 51 0 eq 52 50 51 -brif 52 L3504 L3505 -label L3504 +brif 52 L3540 L3541 +label L3540 load 53 value_type load 54 idx call 55 ir_emitter_core_ir_infer_type string 1 54 call 56 pith_cstring_release void 1 53 store value_type 55 -jmp L3503 -label L3505 -label L3503 +jmp L3539 +label L3541 +label L3539 iconst 57 0 -store __and_57_3509 57 +store __and_57_3545 57 load 58 ir_emitter_core_ir_current_func_returns_result -store __and_57_3509 58 -brif 58 L3509 L3510 -label L3509 +store __and_57_3545 58 +brif 58 L3545 L3546 +label L3545 load 59 obj_type call 60 ir_emitter_core_ir_index_supports_propagate bool 1 59 -store __and_57_3509 60 -label L3510 -load 61 __and_57_3509 -brif 61 L3507 L3508 -label L3507 +store __and_57_3545 60 +label L3546 +load 61 __and_57_3545 +brif 61 L3543 L3544 +label L3543 load 62 obj_r load 63 idx_r load 64 obj_type @@ -154991,8 +155270,8 @@ call 70 pith_cstring_release void 1 69 load 71 call_name call 72 pith_cstring_release void 1 71 ret 66 -label L3508 -label L3506 +label L3544 +label L3542 load 73 call_name load 74 obj_type call 75 ir_collection_helpers_ir_index_get_call_name string 1 74 @@ -155002,8 +155281,8 @@ load 77 obj_type strref 78 m46s672 call 79 pith_cstring_eq bool 2 77 78 call 80 pith_cstring_release void 1 78 -brif 79 L3512 L3513 -label L3512 +brif 79 L3548 L3549 +label L3548 load 81 r load 82 call_name strref 83 m46s672 @@ -155011,14 +155290,14 @@ load 84 obj_r load 85 idx_r call 86 ir_call_emit_ir_emit_call2 void 5 81 82 83 84 85 call 87 pith_cstring_release void 1 83 -jmp L3511 -label L3513 +jmp L3547 +label L3549 load 88 obj_type strref 89 m46s671 call 90 pith_cstring_eq bool 2 88 89 call 91 pith_cstring_release void 1 89 -brif 90 L3514 L3515 -label L3514 +brif 90 L3550 L3551 +label L3550 load 92 r load 93 call_name strref 94 m46s668 @@ -155026,47 +155305,47 @@ load 95 obj_r load 96 idx_r call 97 ir_call_emit_ir_emit_call2 void 5 92 93 94 95 96 call 98 pith_cstring_release void 1 94 -jmp L3511 -label L3515 +jmp L3547 +label L3551 iconst 99 0 -store __or_99_3518 99 +store __or_99_3554 99 load 100 obj_type strref 101 m46s667 call 102 pith_cstring_eq bool 2 100 101 call 103 pith_cstring_release void 1 101 -store __or_99_3518 102 -brif 102 L3519 L3518 -label L3518 +store __or_99_3554 102 +brif 102 L3555 L3554 +label L3554 load 104 obj_type strref 105 m46s19 call 106 pith_cstring_eq bool 2 104 105 call 107 pith_cstring_release void 1 105 -store __or_99_3518 106 -label L3519 -load 108 __or_99_3518 -brif 108 L3516 L3517 -label L3516 +store __or_99_3554 106 +label L3555 +load 108 __or_99_3554 +brif 108 L3552 L3553 +label L3552 load 109 value_type call 110 string_len int 1 109 iconst 111 0 eq 112 110 111 -brif 112 L3521 L3522 -label L3521 +brif 112 L3557 L3558 +label L3557 load 113 value_type strref 114 m46s817 call 115 pith_cstring_release void 1 113 store value_type 114 -jmp L3520 -label L3522 -label L3520 +jmp L3556 +label L3558 +label L3556 load 116 r load 117 call_name load 118 value_type load 119 obj_r load 120 idx_r call 121 ir_call_emit_ir_emit_call2 void 5 116 117 118 119 120 -jmp L3511 -label L3517 +jmp L3547 +label L3553 load 122 r load 123 call_name load 124 idx @@ -155075,7 +155354,7 @@ load 126 obj_r load 127 idx_r call 128 ir_call_emit_ir_emit_call2 void 5 122 123 125 126 127 call 129 pith_cstring_release void 1 125 -label L3511 +label L3547 load 130 r load 131 obj_type call 132 pith_cstring_release void 1 131 @@ -155099,42 +155378,42 @@ load 1 obj_type strref 2 m46s19 call 3 pith_cstring_eq bool 2 1 2 call 4 pith_cstring_release void 1 2 -brif 3 L3524 L3525 -label L3524 +brif 3 L3560 L3561 +label L3560 iconst 5 1 ret 5 -label L3525 -label L3523 +label L3561 +label L3559 load 6 obj_type strref 7 m46s667 call 8 pith_cstring_eq bool 2 6 7 call 9 pith_cstring_release void 1 7 -brif 8 L3527 L3528 -label L3527 +brif 8 L3563 L3564 +label L3563 iconst 10 1 ret 10 -label L3528 -label L3526 +label L3564 +label L3562 load 11 obj_type strref 12 m46s20 call 13 pith_cstring_eq bool 2 11 12 call 14 pith_cstring_release void 1 12 -brif 13 L3530 L3531 -label L3530 +brif 13 L3566 L3567 +label L3566 iconst 15 1 ret 15 -label L3531 -label L3529 +label L3567 +label L3565 load 16 obj_type strref 17 m46s665 call 18 pith_cstring_eq bool 2 16 17 call 19 pith_cstring_release void 1 17 -brif 18 L3533 L3534 -label L3533 +brif 18 L3569 L3570 +label L3569 iconst 20 1 ret 20 -label L3534 -label L3532 +label L3570 +label L3568 iconst 21 0 ret 21 iconst 22 0 @@ -155219,15 +155498,15 @@ load 61 val_kind call 62 string_len int 1 61 iconst 63 0 eq 64 62 63 -brif 64 L3536 L3537 -label L3536 +brif 64 L3572 L3573 +label L3572 load 65 val_kind strref 66 m46s817 call 67 pith_cstring_release void 1 65 store val_kind 66 -jmp L3535 -label L3537 -label L3535 +jmp L3571 +label L3573 +label L3571 call 68 ir_builder_ir_reg int 0 store unwrapped_r 68 strref 69 m46s832 @@ -155281,27 +155560,27 @@ call 116 ir_call_emit_ir_emit_call1 void 4 112 113 114 115 call 117 pith_cstring_release void 1 113 call 118 pith_cstring_release void 1 114 iconst 119 0 -store __and_119_3541 119 +store __and_119_3577 119 load 120 ir_emitter_core_ir_emit_tests -store __and_119_3541 120 -brif 120 L3541 L3542 -label L3541 +store __and_119_3577 120 +brif 120 L3577 L3578 +label L3577 load 121 ir_emitter_core_ir_emitting_test_func -store __and_119_3541 121 -label L3542 -load 122 __and_119_3541 -brif 122 L3539 L3540 -label L3539 +store __and_119_3577 121 +label L3578 +load 122 __and_119_3577 +brif 122 L3575 L3576 +label L3575 call 123 ir_emitter_core_ir_test_assert_fail_return void 0 -jmp L3538 -label L3540 +jmp L3574 +label L3576 iconst 124 1 call 125 ir_emitter_core_ir_defer_emit_to_function_frame void 1 124 strref 126 m46s82 call 127 ir_emitter_core_ir_emit_string_cleanup void 1 126 call 128 pith_cstring_release void 1 126 load 129 msg -strref 130 m46s1198 +strref 130 m46s1199 call 131 ir_builder_ir_str string 1 130 call 132 pith_cstring_release void 1 130 call 133 pith_cstring_release void 1 129 @@ -155332,7 +155611,7 @@ call 155 pith_cstring_release void 1 150 call 156 pith_cstring_release void 1 153 call 157 ir_builder_ir_emit void 1 154 call 158 pith_cstring_release void 1 154 -label L3538 +label L3574 load 159 merge_l call 160 ir_call_emit_ir_emit_label void 1 159 load 161 unwrapped_r @@ -155370,22 +155649,22 @@ load 1 obj_type strref 2 m46s19 call 3 pith_cstring_eq bool 2 1 2 call 4 pith_cstring_release void 1 2 -brif 3 L3544 L3545 -label L3544 +brif 3 L3580 L3581 +label L3580 strref 5 m46s682 ret 5 -label L3545 -label L3543 +label L3581 +label L3579 load 6 obj_type strref 7 m46s667 call 8 pith_cstring_eq bool 2 6 7 call 9 pith_cstring_release void 1 7 -brif 8 L3547 L3548 -label L3547 +brif 8 L3583 L3584 +label L3583 strref 10 m46s683 ret 10 -label L3548 -label L3546 +label L3584 +label L3582 strref 11 m46s701 ret 11 iconst 12 0 @@ -155408,7 +155687,7 @@ call 8 ast_get_node struct:Node 1 7 call 9 pith_struct_release void 1 6 store target 8 iconst 10 0 -store __or_10_3552 10 +store __or_10_3588 10 load 11 target field 12 11 0 string kind strref 13 m46s35 @@ -155416,19 +155695,19 @@ call 15 pith_cstring_eq bool 2 12 13 iconst 16 1 sub 14 16 15 call 17 pith_cstring_release void 1 13 -store __or_10_3552 14 -brif 14 L3553 L3552 -label L3552 +store __or_10_3588 14 +brif 14 L3589 L3588 +label L3588 load 18 target field 19 18 16 list children call 20 pith_list_len int 1 19 iconst 21 2 lt 22 20 21 -store __or_10_3552 22 -label L3553 -load 23 __or_10_3552 -brif 23 L3550 L3551 -label L3550 +store __or_10_3588 22 +label L3589 +load 23 __or_10_3588 +brif 23 L3586 L3587 +label L3586 iconst 24 0 load 25 target call 26 pith_struct_release void 1 25 @@ -155439,8 +155718,8 @@ call 30 pith_cstring_release void 1 29 load 31 idx_store_kind call 32 pith_cstring_release void 1 31 ret 24 -label L3551 -label L3549 +label L3587 +label L3585 load 33 target field 34 33 16 list children iconst 35 0 @@ -155470,8 +155749,8 @@ load 54 obj_type call 55 string_len int 1 54 iconst 56 0 eq 57 55 56 -brif 57 L3555 L3556 -label L3555 +brif 57 L3591 L3592 +label L3591 load 58 obj_type load 59 target field 60 59 16 list children @@ -155480,15 +155759,15 @@ call 62 pith_list_get_value_strict int 2 60 61 call 63 ir_emitter_core_ir_infer_type string 1 62 call 64 pith_cstring_release void 1 58 store obj_type 63 -jmp L3554 -label L3556 -label L3554 +jmp L3590 +label L3592 +label L3590 load 65 value_type call 66 string_len int 1 65 iconst 67 0 eq 68 66 67 -brif 68 L3558 L3559 -label L3558 +brif 68 L3594 L3595 +label L3594 load 69 value_type load 70 target field 71 70 16 list children @@ -155497,23 +155776,23 @@ call 73 pith_list_get_value_strict int 2 71 72 call 74 ir_emitter_core_ir_lookup_map_value_type_for_expr string 1 73 call 75 pith_cstring_release void 1 69 store value_type 74 -jmp L3557 -label L3559 -label L3557 +jmp L3593 +label L3595 +label L3593 load 76 value_type call 77 string_len int 1 76 iconst 78 0 eq 79 77 78 -brif 79 L3561 L3562 -label L3561 +brif 79 L3597 L3598 +label L3597 load 80 value_type load 81 value_idx call 82 ir_emitter_core_ir_infer_type string 1 81 call 83 pith_cstring_release void 1 80 store value_type 82 -jmp L3560 -label L3562 -label L3560 +jmp L3596 +label L3598 +label L3596 load 84 value_idx load 85 value_type call 86 ir_emitter_core_ir_emit_value_for_target int 2 84 85 @@ -155524,72 +155803,72 @@ call 89 ir_struct_registry_ir_rc_kind string 1 88 call 90 pith_cstring_release void 1 87 store idx_store_kind 89 iconst 91 0 -store __or_91_3566 91 +store __or_91_3602 91 iconst 92 0 -store __or_92_3566 92 +store __or_92_3602 92 iconst 93 0 -store __or_93_3566 93 +store __or_93_3602 93 iconst 94 0 -store __or_94_3566 94 +store __or_94_3602 94 load 95 idx_store_kind strref 96 m46s20 call 97 pith_cstring_eq bool 2 95 96 call 98 pith_cstring_release void 1 96 -store __or_94_3566 97 -brif 97 L3567 L3566 -label L3566 +store __or_94_3602 97 +brif 97 L3603 L3602 +label L3602 load 99 idx_store_kind strref 100 m46s19 call 101 pith_cstring_eq bool 2 99 100 call 102 pith_cstring_release void 1 100 -store __or_94_3566 101 -label L3567 -load 103 __or_94_3566 -store __or_93_3566 103 -brif 103 L3569 L3568 -label L3568 +store __or_94_3602 101 +label L3603 +load 103 __or_94_3602 +store __or_93_3602 103 +brif 103 L3605 L3604 +label L3604 load 104 idx_store_kind strref 105 m46s18 call 106 pith_cstring_eq bool 2 104 105 call 107 pith_cstring_release void 1 105 -store __or_93_3566 106 -label L3569 -load 108 __or_93_3566 -store __or_92_3566 108 -brif 108 L3571 L3570 -label L3570 +store __or_93_3602 106 +label L3605 +load 108 __or_93_3602 +store __or_92_3602 108 +brif 108 L3607 L3606 +label L3606 load 109 idx_store_kind strref 110 m46s671 call 111 pith_cstring_eq bool 2 109 110 call 112 pith_cstring_release void 1 110 -store __or_92_3566 111 -label L3571 -load 113 __or_92_3566 -store __or_91_3566 113 -brif 113 L3573 L3572 -label L3572 +store __or_92_3602 111 +label L3607 +load 113 __or_92_3602 +store __or_91_3602 113 +brif 113 L3609 L3608 +label L3608 load 114 idx_store_kind strref 115 m46s15 call 116 pith_cstring_eq bool 2 114 115 call 117 pith_cstring_release void 1 115 -store __or_91_3566 116 -label L3573 -load 118 __or_91_3566 -brif 118 L3564 L3565 -label L3564 +store __or_91_3602 116 +label L3609 +load 118 __or_91_3602 +brif 118 L3600 L3601 +label L3600 load 119 value_idx call 120 ir_emitter_core_ir_string_expr_is_borrowed bool 1 119 -brif 120 L3575 L3576 -label L3575 +brif 120 L3611 L3612 +label L3611 load 121 value_r load 122 idx_store_kind call 123 ir_ownership_ir_rc_retain_reg void 2 121 122 -jmp L3574 -label L3576 -label L3574 -jmp L3563 -label L3565 -label L3563 +jmp L3610 +label L3612 +label L3610 +jmp L3599 +label L3601 +label L3599 call 124 ir_builder_ir_reg int 0 load 125 obj_type call 126 ir_collection_helpers_ir_index_set_call_name string 1 125 @@ -155631,146 +155910,146 @@ call 4 ast_get_node struct:Node 1 3 call 5 pith_struct_release void 1 2 store node 4 iconst 6 0 -store __or_6_3580 6 +store __or_6_3616 6 iconst 7 0 -store __or_7_3580 7 +store __or_7_3616 7 load 8 node field 9 8 0 string kind strref 10 m46s516 call 11 pith_cstring_eq bool 2 9 10 call 12 pith_cstring_release void 1 10 -store __or_7_3580 11 -brif 11 L3581 L3580 -label L3580 +store __or_7_3616 11 +brif 11 L3617 L3616 +label L3616 load 13 node field 14 13 0 string kind strref 15 m46s668 call 16 pith_cstring_eq bool 2 14 15 call 17 pith_cstring_release void 1 15 -store __or_7_3580 16 -label L3581 -load 18 __or_7_3580 -store __or_6_3580 18 -brif 18 L3583 L3582 -label L3582 +store __or_7_3616 16 +label L3617 +load 18 __or_7_3616 +store __or_6_3616 18 +brif 18 L3619 L3618 +label L3618 load 19 node field 20 19 0 string kind strref 21 m46s1042 call 22 pith_cstring_eq bool 2 20 21 call 23 pith_cstring_release void 1 21 -store __or_6_3580 22 -label L3583 -load 24 __or_6_3580 -brif 24 L3578 L3579 -label L3578 +store __or_6_3616 22 +label L3619 +load 24 __or_6_3616 +brif 24 L3614 L3615 +label L3614 load 25 node call 26 ir_literals_ir_emit_int_literal int 1 25 load 27 node call 28 pith_struct_release void 1 27 ret 26 -label L3579 -label L3577 +label L3615 +label L3613 iconst 29 0 -store __or_29_3587 29 +store __or_29_3623 29 iconst 30 0 -store __or_30_3587 30 +store __or_30_3623 30 load 31 node field 32 31 0 string kind strref 33 m46s514 call 34 pith_cstring_eq bool 2 32 33 call 35 pith_cstring_release void 1 33 -store __or_30_3587 34 -brif 34 L3588 L3587 -label L3587 +store __or_30_3623 34 +brif 34 L3624 L3623 +label L3623 load 36 node field 37 36 0 string kind strref 38 m46s672 call 39 pith_cstring_eq bool 2 37 38 call 40 pith_cstring_release void 1 38 -store __or_30_3587 39 -label L3588 -load 41 __or_30_3587 -store __or_29_3587 41 -brif 41 L3590 L3589 -label L3589 +store __or_30_3623 39 +label L3624 +load 41 __or_30_3623 +store __or_29_3623 41 +brif 41 L3626 L3625 +label L3625 load 42 node field 43 42 0 string kind strref 44 m46s1020 call 45 pith_cstring_eq bool 2 43 44 call 46 pith_cstring_release void 1 44 -store __or_29_3587 45 -label L3590 -load 47 __or_29_3587 -brif 47 L3585 L3586 -label L3585 +store __or_29_3623 45 +label L3626 +load 47 __or_29_3623 +brif 47 L3621 L3622 +label L3621 load 48 node call 49 ir_literals_ir_emit_string_literal int 1 48 load 50 node call 51 pith_struct_release void 1 50 ret 49 -label L3586 -label L3584 +label L3622 +label L3620 iconst 52 0 -store __or_52_3594 52 +store __or_52_3630 52 load 53 node field 54 53 0 string kind strref 55 m46s515 call 56 pith_cstring_eq bool 2 54 55 call 57 pith_cstring_release void 1 55 -store __or_52_3594 56 -brif 56 L3595 L3594 -label L3594 +store __or_52_3630 56 +brif 56 L3631 L3630 +label L3630 load 58 node field 59 58 0 string kind strref 60 m46s669 call 61 pith_cstring_eq bool 2 59 60 call 62 pith_cstring_release void 1 60 -store __or_52_3594 61 -label L3595 -load 63 __or_52_3594 -brif 63 L3592 L3593 -label L3592 +store __or_52_3630 61 +label L3631 +load 63 __or_52_3630 +brif 63 L3628 L3629 +label L3628 load 64 node call 65 ir_literals_ir_emit_float_literal int 1 64 load 66 node call 67 pith_struct_release void 1 66 ret 65 -label L3593 -label L3591 +label L3629 +label L3627 iconst 68 0 -store __or_68_3599 68 +store __or_68_3635 68 load 69 node field 70 69 0 string kind strref 71 m46s670 call 72 pith_cstring_eq bool 2 70 71 call 73 pith_cstring_release void 1 71 -store __or_68_3599 72 -brif 72 L3600 L3599 -label L3599 +store __or_68_3635 72 +brif 72 L3636 L3635 +label L3635 load 74 node field 75 74 0 string kind strref 76 m46s513 call 77 pith_cstring_eq bool 2 75 76 call 78 pith_cstring_release void 1 76 -store __or_68_3599 77 -label L3600 -load 79 __or_68_3599 -brif 79 L3597 L3598 -label L3597 +store __or_68_3635 77 +label L3636 +load 79 __or_68_3635 +brif 79 L3633 L3634 +label L3633 load 80 node call 81 ir_literals_ir_emit_bool_literal int 1 80 load 82 node call 83 pith_struct_release void 1 82 ret 81 -label L3598 -label L3596 +label L3634 +label L3632 load 84 node field 85 84 0 string kind strref 86 m46s37 call 87 pith_cstring_eq bool 2 85 86 call 88 pith_cstring_release void 1 86 -brif 87 L3602 L3603 -label L3602 +brif 87 L3638 L3639 +label L3638 load 89 idx load 90 node field 91 90 8 string value @@ -155778,15 +156057,15 @@ call 92 ir_emitter_core_ir_emit_ident_load int 2 89 91 load 93 node call 94 pith_struct_release void 1 93 ret 92 -label L3603 -label L3601 +label L3639 +label L3637 load 95 node field 96 95 0 string kind strref 97 m46s512 call 98 pith_cstring_eq bool 2 96 97 call 99 pith_cstring_release void 1 97 -brif 98 L3605 L3606 -label L3605 +brif 98 L3641 L3642 +label L3641 load 100 idx strref 101 m46s512 call 102 ir_emitter_core_ir_emit_ident_load int 2 100 101 @@ -155794,57 +156073,57 @@ call 103 pith_cstring_release void 1 101 load 104 node call 105 pith_struct_release void 1 104 ret 102 -label L3606 -label L3604 +label L3642 +label L3640 load 106 node field 107 106 0 string kind strref 108 m46s510 call 109 pith_cstring_eq bool 2 107 108 call 110 pith_cstring_release void 1 108 -brif 109 L3608 L3609 -label L3608 +brif 109 L3644 L3645 +label L3644 load 111 node call 112 ir_emitter_core_ir_emit_unary_expr int 1 111 load 113 node call 114 pith_struct_release void 1 113 ret 112 -label L3609 -label L3607 +label L3645 +label L3643 load 115 node field 116 115 0 string kind strref 117 m46s511 call 118 pith_cstring_eq bool 2 116 117 call 119 pith_cstring_release void 1 117 -brif 118 L3611 L3612 -label L3611 +brif 118 L3647 L3648 +label L3647 load 120 node call 121 ir_emitter_core_ir_emit_binary_expr int 1 120 load 122 node call 123 pith_struct_release void 1 122 ret 121 -label L3612 -label L3610 +label L3648 +label L3646 load 124 node field 125 124 0 string kind strref 126 m46s44 call 127 pith_cstring_eq bool 2 125 126 call 128 pith_cstring_release void 1 126 -brif 127 L3614 L3615 -label L3614 +brif 127 L3650 L3651 +label L3650 load 129 idx load 130 node call 131 ir_emitter_core_ir_emit_static_call int 2 129 130 load 132 node call 133 pith_struct_release void 1 132 ret 131 -label L3615 +label L3651 load 134 idx load 135 node call 136 ir_emitter_core_ir_expr_complex int 2 134 135 load 137 node call 138 pith_struct_release void 1 137 ret 136 -label L3613 +label L3649 load 139 node call 140 pith_struct_release void 1 139 iconst 141 0 @@ -155893,8 +156172,8 @@ field 12 11 16 list children call 13 pith_list_len int 1 12 iconst 14 0 gt 15 13 14 -brif 15 L3617 L3618 -label L3617 +brif 15 L3653 L3654 +label L3653 load 16 recv_node load 17 node field 18 17 16 list children @@ -155904,46 +156183,46 @@ call 21 ast_get_node struct:Node 1 20 call 22 pith_struct_release void 1 16 store recv_node 21 iconst 23 0 -store __and_23_3622 23 +store __and_23_3658 23 load 24 recv_node field 25 24 0 string kind strref 26 m46s37 call 27 pith_cstring_eq bool 2 25 26 call 28 pith_cstring_release void 1 26 -store __and_23_3622 27 -brif 27 L3622 L3623 -label L3622 +store __and_23_3658 27 +brif 27 L3658 L3659 +label L3658 load 29 ir_alias_registry_ir_module_aliases load 30 recv_node field 31 30 8 string value call 32 contains_key bool 2 29 31 -store __and_23_3622 32 -label L3623 -load 33 __and_23_3622 -brif 33 L3620 L3621 -label L3620 +store __and_23_3658 32 +label L3659 +load 33 __and_23_3658 +brif 33 L3656 L3657 +label L3656 load 34 idx call 35 checker_c_get_expr_type int 1 34 store expr_tid 35 iconst 36 0 -store __and_36_3627 36 +store __and_36_3663 36 load 37 expr_tid iconst 38 0 gte 39 37 38 -store __and_36_3627 39 -brif 39 L3627 L3628 -label L3627 +store __and_36_3663 39 +brif 39 L3663 L3664 +label L3663 load 40 expr_tid call 41 types_get_type_info struct:TypeInfo 1 40 field 42 41 0 string kind strref 43 m46s24 call 44 pith_cstring_eq bool 2 42 43 call 45 pith_cstring_release void 1 43 -store __and_36_3627 44 -label L3628 -load 46 __and_36_3627 -brif 46 L3625 L3626 -label L3625 +store __and_36_3663 44 +label L3664 +load 46 __and_36_3663 +brif 46 L3661 L3662 +label L3661 load 47 callee load 48 idx call 49 ir_emitter_core_ir_resolve_static_callee struct:ResolvedCallee 1 48 @@ -155954,8 +156233,8 @@ field 52 51 0 string name call 53 string_len int 1 52 iconst 54 0 gt 55 53 54 -brif 55 L3630 L3631 -label L3630 +brif 55 L3666 L3667 +label L3666 call 56 ir_builder_ir_reg int 0 store r 56 load 57 wrapper @@ -155965,7 +156244,7 @@ field 60 59 0 string name call 61 ir_emitter_core_ir_named_function_value_wrapper string 2 58 60 call 62 pith_cstring_release void 1 57 store wrapper 61 -strref 63 m46s1197 +strref 63 m46s1198 load 64 r call 65 int_to_string string 1 64 concat 66 63 65 @@ -155992,11 +156271,11 @@ call 86 pith_cstring_release void 1 85 load 87 module_path call 88 pith_cstring_release void 1 87 ret 78 -label L3631 -label L3629 -jmp L3624 -label L3626 -label L3624 +label L3667 +label L3665 +jmp L3660 +label L3662 +label L3660 load 89 module_path load 90 ir_alias_registry_ir_module_aliases load 91 recv_node @@ -156008,8 +156287,8 @@ store module_path 93 load 96 module_path load 97 fname call 98 ir_alias_registry_ir_import_declares_global bool 2 96 97 -brif 98 L3633 L3634 -label L3633 +brif 98 L3669 L3670 +label L3669 call 99 ir_builder_ir_reg int 0 store r 99 strref 100 m46s824 @@ -156042,11 +156321,11 @@ call 126 pith_cstring_release void 1 125 load 127 module_path call 128 pith_cstring_release void 1 127 ret 118 -label L3634 -label L3632 -jmp L3619 -label L3621 -label L3619 +label L3670 +label L3668 +jmp L3655 +label L3657 +label L3655 load 129 node field 130 129 16 list children iconst 131 0 @@ -156061,8 +156340,8 @@ store result_r 137 load 138 result_r iconst 139 0 gte 140 138 139 -brif 140 L3636 L3637 -label L3636 +brif 140 L3672 L3673 +label L3672 load 141 result_r load 142 fname call 143 pith_cstring_release void 1 142 @@ -156075,8 +156354,8 @@ call 149 pith_cstring_release void 1 148 load 150 module_path call 151 pith_cstring_release void 1 150 ret 141 -label L3637 -label L3635 +label L3673 +label L3671 load 152 idx load 153 node load 154 obj_r @@ -156092,8 +156371,8 @@ call 163 pith_cstring_release void 1 162 load 164 module_path call 165 pith_cstring_release void 1 164 ret 155 -label L3618 -label L3616 +label L3654 +label L3652 load 166 idx load 167 node iconst 168 0 @@ -156131,12 +156410,12 @@ field 2 1 16 list children call 3 pith_list_len int 1 2 iconst 4 0 eq 5 3 4 -brif 5 L3639 L3640 -label L3639 +brif 5 L3675 L3676 +label L3675 call 6 ir_emitter_core_ir_emit_zero_value int 0 ret 6 -label L3640 -label L3638 +label L3676 +label L3674 load 7 node field 8 7 16 list children iconst 9 0 @@ -156175,8 +156454,8 @@ load 11 err_kind call 12 string_len int 1 11 iconst 13 0 gt 14 12 13 -brif 14 L3642 L3643 -label L3642 +brif 14 L3678 L3679 +label L3678 load 15 result_r load 16 result_tid strref 17 m46s181 @@ -156186,9 +156465,9 @@ store err_r 18 load 20 err_r load 21 err_kind call 22 ir_ownership_ir_rc_release_reg void 2 20 21 -jmp L3641 -label L3643 -label L3641 +jmp L3677 +label L3679 +label L3677 load 23 err_kind call 24 pith_cstring_release void 1 23 iconst 25 0 @@ -156259,8 +156538,8 @@ load 51 ok_kind call 52 string_len int 1 51 iconst 53 0 gt 54 52 53 -brif 54 L3645 L3646 -label L3645 +brif 54 L3681 L3682 +label L3681 load 55 result_r load 56 result_tid strref 57 m46s182 @@ -156270,9 +156549,9 @@ store ok_r 58 load 60 ok_r load 61 ok_kind call 62 ir_ownership_ir_rc_release_reg void 2 60 61 -jmp L3644 -label L3646 -label L3644 +jmp L3680 +label L3682 +label L3680 strref 63 m46s828 load 64 done_l concat 65 63 64 @@ -156313,198 +156592,241 @@ endfunc func ir_emitter_core_ir_emit_catch_expr 1 int param node iconst 1 0 -store temp_name 1 +store operand_class 1 iconst 2 0 -store ok_l 2 +store temp_name 2 iconst 3 0 -store fallback_l 3 +store ok_l 3 iconst 4 0 -store merge_l 4 -load 5 node -field 6 5 16 list children -iconst 7 0 -call 8 pith_list_get_value_strict int 2 6 7 -call 9 ir_emitter_core_ir_expr int 1 8 -store result_r 9 -load 10 node -field 11 10 16 list children -iconst 12 0 -call 13 pith_list_get_value_strict int 2 11 12 -call 14 checker_c_get_expr_type int 1 13 -store result_tid 14 -load 15 result_r -strref 16 m46s184 -call 17 ir_result_abi_ir_emit_result_flag_field int 2 15 16 -call 18 pith_cstring_release void 1 16 -store cond_r 17 -load 19 temp_name -strref 20 m46s1196 -call 21 ir_builder_ir_new_temp_name string 1 20 -call 22 pith_cstring_release void 1 20 -call 23 pith_cstring_release void 1 19 -store temp_name 21 -load 24 ok_l -call 25 ir_builder_ir_label string 0 +store fallback_l 4 +iconst 5 0 +store merge_l 5 +load 6 node +field 7 6 16 list children +iconst 8 0 +call 9 pith_list_get_value_strict int 2 7 8 +call 10 ir_emitter_core_ir_expr int 1 9 +store result_r 10 +load 11 node +field 12 11 16 list children +iconst 13 0 +call 14 pith_list_get_value_strict int 2 12 13 +call 15 checker_c_get_expr_type int 1 14 +store result_tid 15 +load 16 operand_class +load 17 node +field 18 17 16 list children +iconst 19 0 +call 20 pith_list_get_value_strict int 2 18 19 +call 21 ir_emitter_core_ir_extraction_operand_class string 1 20 +call 22 pith_cstring_release void 1 16 +store operand_class 21 +load 23 result_r +strref 24 m46s184 +call 25 ir_result_abi_ir_emit_result_flag_field int 2 23 24 call 26 pith_cstring_release void 1 24 -store ok_l 25 -load 27 fallback_l -call 28 ir_builder_ir_label string 0 -call 29 pith_cstring_release void 1 27 -store fallback_l 28 -load 30 merge_l -call 31 ir_builder_ir_label string 0 -call 32 pith_cstring_release void 1 30 -store merge_l 31 -strref 33 m46s829 -load 34 cond_r -call 35 int_to_string string 1 34 -concat 36 33 35 -call 37 pith_cstring_release void 1 33 -call 38 pith_cstring_release void 1 35 -strref 39 m46s333 -concat 40 36 39 -call 41 pith_cstring_release void 1 36 -call 42 pith_cstring_release void 1 39 -load 43 ok_l -concat 44 40 43 -call 45 pith_cstring_release void 1 40 -strref 46 m46s333 -concat 47 44 46 -call 48 pith_cstring_release void 1 44 -call 49 pith_cstring_release void 1 46 -load 50 fallback_l -concat 51 47 50 -call 52 pith_cstring_release void 1 47 -call 53 ir_builder_ir_emit void 1 51 -call 54 pith_cstring_release void 1 51 -load 55 ok_l -call 56 ir_call_emit_ir_emit_label void 1 55 -load 57 result_r -load 58 result_tid -strref 59 m46s182 -call 60 ir_result_abi_ir_emit_result_value_field int 3 57 58 59 -call 61 pith_cstring_release void 1 59 -store ok_value_r 60 -call 62 ir_builder_ir_reg int 0 -strref 63 m46s893 -strref 64 m46s823 +store cond_r 25 +load 27 temp_name +strref 28 m46s1197 +call 29 ir_builder_ir_new_temp_name string 1 28 +call 30 pith_cstring_release void 1 28 +call 31 pith_cstring_release void 1 27 +store temp_name 29 +load 32 ok_l +call 33 ir_builder_ir_label string 0 +call 34 pith_cstring_release void 1 32 +store ok_l 33 +load 35 fallback_l +call 36 ir_builder_ir_label string 0 +call 37 pith_cstring_release void 1 35 +store fallback_l 36 +load 38 merge_l +call 39 ir_builder_ir_label string 0 +call 40 pith_cstring_release void 1 38 +store merge_l 39 +strref 41 m46s829 +load 42 cond_r +call 43 int_to_string string 1 42 +concat 44 41 43 +call 45 pith_cstring_release void 1 41 +call 46 pith_cstring_release void 1 43 +strref 47 m46s333 +concat 48 44 47 +call 49 pith_cstring_release void 1 44 +call 50 pith_cstring_release void 1 47 +load 51 ok_l +concat 52 48 51 +call 53 pith_cstring_release void 1 48 +strref 54 m46s333 +concat 55 52 54 +call 56 pith_cstring_release void 1 52 +call 57 pith_cstring_release void 1 54 +load 58 fallback_l +concat 59 55 58 +call 60 pith_cstring_release void 1 55 +call 61 ir_builder_ir_emit void 1 59 +call 62 pith_cstring_release void 1 59 +load 63 ok_l +call 64 ir_call_emit_ir_emit_label void 1 63 load 65 result_r -call 66 ir_call_emit_ir_emit_call1 void 4 62 63 64 65 -call 67 pith_cstring_release void 1 63 -call 68 pith_cstring_release void 1 64 -strref 69 m46s825 -load 70 temp_name -concat 71 69 70 -call 72 pith_cstring_release void 1 69 -strref 73 m46s333 -concat 74 71 73 -call 75 pith_cstring_release void 1 71 -call 76 pith_cstring_release void 1 73 -load 77 ok_value_r -call 78 int_to_string string 1 77 -concat 79 74 78 -call 80 pith_cstring_release void 1 74 -call 81 pith_cstring_release void 1 78 -call 82 ir_builder_ir_emit void 1 79 -call 83 pith_cstring_release void 1 79 -strref 84 m46s828 -load 85 merge_l -concat 86 84 85 -call 87 pith_cstring_release void 1 84 -call 88 ir_builder_ir_emit void 1 86 -call 89 pith_cstring_release void 1 86 -load 90 fallback_l -call 91 ir_call_emit_ir_emit_label void 1 90 -load 92 result_r -load 93 result_tid -call 94 ir_emitter_core_ir_emit_release_result_error void 2 92 93 -call 95 ir_builder_ir_reg int 0 -strref 96 m46s893 -strref 97 m46s823 -load 98 result_r -call 99 ir_call_emit_ir_emit_call1 void 4 95 96 97 98 -call 100 pith_cstring_release void 1 96 -call 101 pith_cstring_release void 1 97 -load 102 node -field 103 102 16 list children -iconst 104 1 -call 105 pith_list_get_value_strict int 2 103 104 -call 106 ir_emitter_core_ir_expr int 1 105 -store fallback_r 106 -load 107 node -field 108 107 16 list children -iconst 109 1 -call 110 pith_list_get_value_strict int 2 108 109 -call 111 ir_emitter_core_ir_string_expr_is_borrowed bool 1 110 -brif 111 L3648 L3649 -label L3648 -load 112 fallback_r -load 113 node -field 114 113 16 list children -iconst 115 1 -call 116 pith_list_get_value_strict int 2 114 115 -call 117 ir_emitter_core_ir_infer_type string 1 116 -call 118 ir_struct_registry_ir_rc_kind string 1 117 -call 119 pith_cstring_release void 1 117 -call 120 ir_ownership_ir_rc_retain_reg void 2 112 118 -call 121 pith_cstring_release void 1 118 -jmp L3647 -label L3649 -label L3647 -strref 122 m46s825 -load 123 temp_name -concat 124 122 123 -call 125 pith_cstring_release void 1 122 -strref 126 m46s333 -concat 127 124 126 +load 66 result_tid +strref 67 m46s182 +call 68 ir_result_abi_ir_emit_result_value_field int 3 65 66 67 +call 69 pith_cstring_release void 1 67 +store ok_value_r 68 +load 70 operand_class +strref 71 m46s1196 +call 72 pith_cstring_eq bool 2 70 71 +call 73 pith_cstring_release void 1 71 +brif 72 L3684 L3685 +label L3684 +load 74 ok_value_r +load 75 result_tid +strref 76 m46s182 +call 77 ir_result_abi_ir_result_field_kind string 2 75 76 +call 78 pith_cstring_release void 1 76 +call 79 ir_struct_registry_ir_rc_kind string 1 77 +call 80 pith_cstring_release void 1 77 +call 81 ir_ownership_ir_rc_retain_reg void 2 74 79 +call 82 pith_cstring_release void 1 79 +jmp L3683 +label L3685 +call 83 ir_builder_ir_reg int 0 +strref 84 m46s893 +strref 85 m46s823 +load 86 result_r +call 87 ir_call_emit_ir_emit_call1 void 4 83 84 85 86 +call 88 pith_cstring_release void 1 84 +call 89 pith_cstring_release void 1 85 +label L3683 +strref 90 m46s825 +load 91 temp_name +concat 92 90 91 +call 93 pith_cstring_release void 1 90 +strref 94 m46s333 +concat 95 92 94 +call 96 pith_cstring_release void 1 92 +call 97 pith_cstring_release void 1 94 +load 98 ok_value_r +call 99 int_to_string string 1 98 +concat 100 95 99 +call 101 pith_cstring_release void 1 95 +call 102 pith_cstring_release void 1 99 +call 103 ir_builder_ir_emit void 1 100 +call 104 pith_cstring_release void 1 100 +strref 105 m46s828 +load 106 merge_l +concat 107 105 106 +call 108 pith_cstring_release void 1 105 +call 109 ir_builder_ir_emit void 1 107 +call 110 pith_cstring_release void 1 107 +load 111 fallback_l +call 112 ir_call_emit_ir_emit_label void 1 111 +load 113 operand_class +strref 114 m46s1196 +call 116 pith_cstring_eq bool 2 113 114 +iconst 117 1 +sub 115 117 116 +call 118 pith_cstring_release void 1 114 +brif 115 L3687 L3688 +label L3687 +load 119 result_r +load 120 result_tid +call 121 ir_emitter_core_ir_emit_release_result_error void 2 119 120 +call 122 ir_builder_ir_reg int 0 +strref 123 m46s893 +strref 124 m46s823 +load 125 result_r +call 126 ir_call_emit_ir_emit_call1 void 4 122 123 124 125 +call 127 pith_cstring_release void 1 123 call 128 pith_cstring_release void 1 124 -call 129 pith_cstring_release void 1 126 -load 130 fallback_r -call 131 int_to_string string 1 130 -concat 132 127 131 -call 133 pith_cstring_release void 1 127 -call 134 pith_cstring_release void 1 131 -call 135 ir_builder_ir_emit void 1 132 -call 136 pith_cstring_release void 1 132 -load 137 merge_l -call 138 ir_call_emit_ir_emit_label void 1 137 -call 139 ir_builder_ir_reg int 0 -store r 139 -strref 140 m46s824 -load 141 r -call 142 int_to_string string 1 141 -concat 143 140 142 -call 144 pith_cstring_release void 1 140 -call 145 pith_cstring_release void 1 142 -strref 146 m46s333 -concat 147 143 146 -call 148 pith_cstring_release void 1 143 -call 149 pith_cstring_release void 1 146 +jmp L3686 +label L3688 +label L3686 +load 129 node +field 130 129 16 list children +iconst 131 1 +call 132 pith_list_get_value_strict int 2 130 131 +call 133 ir_emitter_core_ir_expr int 1 132 +store fallback_r 133 +load 134 node +field 135 134 16 list children +iconst 136 1 +call 137 pith_list_get_value_strict int 2 135 136 +call 138 ir_emitter_core_ir_string_expr_is_borrowed bool 1 137 +brif 138 L3690 L3691 +label L3690 +load 139 fallback_r +load 140 node +field 141 140 16 list children +iconst 142 1 +call 143 pith_list_get_value_strict int 2 141 142 +call 144 ir_emitter_core_ir_infer_type string 1 143 +call 145 ir_struct_registry_ir_rc_kind string 1 144 +call 146 pith_cstring_release void 1 144 +call 147 ir_ownership_ir_rc_retain_reg void 2 139 145 +call 148 pith_cstring_release void 1 145 +jmp L3689 +label L3691 +label L3689 +strref 149 m46s825 load 150 temp_name -concat 151 147 150 -call 152 pith_cstring_release void 1 147 -call 153 ir_builder_ir_emit void 1 151 -call 154 pith_cstring_release void 1 151 -load 155 r -load 156 temp_name -call 157 pith_cstring_release void 1 156 -load 158 ok_l -call 159 pith_cstring_release void 1 158 -load 160 fallback_l -call 161 pith_cstring_release void 1 160 -load 162 merge_l -call 163 pith_cstring_release void 1 162 -ret 155 -load 164 temp_name -call 165 pith_cstring_release void 1 164 -load 166 ok_l -call 167 pith_cstring_release void 1 166 -load 168 fallback_l -call 169 pith_cstring_release void 1 168 -load 170 merge_l -call 171 pith_cstring_release void 1 170 -iconst 172 0 -ret 172 +concat 151 149 150 +call 152 pith_cstring_release void 1 149 +strref 153 m46s333 +concat 154 151 153 +call 155 pith_cstring_release void 1 151 +call 156 pith_cstring_release void 1 153 +load 157 fallback_r +call 158 int_to_string string 1 157 +concat 159 154 158 +call 160 pith_cstring_release void 1 154 +call 161 pith_cstring_release void 1 158 +call 162 ir_builder_ir_emit void 1 159 +call 163 pith_cstring_release void 1 159 +load 164 merge_l +call 165 ir_call_emit_ir_emit_label void 1 164 +call 166 ir_builder_ir_reg int 0 +store r 166 +strref 167 m46s824 +load 168 r +call 169 int_to_string string 1 168 +concat 170 167 169 +call 171 pith_cstring_release void 1 167 +call 172 pith_cstring_release void 1 169 +strref 173 m46s333 +concat 174 170 173 +call 175 pith_cstring_release void 1 170 +call 176 pith_cstring_release void 1 173 +load 177 temp_name +concat 178 174 177 +call 179 pith_cstring_release void 1 174 +call 180 ir_builder_ir_emit void 1 178 +call 181 pith_cstring_release void 1 178 +load 182 r +load 183 operand_class +call 184 pith_cstring_release void 1 183 +load 185 temp_name +call 186 pith_cstring_release void 1 185 +load 187 ok_l +call 188 pith_cstring_release void 1 187 +load 189 fallback_l +call 190 pith_cstring_release void 1 189 +load 191 merge_l +call 192 pith_cstring_release void 1 191 +ret 182 +load 193 operand_class +call 194 pith_cstring_release void 1 193 +load 195 temp_name +call 196 pith_cstring_release void 1 195 +load 197 ok_l +call 198 pith_cstring_release void 1 197 +load 199 fallback_l +call 200 pith_cstring_release void 1 199 +load 201 merge_l +call 202 pith_cstring_release void 1 201 +iconst 203 0 +ret 203 endfunc func ir_emitter_core_ir_emit_grouped_expr 1 int param node @@ -156513,16 +156835,16 @@ field 2 1 16 list children call 3 pith_list_len int 1 2 iconst 4 0 gt 5 3 4 -brif 5 L3651 L3652 -label L3651 +brif 5 L3693 L3694 +label L3693 load 6 node field 7 6 16 list children iconst 8 0 call 9 pith_list_get_value_strict int 2 7 8 call 10 ir_emitter_core_ir_expr int 1 9 ret 10 -label L3652 -label L3650 +label L3694 +label L3692 call 11 ir_emitter_core_ir_emit_zero_value int 0 ret 11 iconst 12 0 @@ -156544,13 +156866,13 @@ load 8 kind strref 9 m46s499 call 10 pith_cstring_eq bool 2 8 9 call 11 pith_cstring_release void 1 9 -brif 10 L3654 L3655 -label L3654 +brif 10 L3696 L3697 +label L3696 load 12 idx load 13 ir_match_emit_ir_tail_match_node eq 14 12 13 -brif 14 L3657 L3658 -label L3657 +brif 14 L3699 L3700 +label L3699 load 15 idx load 16 node closure_ref 17 ir_emitter_core___fnval_0 @@ -156562,8 +156884,8 @@ call 22 pith_cstring_release void 1 21 load 23 checked_lit call 24 pith_cstring_release void 1 23 ret 20 -label L3658 -label L3656 +label L3700 +label L3698 load 25 idx load 26 node closure_ref 27 ir_emitter_core___fnval_0 @@ -156574,14 +156896,14 @@ call 31 pith_cstring_release void 1 30 load 32 checked_lit call 33 pith_cstring_release void 1 32 ret 29 -label L3655 -label L3653 +label L3697 +label L3695 load 34 kind strref 35 m46s504 call 36 pith_cstring_eq bool 2 34 35 call 37 pith_cstring_release void 1 35 -brif 36 L3660 L3661 -label L3660 +brif 36 L3702 L3703 +label L3702 load 38 node closure_ref 39 ir_emitter_core___fnval_0 call 40 ir_match_emit_ir_emit_if_expr int 2 38 39 @@ -156590,14 +156912,14 @@ call 42 pith_cstring_release void 1 41 load 43 checked_lit call 44 pith_cstring_release void 1 43 ret 40 -label L3661 -label L3659 +label L3703 +label L3701 load 45 kind strref 46 m46s129 call 47 pith_cstring_eq bool 2 45 46 call 48 pith_cstring_release void 1 46 -brif 47 L3663 L3664 -label L3663 +brif 47 L3705 L3706 +label L3705 load 49 idx call 50 ir_emitter_core_ir_emit_method_call int 1 49 load 51 kind @@ -156605,14 +156927,14 @@ call 52 pith_cstring_release void 1 51 load 53 checked_lit call 54 pith_cstring_release void 1 53 ret 50 -label L3664 -label L3662 +label L3706 +label L3704 load 55 kind strref 56 m46s508 call 57 pith_cstring_eq bool 2 55 56 call 58 pith_cstring_release void 1 56 -brif 57 L3666 L3667 -label L3666 +brif 57 L3708 L3709 +label L3708 load 59 idx call 60 ir_emitter_core_ir_emit_string_interp int 1 59 load 61 kind @@ -156620,37 +156942,37 @@ call 62 pith_cstring_release void 1 61 load 63 checked_lit call 64 pith_cstring_release void 1 63 ret 60 -label L3667 -label L3665 +label L3709 +label L3707 load 65 kind strref 66 m46s19 call 67 pith_cstring_eq bool 2 65 66 call 68 pith_cstring_release void 1 66 -brif 67 L3669 L3670 -label L3669 +brif 67 L3711 L3712 +label L3711 load 69 checked_lit load 70 idx call 71 ir_type_helpers_ir_checked_type string 1 70 call 72 pith_cstring_release void 1 69 store checked_lit 71 iconst 73 0 -store __or_73_3674 73 +store __or_73_3716 73 load 74 checked_lit strref 75 m46s18 call 76 pith_cstring_eq bool 2 74 75 call 77 pith_cstring_release void 1 75 -store __or_73_3674 76 -brif 76 L3675 L3674 -label L3674 +store __or_73_3716 76 +brif 76 L3717 L3716 +label L3716 load 78 checked_lit strref 79 m46s666 call 80 pith_cstring_eq bool 2 78 79 call 81 pith_cstring_release void 1 79 -store __or_73_3674 80 -label L3675 -load 82 __or_73_3674 -brif 82 L3672 L3673 -label L3672 +store __or_73_3716 80 +label L3717 +load 82 __or_73_3716 +brif 82 L3714 L3715 +label L3714 load 83 idx load 84 node call 85 ir_emitter_core_ir_emit_set_literal int 2 83 84 @@ -156659,8 +156981,8 @@ call 87 pith_cstring_release void 1 86 load 88 checked_lit call 89 pith_cstring_release void 1 88 ret 85 -label L3673 -label L3671 +label L3715 +label L3713 load 90 idx load 91 node call 92 ir_emitter_core_ir_emit_map_literal int 2 90 91 @@ -156669,14 +156991,14 @@ call 94 pith_cstring_release void 1 93 load 95 checked_lit call 96 pith_cstring_release void 1 95 ret 92 -label L3670 -label L3668 +label L3712 +label L3710 load 97 kind strref 98 m46s18 call 99 pith_cstring_eq bool 2 97 98 call 100 pith_cstring_release void 1 98 -brif 99 L3677 L3678 -label L3677 +brif 99 L3719 L3720 +label L3719 load 101 idx load 102 node call 103 ir_emitter_core_ir_emit_set_literal int 2 101 102 @@ -156685,14 +157007,14 @@ call 105 pith_cstring_release void 1 104 load 106 checked_lit call 107 pith_cstring_release void 1 106 ret 103 -label L3678 -label L3676 +label L3720 +label L3718 load 108 kind strref 109 m46s20 call 110 pith_cstring_eq bool 2 108 109 call 111 pith_cstring_release void 1 109 -brif 110 L3680 L3681 -label L3680 +brif 110 L3722 L3723 +label L3722 load 112 idx load 113 node call 114 ir_emitter_core_ir_emit_list_literal int 2 112 113 @@ -156701,14 +157023,14 @@ call 116 pith_cstring_release void 1 115 load 117 checked_lit call 118 pith_cstring_release void 1 117 ret 114 -label L3681 -label L3679 +label L3723 +label L3721 load 119 kind strref 120 m46s23 call 121 pith_cstring_eq bool 2 119 120 call 122 pith_cstring_release void 1 120 -brif 121 L3683 L3684 -label L3683 +brif 121 L3725 L3726 +label L3725 load 123 node call 124 ir_emitter_core_ir_emit_tuple_literal int 1 123 load 125 kind @@ -156716,14 +157038,14 @@ call 126 pith_cstring_release void 1 125 load 127 checked_lit call 128 pith_cstring_release void 1 127 ret 124 -label L3684 -label L3682 +label L3726 +label L3724 load 129 kind strref 130 m46s497 call 131 pith_cstring_eq bool 2 129 130 call 132 pith_cstring_release void 1 130 -brif 131 L3686 L3687 -label L3686 +brif 131 L3728 L3729 +label L3728 load 133 idx load 134 node call 135 ir_emitter_core_ir_emit_struct_init int 2 133 134 @@ -156732,14 +157054,14 @@ call 137 pith_cstring_release void 1 136 load 138 checked_lit call 139 pith_cstring_release void 1 138 ret 135 -label L3687 -label L3685 +label L3729 +label L3727 load 140 kind strref 141 m46s36 call 142 pith_cstring_eq bool 2 140 141 call 143 pith_cstring_release void 1 141 -brif 142 L3689 L3690 -label L3689 +brif 142 L3731 L3732 +label L3731 load 144 idx load 145 node call 146 ir_emitter_core_ir_emit_field_access_expr int 2 144 145 @@ -156748,14 +157070,14 @@ call 148 pith_cstring_release void 1 147 load 149 checked_lit call 150 pith_cstring_release void 1 149 ret 146 -label L3690 -label L3688 +label L3732 +label L3730 load 151 kind strref 152 m46s498 call 153 pith_cstring_eq bool 2 151 152 call 154 pith_cstring_release void 1 152 -brif 153 L3692 L3693 -label L3692 +brif 153 L3734 L3735 +label L3734 load 155 idx call 156 ir_emitter_core_ir_emit_lambda int 1 155 load 157 kind @@ -156763,14 +157085,14 @@ call 158 pith_cstring_release void 1 157 load 159 checked_lit call 160 pith_cstring_release void 1 159 ret 156 -label L3693 -label L3691 +label L3735 +label L3733 load 161 kind strref 162 m46s496 call 163 pith_cstring_eq bool 2 161 162 call 164 pith_cstring_release void 1 162 -brif 163 L3695 L3696 -label L3695 +brif 163 L3737 L3738 +label L3737 load 165 node call 166 ir_emitter_core_ir_emit_spawn_expr int 1 165 load 167 kind @@ -156778,14 +157100,14 @@ call 168 pith_cstring_release void 1 167 load 169 checked_lit call 170 pith_cstring_release void 1 169 ret 166 -label L3696 -label L3694 +label L3738 +label L3736 load 171 kind strref 172 m46s495 call 173 pith_cstring_eq bool 2 171 172 call 174 pith_cstring_release void 1 172 -brif 173 L3698 L3699 -label L3698 +brif 173 L3740 L3741 +label L3740 load 175 node call 176 ir_emitter_core_ir_emit_await_expr int 1 175 load 177 kind @@ -156793,14 +157115,14 @@ call 178 pith_cstring_release void 1 177 load 179 checked_lit call 180 pith_cstring_release void 1 179 ret 176 -label L3699 -label L3697 +label L3741 +label L3739 load 181 kind strref 182 m46s503 call 183 pith_cstring_eq bool 2 181 182 call 184 pith_cstring_release void 1 182 -brif 183 L3701 L3702 -label L3701 +brif 183 L3743 L3744 +label L3743 load 185 node call 186 ir_emitter_core_ir_emit_optional_unwrap int 1 185 load 187 kind @@ -156808,26 +157130,26 @@ call 188 pith_cstring_release void 1 187 load 189 checked_lit call 190 pith_cstring_release void 1 189 ret 186 -label L3702 -label L3700 +label L3744 +label L3742 iconst 191 0 -store __or_191_3706 191 +store __or_191_3748 191 load 192 kind strref 193 m46s502 call 194 pith_cstring_eq bool 2 192 193 call 195 pith_cstring_release void 1 193 -store __or_191_3706 194 -brif 194 L3707 L3706 -label L3706 +store __or_191_3748 194 +brif 194 L3749 L3748 +label L3748 load 196 kind strref 197 m46s547 call 198 pith_cstring_eq bool 2 196 197 call 199 pith_cstring_release void 1 197 -store __or_191_3706 198 -label L3707 -load 200 __or_191_3706 -brif 200 L3704 L3705 -label L3704 +store __or_191_3748 198 +label L3749 +load 200 __or_191_3748 +brif 200 L3746 L3747 +label L3746 load 201 node call 202 ir_emitter_core_ir_emit_try_expr int 1 201 load 203 kind @@ -156835,14 +157157,14 @@ call 204 pith_cstring_release void 1 203 load 205 checked_lit call 206 pith_cstring_release void 1 205 ret 202 -label L3705 -label L3703 +label L3747 +label L3745 load 207 kind strref 208 m46s501 call 209 pith_cstring_eq bool 2 207 208 call 210 pith_cstring_release void 1 208 -brif 209 L3709 L3710 -label L3709 +brif 209 L3751 L3752 +label L3751 load 211 node call 212 ir_emitter_core_ir_emit_catch_expr int 1 211 load 213 kind @@ -156850,14 +157172,14 @@ call 214 pith_cstring_release void 1 213 load 215 checked_lit call 216 pith_cstring_release void 1 215 ret 212 -label L3710 -label L3708 +label L3752 +label L3750 load 217 kind strref 218 m46s500 call 219 pith_cstring_eq bool 2 217 218 call 220 pith_cstring_release void 1 218 -brif 219 L3712 L3713 -label L3712 +brif 219 L3754 L3755 +label L3754 load 221 node call 222 ir_emitter_core_ir_emit_select_expr int 1 221 load 223 kind @@ -156865,14 +157187,14 @@ call 224 pith_cstring_release void 1 223 load 225 checked_lit call 226 pith_cstring_release void 1 225 ret 222 -label L3713 -label L3711 +label L3755 +label L3753 load 227 kind strref 228 m46s554 call 229 pith_cstring_eq bool 2 227 228 call 230 pith_cstring_release void 1 228 -brif 229 L3715 L3716 -label L3715 +brif 229 L3757 L3758 +label L3757 load 231 node call 232 ir_emitter_core_ir_emit_fail_expr int 1 231 load 233 kind @@ -156880,14 +157202,14 @@ call 234 pith_cstring_release void 1 233 load 235 checked_lit call 236 pith_cstring_release void 1 235 ret 232 -label L3716 -label L3714 +label L3758 +label L3756 load 237 kind strref 238 m46s509 call 239 pith_cstring_eq bool 2 237 238 call 240 pith_cstring_release void 1 238 -brif 239 L3718 L3719 -label L3718 +brif 239 L3760 L3761 +label L3760 load 241 node call 242 ir_emitter_core_ir_emit_grouped_expr int 1 241 load 243 kind @@ -156895,14 +157217,14 @@ call 244 pith_cstring_release void 1 243 load 245 checked_lit call 246 pith_cstring_release void 1 245 ret 242 -label L3719 -label L3717 +label L3761 +label L3759 load 247 kind strref 248 m46s35 call 249 pith_cstring_eq bool 2 247 248 call 250 pith_cstring_release void 1 248 -brif 249 L3721 L3722 -label L3721 +brif 249 L3763 L3764 +label L3763 load 251 idx load 252 node call 253 ir_emitter_core_ir_emit_index_expr int 2 251 252 @@ -156911,8 +157233,8 @@ call 255 pith_cstring_release void 1 254 load 256 checked_lit call 257 pith_cstring_release void 1 256 ret 253 -label L3722 -label L3720 +label L3764 +label L3762 call 258 ir_emitter_core_ir_emit_zero_value int 0 load 259 kind call 260 pith_cstring_release void 1 259 @@ -156943,8 +157265,8 @@ field 7 6 16 list children call 8 pith_list_len int 1 7 iconst 9 0 gt 10 8 9 -brif 10 L3724 L3725 -label L3724 +brif 10 L3766 L3767 +label L3766 load 11 node field 12 11 16 list children iconst 13 0 @@ -156964,15 +157286,15 @@ call 24 ast_get_node struct:Node 1 23 call 25 pith_struct_release void 1 19 store expr_node 24 iconst 26 0 -store __and_26_3729 26 +store __and_26_3771 26 load 27 expr_node field 28 27 0 string kind strref 29 m46s37 call 30 pith_cstring_eq bool 2 28 29 call 31 pith_cstring_release void 1 29 -store __and_26_3729 30 -brif 30 L3729 L3730 -label L3729 +store __and_26_3771 30 +brif 30 L3771 L3772 +label L3771 load 32 expr_node field 33 32 8 string value call 34 ir_emitter_core_ir_rc_local_kind string 1 33 @@ -156980,19 +157302,19 @@ call 35 string_len int 1 34 call 36 pith_cstring_release void 1 34 iconst 37 0 gt 38 35 37 -store __and_26_3729 38 -label L3730 -load 39 __and_26_3729 -brif 39 L3727 L3728 -label L3727 +store __and_26_3771 38 +label L3772 +load 39 __and_26_3771 +brif 39 L3769 L3770 +label L3769 load 40 exclude load 41 expr_node field 42 41 8 string value call 43 pith_cstring_retain void 1 42 call 44 pith_cstring_release void 1 40 store exclude 42 -jmp L3726 -label L3728 +jmp L3768 +label L3770 load 45 ret_kind load 46 node field 47 46 16 list children @@ -157006,31 +157328,31 @@ call 54 pith_cstring_release void 1 51 call 55 pith_cstring_release void 1 45 store ret_kind 53 iconst 56 0 -store __and_56_3734 56 +store __and_56_3776 56 load 57 ret_kind call 58 string_len int 1 57 iconst 59 0 gt 60 58 59 -store __and_56_3734 60 -brif 60 L3734 L3735 -label L3734 +store __and_56_3776 60 +brif 60 L3776 L3777 +label L3776 load 61 node field 62 61 16 list children iconst 63 0 call 64 pith_list_get_value_strict int 2 62 63 call 65 ir_emitter_core_ir_string_expr_is_borrowed bool 1 64 -store __and_56_3734 65 -label L3735 -load 66 __and_56_3734 -brif 66 L3732 L3733 -label L3732 +store __and_56_3776 65 +label L3777 +load 66 __and_56_3776 +brif 66 L3774 L3775 +label L3774 load 67 r load 68 ret_kind call 69 ir_ownership_ir_rc_retain_reg void 2 67 68 -jmp L3731 -label L3733 -label L3731 -label L3726 +jmp L3773 +label L3775 +label L3773 +label L3768 load 70 result_kind load 71 node field 72 71 16 list children @@ -157052,8 +157374,8 @@ store expr_kind 83 load 85 expr_tid iconst 86 0 gte 87 85 86 -brif 87 L3737 L3738 -label L3737 +brif 87 L3779 L3780 +label L3779 load 88 expr_kind load 89 expr_tid call 90 types_get_type_info struct:TypeInfo 1 89 @@ -157061,25 +157383,25 @@ field 91 90 0 string kind call 92 pith_cstring_retain void 1 91 call 93 pith_cstring_release void 1 88 store expr_kind 91 -jmp L3736 -label L3738 -label L3736 +jmp L3778 +label L3780 +label L3778 load 94 ir_emitter_core_ir_current_func_optional_inner_kind call 95 string_len int 1 94 iconst 96 0 gt 97 95 96 -brif 97 L3740 L3741 -label L3740 +brif 97 L3782 L3783 +label L3782 iconst 98 0 -store __and_98_3742 98 +store __and_98_3784 98 load 99 expr_node field 100 99 0 string kind strref 101 m46s37 call 102 pith_cstring_eq bool 2 100 101 call 103 pith_cstring_release void 1 101 -store __and_98_3742 102 -brif 102 L3742 L3743 -label L3742 +store __and_98_3784 102 +brif 102 L3784 L3785 +label L3784 load 104 expr_node field 105 104 8 string value call 106 ir_emitter_core_ir_rc_local_kind string 1 105 @@ -157087,97 +157409,97 @@ strref 107 m46s23 call 108 pith_cstring_eq bool 2 106 107 call 109 pith_cstring_release void 1 106 call 110 pith_cstring_release void 1 107 -store __and_98_3742 108 -label L3743 -load 111 __and_98_3742 +store __and_98_3784 108 +label L3785 +load 111 __and_98_3784 store ident_tuple_local 111 iconst 112 0 -store __or_112_3744 112 +store __or_112_3786 112 load 113 expr_kind strref 114 m46s21 call 115 pith_cstring_eq bool 2 113 114 call 116 pith_cstring_release void 1 114 -store __or_112_3744 115 -brif 115 L3745 L3744 -label L3744 +store __or_112_3786 115 +brif 115 L3787 L3786 +label L3786 iconst 117 0 -store __and_117_3746 117 +store __and_117_3788 117 iconst 118 0 -store __or_118_3746 118 +store __or_118_3788 118 load 119 result_kind strref 120 m46s23 call 121 pith_cstring_eq bool 2 119 120 call 122 pith_cstring_release void 1 120 -store __or_118_3746 121 -brif 121 L3747 L3746 -label L3746 +store __or_118_3788 121 +brif 121 L3789 L3788 +label L3788 load 123 ident_tuple_local -store __or_118_3746 123 -label L3747 -load 124 __or_118_3746 -store __and_117_3746 124 -brif 124 L3748 L3749 -label L3748 +store __or_118_3788 123 +label L3789 +load 124 __or_118_3788 +store __and_117_3788 124 +brif 124 L3790 L3791 +label L3790 load 125 ir_emitter_core_ir_current_func_optional_inner_kind strref 126 m46s23 call 128 pith_cstring_eq bool 2 125 126 iconst 129 1 sub 127 129 128 call 130 pith_cstring_release void 1 126 -store __and_117_3746 127 -label L3749 -load 131 __and_117_3746 -store __or_112_3744 131 -label L3745 -load 132 __or_112_3744 +store __and_117_3788 127 +label L3791 +load 131 __and_117_3788 +store __or_112_3786 131 +label L3787 +load 132 __or_112_3786 store already_optional 132 load 133 expr_node field 134 133 0 string kind strref 135 m46s56 call 136 pith_cstring_eq bool 2 134 135 call 137 pith_cstring_release void 1 135 -brif 136 L3751 L3752 -label L3751 +brif 136 L3793 L3794 +label L3793 call 138 ir_optionals_ir_emit_optional_none_value int 0 store r 138 -jmp L3750 -label L3752 +jmp L3792 +label L3794 load 139 already_optional iconst 140 0 eq 141 139 140 -brif 141 L3753 L3754 -label L3753 +brif 141 L3795 L3796 +label L3795 load 142 r call 143 ir_optionals_ir_emit_optional_some_value int 1 142 store r 143 -jmp L3750 -label L3754 -label L3750 -jmp L3739 -label L3741 +jmp L3792 +label L3796 +label L3792 +jmp L3781 +label L3783 load 144 ir_builder_ir_current_func_return_kind strref 145 m46s23 call 146 pith_cstring_eq bool 2 144 145 call 147 pith_cstring_release void 1 145 -brif 146 L3755 L3756 -label L3755 +brif 146 L3797 L3798 +label L3797 load 148 result_kind strref 149 m46s23 call 151 pith_cstring_eq bool 2 148 149 iconst 152 1 sub 150 152 151 call 153 pith_cstring_release void 1 149 -brif 150 L3758 L3759 -label L3758 +brif 150 L3800 L3801 +label L3800 load 154 r call 155 ir_emitter_core_ir_emit_ok_result_tuple int 1 154 store r 155 -jmp L3757 -label L3759 -label L3757 -jmp L3739 -label L3756 -label L3739 +jmp L3799 +label L3801 +label L3799 +jmp L3781 +label L3798 +label L3781 iconst 156 0 call 157 ir_emitter_core_ir_defer_emit_to_function_frame void 1 156 load 158 exclude @@ -157190,8 +157512,8 @@ call 164 pith_cstring_release void 1 160 call 165 pith_cstring_release void 1 162 call 166 ir_builder_ir_emit void 1 163 call 167 pith_cstring_release void 1 163 -jmp L3723 -label L3725 +jmp L3765 +label L3767 iconst 168 0 call 169 ir_emitter_core_ir_defer_emit_to_function_frame void 1 168 strref 170 m46s82 @@ -157219,7 +157541,7 @@ call 190 pith_cstring_release void 1 186 call 191 pith_cstring_release void 1 188 call 192 ir_builder_ir_emit void 1 189 call 193 pith_cstring_release void 1 189 -label L3723 +label L3765 iconst 194 1 store ir_call_emit_ir_last_was_ret 194 load 195 exclude @@ -157277,46 +157599,46 @@ load 23 parts field 24 23 16 int type_idx store type_idx 24 iconst 25 0 -store __and_25_3763 25 +store __and_25_3805 25 load 26 type_idx iconst 27 0 lt 28 26 27 -store __and_25_3763 28 -brif 28 L3763 L3764 -label L3763 +store __and_25_3805 28 +brif 28 L3805 L3806 +label L3805 load 29 val_idx iconst 30 0 gte 31 29 30 -store __and_25_3763 31 -label L3764 -load 32 __and_25_3763 -brif 32 L3761 L3762 -label L3761 +store __and_25_3805 31 +label L3806 +load 32 __and_25_3805 +brif 32 L3803 L3804 +label L3803 load 33 vn load 34 val_idx call 35 ast_get_node struct:Node 1 34 call 36 pith_struct_release void 1 33 store vn 35 iconst 37 0 -store __and_37_3768 37 +store __and_37_3810 37 load 38 vn field 39 38 0 string kind strref 40 m46s44 call 41 pith_cstring_eq bool 2 39 40 call 42 pith_cstring_release void 1 40 -store __and_37_3768 41 -brif 41 L3768 L3769 -label L3768 +store __and_37_3810 41 +brif 41 L3810 L3811 +label L3810 load 43 vn field 44 43 16 list children call 45 pith_list_len int 1 44 iconst 46 0 gt 47 45 46 -store __and_37_3768 47 -label L3769 -load 48 __and_37_3768 -brif 48 L3766 L3767 -label L3766 +store __and_37_3810 47 +label L3811 +load 48 __and_37_3810 +brif 48 L3808 L3809 +label L3808 load 49 callee_n load 50 vn field 51 50 16 list children @@ -157326,24 +157648,24 @@ call 54 ast_get_node struct:Node 1 53 call 55 pith_struct_release void 1 49 store callee_n 54 iconst 56 0 -store __and_56_3773 56 +store __and_56_3815 56 load 57 callee_n field 58 57 0 string kind strref 59 m46s37 call 60 pith_cstring_eq bool 2 58 59 call 61 pith_cstring_release void 1 59 -store __and_56_3773 60 -brif 60 L3773 L3774 -label L3773 +store __and_56_3815 60 +brif 60 L3815 L3816 +label L3815 load 62 ir_emitter_core_ir_closure_return_kinds load 63 callee_n field 64 63 8 string value call 65 contains_key bool 2 62 64 -store __and_56_3773 65 -label L3774 -load 66 __and_56_3773 -brif 66 L3771 L3772 -label L3771 +store __and_56_3815 65 +label L3816 +load 66 __and_56_3815 +brif 66 L3813 L3814 +label L3813 load 67 ir_builder_ir_var_types load 68 name load 69 ir_emitter_core_ir_closure_return_kinds @@ -157351,43 +157673,43 @@ load 70 callee_n field 71 70 8 string value call 72 map_get_strict string 2 69 71 call 73 map_insert void 3 67 68 72 -jmp L3770 -label L3772 -label L3770 -jmp L3765 -label L3767 +jmp L3812 +label L3814 +label L3812 +jmp L3807 +label L3809 iconst 74 0 -store __and_74_3777 74 +store __and_74_3819 74 iconst 75 0 -store __and_75_3777 75 +store __and_75_3819 75 load 76 vn field 77 76 0 string kind strref 78 m46s36 call 79 pith_cstring_eq bool 2 77 78 call 80 pith_cstring_release void 1 78 -store __and_75_3777 79 -brif 79 L3777 L3778 -label L3777 +store __and_75_3819 79 +brif 79 L3819 L3820 +label L3819 load 81 vn field 82 81 16 list children call 83 pith_list_len int 1 82 iconst 84 0 gt 85 83 84 -store __and_75_3777 85 -label L3778 -load 86 __and_75_3777 -store __and_74_3777 86 -brif 86 L3779 L3780 -label L3779 +store __and_75_3819 85 +label L3820 +load 86 __and_75_3819 +store __and_74_3819 86 +brif 86 L3821 L3822 +label L3821 load 87 ir_emitter_core_ir_current_impl_type call 88 string_len int 1 87 iconst 89 0 gt 90 88 89 -store __and_74_3777 90 -label L3780 -load 91 __and_74_3777 -brif 91 L3775 L3776 -label L3775 +store __and_74_3819 90 +label L3822 +load 91 __and_74_3819 +brif 91 L3817 L3818 +label L3817 load 92 recv load 93 vn field 94 93 16 list children @@ -157401,8 +157723,8 @@ field 100 99 0 string kind strref 101 m46s512 call 102 pith_cstring_eq bool 2 100 101 call 103 pith_cstring_release void 1 101 -brif 102 L3782 L3783 -label L3782 +brif 102 L3824 L3825 +label L3824 load 104 field_kind load 105 ir_emitter_core_ir_current_impl_type call 106 ir_method_tables_ir_strip_type_args string 1 105 @@ -157416,24 +157738,24 @@ load 112 field_kind call 113 string_len int 1 112 iconst 114 0 gt 115 113 114 -brif 115 L3785 L3786 -label L3785 +brif 115 L3827 L3828 +label L3827 load 116 ir_emitter_core_ir_closure_return_kinds load 117 name load 118 field_kind call 119 map_insert void 3 116 117 118 -jmp L3784 -label L3786 -label L3784 -jmp L3781 -label L3783 -label L3781 -jmp L3765 -label L3776 -label L3765 -jmp L3760 -label L3762 -label L3760 +jmp L3826 +label L3828 +label L3826 +jmp L3823 +label L3825 +label L3823 +jmp L3807 +label L3818 +label L3807 +jmp L3802 +label L3804 +label L3802 load 120 target_type strref 121 m46s82 call 122 pith_cstring_release void 1 120 @@ -157441,8 +157763,8 @@ store target_type 121 load 123 type_idx iconst 124 0 gte 125 123 124 -brif 125 L3788 L3789 -label L3788 +brif 125 L3830 L3831 +label L3830 load 126 target_type load 127 type_idx call 128 ir_alias_registry_ir_resolve_type_node string 1 127 @@ -157452,15 +157774,15 @@ load 130 target_type call 131 string_len int 1 130 iconst 132 0 gt 133 131 132 -brif 133 L3791 L3792 -label L3791 +brif 133 L3833 L3834 +label L3833 load 134 ir_builder_ir_var_types load 135 name load 136 target_type call 137 map_insert void 3 134 135 136 -jmp L3790 -label L3792 -label L3790 +jmp L3832 +label L3834 +label L3832 load 138 map_value_type load 139 type_idx call 140 ir_alias_registry_ir_resolve_map_value_type_node string 1 139 @@ -157470,23 +157792,23 @@ load 142 map_value_type call 143 string_len int 1 142 iconst 144 0 gt 145 143 144 -brif 145 L3794 L3795 -label L3794 +brif 145 L3836 L3837 +label L3836 load 146 ir_emitter_core_ir_map_value_types load 147 name load 148 map_value_type call 149 map_insert void 3 146 147 148 -jmp L3793 -label L3795 -label L3793 -jmp L3787 -label L3789 -label L3787 +jmp L3835 +label L3837 +label L3835 +jmp L3829 +label L3831 +label L3829 load 150 val_idx iconst 151 0 gte 152 150 151 -brif 152 L3797 L3798 -label L3797 +brif 152 L3839 L3840 +label L3839 load 153 bind_kind load 154 name call 155 ir_emitter_core_ir_rc_local_kind string 1 154 @@ -157502,26 +157824,26 @@ iconst 162 1 sub 163 161 162 store old_r 163 iconst 164 0 -store __and_164_3802 164 +store __and_164_3844 164 load 165 tracked -store __and_164_3802 165 -brif 165 L3802 L3803 -label L3802 +store __and_164_3844 165 +brif 165 L3844 L3845 +label L3844 load 166 bind_kind call 167 ir_ownership_ir_rc_release_enabled bool 1 166 -store __and_164_3802 167 -label L3803 -load 168 __and_164_3802 -brif 168 L3800 L3801 -label L3800 +store __and_164_3844 167 +label L3845 +load 168 __and_164_3844 +brif 168 L3842 L3843 +label L3842 call 169 ir_builder_ir_reg int 0 store old_r 169 load 170 old_r load 171 name call 172 ir_emitter_core_ir_emit_name_load void 2 170 171 -jmp L3799 -label L3801 -label L3799 +jmp L3841 +label L3843 +label L3841 load 173 bind_target load 174 name load 175 target_type @@ -157533,50 +157855,50 @@ load 179 bind_target call 180 ir_emitter_core_ir_emit_value_for_target int 2 178 179 store r 180 iconst 181 0 -store __and_181_3807 181 +store __and_181_3849 181 iconst 182 0 -store __and_182_3807 182 +store __and_182_3849 182 load 183 tracked -store __and_182_3807 183 -brif 183 L3807 L3808 -label L3807 +store __and_182_3849 183 +brif 183 L3849 L3850 +label L3849 load 184 bind_target strref 185 m46s23 call 187 pith_cstring_eq bool 2 184 185 iconst 188 1 sub 186 188 187 call 189 pith_cstring_release void 1 185 -store __and_182_3807 186 -label L3808 -load 190 __and_182_3807 -store __and_181_3807 190 -brif 190 L3809 L3810 -label L3809 +store __and_182_3849 186 +label L3850 +load 190 __and_182_3849 +store __and_181_3849 190 +brif 190 L3851 L3852 +label L3851 load 191 val_idx call 192 ir_emitter_core_ir_string_expr_is_borrowed bool 1 191 -store __and_181_3807 192 -label L3810 -load 193 __and_181_3807 -brif 193 L3805 L3806 -label L3805 +store __and_181_3849 192 +label L3852 +load 193 __and_181_3849 +brif 193 L3847 L3848 +label L3847 load 194 r load 195 bind_kind call 196 ir_ownership_ir_rc_retain_reg void 2 194 195 -jmp L3804 -label L3806 -label L3804 +jmp L3846 +label L3848 +label L3846 load 197 old_r iconst 198 0 gte 199 197 198 -brif 199 L3812 L3813 -label L3812 +brif 199 L3854 L3855 +label L3854 load 200 old_r load 201 bind_kind load 202 name call 203 ir_emitter_core_ir_rc_release_local void 3 200 201 202 -jmp L3811 -label L3813 -label L3811 +jmp L3853 +label L3855 +label L3853 load 204 ir_builder_ir_var_regs load 205 name load 206 r @@ -157589,8 +157911,8 @@ load 212 name call 213 contains_key bool 2 211 212 iconst 215 1 sub 214 215 213 -brif 214 L3815 L3816 -label L3815 +brif 214 L3857 L3858 +label L3857 load 216 inferred load 217 val_idx call 218 ir_emitter_core_ir_infer_type string 1 217 @@ -157600,21 +157922,21 @@ load 220 inferred call 221 string_len int 1 220 iconst 222 0 gt 223 221 222 -brif 223 L3818 L3819 -label L3818 +brif 223 L3860 L3861 +label L3860 load 224 ir_builder_ir_var_types load 225 name load 226 inferred call 227 map_insert void 3 224 225 226 -jmp L3817 -label L3819 -label L3817 -jmp L3814 -label L3816 -label L3814 -jmp L3796 -label L3798 -label L3796 +jmp L3859 +label L3861 +label L3859 +jmp L3856 +label L3858 +label L3856 +jmp L3838 +label L3840 +label L3838 load 228 parts call 229 pith_struct_release void 1 228 load 230 name @@ -157659,8 +157981,8 @@ field 10 9 16 list children call 11 pith_list_len int 1 10 iconst 12 2 gte 13 11 12 -brif 13 L3821 L3822 -label L3821 +brif 13 L3863 L3864 +label L3863 load 14 node field 15 14 16 list children iconst 16 0 @@ -157670,8 +157992,8 @@ field 19 18 16 list children iconst 20 1 call 21 pith_list_get_value_strict int 2 19 20 call 22 ir_emitter_core_ir_emit_index_assignment bool 2 17 21 -brif 22 L3824 L3825 -label L3824 +brif 22 L3866 L3867 +label L3866 load 23 name call 24 pith_cstring_release void 1 23 load 25 legacy_kind @@ -157680,18 +158002,18 @@ load 27 legacy_target call 28 pith_cstring_release void 1 27 iconst 29 0 ret 29 -label L3825 -label L3823 -jmp L3820 -label L3822 -label L3820 +label L3867 +label L3865 +jmp L3862 +label L3864 +label L3862 load 30 node field 31 30 16 list children call 32 pith_list_len int 1 31 iconst 33 0 gt 34 32 33 -brif 34 L3827 L3828 -label L3827 +brif 34 L3869 L3870 +label L3869 load 35 legacy_kind load 36 name call 37 ir_emitter_core_ir_lookup_name_type string 1 36 @@ -157711,82 +158033,82 @@ iconst 48 1 sub 49 47 48 store old_r 49 iconst 50 0 -store __and_50_3832 50 +store __and_50_3874 50 load 51 legacy_kind call 52 string_len int 1 51 iconst 53 0 gt 54 52 53 -store __and_50_3832 54 -brif 54 L3832 L3833 -label L3832 +store __and_50_3874 54 +brif 54 L3874 L3875 +label L3874 load 55 legacy_kind call 56 ir_ownership_ir_rc_release_enabled bool 1 55 -store __and_50_3832 56 -label L3833 -load 57 __and_50_3832 -brif 57 L3830 L3831 -label L3830 +store __and_50_3874 56 +label L3875 +load 57 __and_50_3874 +brif 57 L3872 L3873 +label L3872 iconst 58 0 -store __or_58_3837 58 +store __or_58_3879 58 load 59 tracked -store __or_58_3837 59 -brif 59 L3838 L3837 -label L3837 +store __or_58_3879 59 +brif 59 L3880 L3879 +label L3879 iconst 60 0 -store __and_60_3839 60 +store __and_60_3881 60 load 61 legacy_kind strref 62 m46s672 call 63 pith_cstring_eq bool 2 61 62 call 64 pith_cstring_release void 1 62 -store __and_60_3839 63 -brif 63 L3839 L3840 -label L3839 +store __and_60_3881 63 +brif 63 L3881 L3882 +label L3881 load 65 ir_alias_registry_ir_global_string_names load 66 name iconst 67 -1 -store __list_index_result_L3841 67 +store __list_index_result_L3883 67 iconst 68 0 -store __list_index_i_L3842 68 +store __list_index_i_L3884 68 call 69 pith_list_len int 1 65 -label L3843 -load 70 __list_index_i_L3842 +label L3885 +load 70 __list_index_i_L3884 lt 71 70 69 -brif 71 L3844 L3847 -label L3844 +brif 71 L3886 L3889 +label L3886 call 72 pith_list_get_value string 2 65 70 call 73 pith_cstring_eq bool 2 72 66 -brif 73 L3845 L3846 -label L3845 -store __list_index_result_L3841 70 -jmp L3847 -label L3846 +brif 73 L3887 L3888 +label L3887 +store __list_index_result_L3883 70 +jmp L3889 +label L3888 iconst 74 1 add 75 70 74 -store __list_index_i_L3842 75 -jmp L3843 -label L3847 -load 76 __list_index_result_L3841 +store __list_index_i_L3884 75 +jmp L3885 +label L3889 +load 76 __list_index_result_L3883 iconst 77 0 gte 78 76 77 -store __and_60_3839 78 -label L3840 -load 79 __and_60_3839 -store __or_58_3837 79 -label L3838 -load 80 __or_58_3837 -brif 80 L3835 L3836 -label L3835 +store __and_60_3881 78 +label L3882 +load 79 __and_60_3881 +store __or_58_3879 79 +label L3880 +load 80 __or_58_3879 +brif 80 L3877 L3878 +label L3877 call 81 ir_builder_ir_reg int 0 store old_r 81 load 82 old_r load 83 name call 84 ir_emitter_core_ir_emit_name_load void 2 82 83 -jmp L3834 -label L3836 -label L3834 -jmp L3829 -label L3831 -label L3829 +jmp L3876 +label L3878 +label L3876 +jmp L3871 +label L3873 +label L3871 load 85 legacy_target load 86 name load 87 name @@ -157803,56 +158125,56 @@ load 96 legacy_target call 97 ir_emitter_core_ir_emit_value_for_target int 2 95 96 store r 97 iconst 98 0 -store __and_98_3851 98 +store __and_98_3893 98 iconst 99 0 -store __and_99_3851 99 +store __and_99_3893 99 load 100 legacy_kind call 101 string_len int 1 100 iconst 102 0 gt 103 101 102 -store __and_99_3851 103 -brif 103 L3851 L3852 -label L3851 +store __and_99_3893 103 +brif 103 L3893 L3894 +label L3893 load 104 legacy_target strref 105 m46s23 call 107 pith_cstring_eq bool 2 104 105 iconst 108 1 sub 106 108 107 call 109 pith_cstring_release void 1 105 -store __and_99_3851 106 -label L3852 -load 110 __and_99_3851 -store __and_98_3851 110 -brif 110 L3853 L3854 -label L3853 +store __and_99_3893 106 +label L3894 +load 110 __and_99_3893 +store __and_98_3893 110 +brif 110 L3895 L3896 +label L3895 load 111 node field 112 111 16 list children iconst 113 0 call 114 pith_list_get_value_strict int 2 112 113 call 115 ir_emitter_core_ir_string_expr_is_borrowed bool 1 114 -store __and_98_3851 115 -label L3854 -load 116 __and_98_3851 -brif 116 L3849 L3850 -label L3849 +store __and_98_3893 115 +label L3896 +load 116 __and_98_3893 +brif 116 L3891 L3892 +label L3891 load 117 r load 118 legacy_kind call 119 ir_ownership_ir_rc_retain_reg void 2 117 118 -jmp L3848 -label L3850 -label L3848 +jmp L3890 +label L3892 +label L3890 load 120 old_r iconst 121 0 gte 122 120 121 -brif 122 L3856 L3857 -label L3856 +brif 122 L3898 L3899 +label L3898 load 123 old_r load 124 legacy_kind load 125 name call 126 ir_emitter_core_ir_rc_release_local void 3 123 124 125 -jmp L3855 -label L3857 -label L3855 +jmp L3897 +label L3899 +label L3897 load 127 ir_builder_ir_var_regs load 128 name load 129 r @@ -157860,9 +158182,9 @@ call 130 map_insert void 3 127 128 129 load 131 name load 132 r call 133 ir_emitter_core_ir_emit_name_store void 2 131 132 -jmp L3826 -label L3828 -label L3826 +jmp L3868 +label L3870 +label L3868 load 134 name call 135 pith_cstring_release void 1 134 load 136 legacy_kind @@ -157892,8 +158214,8 @@ store direct 9 load 11 ir_struct_registry_ir_struct_field_index_lookup load 12 direct call 13 contains_key bool 2 11 12 -brif 13 L3859 L3860 -label L3859 +brif 13 L3901 L3902 +label L3901 load 14 direct load 15 recv_type call 16 pith_cstring_release void 1 15 @@ -157902,8 +158224,8 @@ call 18 pith_cstring_release void 1 17 load 19 base_key call 20 pith_cstring_release void 1 19 ret 14 -label L3860 -label L3858 +label L3902 +label L3900 load 21 recv_type load 22 recv_idx call 23 ir_emitter_core_ir_field_receiver_type string 1 22 @@ -157919,8 +158241,8 @@ load 30 recv_type call 32 pith_cstring_eq bool 2 29 30 iconst 33 1 sub 31 33 32 -brif 31 L3862 L3863 -label L3862 +brif 31 L3904 L3905 +label L3904 load 34 base_key load 35 base strref 36 m46s26 @@ -157934,8 +158256,8 @@ store base_key 40 load 43 ir_struct_registry_ir_struct_field_index_lookup load 44 base_key call 45 contains_key bool 2 43 44 -brif 45 L3865 L3866 -label L3865 +brif 45 L3907 L3908 +label L3907 load 46 base_key load 47 direct call 48 pith_cstring_release void 1 47 @@ -157944,11 +158266,11 @@ call 50 pith_cstring_release void 1 49 load 51 base call 52 pith_cstring_release void 1 51 ret 46 -label L3866 -label L3864 -jmp L3861 -label L3863 -label L3861 +label L3908 +label L3906 +jmp L3903 +label L3905 +label L3903 strref 53 m46s82 load 54 direct call 55 pith_cstring_release void 1 54 @@ -157991,7 +158313,7 @@ call 10 ast_get_node struct:Node 1 9 call 11 pith_struct_release void 1 8 store target 10 iconst 12 0 -store __or_12_3870 12 +store __or_12_3912 12 load 13 target field 14 13 0 string kind strref 15 m46s36 @@ -157999,19 +158321,19 @@ call 17 pith_cstring_eq bool 2 14 15 iconst 18 1 sub 16 18 17 call 19 pith_cstring_release void 1 15 -store __or_12_3870 16 -brif 16 L3871 L3870 -label L3870 +store __or_12_3912 16 +brif 16 L3913 L3912 +label L3912 load 20 target field 21 20 16 list children call 22 pith_list_len int 1 21 iconst 23 0 eq 24 22 23 -store __or_12_3870 24 -label L3871 -load 25 __or_12_3870 -brif 25 L3868 L3869 -label L3868 +store __or_12_3912 24 +label L3913 +load 25 __or_12_3912 +brif 25 L3910 L3911 +label L3910 iconst 26 0 load 27 target call 28 pith_struct_release void 1 27 @@ -158026,8 +158348,8 @@ call 36 pith_cstring_release void 1 35 load 37 weak_struct call 38 pith_cstring_release void 1 37 ret 26 -label L3869 -label L3867 +label L3911 +label L3909 load 39 fname load 40 target_idx call 41 ast_node_value string 1 40 @@ -158048,8 +158370,8 @@ load 52 lookup_key call 53 string_len int 1 52 iconst 54 0 eq 55 53 54 -brif 55 L3873 L3874 -label L3873 +brif 55 L3915 L3916 +label L3915 iconst 56 0 load 57 target call 58 pith_struct_release void 1 57 @@ -158064,8 +158386,8 @@ call 66 pith_cstring_release void 1 65 load 67 weak_struct call 68 pith_cstring_release void 1 67 ret 56 -label L3874 -label L3872 +label L3916 +label L3914 load 69 ir_struct_registry_ir_struct_field_index_lookup load 70 lookup_key call 71 map_get_strict string 2 69 70 @@ -158084,16 +158406,16 @@ load 80 value_type call 81 string_len int 1 80 iconst 82 0 eq 83 81 82 -brif 83 L3876 L3877 -label L3876 +brif 83 L3918 L3919 +label L3918 load 84 value_type load 85 value_idx call 86 ir_emitter_core_ir_infer_type string 1 85 call 87 pith_cstring_release void 1 84 store value_type 86 -jmp L3875 -label L3877 -label L3875 +jmp L3917 +label L3919 +label L3917 load 88 fassign_kind load 89 value_type call 90 ir_struct_registry_ir_rc_kind string 1 89 @@ -158115,8 +158437,8 @@ store weak_struct 102 load 104 weak_struct load 105 fname call 106 ir_emitter_core_ir_struct_field_is_weak bool 2 104 105 -brif 106 L3879 L3880 -label L3879 +brif 106 L3921 L3922 +label L3921 call 107 ir_builder_ir_reg int 0 store old_w 107 load 108 old_w @@ -158187,28 +158509,28 @@ call 170 pith_cstring_release void 1 169 load 171 weak_struct call 172 pith_cstring_release void 1 171 ret 160 -label L3880 -label L3878 +label L3922 +label L3920 iconst 173 0 iconst 174 1 sub 175 173 174 store old_r 175 iconst 176 0 -store __and_176_3884 176 +store __and_176_3926 176 load 177 fassign_kind call 178 string_len int 1 177 iconst 179 0 gt 180 178 179 -store __and_176_3884 180 -brif 180 L3884 L3885 -label L3884 +store __and_176_3926 180 +brif 180 L3926 L3927 +label L3926 load 181 fassign_kind call 182 ir_ownership_ir_rc_release_enabled bool 1 181 -store __and_176_3884 182 -label L3885 -load 183 __and_176_3884 -brif 183 L3882 L3883 -label L3882 +store __and_176_3926 182 +label L3927 +load 183 __and_176_3926 +brif 183 L3924 L3925 +label L3924 call 184 ir_builder_ir_reg int 0 store old_r 184 load 185 old_r @@ -158217,49 +158539,49 @@ load 187 lookup_key load 188 fname load 189 value_type call 190 ir_alias_registry_ir_emit_named_field_access void 5 185 186 187 188 189 -jmp L3881 -label L3883 -label L3881 +jmp L3923 +label L3925 +label L3923 load 191 value_idx load 192 value_type call 193 ir_emitter_core_ir_emit_value_for_target int 2 191 192 store value_r 193 iconst 194 0 -store __and_194_3889 194 +store __and_194_3931 194 iconst 195 0 -store __and_195_3889 195 +store __and_195_3931 195 load 196 fassign_kind call 197 string_len int 1 196 iconst 198 0 gt 199 197 198 -store __and_195_3889 199 -brif 199 L3889 L3890 -label L3889 +store __and_195_3931 199 +brif 199 L3931 L3932 +label L3931 load 200 fassign_kind strref 201 m46s23 call 203 pith_cstring_eq bool 2 200 201 iconst 204 1 sub 202 204 203 call 205 pith_cstring_release void 1 201 -store __and_195_3889 202 -label L3890 -load 206 __and_195_3889 -store __and_194_3889 206 -brif 206 L3891 L3892 -label L3891 +store __and_195_3931 202 +label L3932 +load 206 __and_195_3931 +store __and_194_3931 206 +brif 206 L3933 L3934 +label L3933 load 207 value_idx call 208 ir_emitter_core_ir_string_expr_is_borrowed bool 1 207 -store __and_194_3889 208 -label L3892 -load 209 __and_194_3889 -brif 209 L3887 L3888 -label L3887 +store __and_194_3931 208 +label L3934 +load 209 __and_194_3931 +brif 209 L3929 L3930 +label L3929 load 210 value_r load 211 fassign_kind call 212 ir_ownership_ir_rc_retain_reg void 2 210 211 -jmp L3886 -label L3888 -label L3886 +jmp L3928 +label L3930 +label L3928 strref 213 m46s1033 load 214 obj_r call 215 int_to_string string 1 214 @@ -158289,14 +158611,14 @@ call 238 pith_cstring_release void 1 234 load 239 old_r iconst 240 0 gte 241 239 240 -brif 241 L3894 L3895 -label L3894 +brif 241 L3936 L3937 +label L3936 load 242 old_r load 243 fassign_kind call 244 ir_ownership_ir_rc_release_reg void 2 242 243 -jmp L3893 -label L3895 -label L3893 +jmp L3935 +label L3937 +label L3935 iconst 245 1 load 246 target call 247 pith_struct_release void 1 246 @@ -158342,7 +158664,7 @@ call 8 ast_get_node struct:Node 1 7 call 9 pith_struct_release void 1 6 store target 8 iconst 10 0 -store __or_10_3899 10 +store __or_10_3941 10 load 11 target field 12 11 0 string kind strref 13 m46s36 @@ -158350,19 +158672,19 @@ call 15 pith_cstring_eq bool 2 12 13 iconst 16 1 sub 14 16 15 call 17 pith_cstring_release void 1 13 -store __or_10_3899 14 -brif 14 L3900 L3899 -label L3899 +store __or_10_3941 14 +brif 14 L3942 L3941 +label L3941 load 18 target field 19 18 16 list children call 20 pith_list_len int 1 19 iconst 21 0 eq 22 20 21 -store __or_10_3899 22 -label L3900 -load 23 __or_10_3899 -brif 23 L3897 L3898 -label L3897 +store __or_10_3941 22 +label L3942 +load 23 __or_10_3941 +brif 23 L3939 L3940 +label L3939 iconst 24 0 load 25 target call 26 pith_struct_release void 1 25 @@ -158371,8 +158693,8 @@ call 28 pith_cstring_release void 1 27 load 29 lookup_key call 30 pith_cstring_release void 1 29 ret 24 -label L3898 -label L3896 +label L3940 +label L3938 load 31 fname load 32 target_idx call 33 ast_node_value string 1 32 @@ -158393,8 +158715,8 @@ load 44 lookup_key call 45 string_len int 1 44 iconst 46 0 eq 47 45 46 -brif 47 L3902 L3903 -label L3902 +brif 47 L3944 L3945 +label L3944 iconst 48 0 load 49 target call 50 pith_struct_release void 1 49 @@ -158403,8 +158725,8 @@ call 52 pith_cstring_release void 1 51 load 53 lookup_key call 54 pith_cstring_release void 1 53 ret 48 -label L3903 -label L3901 +label L3945 +label L3943 load 55 ir_struct_registry_ir_struct_field_index_lookup load 56 lookup_key call 57 map_get_strict string 2 55 56 @@ -158500,24 +158822,24 @@ call 11 pith_cstring_retain void 1 10 call 12 pith_cstring_release void 1 8 store op 10 iconst 13 0 -store __and_13_3907 13 +store __and_13_3949 13 load 14 op strref 15 m46s543 call 16 pith_cstring_eq bool 2 14 15 call 17 pith_cstring_release void 1 15 -store __and_13_3907 16 -brif 16 L3907 L3908 -label L3907 +store __and_13_3949 16 +brif 16 L3949 L3950 +label L3949 load 18 node field 19 18 16 list children call 20 pith_list_len int 1 19 iconst 21 2 gte 22 20 21 -store __and_13_3907 22 -label L3908 -load 23 __and_13_3907 -brif 23 L3905 L3906 -label L3905 +store __and_13_3949 22 +label L3950 +load 23 __and_13_3949 +brif 23 L3947 L3948 +label L3947 load 24 node field 25 24 16 list children iconst 26 0 @@ -158527,8 +158849,8 @@ field 29 28 16 list children iconst 30 1 call 31 pith_list_get_value_strict int 2 29 30 call 32 ir_emitter_core_ir_emit_index_assignment bool 2 27 31 -brif 32 L3910 L3911 -label L3910 +brif 32 L3952 L3953 +label L3952 load 33 op call 34 pith_cstring_release void 1 33 load 35 tn @@ -158545,8 +158867,8 @@ load 45 compound_op call 46 pith_cstring_release void 1 45 iconst 47 0 ret 47 -label L3911 -label L3909 +label L3953 +label L3951 load 48 node field 49 48 16 list children iconst 50 0 @@ -158556,8 +158878,8 @@ field 53 52 16 list children iconst 54 1 call 55 pith_list_get_value_strict int 2 53 54 call 56 ir_emitter_core_ir_emit_field_assignment bool 2 51 55 -brif 56 L3913 L3914 -label L3913 +brif 56 L3955 L3956 +label L3955 load 57 op call 58 pith_cstring_release void 1 57 load 59 tn @@ -158574,8 +158896,8 @@ load 69 compound_op call 70 pith_cstring_release void 1 69 iconst 71 0 ret 71 -label L3914 -label L3912 +label L3956 +label L3954 load 72 tn load 73 node field 74 73 16 list children @@ -158608,8 +158930,8 @@ load 96 assign_kind call 97 string_len int 1 96 iconst 98 0 eq 99 97 98 -brif 99 L3916 L3917 -label L3916 +brif 99 L3958 L3959 +label L3958 load 100 assign_kind load 101 name call 102 ir_emitter_core_ir_lookup_name_type string 1 101 @@ -158617,9 +158939,9 @@ call 103 ir_struct_registry_ir_rc_kind string 1 102 call 104 pith_cstring_release void 1 102 call 105 pith_cstring_release void 1 100 store assign_kind 103 -jmp L3915 -label L3917 -label L3915 +jmp L3957 +label L3959 +label L3957 load 106 name call 107 ir_emitter_core_ir_rc_local_kind string 1 106 call 108 string_len int 1 107 @@ -158632,82 +158954,82 @@ iconst 113 1 sub 114 112 113 store old_r 114 iconst 115 0 -store __and_115_3921 115 +store __and_115_3963 115 load 116 assign_kind call 117 string_len int 1 116 iconst 118 0 gt 119 117 118 -store __and_115_3921 119 -brif 119 L3921 L3922 -label L3921 +store __and_115_3963 119 +brif 119 L3963 L3964 +label L3963 load 120 assign_kind call 121 ir_ownership_ir_rc_release_enabled bool 1 120 -store __and_115_3921 121 -label L3922 -load 122 __and_115_3921 -brif 122 L3919 L3920 -label L3919 +store __and_115_3963 121 +label L3964 +load 122 __and_115_3963 +brif 122 L3961 L3962 +label L3961 iconst 123 0 -store __or_123_3926 123 +store __or_123_3968 123 load 124 tracked -store __or_123_3926 124 -brif 124 L3927 L3926 -label L3926 +store __or_123_3968 124 +brif 124 L3969 L3968 +label L3968 iconst 125 0 -store __and_125_3928 125 +store __and_125_3970 125 load 126 assign_kind strref 127 m46s672 call 128 pith_cstring_eq bool 2 126 127 call 129 pith_cstring_release void 1 127 -store __and_125_3928 128 -brif 128 L3928 L3929 -label L3928 +store __and_125_3970 128 +brif 128 L3970 L3971 +label L3970 load 130 ir_alias_registry_ir_global_string_names load 131 name iconst 132 -1 -store __list_index_result_L3930 132 +store __list_index_result_L3972 132 iconst 133 0 -store __list_index_i_L3931 133 +store __list_index_i_L3973 133 call 134 pith_list_len int 1 130 -label L3932 -load 135 __list_index_i_L3931 +label L3974 +load 135 __list_index_i_L3973 lt 136 135 134 -brif 136 L3933 L3936 -label L3933 +brif 136 L3975 L3978 +label L3975 call 137 pith_list_get_value string 2 130 135 call 138 pith_cstring_eq bool 2 137 131 -brif 138 L3934 L3935 -label L3934 -store __list_index_result_L3930 135 -jmp L3936 -label L3935 +brif 138 L3976 L3977 +label L3976 +store __list_index_result_L3972 135 +jmp L3978 +label L3977 iconst 139 1 add 140 135 139 -store __list_index_i_L3931 140 -jmp L3932 -label L3936 -load 141 __list_index_result_L3930 +store __list_index_i_L3973 140 +jmp L3974 +label L3978 +load 141 __list_index_result_L3972 iconst 142 0 gte 143 141 142 -store __and_125_3928 143 -label L3929 -load 144 __and_125_3928 -store __or_123_3926 144 -label L3927 -load 145 __or_123_3926 -brif 145 L3924 L3925 -label L3924 +store __and_125_3970 143 +label L3971 +load 144 __and_125_3970 +store __or_123_3968 144 +label L3969 +load 145 __or_123_3968 +brif 145 L3966 L3967 +label L3966 call 146 ir_builder_ir_reg int 0 store old_r 146 load 147 old_r load 148 name call 149 ir_emitter_core_ir_emit_name_load void 2 147 148 -jmp L3923 -label L3925 -label L3923 -jmp L3918 -label L3920 -label L3918 +jmp L3965 +label L3967 +label L3965 +jmp L3960 +label L3962 +label L3960 load 150 assign_target load 151 name load 152 target_type @@ -158722,55 +159044,55 @@ load 159 assign_target call 160 ir_emitter_core_ir_emit_value_for_target int 2 158 159 store r 160 iconst 161 0 -store __and_161_3940 161 +store __and_161_3982 161 iconst 162 0 -store __and_162_3940 162 +store __and_162_3982 162 load 163 assign_kind call 164 string_len int 1 163 iconst 165 0 gt 166 164 165 -store __and_162_3940 166 -brif 166 L3940 L3941 -label L3940 +store __and_162_3982 166 +brif 166 L3982 L3983 +label L3982 load 167 assign_target strref 168 m46s23 call 170 pith_cstring_eq bool 2 167 168 iconst 171 1 sub 169 171 170 call 172 pith_cstring_release void 1 168 -store __and_162_3940 169 -label L3941 -load 173 __and_162_3940 -store __and_161_3940 173 -brif 173 L3942 L3943 -label L3942 +store __and_162_3982 169 +label L3983 +load 173 __and_162_3982 +store __and_161_3982 173 +brif 173 L3984 L3985 +label L3984 load 174 node field 175 174 16 list children iconst 176 1 call 177 pith_list_get_value_strict int 2 175 176 call 178 ir_emitter_core_ir_string_expr_is_borrowed bool 1 177 -store __and_161_3940 178 -label L3943 -load 179 __and_161_3940 -brif 179 L3938 L3939 -label L3938 +store __and_161_3982 178 +label L3985 +load 179 __and_161_3982 +brif 179 L3980 L3981 +label L3980 load 180 r load 181 assign_kind call 182 ir_ownership_ir_rc_retain_reg void 2 180 181 -jmp L3937 -label L3939 -label L3937 +jmp L3979 +label L3981 +label L3979 load 183 old_r iconst 184 0 gte 185 183 184 -brif 185 L3945 L3946 -label L3945 +brif 185 L3987 L3988 +label L3987 load 186 old_r load 187 assign_kind call 188 ir_ownership_ir_rc_release_reg void 2 186 187 -jmp L3944 -label L3946 -label L3944 +jmp L3986 +label L3988 +label L3986 load 189 name load 190 r call 191 ir_emitter_core_ir_emit_name_store void 2 189 190 @@ -158790,32 +159112,32 @@ load 204 compound_op call 205 pith_cstring_release void 1 204 iconst 206 0 ret 206 -label L3906 -label L3904 +label L3948 +label L3946 load 207 compound_op load 208 op call 209 ir_operator_helpers_ir_compound_assignment_ir_op string 1 208 call 210 pith_cstring_release void 1 207 store compound_op 209 iconst 211 0 -store __and_211_3950 211 +store __and_211_3992 211 load 212 compound_op call 213 string_len int 1 212 iconst 214 0 gt 215 213 214 -store __and_211_3950 215 -brif 215 L3950 L3951 -label L3950 +store __and_211_3992 215 +brif 215 L3992 L3993 +label L3992 load 216 node field 217 216 16 list children call 218 pith_list_len int 1 217 iconst 219 2 gte 220 218 219 -store __and_211_3950 220 -label L3951 -load 221 __and_211_3950 -brif 221 L3948 L3949 -label L3948 +store __and_211_3992 220 +label L3993 +load 221 __and_211_3992 +brif 221 L3990 L3991 +label L3990 load 222 node field 223 222 16 list children iconst 224 0 @@ -158826,8 +159148,8 @@ iconst 228 1 call 229 pith_list_get_value_strict int 2 227 228 load 230 compound_op call 231 ir_emitter_core_ir_emit_field_compound_assignment bool 3 225 229 230 -brif 231 L3953 L3954 -label L3953 +brif 231 L3995 L3996 +label L3995 load 232 op call 233 pith_cstring_release void 1 232 load 234 tn @@ -158844,8 +159166,8 @@ load 244 compound_op call 245 pith_cstring_release void 1 244 iconst 246 0 ret 246 -label L3954 -label L3952 +label L3996 +label L3994 load 247 tn load 248 node field 249 248 16 list children @@ -158881,9 +159203,9 @@ call 273 ir_operator_helpers_ir_emit_simple_binary void 4 269 270 271 272 load 274 name load 275 res call 276 ir_emitter_core_ir_emit_name_store void 2 274 275 -jmp L3947 -label L3949 -label L3947 +jmp L3989 +label L3991 +label L3989 load 277 op call 278 pith_cstring_release void 1 277 load 279 tn @@ -158910,8 +159232,8 @@ load 4 branch field 5 4 0 int cond_idx iconst 6 0 gte 7 5 6 -brif 7 L3956 L3957 -label L3956 +brif 7 L3998 L3999 +label L3998 load 8 branch field 9 8 0 int cond_idx call 10 ir_emitter_core_ir_expr int 1 9 @@ -158938,9 +159260,9 @@ concat 29 25 28 call 30 pith_cstring_release void 1 25 call 31 ir_builder_ir_emit void 1 29 call 32 pith_cstring_release void 1 29 -jmp L3955 -label L3957 -label L3955 +jmp L3997 +label L3999 +label L3997 load 33 then_label call 34 ir_call_emit_ir_emit_label void 1 33 iconst 35 0 @@ -158949,28 +159271,28 @@ load 36 branch field 37 36 8 int body_idx iconst 38 0 gte 39 37 38 -brif 39 L3959 L3960 -label L3959 +brif 39 L4001 L4002 +label L4001 load 40 branch field 41 40 8 int body_idx call 42 ir_emitter_core_ir_block int 1 41 -jmp L3958 -label L3960 -label L3958 +jmp L4000 +label L4002 +label L4000 load 43 ir_call_emit_ir_last_was_ret iconst 45 1 sub 44 45 43 -brif 44 L3962 L3963 -label L3962 +brif 44 L4004 L4005 +label L4004 strref 46 m46s828 load 47 end_label concat 48 46 47 call 49 pith_cstring_release void 1 46 call 50 ir_builder_ir_emit void 1 48 call 51 pith_cstring_release void 1 48 -jmp L3961 -label L3963 -label L3961 +jmp L4003 +label L4005 +label L4003 load 52 next_label call 53 ir_call_emit_ir_emit_label void 1 52 iconst 54 0 @@ -159056,8 +159378,8 @@ load 70 index_name call 71 string_len int 1 70 iconst 72 0 gt 73 71 72 -brif 73 L3965 L3966 -label L3965 +brif 73 L4007 L4008 +label L4007 call 74 ir_builder_ir_reg int 0 store idx_val 74 strref 75 m46s824 @@ -159095,9 +159417,9 @@ load 106 index_name strref 107 m46s668 call 108 map_insert void 3 105 106 107 call 109 pith_cstring_release void 1 107 -jmp L3964 -label L3966 -label L3964 +jmp L4006 +label L4008 +label L4006 load 110 item_ret_kind call 111 pith_cstring_release void 1 110 iconst 112 0 @@ -159126,109 +159448,109 @@ load 13 kind strref 14 m46s551 call 15 pith_cstring_eq bool 2 13 14 call 16 pith_cstring_release void 1 14 -brif 15 L3968 L3969 -label L3968 +brif 15 L4010 L4011 +label L4010 load 17 node field 18 17 16 list children call 19 pith_list_len int 1 18 iconst 20 0 gt 21 19 20 -brif 21 L3971 L3972 -label L3971 +brif 21 L4013 L4014 +label L4013 load 22 node field 23 22 16 list children iconst 24 0 call 25 pith_list_get_value_strict int 2 23 24 iconst 26 0 call 27 ir_emitter_core_ir_defer_register void 2 25 26 -jmp L3970 -label L3972 -label L3970 +jmp L4012 +label L4014 +label L4012 load 28 node call 29 pith_struct_release void 1 28 load 30 kind call 31 pith_cstring_release void 1 30 iconst 32 0 ret 32 -label L3969 -label L3967 +label L4011 +label L4009 load 33 kind strref 34 m46s550 call 35 pith_cstring_eq bool 2 33 34 call 36 pith_cstring_release void 1 34 -brif 35 L3974 L3975 -label L3974 +brif 35 L4016 L4017 +label L4016 load 37 node field 38 37 16 list children call 39 pith_list_len int 1 38 iconst 40 0 gt 41 39 40 -brif 41 L3977 L3978 -label L3977 +brif 41 L4019 L4020 +label L4019 load 42 node field 43 42 16 list children iconst 44 0 call 45 pith_list_get_value_strict int 2 43 44 iconst 46 1 call 47 ir_emitter_core_ir_defer_register void 2 45 46 -jmp L3976 -label L3978 -label L3976 +jmp L4018 +label L4020 +label L4018 load 48 node call 49 pith_struct_release void 1 48 load 50 kind call 51 pith_cstring_release void 1 50 iconst 52 0 ret 52 -label L3975 -label L3973 +label L4017 +label L4015 load 53 kind call 54 ir_control_helpers_ir_stmt_is_expr bool 1 53 -brif 54 L3980 L3981 -label L3980 +brif 54 L4022 L4023 +label L4022 load 55 idx call 56 ir_emitter_core_ir_expr int 1 55 store r 56 iconst 57 0 -store __or_57_3985 57 +store __or_57_4027 57 load 58 kind strref 59 m46s44 call 60 pith_cstring_eq bool 2 58 59 call 61 pith_cstring_release void 1 59 -store __or_57_3985 60 -brif 60 L3986 L3985 -label L3985 +store __or_57_4027 60 +brif 60 L4028 L4027 +label L4027 load 62 kind strref 63 m46s129 call 64 pith_cstring_eq bool 2 62 63 call 65 pith_cstring_release void 1 63 -store __or_57_3985 64 -label L3986 -load 66 __or_57_3985 -brif 66 L3983 L3984 -label L3983 +store __or_57_4027 64 +label L4028 +load 66 __or_57_4027 +brif 66 L4025 L4026 +label L4025 load 67 idx call 68 checker_c_get_expr_type int 1 67 store stmt_tid 68 iconst 69 0 -store __and_69_3990 69 +store __and_69_4032 69 load 70 stmt_tid iconst 71 0 gte 72 70 71 -store __and_69_3990 72 -brif 72 L3990 L3991 -label L3990 +store __and_69_4032 72 +brif 72 L4032 L4033 +label L4032 load 73 stmt_tid call 74 types_get_type_info struct:TypeInfo 1 73 field 75 74 0 string kind strref 76 m46s22 call 77 pith_cstring_eq bool 2 75 76 call 78 pith_cstring_release void 1 76 -store __and_69_3990 77 -label L3991 -load 79 __and_69_3990 -brif 79 L3988 L3989 -label L3988 +store __and_69_4032 77 +label L4033 +load 79 __and_69_4032 +brif 79 L4030 L4031 +label L4030 load 80 r load 81 stmt_tid call 82 ir_emitter_core_ir_emit_discard_result void 2 80 81 @@ -159238,50 +159560,50 @@ load 85 kind call 86 pith_cstring_release void 1 85 iconst 87 0 ret 87 -label L3989 -label L3987 -jmp L3982 -label L3984 -label L3982 +label L4031 +label L4029 +jmp L4024 +label L4026 +label L4024 iconst 88 0 -store __and_88_3995 88 +store __and_88_4037 88 load 89 idx call 90 ir_emitter_core_ir_infer_type string 1 89 strref 91 m46s672 call 92 pith_cstring_eq bool 2 90 91 call 93 pith_cstring_release void 1 90 call 94 pith_cstring_release void 1 91 -store __and_88_3995 92 -brif 92 L3995 L3996 -label L3995 +store __and_88_4037 92 +brif 92 L4037 L4038 +label L4037 load 95 idx call 96 ir_emitter_core_ir_string_expr_is_borrowed bool 1 95 iconst 98 1 sub 97 98 96 -store __and_88_3995 97 -label L3996 -load 99 __and_88_3995 -brif 99 L3993 L3994 -label L3993 +store __and_88_4037 97 +label L4038 +load 99 __and_88_4037 +brif 99 L4035 L4036 +label L4035 load 100 r call 101 ir_ownership_ir_string_release_reg void 1 100 -jmp L3992 -label L3994 -label L3992 +jmp L4034 +label L4036 +label L4034 load 102 node call 103 pith_struct_release void 1 102 load 104 kind call 105 pith_cstring_release void 1 104 iconst 106 0 ret 106 -label L3981 -label L3979 +label L4023 +label L4021 load 107 kind strref 108 m46s64 call 109 pith_cstring_eq bool 2 107 108 call 110 pith_cstring_release void 1 108 -brif 109 L3998 L3999 -label L3998 +brif 109 L4040 L4041 +label L4040 load 111 idx call 112 ir_emitter_core_ir_block int 1 111 load 113 node @@ -159290,14 +159612,14 @@ load 115 kind call 116 pith_cstring_release void 1 115 iconst 117 0 ret 117 -label L3999 -label L3997 +label L4041 +label L4039 load 118 kind strref 119 m46s555 call 120 pith_cstring_eq bool 2 118 119 call 121 pith_cstring_release void 1 119 -brif 120 L4001 L4002 -label L4001 +brif 120 L4043 L4044 +label L4043 load 122 node call 123 ir_emitter_core_ir_emit_return_stmt void 1 122 load 124 node @@ -159306,26 +159628,26 @@ load 126 kind call 127 pith_cstring_release void 1 126 iconst 128 0 ret 128 -label L4002 -label L4000 +label L4044 +label L4042 iconst 129 0 -store __or_129_4006 129 +store __or_129_4048 129 load 130 kind strref 131 m46s548 call 132 pith_cstring_eq bool 2 130 131 call 133 pith_cstring_release void 1 131 -store __or_129_4006 132 -brif 132 L4007 L4006 -label L4006 +store __or_129_4048 132 +brif 132 L4049 L4048 +label L4048 load 134 kind strref 135 m46s549 call 136 pith_cstring_eq bool 2 134 135 call 137 pith_cstring_release void 1 135 -store __or_129_4006 136 -label L4007 -load 138 __or_129_4006 -brif 138 L4004 L4005 -label L4004 +store __or_129_4048 136 +label L4049 +load 138 __or_129_4048 +brif 138 L4046 L4047 +label L4046 load 139 node call 140 ir_emitter_core_ir_emit_bind_stmt void 1 139 load 141 node @@ -159334,14 +159656,14 @@ load 143 kind call 144 pith_cstring_release void 1 143 iconst 145 0 ret 145 -label L4005 -label L4003 +label L4047 +label L4045 load 146 kind strref 147 m46s1195 call 148 pith_cstring_eq bool 2 146 147 call 149 pith_cstring_release void 1 147 -brif 148 L4009 L4010 -label L4009 +brif 148 L4051 L4052 +label L4051 load 150 node call 151 ir_emitter_core_ir_emit_assign_stmt void 1 150 load 152 node @@ -159350,14 +159672,14 @@ load 154 kind call 155 pith_cstring_release void 1 154 iconst 156 0 ret 156 -label L4010 -label L4008 +label L4052 +label L4050 load 157 kind strref 158 m46s571 call 159 pith_cstring_eq bool 2 157 158 call 160 pith_cstring_release void 1 158 -brif 159 L4012 L4013 -label L4012 +brif 159 L4054 L4055 +label L4054 load 161 node call 162 ir_emitter_core_ir_emit_compound_assignment void 1 161 load 163 node @@ -159366,8 +159688,8 @@ load 165 kind call 166 pith_cstring_release void 1 165 iconst 167 0 ret 167 -label L4013 -label L4011 +label L4055 +label L4053 load 168 idx load 169 node call 170 ir_emitter_core_ir_stmt_control void 2 168 169 @@ -159409,12 +159731,12 @@ iconst 17 0 store __for_idx_354 17 store __for_len_354 16 store __for_iter_354 15 -label L4014 +label L4056 load 18 __for_idx_354 load 19 __for_len_354 lt 20 18 19 -brif 20 L4015 L4017 -label L4015 +brif 20 L4057 L4059 +label L4057 load 21 __for_iter_354 load 22 __for_idx_354 call 23 pith_list_get_value unknown 2 21 22 @@ -159429,32 +159751,32 @@ field 29 28 0 string kind strref 30 m46s529 call 31 pith_cstring_eq bool 2 29 30 call 32 pith_cstring_release void 1 30 -brif 31 L4019 L4020 -label L4019 +brif 31 L4061 L4062 +label L4061 load 33 elif_indices load 34 child call 35 pith_list_push_value void 2 33 34 -jmp L4018 -label L4020 +jmp L4060 +label L4062 load 36 cn field 37 36 0 string kind strref 38 m46s527 call 39 pith_cstring_eq bool 2 37 38 call 40 pith_cstring_release void 1 38 -brif 39 L4021 L4022 -label L4021 +brif 39 L4063 L4064 +label L4063 load 41 child store else_idx 41 -jmp L4018 -label L4022 -label L4018 -label L4016 +jmp L4060 +label L4064 +label L4060 +label L4058 load 42 __for_idx_354 iconst 43 1 add 44 42 43 store __for_idx_354 44 -jmp L4014 -label L4017 +jmp L4056 +label L4059 load 45 main_branch load 46 node call 47 ir_control_helpers_ir_collect_if_branch struct:IrIfBranch 1 46 @@ -159483,12 +159805,12 @@ iconst 65 0 store __for_idx_355 65 store __for_len_355 64 store __for_iter_355 63 -label L4023 +label L4065 load 66 __for_idx_355 load 67 __for_len_355 lt 68 66 67 -brif 68 L4024 L4026 -label L4024 +brif 68 L4066 L4068 +label L4066 load 69 __for_iter_355 load 70 __for_idx_355 call 71 pith_list_get_value unknown 2 69 70 @@ -159507,23 +159829,23 @@ load 81 end_label call 82 ir_emitter_core_ir_emit_if_branch void 4 78 79 80 81 call 83 pith_cstring_release void 1 79 call 84 pith_cstring_release void 1 80 -label L4025 +label L4067 load 85 __for_idx_355 iconst 86 1 add 87 85 86 store __for_idx_355 87 -jmp L4023 -label L4026 +jmp L4065 +label L4068 load 88 else_idx iconst 89 0 gte 90 88 89 -brif 90 L4028 L4029 -label L4028 +brif 90 L4070 L4071 +label L4070 load 91 else_idx call 92 ir_emitter_core_ir_block int 1 91 -jmp L4027 -label L4029 -label L4027 +jmp L4069 +label L4071 +label L4069 load 93 end_label call 94 ir_call_emit_ir_emit_label void 1 93 load 95 elif_indices @@ -159558,8 +159880,8 @@ field 8 7 0 string kind strref 9 m46s85 call 10 pith_cstring_eq bool 2 8 9 call 11 pith_cstring_release void 1 9 -brif 10 L4031 L4032 -label L4031 +brif 10 L4073 L4074 +label L4073 call 12 ir_builder_ir_reg int 0 store r 12 load 13 r @@ -159571,8 +159893,8 @@ load 18 r load 19 pat call 20 pith_struct_release void 1 19 ret 18 -label L4032 -label L4030 +label L4074 +label L4072 load 21 pat_idx load 22 subj_r call 23 ir_match_emit_ir_emit_match_cond int 2 21 22 @@ -159604,8 +159926,8 @@ field 11 10 0 string kind strref 12 m46s85 call 13 pith_cstring_eq bool 2 11 12 call 14 pith_cstring_release void 1 12 -brif 13 L4034 L4035 -label L4034 +brif 13 L4076 L4077 +label L4076 load 15 subj_idx call 16 checker_c_get_expr_type int 1 15 store subj_tid 16 @@ -159621,32 +159943,32 @@ call 24 map_insert void 3 20 22 23 load 25 subj_tid iconst 26 0 gte 27 25 26 -brif 27 L4037 L4038 -label L4037 +brif 27 L4079 L4080 +label L4079 load 28 info load 29 subj_tid call 30 types_get_type_info struct:TypeInfo 1 29 call 31 pith_struct_release void 1 28 store info 30 iconst 32 0 -store __and_32_4042 32 +store __and_32_4084 32 load 33 info field 34 33 0 string kind strref 35 m46s21 call 36 pith_cstring_eq bool 2 34 35 call 37 pith_cstring_release void 1 35 -store __and_32_4042 36 -brif 36 L4042 L4043 -label L4042 +store __and_32_4084 36 +brif 36 L4084 L4085 +label L4084 load 38 info field 39 38 64 int inner iconst 40 0 gte 41 39 40 -store __and_32_4042 41 -label L4043 -load 42 __and_32_4042 -brif 42 L4040 L4041 -label L4040 +store __and_32_4084 41 +label L4085 +load 42 __and_32_4084 +brif 42 L4082 L4083 +label L4082 load 43 inner_kind load 44 info field 45 44 64 int inner @@ -159657,22 +159979,22 @@ load 48 inner_kind call 49 string_len int 1 48 iconst 50 0 gt 51 49 50 -brif 51 L4045 L4046 -label L4045 +brif 51 L4087 L4088 +label L4087 load 52 ir_builder_ir_var_types load 53 pat field 54 53 8 string value load 55 inner_kind call 56 map_insert void 3 52 54 55 -jmp L4044 -label L4046 -label L4044 -jmp L4039 -label L4041 -label L4039 -jmp L4036 -label L4038 -label L4036 +jmp L4086 +label L4088 +label L4086 +jmp L4081 +label L4083 +label L4081 +jmp L4078 +label L4080 +label L4078 strref 57 m46s825 load 58 pat field 59 58 8 string value @@ -159697,8 +160019,8 @@ load 77 inner_kind call 78 pith_cstring_release void 1 77 iconst 79 0 ret 79 -label L4035 -label L4033 +label L4077 +label L4075 load 80 pat_idx load 81 subj_r strref 82 m46s82 @@ -159718,50 +160040,50 @@ param idx iconst 1 0 store kind 1 iconst 2 0 -store __or_2_4050 2 +store __or_2_4092 2 load 3 ir_alias_registry_ir_active_generic_params call 4 pith_list_len int 1 3 iconst 5 0 gt 6 4 5 -store __or_2_4050 6 -brif 6 L4051 L4050 -label L4050 +store __or_2_4092 6 +brif 6 L4093 L4092 +label L4092 load 7 ir_emitter_core_ir_current_impl_subst_params call 8 pith_list_len int 1 7 iconst 9 0 gt 10 8 9 -store __or_2_4050 10 -label L4051 -load 11 __or_2_4050 -brif 11 L4048 L4049 -label L4048 +store __or_2_4092 10 +label L4093 +load 11 __or_2_4092 +brif 11 L4090 L4091 +label L4090 iconst 12 0 load 13 kind call 14 pith_cstring_release void 1 13 ret 12 -label L4049 -label L4047 +label L4091 +label L4089 load 15 kind load 16 idx call 17 ast_node_kind string 1 16 call 18 pith_cstring_release void 1 15 store kind 17 iconst 19 0 -store __or_19_4052 19 +store __or_19_4094 19 load 20 kind strref 21 m46s44 call 22 pith_cstring_eq bool 2 20 21 call 23 pith_cstring_release void 1 21 -store __or_19_4052 22 -brif 22 L4053 L4052 -label L4052 +store __or_19_4094 22 +brif 22 L4095 L4094 +label L4094 load 24 kind strref 25 m46s129 call 26 pith_cstring_eq bool 2 24 25 call 27 pith_cstring_release void 1 25 -store __or_19_4052 26 -label L4053 -load 28 __or_19_4052 +store __or_19_4094 26 +label L4095 +load 28 __or_19_4094 load 29 kind call 30 pith_cstring_release void 1 29 ret 28 @@ -159783,8 +160105,8 @@ field 5 4 16 list children call 6 pith_list_len int 1 5 iconst 7 3 lt 8 6 7 -brif 8 L4055 L4056 -label L4055 +brif 8 L4097 L4098 +label L4097 load 9 then_l call 10 pith_cstring_release void 1 9 load 11 else_l @@ -159793,8 +160115,8 @@ load 13 end_l call 14 pith_cstring_release void 1 13 iconst 15 0 ret 15 -label L4056 -label L4054 +label L4098 +label L4096 load 16 node field 17 16 16 list children iconst 18 1 @@ -159870,17 +160192,17 @@ call 80 ir_emitter_core_ir_block int 1 79 load 81 ir_call_emit_ir_last_was_ret iconst 83 1 sub 82 83 81 -brif 82 L4058 L4059 -label L4058 +brif 82 L4100 L4101 +label L4100 strref 84 m46s828 load 85 end_l concat 86 84 85 call 87 pith_cstring_release void 1 84 call 88 ir_builder_ir_emit void 1 86 call 89 pith_cstring_release void 1 86 -jmp L4057 -label L4059 -label L4057 +jmp L4099 +label L4101 +label L4099 load 90 else_l call 91 ir_call_emit_ir_emit_label void 1 90 iconst 92 0 @@ -159890,21 +160212,21 @@ field 94 93 16 list children call 95 pith_list_len int 1 94 iconst 96 3 gt 97 95 96 -brif 97 L4061 L4062 -label L4061 +brif 97 L4103 L4104 +label L4103 load 98 node field 99 98 16 list children iconst 100 3 call 101 pith_list_get_value_strict int 2 99 100 call 102 ir_emitter_core_ir_block int 1 101 -jmp L4060 -label L4062 -label L4060 +jmp L4102 +label L4104 +label L4102 load 103 end_l call 104 ir_call_emit_ir_emit_label void 1 103 load 105 owns_subject -brif 105 L4064 L4065 -label L4064 +brif 105 L4106 L4107 +label L4106 call 106 ir_builder_ir_reg int 0 strref 107 m46s893 strref 108 m46s823 @@ -159912,9 +160234,9 @@ load 109 subj_r call 110 ir_call_emit_ir_emit_call1 void 4 106 107 108 109 call 111 pith_cstring_release void 1 107 call 112 pith_cstring_release void 1 108 -jmp L4063 -label L4065 -label L4063 +jmp L4105 +label L4107 +label L4105 iconst 113 0 store ir_call_emit_ir_last_was_ret 113 load 114 then_l @@ -159939,8 +160261,8 @@ field 5 4 16 list children call 6 pith_list_len int 1 5 iconst 7 3 lt 8 6 7 -brif 8 L4067 L4068 -label L4067 +brif 8 L4109 L4110 +label L4109 load 9 head_label call 10 pith_cstring_release void 1 9 load 11 body_label @@ -159949,8 +160271,8 @@ load 13 end_label call 14 pith_cstring_release void 1 13 iconst 15 0 ret 15 -label L4068 -label L4066 +label L4110 +label L4108 load 16 head_label call 17 ir_builder_ir_label string 0 call 18 pith_cstring_release void 1 16 @@ -160048,8 +160370,8 @@ iconst 100 1 sub 101 99 100 call 102 remove void 2 97 101 load 103 owns_subject -brif 103 L4070 L4071 -label L4070 +brif 103 L4112 L4113 +label L4112 call 104 ir_builder_ir_reg int 0 strref 105 m46s893 strref 106 m46s823 @@ -160057,9 +160379,9 @@ load 107 subj_r call 108 ir_call_emit_ir_emit_call1 void 4 104 105 106 107 call 109 pith_cstring_release void 1 105 call 110 pith_cstring_release void 1 106 -jmp L4069 -label L4071 -label L4069 +jmp L4111 +label L4113 +label L4111 strref 111 m46s828 load 112 head_label concat 113 111 112 @@ -160069,8 +160391,8 @@ call 116 pith_cstring_release void 1 113 load 117 end_label call 118 ir_call_emit_ir_emit_label void 1 117 load 119 owns_subject -brif 119 L4073 L4074 -label L4073 +brif 119 L4115 L4116 +label L4115 call 120 ir_builder_ir_reg int 0 strref 121 m46s893 strref 122 m46s823 @@ -160078,9 +160400,9 @@ load 123 subj_r call 124 ir_call_emit_ir_emit_call1 void 4 120 121 122 123 call 125 pith_cstring_release void 1 121 call 126 pith_cstring_release void 1 122 -jmp L4072 -label L4074 -label L4072 +jmp L4114 +label L4116 +label L4114 iconst 127 0 store ir_call_emit_ir_last_was_ret 127 load 128 head_label @@ -160119,8 +160441,8 @@ field 16 15 16 list children call 17 pith_list_len int 1 16 iconst 18 2 gte 19 17 18 -brif 19 L4076 L4077 -label L4076 +brif 19 L4118 L4119 +label L4118 load 20 node field 21 20 16 list children iconst 22 0 @@ -160184,9 +160506,9 @@ concat 76 74 75 call 77 pith_cstring_release void 1 74 call 78 ir_builder_ir_emit void 1 76 call 79 pith_cstring_release void 1 76 -jmp L4075 -label L4077 -label L4075 +jmp L4117 +label L4119 +label L4117 load 80 end_label call 81 ir_call_emit_ir_emit_label void 1 80 load 82 head_label @@ -160218,8 +160540,8 @@ field 10 9 16 list children call 11 pith_list_len int 1 10 iconst 12 2 gte 13 11 12 -brif 13 L4079 L4080 -label L4079 +brif 13 L4121 L4122 +label L4121 load 14 node field 15 14 16 list children iconst 16 0 @@ -160229,8 +160551,8 @@ field 19 18 0 string kind strref 20 m46s520 call 21 pith_cstring_eq bool 2 19 20 call 22 pith_cstring_release void 1 20 -brif 21 L4082 L4083 -label L4082 +brif 21 L4124 L4125 +label L4124 load 23 node load 24 names call 25 ir_emitter_core_ir_emit_for_range_stmt void 2 23 24 @@ -160244,8 +160566,8 @@ load 32 next_name call 33 pith_cstring_release void 1 32 iconst 34 0 ret 34 -label L4083 -label L4081 +label L4125 +label L4123 load 35 iter_struct load 36 node field 37 36 16 list children @@ -160255,34 +160577,34 @@ call 40 ir_emitter_core_ir_infer_type string 1 39 call 41 pith_cstring_release void 1 35 store iter_struct 40 iconst 42 0 -store __and_42_4087 42 +store __and_42_4129 42 load 43 iter_struct call 44 string_len int 1 43 iconst 45 0 gt 46 44 45 -store __and_42_4087 46 -brif 46 L4087 L4088 -label L4087 +store __and_42_4129 46 +brif 46 L4129 L4130 +label L4129 load 47 iter_struct strref 48 m46s332 call 49 pith_cstring_contains bool 2 47 48 call 50 pith_cstring_release void 1 48 iconst 51 0 eq 52 49 51 -store __and_42_4087 52 -label L4088 -load 53 __and_42_4087 -brif 53 L4085 L4086 -label L4085 +store __and_42_4129 52 +label L4130 +load 53 __and_42_4129 +brif 53 L4127 L4128 +label L4127 iconst 54 0 store gi 54 -label L4089 +label L4131 load 55 gi load 56 ir_alias_registry_ir_active_generic_concrete_types call 57 pith_list_len int 1 56 lt 58 55 57 -brif 58 L4090 L4091 -label L4090 +brif 58 L4132 L4133 +label L4132 load 59 concrete load 60 ir_alias_registry_ir_active_generic_concrete_types load 61 gi @@ -160295,8 +160617,8 @@ call 66 ir_method_tables_ir_strip_type_args string 1 65 load 67 iter_struct call 68 pith_cstring_eq bool 2 66 67 call 69 pith_cstring_release void 1 66 -brif 68 L4093 L4094 -label L4093 +brif 68 L4135 L4136 +label L4135 load 70 iter_struct load 71 concrete call 72 pith_cstring_retain void 1 71 @@ -160305,18 +160627,18 @@ store iter_struct 71 load 74 ir_alias_registry_ir_active_generic_concrete_types call 75 pith_list_len int 1 74 store gi 75 -jmp L4092 -label L4094 -label L4092 +jmp L4134 +label L4136 +label L4134 load 76 gi iconst 77 1 add 78 76 77 store gi 78 -jmp L4089 -label L4091 -jmp L4084 -label L4086 -label L4084 +jmp L4131 +label L4133 +jmp L4126 +label L4128 +label L4126 load 79 next_name load 80 iter_struct strref 81 m46s1194 @@ -160328,8 +160650,8 @@ load 85 next_name call 86 string_len int 1 85 iconst 87 0 eq 88 86 87 -brif 88 L4096 L4097 -label L4096 +brif 88 L4138 L4139 +label L4138 load 89 next_name load 90 iter_struct strref 91 m46s1194 @@ -160337,15 +160659,15 @@ call 92 ir_emitter_core_ir_lookup_impl_method_name string 2 90 91 call 93 pith_cstring_release void 1 91 call 94 pith_cstring_release void 1 89 store next_name 92 -jmp L4095 -label L4097 -label L4095 +jmp L4137 +label L4139 +label L4137 load 95 next_name call 96 string_len int 1 95 iconst 97 0 gt 98 96 97 -brif 98 L4099 L4100 -label L4099 +brif 98 L4141 L4142 +label L4141 load 99 node load 100 names load 101 next_name @@ -160360,14 +160682,14 @@ load 109 next_name call 110 pith_cstring_release void 1 109 iconst 111 0 ret 111 -label L4100 -label L4098 +label L4142 +label L4140 load 112 node load 113 names call 114 ir_emitter_core_ir_emit_for_indexed_stmt void 2 112 113 -jmp L4078 -label L4080 -label L4078 +jmp L4120 +label L4122 +label L4120 load 115 names call 116 pith_struct_release void 1 115 load 117 iter_struct @@ -160434,16 +160756,16 @@ call 35 pith_list_get_value_strict int 2 33 34 call 36 ir_emitter_core_ir_string_expr_is_borrowed bool 1 35 iconst 38 1 sub 37 38 36 -brif 37 L4102 L4103 -label L4102 +brif 37 L4144 L4145 +label L4144 load 39 iter_release_kind load 40 iter_type call 41 ir_struct_registry_ir_rc_kind string 1 40 call 42 pith_cstring_release void 1 39 store iter_release_kind 41 -jmp L4101 -label L4103 -label L4101 +jmp L4143 +label L4145 +label L4143 load 43 conversion_call load 44 iter_type call 45 ir_collection_helpers_ir_for_iter_conversion_call string 1 44 @@ -160453,8 +160775,8 @@ load 47 conversion_call call 48 string_len int 1 47 iconst 49 0 gt 50 48 49 -brif 50 L4105 L4106 -label L4105 +brif 50 L4147 L4148 +label L4147 call 51 ir_builder_ir_reg int 0 store converted_r 51 load 52 converted_r @@ -160468,14 +160790,14 @@ load 59 iter_release_kind call 60 string_len int 1 59 iconst 61 0 gt 62 60 61 -brif 62 L4108 L4109 -label L4108 +brif 62 L4150 L4151 +label L4150 load 63 iter_r load 64 iter_release_kind call 65 ir_ownership_ir_rc_release_reg void 2 63 64 -jmp L4107 -label L4109 -label L4107 +jmp L4149 +label L4151 +label L4149 load 66 converted_r store iter_r 66 load 67 iter_release_kind @@ -160485,9 +160807,9 @@ call 70 ir_struct_registry_ir_rc_kind string 1 69 call 71 pith_cstring_release void 1 69 call 72 pith_cstring_release void 1 67 store iter_release_kind 70 -jmp L4104 -label L4106 -label L4104 +jmp L4146 +label L4148 +label L4146 load 73 ir_emitter_core_ir_for_count store fid 73 load 74 ir_emitter_core_ir_for_count @@ -160717,8 +161039,8 @@ load 281 iter_release_kind call 282 string_len int 1 281 iconst 283 0 gt 284 282 283 -brif 284 L4111 L4112 -label L4111 +brif 284 L4153 L4154 +label L4153 load 285 ir_emitter_core_ir_loop_iter_vars load 286 ft call 287 pith_list_push_value void 2 285 286 @@ -160727,17 +161049,17 @@ load 289 iter_release_kind call 290 pith_list_push_value void 2 288 289 iconst 291 1 store pushed_iter 291 -jmp L4110 -label L4112 -label L4110 +jmp L4152 +label L4154 +label L4152 load 292 node field 293 292 16 list children iconst 294 1 call 295 pith_list_get_value_strict int 2 293 294 call 296 ir_emitter_core_ir_block int 1 295 load 297 pushed_iter -brif 297 L4114 L4115 -label L4114 +brif 297 L4156 L4157 +label L4156 load 298 ir_emitter_core_ir_loop_iter_vars load 299 ir_emitter_core_ir_loop_iter_vars call 300 pith_list_len int 1 299 @@ -160750,9 +161072,9 @@ call 306 pith_list_len int 1 305 iconst 307 1 sub 308 306 307 call 309 remove void 2 304 308 -jmp L4113 -label L4115 -label L4113 +jmp L4155 +label L4157 +label L4155 call 310 ir_emitter_core_ir_defer_loop_exit void 0 load 311 ir_emitter_core_ir_break_stack load 312 ir_emitter_core_ir_break_stack @@ -160854,8 +161176,8 @@ load 404 iter_release_kind call 405 string_len int 1 404 iconst 406 0 gt 407 405 406 -brif 407 L4117 L4118 -label L4117 +brif 407 L4159 L4160 +label L4159 call 408 ir_builder_ir_reg int 0 store fin_r 408 strref 409 m46s824 @@ -160876,9 +161198,9 @@ call 423 pith_cstring_release void 1 420 load 424 fin_r load 425 iter_release_kind call 426 ir_ownership_ir_rc_release_reg void 2 424 425 -jmp L4116 -label L4118 -label L4116 +jmp L4158 +label L4160 +label L4158 load 427 iter_type call 428 pith_cstring_release void 1 427 load 429 item_kind @@ -161021,8 +161343,8 @@ call 93 pith_cstring_release void 1 90 call 94 ir_builder_ir_emit void 1 91 call 95 pith_cstring_release void 1 91 load 96 has_index -brif 96 L4120 L4121 -label L4120 +brif 96 L4162 L4163 +label L4162 call 97 ir_builder_ir_reg int 0 store zero_r 97 strref 98 m46s827 @@ -161052,9 +161374,9 @@ call 121 pith_cstring_release void 1 115 call 122 pith_cstring_release void 1 119 call 123 ir_builder_ir_emit void 1 120 call 124 pith_cstring_release void 1 120 -jmp L4119 -label L4121 -label L4119 +jmp L4161 +label L4163 +label L4161 load 125 head_l call 126 ir_builder_ir_label string 0 call 127 pith_cstring_release void 1 125 @@ -161114,15 +161436,15 @@ strref 173 m46s462 call 174 pith_cstring_release void 1 172 store cmp_op 173 load 175 inclusive -brif 175 L4123 L4124 -label L4123 +brif 175 L4165 L4166 +label L4165 load 176 cmp_op strref 177 m46s456 call 178 pith_cstring_release void 1 176 store cmp_op 177 -jmp L4122 -label L4124 -label L4122 +jmp L4164 +label L4166 +label L4164 load 179 cmp_op strref 180 m46s333 concat 181 179 180 @@ -161216,8 +161538,8 @@ call 267 pith_cstring_release void 1 264 call 268 ir_builder_ir_emit void 1 265 call 269 pith_cstring_release void 1 265 load 270 has_index -brif 270 L4126 L4127 -label L4126 +brif 270 L4168 L4169 +label L4168 call 271 ir_builder_ir_reg int 0 store pos_r 271 strref 272 m46s824 @@ -161257,9 +161579,9 @@ call 305 pith_cstring_release void 1 299 call 306 pith_cstring_release void 1 303 call 307 ir_builder_ir_emit void 1 304 call 308 pith_cstring_release void 1 304 -jmp L4125 -label L4127 -label L4125 +jmp L4167 +label L4169 +label L4167 load 309 ir_emitter_core_ir_break_stack load 310 end_l call 311 ir_utils_ir_push_string list_string 2 309 310 @@ -161364,8 +161686,8 @@ call 404 pith_cstring_release void 1 401 call 405 ir_builder_ir_emit void 1 402 call 406 pith_cstring_release void 1 402 load 407 has_index -brif 407 L4129 L4130 -label L4129 +brif 407 L4171 L4172 +label L4171 call 408 ir_builder_ir_reg int 0 store p3 408 strref 409 m46s824 @@ -161440,9 +161762,9 @@ call 475 pith_cstring_release void 1 469 call 476 pith_cstring_release void 1 473 call 477 ir_builder_ir_emit void 1 474 call 478 pith_cstring_release void 1 474 -jmp L4128 -label L4130 -label L4128 +jmp L4170 +label L4172 +label L4170 strref 479 m46s828 load 480 head_l concat 481 479 480 @@ -161542,8 +161864,8 @@ call 52 pith_cstring_release void 1 49 call 53 ir_builder_ir_emit void 1 50 call 54 pith_cstring_release void 1 50 load 55 has_index -brif 55 L4132 L4133 -label L4132 +brif 55 L4174 L4175 +label L4174 call 56 ir_builder_ir_reg int 0 store zero_r 56 strref 57 m46s827 @@ -161573,9 +161895,9 @@ call 80 pith_cstring_release void 1 74 call 81 pith_cstring_release void 1 78 call 82 ir_builder_ir_emit void 1 79 call 83 pith_cstring_release void 1 79 -jmp L4131 -label L4133 -label L4131 +jmp L4173 +label L4175 +label L4173 load 84 elem_kind load 85 node field 86 85 16 list children @@ -161591,15 +161913,15 @@ load 94 elem_kind call 95 string_len int 1 94 iconst 96 0 eq 97 95 96 -brif 97 L4135 L4136 -label L4135 +brif 97 L4177 L4178 +label L4177 load 98 elem_kind strref 99 m46s817 call 100 pith_cstring_release void 1 98 store elem_kind 99 -jmp L4134 -label L4136 -label L4134 +jmp L4176 +label L4178 +label L4176 load 101 head_l call 102 ir_builder_ir_label string 0 call 103 pith_cstring_release void 1 101 @@ -161740,8 +162062,8 @@ call 229 pith_cstring_release void 1 226 call 230 ir_builder_ir_emit void 1 227 call 231 pith_cstring_release void 1 227 load 232 has_index -brif 232 L4138 L4139 -label L4138 +brif 232 L4180 L4181 +label L4180 call 233 ir_builder_ir_reg int 0 store pos_r 233 strref 234 m46s824 @@ -161781,9 +162103,9 @@ call 267 pith_cstring_release void 1 261 call 268 pith_cstring_release void 1 265 call 269 ir_builder_ir_emit void 1 266 call 270 pith_cstring_release void 1 266 -jmp L4137 -label L4139 -label L4137 +jmp L4179 +label L4181 +label L4179 load 271 ir_emitter_core_ir_break_stack load 272 end_l call 273 ir_utils_ir_push_string list_string 2 271 272 @@ -161821,8 +162143,8 @@ call 302 ir_call_emit_ir_emit_call1 void 4 298 299 300 301 call 303 pith_cstring_release void 1 299 call 304 pith_cstring_release void 1 300 load 305 has_index -brif 305 L4141 L4142 -label L4141 +brif 305 L4183 L4184 +label L4183 call 306 ir_builder_ir_reg int 0 store p3 306 strref 307 m46s824 @@ -161897,9 +162219,9 @@ call 373 pith_cstring_release void 1 367 call 374 pith_cstring_release void 1 371 call 375 ir_builder_ir_emit void 1 372 call 376 pith_cstring_release void 1 372 -jmp L4140 -label L4142 -label L4140 +jmp L4182 +label L4184 +label L4182 strref 377 m46s828 load 378 head_l concat 379 377 378 @@ -161936,100 +162258,100 @@ func ir_emitter_core_ir_stmt_control 2 void param idx param node iconst 2 0 -store __or_2_4146 2 +store __or_2_4188 2 load 3 node field 4 3 0 string kind strref 5 m46s1184 call 6 pith_cstring_eq bool 2 4 5 call 7 pith_cstring_release void 1 5 -store __or_2_4146 6 -brif 6 L4147 L4146 -label L4146 +store __or_2_4188 6 +brif 6 L4189 L4188 +label L4188 load 8 node field 9 8 0 string kind strref 10 m46s570 call 11 pith_cstring_eq bool 2 9 10 call 12 pith_cstring_release void 1 10 -store __or_2_4146 11 -label L4147 -load 13 __or_2_4146 -brif 13 L4144 L4145 -label L4144 +store __or_2_4188 11 +label L4189 +load 13 __or_2_4188 +brif 13 L4186 L4187 +label L4186 load 14 node call 15 ir_emitter_core_ir_emit_if_stmt void 1 14 -jmp L4143 -label L4145 +jmp L4185 +label L4187 load 16 node field 17 16 0 string kind strref 18 m46s568 call 19 pith_cstring_eq bool 2 17 18 call 20 pith_cstring_release void 1 18 -brif 19 L4148 L4149 -label L4148 +brif 19 L4190 L4191 +label L4190 load 21 node call 22 ir_emitter_core_ir_emit_if_let_stmt void 1 21 -jmp L4143 -label L4149 +jmp L4185 +label L4191 load 23 node field 24 23 0 string kind strref 25 m46s567 call 26 pith_cstring_eq bool 2 24 25 call 27 pith_cstring_release void 1 25 -brif 26 L4150 L4151 -label L4150 +brif 26 L4192 L4193 +label L4192 load 28 node call 29 ir_emitter_core_ir_emit_while_let_stmt void 1 28 -jmp L4143 -label L4151 +jmp L4185 +label L4193 iconst 30 0 -store __or_30_4154 30 +store __or_30_4196 30 load 31 node field 32 31 0 string kind strref 33 m46s1183 call 34 pith_cstring_eq bool 2 32 33 call 35 pith_cstring_release void 1 33 -store __or_30_4154 34 -brif 34 L4155 L4154 -label L4154 +store __or_30_4196 34 +brif 34 L4197 L4196 +label L4196 load 36 node field 37 36 0 string kind strref 38 m46s569 call 39 pith_cstring_eq bool 2 37 38 call 40 pith_cstring_release void 1 38 -store __or_30_4154 39 -label L4155 -load 41 __or_30_4154 -brif 41 L4152 L4153 -label L4152 +store __or_30_4196 39 +label L4197 +load 41 __or_30_4196 +brif 41 L4194 L4195 +label L4194 load 42 node call 43 ir_emitter_core_ir_emit_while_stmt void 1 42 -jmp L4143 -label L4153 +jmp L4185 +label L4195 iconst 44 0 -store __or_44_4158 44 +store __or_44_4200 44 load 45 node field 46 45 0 string kind strref 47 m46s1182 call 48 pith_cstring_eq bool 2 46 47 call 49 pith_cstring_release void 1 47 -store __or_44_4158 48 -brif 48 L4159 L4158 -label L4158 +store __or_44_4200 48 +brif 48 L4201 L4200 +label L4200 load 50 node field 51 50 0 string kind strref 52 m46s566 call 53 pith_cstring_eq bool 2 51 52 call 54 pith_cstring_release void 1 52 -store __or_44_4158 53 -label L4159 -load 55 __or_44_4158 -brif 55 L4156 L4157 -label L4156 +store __or_44_4200 53 +label L4201 +load 55 __or_44_4200 +brif 55 L4198 L4199 +label L4198 load 56 node call 57 ir_emitter_core_ir_emit_for_stmt void 1 56 -jmp L4143 -label L4157 -label L4143 +jmp L4185 +label L4199 +label L4185 iconst 58 0 ret 58 endfunc @@ -162043,59 +162365,59 @@ call 4 ast_node_kind string 1 3 call 5 pith_cstring_release void 1 2 store kind 4 iconst 6 0 -store __or_6_4163 6 +store __or_6_4205 6 iconst 7 0 -store __or_7_4163 7 +store __or_7_4205 7 iconst 8 0 -store __or_8_4163 8 +store __or_8_4205 8 load 9 kind strref 10 m46s64 call 11 pith_cstring_eq bool 2 9 10 call 12 pith_cstring_release void 1 10 -store __or_8_4163 11 -brif 11 L4164 L4163 -label L4163 +store __or_8_4205 11 +brif 11 L4206 L4205 +label L4205 load 13 kind strref 14 m46s528 call 15 pith_cstring_eq bool 2 13 14 call 16 pith_cstring_release void 1 14 -store __or_8_4163 15 -label L4164 -load 17 __or_8_4163 -store __or_7_4163 17 -brif 17 L4166 L4165 -label L4165 +store __or_8_4205 15 +label L4206 +load 17 __or_8_4205 +store __or_7_4205 17 +brif 17 L4208 L4207 +label L4207 load 18 kind strref 19 m46s527 call 20 pith_cstring_eq bool 2 18 19 call 21 pith_cstring_release void 1 19 -store __or_7_4163 20 -label L4166 -load 22 __or_7_4163 -store __or_6_4163 22 -brif 22 L4168 L4167 -label L4167 +store __or_7_4205 20 +label L4208 +load 22 __or_7_4205 +store __or_6_4205 22 +brif 22 L4210 L4209 +label L4209 load 23 kind strref 24 m46s65 call 25 pith_cstring_eq bool 2 23 24 call 26 pith_cstring_release void 1 24 -store __or_6_4163 25 -label L4168 -load 27 __or_6_4163 -brif 27 L4161 L4162 -label L4161 +store __or_6_4205 25 +label L4210 +load 27 __or_6_4205 +brif 27 L4203 L4204 +label L4203 call 28 ir_emitter_core_ir_defer_push_scope void 0 iconst 29 0 store i 29 load 30 idx call 31 ast_node_child_count int 1 30 store child_count 31 -label L4169 +label L4211 load 32 i load 33 child_count lt 34 32 33 -brif 34 L4170 L4171 -label L4170 +brif 34 L4212 L4213 +label L4212 load 35 idx load 36 i call 37 ast_node_child int 2 35 36 @@ -162104,23 +162426,23 @@ load 39 i iconst 40 1 add 41 39 40 store i 41 -jmp L4169 -label L4171 +jmp L4211 +label L4213 call 42 ir_emitter_core_ir_defer_pop_scope_emit void 0 -jmp L4160 -label L4162 +jmp L4202 +label L4204 load 43 kind strref 44 m46s553 call 45 pith_cstring_eq bool 2 43 44 call 46 pith_cstring_release void 1 44 -brif 45 L4173 L4174 -label L4173 +brif 45 L4215 L4216 +label L4215 load 47 ir_emitter_core_ir_break_stack call 48 pith_list_len int 1 47 iconst 49 0 gt 50 48 49 -brif 50 L4176 L4177 -label L4176 +brif 50 L4218 L4219 +label L4218 call 51 ir_emitter_core_ir_defer_emit_for_loop_jump void 0 strref 52 m46s828 load 53 ir_emitter_core_ir_break_stack @@ -162135,27 +162457,27 @@ call 61 ir_builder_ir_emit void 1 59 call 62 pith_cstring_release void 1 59 iconst 63 1 store ir_call_emit_ir_last_was_ret 63 -jmp L4175 -label L4177 -label L4175 +jmp L4217 +label L4219 +label L4217 iconst 64 0 load 65 kind call 66 pith_cstring_release void 1 65 ret 64 -label L4174 -label L4172 +label L4216 +label L4214 load 67 kind strref 68 m46s552 call 69 pith_cstring_eq bool 2 67 68 call 70 pith_cstring_release void 1 68 -brif 69 L4179 L4180 -label L4179 +brif 69 L4221 L4222 +label L4221 load 71 ir_emitter_core_ir_continue_stack call 72 pith_list_len int 1 71 iconst 73 0 gt 74 72 73 -brif 74 L4182 L4183 -label L4182 +brif 74 L4224 L4225 +label L4224 call 75 ir_emitter_core_ir_defer_emit_for_loop_jump void 0 strref 76 m46s828 load 77 ir_emitter_core_ir_continue_stack @@ -162170,18 +162492,18 @@ call 85 ir_builder_ir_emit void 1 83 call 86 pith_cstring_release void 1 83 iconst 87 1 store ir_call_emit_ir_last_was_ret 87 -jmp L4181 -label L4183 -label L4181 +jmp L4223 +label L4225 +label L4223 iconst 88 0 load 89 kind call 90 pith_cstring_release void 1 89 ret 88 -label L4180 -label L4178 +label L4222 +label L4220 load 91 idx call 92 ir_emitter_core_ir_stmt void 1 91 -label L4160 +label L4202 iconst 93 0 load 94 kind call 95 pith_cstring_release void 1 94 @@ -162201,25 +162523,25 @@ call 4 ast_get_node struct:Node 1 3 call 5 pith_struct_release void 1 2 store node 4 iconst 6 0 -store __and_6_4187 6 +store __and_6_4229 6 load 7 node field 8 7 0 string kind strref 9 m46s68 call 10 pith_cstring_eq bool 2 8 9 call 11 pith_cstring_release void 1 9 -store __and_6_4187 10 -brif 10 L4187 L4188 -label L4187 +store __and_6_4229 10 +brif 10 L4229 L4230 +label L4229 load 12 node field 13 12 16 list children call 14 pith_list_len int 1 13 iconst 15 0 gt 16 14 15 -store __and_6_4187 16 -label L4188 -load 17 __and_6_4187 -brif 17 L4185 L4186 -label L4185 +store __and_6_4229 16 +label L4230 +load 17 __and_6_4229 +brif 17 L4227 L4228 +label L4227 load 18 node field 19 18 16 list children iconst 20 0 @@ -162228,8 +162550,8 @@ call 22 ir_alias_registry_ir_resolve_type_node string 1 21 load 23 node call 24 pith_struct_release void 1 23 ret 22 -label L4186 -label L4184 +label L4228 +label L4226 strref 25 m46s165 load 26 node call 27 pith_struct_release void 1 26 @@ -162260,13 +162582,13 @@ call 12 pith_list_release_handle void 1 8 store nk 10 iconst 13 0 store i 13 -label L4189 +label L4231 load 14 i load 15 nk call 16 pith_list_len int 1 15 lt 17 14 16 -brif 17 L4190 L4191 -label L4190 +brif 17 L4232 L4233 +label L4232 load 18 cn load 19 nk load 20 i @@ -162279,8 +162601,8 @@ field 25 24 0 string kind strref 26 m46s65 call 27 pith_cstring_eq bool 2 25 26 call 28 pith_cstring_release void 1 26 -brif 27 L4193 L4194 -label L4193 +brif 27 L4235 L4236 +label L4235 load 29 nk load 30 i call 31 pith_list_get_value_strict int 2 29 30 @@ -162291,20 +162613,20 @@ call 35 pith_list_release_handle void 1 34 load 36 cn call 37 pith_struct_release void 1 36 ret 31 -label L4194 -label L4192 +label L4236 +label L4234 load 38 i iconst 39 1 add 40 38 39 store i 40 -jmp L4189 -label L4191 +jmp L4231 +label L4233 load 41 nk call 42 pith_list_len int 1 41 iconst 43 0 gt 44 42 43 -brif 44 L4196 L4197 -label L4196 +brif 44 L4238 L4239 +label L4238 load 45 nk load 46 nk call 47 pith_list_len int 1 46 @@ -162318,8 +162640,8 @@ call 54 pith_list_release_handle void 1 53 load 55 cn call 56 pith_struct_release void 1 55 ret 50 -label L4197 -label L4195 +label L4239 +label L4237 iconst 57 0 iconst 58 1 sub 59 57 58 @@ -162366,12 +162688,12 @@ iconst 16 0 store __for_idx_356 16 store __for_len_356 15 store __for_iter_356 14 -label L4198 +label L4240 load 17 __for_idx_356 load 18 __for_len_356 lt 19 17 18 -brif 19 L4199 L4201 -label L4199 +brif 19 L4241 L4243 +label L4241 load 20 __for_iter_356 load 21 __for_idx_356 call 22 pith_list_get_value unknown 2 20 21 @@ -162386,22 +162708,22 @@ field 28 27 0 string kind strref 29 m46s68 call 30 pith_cstring_eq bool 2 28 29 call 31 pith_cstring_release void 1 29 -brif 30 L4203 L4204 -label L4203 +brif 30 L4245 L4246 +label L4245 load 32 count iconst 33 1 add 34 32 33 store count 34 -jmp L4202 -label L4204 -label L4202 -label L4200 +jmp L4244 +label L4246 +label L4244 +label L4242 load 35 __for_idx_356 iconst 36 1 add 37 35 36 store __for_idx_356 37 -jmp L4198 -label L4201 +jmp L4240 +label L4243 load 38 count load 39 node call 40 pith_struct_release void 1 39 @@ -162435,7 +162757,7 @@ call 7 ast_get_node struct:Node 1 6 call 8 pith_struct_release void 1 5 store node 7 iconst 9 0 -store __or_9_4208 9 +store __or_9_4250 9 load 10 node field 11 10 0 string kind strref 12 m46s68 @@ -162443,19 +162765,19 @@ call 14 pith_cstring_eq bool 2 11 12 iconst 15 1 sub 13 15 14 call 16 pith_cstring_release void 1 12 -store __or_9_4208 13 -brif 13 L4209 L4208 -label L4208 +store __or_9_4250 13 +brif 13 L4251 L4250 +label L4250 load 17 node field 18 17 16 list children call 19 pith_list_len int 1 18 iconst 20 0 eq 21 19 20 -store __or_9_4208 21 -label L4209 -load 22 __or_9_4208 -brif 22 L4206 L4207 -label L4206 +store __or_9_4250 21 +label L4251 +load 22 __or_9_4250 +brif 22 L4248 L4249 +label L4248 load 23 node call 24 pith_struct_release void 1 23 load 25 tn @@ -162466,8 +162788,8 @@ load 29 ret_kind call 30 pith_cstring_release void 1 29 iconst 31 0 ret 31 -label L4207 -label L4205 +label L4249 +label L4247 load 32 tn load 33 node field 34 33 16 list children @@ -162477,7 +162799,7 @@ call 37 ast_get_node struct:Node 1 36 call 38 pith_struct_release void 1 32 store tn 37 iconst 39 0 -store __or_39_4213 39 +store __or_39_4255 39 load 40 tn field 41 40 0 string kind strref 42 m46s315 @@ -162485,19 +162807,19 @@ call 44 pith_cstring_eq bool 2 41 42 iconst 45 1 sub 43 45 44 call 46 pith_cstring_release void 1 42 -store __or_39_4213 43 -brif 43 L4214 L4213 -label L4213 +store __or_39_4255 43 +brif 43 L4256 L4255 +label L4255 load 47 tn field 48 47 16 list children call 49 pith_list_len int 1 48 iconst 50 0 eq 51 49 50 -store __or_39_4213 51 -label L4214 -load 52 __or_39_4213 -brif 52 L4211 L4212 -label L4211 +store __or_39_4255 51 +label L4256 +load 52 __or_39_4255 +brif 52 L4253 L4254 +label L4253 load 53 node call 54 pith_struct_release void 1 53 load 55 tn @@ -162508,8 +162830,8 @@ load 59 ret_kind call 60 pith_cstring_release void 1 59 iconst 61 0 ret 61 -label L4212 -label L4210 +label L4254 +label L4252 load 62 last load 63 tn field 64 63 16 list children @@ -162523,7 +162845,7 @@ call 71 ast_get_node struct:Node 1 70 call 72 pith_struct_release void 1 62 store last 71 iconst 73 0 -store __or_73_4218 73 +store __or_73_4260 73 load 74 last field 75 74 0 string kind strref 76 m46s310 @@ -162531,19 +162853,19 @@ call 78 pith_cstring_eq bool 2 75 76 iconst 79 1 sub 77 79 78 call 80 pith_cstring_release void 1 76 -store __or_73_4218 77 -brif 77 L4219 L4218 -label L4218 +store __or_73_4260 77 +brif 77 L4261 L4260 +label L4260 load 81 last field 82 81 16 list children call 83 pith_list_len int 1 82 iconst 84 0 eq 85 83 84 -store __or_73_4218 85 -label L4219 -load 86 __or_73_4218 -brif 86 L4216 L4217 -label L4216 +store __or_73_4260 85 +label L4261 +load 86 __or_73_4260 +brif 86 L4258 L4259 +label L4258 load 87 node call 88 pith_struct_release void 1 87 load 89 tn @@ -162554,8 +162876,8 @@ load 93 ret_kind call 94 pith_cstring_release void 1 93 iconst 95 0 ret 95 -label L4217 -label L4215 +label L4259 +label L4257 load 96 ret_kind load 97 last field 98 97 16 list children @@ -162568,16 +162890,16 @@ load 103 ret_kind call 104 string_len int 1 103 iconst 105 0 gt 106 104 105 -brif 106 L4221 L4222 -label L4221 +brif 106 L4263 L4264 +label L4263 load 107 ir_emitter_core_ir_closure_return_kinds load 108 node field 109 108 8 string value load 110 ret_kind call 111 map_insert void 3 107 109 110 -jmp L4220 -label L4222 -label L4220 +jmp L4262 +label L4264 +label L4262 load 112 node call 113 pith_struct_release void 1 112 load 114 tn @@ -162602,15 +162924,15 @@ load 7 param_type call 8 string_len int 1 7 iconst 9 0 gt 10 8 9 -brif 10 L4224 L4225 -label L4224 +brif 10 L4266 L4267 +label L4266 load 11 ir_builder_ir_var_types load 12 name load 13 param_type call 14 map_insert void 3 11 12 13 -jmp L4223 -label L4225 -label L4223 +jmp L4265 +label L4267 +label L4265 strref 15 m46s1181 load 16 name concat 17 15 16 @@ -162647,12 +162969,12 @@ iconst 16 0 store __for_idx_357 16 store __for_len_357 15 store __for_iter_357 14 -label L4226 +label L4268 load 17 __for_idx_357 load 18 __for_len_357 lt 19 17 18 -brif 19 L4227 L4229 -label L4227 +brif 19 L4269 L4271 +label L4269 load 20 __for_iter_357 load 21 __for_idx_357 call 22 pith_list_get_value unknown 2 20 21 @@ -162667,8 +162989,8 @@ field 28 27 0 string kind strref 29 m46s68 call 30 pith_cstring_eq bool 2 28 29 call 31 pith_cstring_release void 1 29 -brif 30 L4231 L4232 -label L4231 +brif 30 L4273 L4274 +label L4273 load 32 ptype load 33 child call 34 ir_emitter_core_ir_extract_param_type string 1 33 @@ -162678,33 +163000,33 @@ load 36 ir_emitter_core_ir_current_impl_type call 37 string_len int 1 36 iconst 38 0 gt 39 37 38 -brif 39 L4234 L4235 -label L4234 +brif 39 L4276 L4277 +label L4276 load 40 ptype load 41 ir_emitter_core_ir_current_impl_type load 42 ptype call 43 ir_method_tables_ir_resolve_assoc_type string 2 41 42 call 44 pith_cstring_release void 1 40 store ptype 43 -jmp L4233 -label L4235 -label L4233 +jmp L4275 +label L4277 +label L4275 load 45 cn field 46 45 8 string value load 47 ptype call 48 ir_emitter_core_ir_emit_named_param void 2 46 47 load 49 child call 50 ir_emitter_core_ir_record_closure_param_return void 1 49 -jmp L4230 -label L4232 -label L4230 -label L4228 +jmp L4272 +label L4274 +label L4272 +label L4270 load 51 __for_idx_357 iconst 52 1 add 53 51 52 store __for_idx_357 53 -jmp L4226 -label L4229 +jmp L4268 +label L4271 load 54 node call 55 pith_struct_release void 1 54 load 56 nk @@ -162736,12 +163058,12 @@ iconst 11 0 store __for_idx_358 11 store __for_len_358 10 store __for_iter_358 9 -label L4236 +label L4278 load 12 __for_idx_358 load 13 __for_len_358 lt 14 12 13 -brif 14 L4237 L4239 -label L4237 +brif 14 L4279 L4281 +label L4279 load 15 __for_iter_358 load 16 __for_idx_358 call 17 pith_list_get_value unknown 2 15 16 @@ -162756,8 +163078,8 @@ field 23 22 0 string kind strref 24 m46s310 call 25 pith_cstring_eq bool 2 23 24 call 26 pith_cstring_release void 1 24 -brif 25 L4241 L4242 -label L4241 +brif 25 L4283 L4284 +label L4283 load 27 cn field 28 27 16 list children call 29 pith_auto_len int 1 28 @@ -162765,12 +163087,12 @@ iconst 30 0 store __for_idx_359 30 store __for_len_359 29 store __for_iter_359 28 -label L4243 +label L4285 load 31 __for_idx_359 load 32 __for_len_359 lt 33 31 32 -brif 33 L4244 L4246 -label L4244 +brif 33 L4286 L4288 +label L4286 load 34 __for_iter_359 load 35 __for_idx_359 call 36 pith_list_get_value unknown 2 34 35 @@ -162781,51 +163103,51 @@ call 39 ast_get_node struct:Node 1 38 call 40 pith_struct_release void 1 37 store rn 39 iconst 41 0 -store __or_41_4250 41 +store __or_41_4292 41 iconst 42 0 -store __or_42_4250 42 +store __or_42_4292 42 iconst 43 0 -store __or_43_4250 43 +store __or_43_4292 43 load 44 rn field 45 44 0 string kind strref 46 m46s325 call 47 pith_cstring_eq bool 2 45 46 call 48 pith_cstring_release void 1 46 -store __or_43_4250 47 -brif 47 L4251 L4250 -label L4250 +store __or_43_4292 47 +brif 47 L4293 L4292 +label L4292 load 49 rn field 50 49 0 string kind strref 51 m46s324 call 52 pith_cstring_eq bool 2 50 51 call 53 pith_cstring_release void 1 51 -store __or_43_4250 52 -label L4251 -load 54 __or_43_4250 -store __or_42_4250 54 -brif 54 L4253 L4252 -label L4252 +store __or_43_4292 52 +label L4293 +load 54 __or_43_4292 +store __or_42_4292 54 +brif 54 L4295 L4294 +label L4294 load 55 rn field 56 55 0 string kind strref 57 m46s317 call 58 pith_cstring_eq bool 2 56 57 call 59 pith_cstring_release void 1 57 -store __or_42_4250 58 -label L4253 -load 60 __or_42_4250 -store __or_41_4250 60 -brif 60 L4255 L4254 -label L4254 +store __or_42_4292 58 +label L4295 +load 60 __or_42_4292 +store __or_41_4292 60 +brif 60 L4297 L4296 +label L4296 load 61 rn field 62 61 0 string kind strref 63 m46s318 call 64 pith_cstring_eq bool 2 62 63 call 65 pith_cstring_release void 1 63 -store __or_41_4250 64 -label L4255 -load 66 __or_41_4250 -brif 66 L4248 L4249 -label L4248 +store __or_41_4292 64 +label L4297 +load 66 __or_41_4292 +brif 66 L4290 L4291 +label L4290 load 67 returns_child call 68 ir_alias_registry_ir_resolve_type_node string 1 67 load 69 node @@ -162835,25 +163157,25 @@ call 72 pith_struct_release void 1 71 load 73 rn call 74 pith_struct_release void 1 73 ret 68 -label L4249 -label L4247 -label L4245 +label L4291 +label L4289 +label L4287 load 75 __for_idx_359 iconst 76 1 add 77 75 76 store __for_idx_359 77 -jmp L4243 -label L4246 -jmp L4240 -label L4242 -label L4240 -label L4238 +jmp L4285 +label L4288 +jmp L4282 +label L4284 +label L4282 +label L4280 load 78 __for_idx_358 iconst 79 1 add 80 78 79 store __for_idx_358 80 -jmp L4236 -label L4239 +jmp L4278 +label L4281 strref 81 m46s817 load 82 node call 83 pith_struct_release void 1 82 @@ -162891,12 +163213,12 @@ iconst 11 0 store __for_idx_360 11 store __for_len_360 10 store __for_iter_360 9 -label L4256 +label L4298 load 12 __for_idx_360 load 13 __for_len_360 lt 14 12 13 -brif 14 L4257 L4259 -label L4257 +brif 14 L4299 L4301 +label L4299 load 15 __for_iter_360 load 16 __for_idx_360 call 17 pith_list_get_value unknown 2 15 16 @@ -162911,8 +163233,8 @@ field 23 22 0 string kind strref 24 m46s310 call 25 pith_cstring_eq bool 2 23 24 call 26 pith_cstring_release void 1 24 -brif 25 L4261 L4262 -label L4261 +brif 25 L4303 L4304 +label L4303 load 27 cn field 28 27 16 list children call 29 pith_auto_len int 1 28 @@ -162920,12 +163242,12 @@ iconst 30 0 store __for_idx_361 30 store __for_len_361 29 store __for_iter_361 28 -label L4263 +label L4305 load 31 __for_idx_361 load 32 __for_len_361 lt 33 31 32 -brif 33 L4264 L4266 -label L4264 +brif 33 L4306 L4308 +label L4306 load 34 __for_iter_361 load 35 __for_idx_361 call 36 pith_list_get_value unknown 2 34 35 @@ -162936,25 +163258,25 @@ call 39 ast_get_node struct:Node 1 38 call 40 pith_struct_release void 1 37 store rn 39 iconst 41 0 -store __and_41_4270 41 +store __and_41_4312 41 load 42 rn field 43 42 0 string kind strref 44 m46s318 call 45 pith_cstring_eq bool 2 43 44 call 46 pith_cstring_release void 1 44 -store __and_41_4270 45 -brif 45 L4270 L4271 -label L4270 +store __and_41_4312 45 +brif 45 L4312 L4313 +label L4312 load 47 rn field 48 47 16 list children call 49 pith_list_len int 1 48 iconst 50 0 gt 51 49 50 -store __and_41_4270 51 -label L4271 -load 52 __and_41_4270 -brif 52 L4268 L4269 -label L4268 +store __and_41_4312 51 +label L4313 +load 52 __and_41_4312 +brif 52 L4310 L4311 +label L4310 load 53 rn field 54 53 16 list children iconst 55 0 @@ -162967,25 +163289,25 @@ call 61 pith_struct_release void 1 60 load 62 rn call 63 pith_struct_release void 1 62 ret 57 -label L4269 -label L4267 -label L4265 +label L4311 +label L4309 +label L4307 load 64 __for_idx_361 iconst 65 1 add 66 64 65 store __for_idx_361 66 -jmp L4263 -label L4266 -jmp L4260 -label L4262 -label L4260 -label L4258 +jmp L4305 +label L4308 +jmp L4302 +label L4304 +label L4302 +label L4300 load 67 __for_idx_360 iconst 68 1 add 69 67 68 store __for_idx_360 69 -jmp L4256 -label L4259 +jmp L4298 +label L4301 strref 70 m46s82 load 71 node call 72 pith_struct_release void 1 71 @@ -163023,12 +163345,12 @@ iconst 11 0 store __for_idx_362 11 store __for_len_362 10 store __for_iter_362 9 -label L4272 +label L4314 load 12 __for_idx_362 load 13 __for_len_362 lt 14 12 13 -brif 14 L4273 L4275 -label L4273 +brif 14 L4315 L4317 +label L4315 load 15 __for_iter_362 load 16 __for_idx_362 call 17 pith_list_get_value unknown 2 15 16 @@ -163043,8 +163365,8 @@ field 23 22 0 string kind strref 24 m46s310 call 25 pith_cstring_eq bool 2 23 24 call 26 pith_cstring_release void 1 24 -brif 25 L4277 L4278 -label L4277 +brif 25 L4319 L4320 +label L4319 load 27 cn field 28 27 16 list children call 29 pith_auto_len int 1 28 @@ -163052,12 +163374,12 @@ iconst 30 0 store __for_idx_363 30 store __for_len_363 29 store __for_iter_363 28 -label L4279 +label L4321 load 31 __for_idx_363 load 32 __for_len_363 lt 33 31 32 -brif 33 L4280 L4282 -label L4280 +brif 33 L4322 L4324 +label L4322 load 34 __for_iter_363 load 35 __for_idx_363 call 36 pith_list_get_value unknown 2 34 35 @@ -163072,8 +163394,8 @@ field 42 41 0 string kind strref 43 m46s317 call 44 pith_cstring_eq bool 2 42 43 call 45 pith_cstring_release void 1 43 -brif 44 L4284 L4285 -label L4284 +brif 44 L4326 L4327 +label L4326 iconst 46 1 load 47 node call 48 pith_struct_release void 1 47 @@ -163082,25 +163404,25 @@ call 50 pith_struct_release void 1 49 load 51 rn call 52 pith_struct_release void 1 51 ret 46 -label L4285 -label L4283 -label L4281 +label L4327 +label L4325 +label L4323 load 53 __for_idx_363 iconst 54 1 add 55 53 54 store __for_idx_363 55 -jmp L4279 -label L4282 -jmp L4276 -label L4278 -label L4276 -label L4274 +jmp L4321 +label L4324 +jmp L4318 +label L4320 +label L4318 +label L4316 load 56 __for_idx_362 iconst 57 1 add 58 56 57 store __for_idx_362 58 -jmp L4272 -label L4275 +jmp L4314 +label L4317 iconst 59 0 load 60 node call 61 pith_struct_release void 1 60 @@ -163135,8 +163457,8 @@ load 7 type_name call 8 string_len int 1 7 iconst 9 0 eq 10 8 9 -brif 10 L4287 L4288 -label L4287 +brif 10 L4329 L4330 +label L4329 strref 11 m46s82 load 12 key call 13 pith_cstring_release void 1 12 @@ -163149,8 +163471,8 @@ call 19 pith_cstring_release void 1 18 load 20 base_key call 21 pith_cstring_release void 1 20 ret 11 -label L4288 -label L4286 +label L4330 +label L4328 load 22 key load 23 type_name load 24 method_name @@ -163160,8 +163482,8 @@ store key 25 load 27 ir_method_tables_ir_impl_methods load 28 key call 29 contains_key bool 2 27 28 -brif 29 L4290 L4291 -label L4290 +brif 29 L4332 L4333 +label L4332 load 30 ir_method_tables_ir_impl_methods load 31 key call 32 map_get_strict string 2 30 31 @@ -163177,8 +163499,8 @@ call 41 pith_cstring_release void 1 40 load 42 base_key call 43 pith_cstring_release void 1 42 ret 32 -label L4291 -label L4289 +label L4333 +label L4331 load 44 resolved load 45 type_name call 46 ir_alias_registry_ir_resolve_type_hint string 1 45 @@ -163189,8 +163511,8 @@ load 49 type_name call 51 pith_cstring_eq bool 2 48 49 iconst 52 1 sub 50 52 51 -brif 50 L4293 L4294 -label L4293 +brif 50 L4335 L4336 +label L4335 load 53 resolved_key load 54 resolved load 55 method_name @@ -163200,8 +163522,8 @@ store resolved_key 56 load 58 ir_method_tables_ir_impl_methods load 59 resolved_key call 60 contains_key bool 2 58 59 -brif 60 L4296 L4297 -label L4296 +brif 60 L4338 L4339 +label L4338 load 61 ir_method_tables_ir_impl_methods load 62 resolved_key call 63 map_get_strict string 2 61 62 @@ -163217,17 +163539,17 @@ call 72 pith_cstring_release void 1 71 load 73 base_key call 74 pith_cstring_release void 1 73 ret 63 -label L4297 -label L4295 -jmp L4292 -label L4294 -label L4292 +label L4339 +label L4337 +jmp L4334 +label L4336 +label L4334 load 75 type_name strref 76 m46s332 call 77 pith_cstring_contains bool 2 75 76 call 78 pith_cstring_release void 1 76 -brif 77 L4299 L4300 -label L4299 +brif 77 L4341 L4342 +label L4341 load 79 base load 80 type_name iconst 81 0 @@ -163247,8 +163569,8 @@ store base_key 91 load 93 ir_method_tables_ir_impl_methods load 94 base_key call 95 contains_key bool 2 93 94 -brif 95 L4302 L4303 -label L4302 +brif 95 L4344 L4345 +label L4344 load 96 ir_method_tables_ir_impl_methods load 97 base_key call 98 map_get_strict string 2 96 97 @@ -163264,11 +163586,11 @@ call 107 pith_cstring_release void 1 106 load 108 base_key call 109 pith_cstring_release void 1 108 ret 98 -label L4303 -label L4301 -jmp L4298 -label L4300 -label L4298 +label L4345 +label L4343 +jmp L4340 +label L4342 +label L4340 strref 110 m46s82 load 111 key call 112 pith_cstring_release void 1 111 @@ -163306,12 +163628,12 @@ iconst 6 0 store __for_idx_364 6 store __for_len_364 5 store __for_iter_364 4 -label L4304 +label L4346 load 7 __for_idx_364 load 8 __for_len_364 lt 9 7 8 -brif 9 L4305 L4307 -label L4305 +brif 9 L4347 L4349 +label L4347 load 10 __for_iter_364 load 11 __for_idx_364 call 12 pith_list_get_value unknown 2 10 11 @@ -163326,21 +163648,21 @@ field 18 17 0 string kind strref 19 m46s585 call 20 pith_cstring_eq bool 2 18 19 call 21 pith_cstring_release void 1 19 -brif 20 L4309 L4310 -label L4309 +brif 20 L4351 L4352 +label L4351 load 22 node load 23 module_path call 24 ir_emitter_core_ir_collect_impl_method_signatures void 2 22 23 -jmp L4308 -label L4310 -label L4308 -label L4306 +jmp L4350 +label L4352 +label L4350 +label L4348 load 25 __for_idx_364 iconst 26 1 add 27 25 26 store __for_idx_364 27 -jmp L4304 -label L4307 +jmp L4346 +label L4349 load 28 __for_iter_364 call 29 pith_list_release_handle void 1 28 load 30 node @@ -163360,12 +163682,12 @@ iconst 6 0 store __for_idx_365 6 store __for_len_365 5 store __for_iter_365 4 -label L4311 +label L4353 load 7 __for_idx_365 load 8 __for_len_365 lt 9 7 8 -brif 9 L4312 L4314 -label L4312 +brif 9 L4354 L4356 +label L4354 load 10 __for_iter_365 load 11 __for_idx_365 call 12 pith_list_get_value unknown 2 10 11 @@ -163376,34 +163698,34 @@ call 15 ast_get_node struct:Node 1 14 call 16 pith_struct_release void 1 13 store node 15 iconst 17 0 -store __and_17_4318 17 +store __and_17_4360 17 load 18 node field 19 18 0 string kind call 20 ir_generics_ir_is_fn_decl_kind bool 1 19 -store __and_17_4318 20 -brif 20 L4318 L4319 -label L4318 +store __and_17_4360 20 +brif 20 L4360 L4361 +label L4360 load 21 node call 22 ir_generics_ir_has_generic_params bool 1 21 -store __and_17_4318 22 -label L4319 -load 23 __and_17_4318 -brif 23 L4316 L4317 -label L4316 +store __and_17_4360 22 +label L4361 +load 23 __and_17_4360 +brif 23 L4358 L4359 +label L4358 load 24 item_idx load 25 node load 26 module_path call 27 ir_generics_ir_record_generic_function_decl void 3 24 25 26 -jmp L4315 -label L4317 -label L4315 -label L4313 +jmp L4357 +label L4359 +label L4357 +label L4355 load 28 __for_idx_365 iconst 29 1 add 30 28 29 store __for_idx_365 30 -jmp L4311 -label L4314 +jmp L4353 +label L4356 load 31 __for_iter_365 call 32 pith_list_release_handle void 1 31 load 33 node @@ -163419,13 +163741,13 @@ load 3 name call 4 contains_key bool 2 2 3 iconst 6 1 sub 5 6 4 -brif 5 L4321 L4322 -label L4321 +brif 5 L4363 L4364 +label L4363 load 7 node call 8 ir_emitter_core_ir_generic_arg_types list_string 1 7 ret 8 -label L4322 -label L4320 +label L4364 +label L4362 load 9 name load 10 node load 11 ir_generics_ir_generic_decl_indices @@ -163450,8 +163772,8 @@ field 8 7 0 string kind strref 9 m46s37 call 10 pith_cstring_eq bool 2 8 9 call 11 pith_cstring_release void 1 9 -brif 10 L4324 L4325 -label L4324 +brif 10 L4366 L4367 +label L4366 load 12 resolved load 13 type_node field 14 13 8 string value @@ -163464,14 +163786,14 @@ load 19 resolved call 20 string_len int 1 19 iconst 21 0 gt 22 20 21 -brif 22 L4327 L4328 -label L4327 +brif 22 L4369 L4370 +label L4369 load 23 resolved load 24 type_node call 25 pith_struct_release void 1 24 ret 23 -label L4328 -label L4326 +label L4370 +label L4368 load 26 type_node field 27 26 8 string value call 28 ir_alias_registry_ir_resolve_type_hint string 1 27 @@ -163480,8 +163802,8 @@ call 30 pith_struct_release void 1 29 load 31 resolved call 32 pith_cstring_release void 1 31 ret 28 -label L4325 -label L4323 +label L4367 +label L4365 load 33 type_idx load 34 ir_alias_registry_ir_active_generic_params load 35 ir_alias_registry_ir_active_generic_concrete_types @@ -163508,14 +163830,14 @@ call 4 pith_list_release_handle void 1 2 store concrete_types 3 iconst 5 1 store i 5 -label L4329 +label L4371 load 6 i load 7 index_node field 8 7 16 list children call 9 pith_list_len int 1 8 lt 10 6 9 -brif 10 L4330 L4331 -label L4330 +brif 10 L4372 L4373 +label L4372 load 11 concrete_types load 12 index_node field 13 12 16 list children @@ -163527,8 +163849,8 @@ load 18 i iconst 19 1 add 20 18 19 store i 20 -jmp L4329 -label L4331 +jmp L4371 +label L4373 load 21 concrete_types ret 21 load 22 concrete_types @@ -163559,12 +163881,12 @@ iconst 13 0 store __for_idx_366 13 store __for_len_366 12 store __for_iter_366 11 -label L4332 +label L4374 load 14 __for_idx_366 load 15 __for_len_366 lt 16 14 15 -brif 16 L4333 L4335 -label L4333 +brif 16 L4375 L4377 +label L4375 load 17 __for_iter_366 load 18 __for_idx_366 call 19 pith_list_get_value unknown 2 17 18 @@ -163579,8 +163901,8 @@ field 25 24 0 string kind strref 26 m46s68 call 27 pith_cstring_eq bool 2 25 26 call 28 pith_cstring_release void 1 26 -brif 27 L4337 L4338 -label L4337 +brif 27 L4379 L4380 +label L4379 load 29 param_type strref 30 m46s82 call 31 pith_cstring_release void 1 29 @@ -163589,8 +163911,8 @@ load 32 param_idx load 33 param_types call 34 pith_list_len int 1 33 lt 35 32 34 -brif 35 L4340 L4341 -label L4340 +brif 35 L4382 L4383 +label L4382 load 36 param_type load 37 param_types load 38 param_idx @@ -163598,9 +163920,9 @@ call 39 pith_list_get_value_strict string 2 37 38 call 40 pith_cstring_retain void 1 39 call 41 pith_cstring_release void 1 36 store param_type 39 -jmp L4339 -label L4341 -label L4339 +jmp L4381 +label L4383 +label L4381 load 42 cn field 43 42 8 string value load 44 param_type @@ -163611,16 +163933,16 @@ load 48 param_idx iconst 49 1 add 50 48 49 store param_idx 50 -jmp L4336 -label L4338 -label L4336 -label L4334 +jmp L4378 +label L4380 +label L4378 +label L4376 load 51 __for_idx_366 iconst 52 1 add 53 51 52 store __for_idx_366 53 -jmp L4332 -label L4335 +jmp L4374 +label L4377 load 54 node call 55 pith_struct_release void 1 54 load 56 cn @@ -163651,12 +163973,12 @@ iconst 11 0 store __for_idx_367 11 store __for_len_367 10 store __for_iter_367 9 -label L4342 +label L4384 load 12 __for_idx_367 load 13 __for_len_367 lt 14 12 13 -brif 14 L4343 L4345 -label L4343 +brif 14 L4385 L4387 +label L4385 load 15 __for_iter_367 load 16 __for_idx_367 call 17 pith_list_get_value unknown 2 15 16 @@ -163666,11 +163988,11 @@ store i 18 load 19 i iconst 20 0 eq 21 19 20 -brif 21 L4347 L4348 -label L4347 -jmp L4344 -label L4348 -label L4346 +brif 21 L4389 L4390 +label L4389 +jmp L4386 +label L4390 +label L4388 load 22 child_kind load 23 child call 24 ast_node_kind string 1 23 @@ -163682,8 +164004,8 @@ load 27 child_kind strref 28 m46s42 call 29 pith_cstring_eq bool 2 27 28 call 30 pith_cstring_release void 1 28 -brif 29 L4350 L4351 -label L4350 +brif 29 L4392 L4393 +label L4392 load 31 cn load 32 child call 33 ast_get_node struct:Node 1 32 @@ -163694,19 +164016,19 @@ field 36 35 16 list children call 37 pith_list_len int 1 36 iconst 38 0 gt 39 37 38 -brif 39 L4353 L4354 -label L4353 +brif 39 L4395 L4396 +label L4395 load 40 cn field 41 40 16 list children iconst 42 0 call 43 pith_list_get_value_strict int 2 41 42 store expr_idx 43 -jmp L4352 -label L4354 -label L4352 -jmp L4349 -label L4351 -label L4349 +jmp L4394 +label L4396 +label L4394 +jmp L4391 +label L4393 +label L4391 load 44 checked load 45 expr_idx call 46 ir_type_helpers_ir_checked_type string 1 45 @@ -163716,25 +164038,25 @@ load 48 checked call 49 string_len int 1 48 iconst 50 0 gt 51 49 50 -brif 51 L4356 L4357 -label L4356 +brif 51 L4398 L4399 +label L4398 load 52 arg_types load 53 checked call 54 pith_list_push_value void 2 52 53 -jmp L4355 -label L4357 +jmp L4397 +label L4399 load 55 arg_types load 56 expr_idx call 57 ir_emitter_core_ir_infer_type string 1 56 call 58 pith_list_push_value void 2 55 57 -label L4355 -label L4344 +label L4397 +label L4386 load 59 __for_idx_367 iconst 60 1 add 61 59 60 store __for_idx_367 61 -jmp L4342 -label L4345 +jmp L4384 +label L4387 load 62 arg_types load 63 child_kind call 64 pith_cstring_release void 1 63 @@ -163773,12 +164095,12 @@ iconst 10 0 store __for_idx_368 10 store __for_len_368 9 store __for_iter_368 8 -label L4358 +label L4400 load 11 __for_idx_368 load 12 __for_len_368 lt 13 11 12 -brif 13 L4359 L4361 -label L4359 +brif 13 L4401 L4403 +label L4401 load 14 __for_iter_368 load 15 __for_idx_368 call 16 pith_list_get_value unknown 2 14 15 @@ -163788,11 +164110,11 @@ store i 17 load 18 i iconst 19 0 eq 20 18 19 -brif 20 L4363 L4364 -label L4363 -jmp L4360 -label L4364 -label L4362 +brif 20 L4405 L4406 +label L4405 +jmp L4402 +label L4406 +label L4404 load 21 child_kind load 22 child call 23 ast_node_kind string 1 22 @@ -163804,8 +164126,8 @@ load 26 child_kind strref 27 m46s42 call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 -brif 28 L4366 L4367 -label L4366 +brif 28 L4408 L4409 +label L4408 load 30 cn load 31 child call 32 ast_get_node struct:Node 1 31 @@ -163816,30 +164138,30 @@ field 35 34 16 list children call 36 pith_list_len int 1 35 iconst 37 0 gt 38 36 37 -brif 38 L4369 L4370 -label L4369 +brif 38 L4411 L4412 +label L4411 load 39 cn field 40 39 16 list children iconst 41 0 call 42 pith_list_get_value_strict int 2 40 41 store expr_idx 42 -jmp L4368 -label L4370 -label L4368 -jmp L4365 -label L4367 -label L4365 +jmp L4410 +label L4412 +label L4410 +jmp L4407 +label L4409 +label L4407 load 43 arg_tids load 44 expr_idx call 45 checker_c_get_expr_type int 1 44 call 46 pith_list_push_value void 2 43 45 -label L4360 +label L4402 load 47 __for_idx_368 iconst 48 1 add 49 47 48 store __for_idx_368 49 -jmp L4358 -label L4361 +jmp L4400 +label L4403 load 50 arg_tids load 51 child_kind call 52 pith_cstring_release void 1 51 @@ -163869,8 +164191,8 @@ call 7 pith_cstring_contains bool 2 5 6 call 8 pith_cstring_release void 1 6 iconst 9 0 eq 10 7 9 -brif 10 L4372 L4373 -label L4372 +brif 10 L4414 L4415 +label L4414 load 11 type_name call 12 pith_cstring_retain void 1 11 load 13 parts @@ -163878,8 +164200,8 @@ call 14 pith_list_release_handle void 1 13 load 15 akey call 16 pith_cstring_release void 1 15 ret 11 -label L4373 -label L4371 +label L4415 +label L4413 load 17 parts load 18 type_name strref 19 m46s26 @@ -163891,8 +164213,8 @@ load 23 parts call 24 pith_list_len int 1 23 iconst 25 2 neq 26 24 25 -brif 26 L4375 L4376 -label L4375 +brif 26 L4417 L4418 +label L4417 load 27 type_name call 28 pith_cstring_retain void 1 27 load 29 parts @@ -163900,8 +164222,8 @@ call 30 pith_list_release_handle void 1 29 load 31 akey call 32 pith_cstring_release void 1 31 ret 27 -label L4376 -label L4374 +label L4418 +label L4416 iconst 33 0 store i 33 load 34 params @@ -163910,35 +164232,35 @@ iconst 36 0 store __for_idx_369 36 store __for_len_369 35 store __for_iter_369 34 -label L4377 +label L4419 load 37 __for_idx_369 load 38 __for_len_369 lt 39 37 38 -brif 39 L4378 L4380 -label L4378 +brif 39 L4420 L4422 +label L4420 load 40 __for_iter_369 load 41 __for_idx_369 call 42 pith_list_get_value_unchecked string 2 40 41 store p 42 iconst 43 0 -store __and_43_4384 43 +store __and_43_4426 43 load 44 p load 45 parts iconst 46 0 call 47 pith_list_get_value_strict string 2 45 46 call 48 pith_cstring_eq bool 2 44 47 -store __and_43_4384 48 -brif 48 L4384 L4385 -label L4384 +store __and_43_4426 48 +brif 48 L4426 L4427 +label L4426 load 49 i load 50 concrete call 51 pith_list_len int 1 50 lt 52 49 51 -store __and_43_4384 52 -label L4385 -load 53 __and_43_4384 -brif 53 L4382 L4383 -label L4382 +store __and_43_4426 52 +label L4427 +load 53 __and_43_4426 +brif 53 L4424 L4425 +label L4424 load 54 akey load 55 concrete load 56 i @@ -163958,8 +164280,8 @@ store akey 66 load 69 ir_method_tables_ir_assoc_bindings load 70 akey call 71 contains_key bool 2 69 70 -brif 71 L4387 L4388 -label L4387 +brif 71 L4429 L4430 +label L4429 load 72 ir_method_tables_ir_assoc_bindings load 73 akey call 74 map_get_strict string 2 72 73 @@ -163969,22 +164291,22 @@ call 77 pith_list_release_handle void 1 76 load 78 akey call 79 pith_cstring_release void 1 78 ret 74 -label L4388 -label L4386 -jmp L4381 -label L4383 -label L4381 +label L4430 +label L4428 +jmp L4423 +label L4425 +label L4423 load 80 i iconst 81 1 add 82 80 81 store i 82 -label L4379 +label L4421 load 83 __for_idx_369 iconst 84 1 add 85 83 84 store __for_idx_369 85 -jmp L4377 -label L4380 +jmp L4419 +label L4422 load 86 type_name call 87 pith_cstring_retain void 1 86 load 88 parts @@ -164030,8 +164352,8 @@ load 14 key call 15 contains_key bool 2 13 14 iconst 17 1 sub 16 17 15 -brif 16 L4390 L4391 -label L4390 +brif 16 L4432 L4433 +label L4432 load 18 base_name call 19 pith_cstring_release void 1 18 load 20 decl_node @@ -164058,8 +164380,8 @@ load 40 saved_param_optional_tids call 41 pith_map_release_handle void 1 40 iconst 42 0 ret 42 -label L4391 -label L4389 +label L4433 +label L4431 load 43 base_name load 44 key iconst 45 9 @@ -164076,8 +164398,8 @@ load 54 base_name call 55 contains_key bool 2 53 54 iconst 57 1 sub 56 57 55 -brif 56 L4393 L4394 -label L4393 +brif 56 L4435 L4436 +label L4435 load 58 base_name call 59 pith_cstring_release void 1 58 load 60 decl_node @@ -164104,8 +164426,8 @@ load 80 saved_param_optional_tids call 81 pith_map_release_handle void 1 80 iconst 82 0 ret 82 -label L4394 -label L4392 +label L4436 +label L4434 load 83 ir_generics_ir_generic_decl_indices load 84 base_name call 85 map_get_strict int 2 83 84 @@ -164168,12 +164490,12 @@ iconst 131 0 store __for_idx_370 131 store __for_len_370 130 store __for_iter_370 129 -label L4395 +label L4437 load 132 __for_idx_370 load 133 __for_len_370 lt 134 132 133 -brif 134 L4396 L4398 -label L4396 +brif 134 L4438 L4440 +label L4438 load 135 __for_iter_370 load 136 __for_idx_370 call 137 pith_list_get_value_unchecked string 2 135 136 @@ -164184,13 +164506,13 @@ load 140 generic_params load 141 concrete_types call 142 ir_emitter_core_ir_resolve_assoc_in_generic string 3 139 140 141 call 143 pith_list_push_value void 2 138 142 -label L4397 +label L4439 load 144 __for_idx_370 iconst 145 1 add 146 144 145 store __for_idx_370 146 -jmp L4395 -label L4398 +jmp L4437 +label L4440 load 147 param_types load 148 resolved_param_types call 149 pith_list_retain_handle void 1 148 @@ -164229,18 +164551,18 @@ store ir_alias_registry_ir_active_param_optional_tids 173 load 174 ir_generics_ir_generic_decl_module_paths load 175 base_name call 176 contains_key bool 2 174 175 -brif 176 L4400 L4401 -label L4400 +brif 176 L4442 L4443 +label L4442 load 177 ir_generics_ir_generic_decl_module_paths load 178 base_name call 179 map_get_strict string 2 177 178 call 180 pith_cstring_retain void 1 179 store ir_alias_registry_ir_active_generic_module_path 179 -jmp L4399 -label L4401 +jmp L4441 +label L4443 strref 181 m46s82 store ir_alias_registry_ir_active_generic_module_path 181 -label L4399 +label L4441 load 182 ret_type call 183 ir_emitter_core_ir_prepare_func_emission void 1 182 load 184 ir_emitter_core_ir_current_func_optional_inner_kind @@ -164269,24 +164591,24 @@ load 204 spec_name load 205 ret_type call 206 map_insert void 3 203 204 205 iconst 207 0 -store __and_207_4405 207 +store __and_207_4447 207 load 208 concrete_types call 209 pith_list_len int 1 208 iconst 210 1 eq 211 209 210 -store __and_207_4405 211 -brif 211 L4405 L4406 -label L4405 +store __and_207_4447 211 +brif 211 L4447 L4448 +label L4447 load 212 base_name iconst 213 0 load 214 ir_alias_registry_ir_active_generic_module_path load 215 decl_idx call 216 ir_decode_calls_ir_is_config_decode_specialization bool 4 212 213 214 215 -store __and_207_4405 216 -label L4406 -load 217 __and_207_4405 -brif 217 L4403 L4404 -label L4403 +store __and_207_4447 216 +label L4448 +load 217 __and_207_4447 +brif 217 L4445 L4446 +label L4445 load 218 concrete_types iconst 219 0 call 220 pith_list_get_value_strict string 2 218 219 @@ -164295,27 +164617,27 @@ closure_ref 222 ir_emitter_core___fnval_0 closure_ref 223 ir_emitter_core___fnval_1 closure_ref 224 ir_emitter_core___fnval_3 call 225 ir_decode_emit_ir_emit_config_decode_specialization_body void 5 220 221 222 223 224 -jmp L4402 -label L4404 +jmp L4444 +label L4446 iconst 226 0 -store __and_226_4409 226 +store __and_226_4451 226 load 227 concrete_types call 228 pith_list_len int 1 227 iconst 229 1 eq 230 228 229 -store __and_226_4409 230 -brif 230 L4409 L4410 -label L4409 +store __and_226_4451 230 +brif 230 L4451 L4452 +label L4451 load 231 base_name iconst 232 1 load 233 ir_alias_registry_ir_active_generic_module_path load 234 decl_idx call 235 ir_decode_calls_ir_is_config_decode_specialization bool 4 231 232 233 234 -store __and_226_4409 235 -label L4410 -load 236 __and_226_4409 -brif 236 L4407 L4408 -label L4407 +store __and_226_4451 235 +label L4452 +load 236 __and_226_4451 +brif 236 L4449 L4450 +label L4449 load 237 concrete_types iconst 238 0 call 239 pith_list_get_value_strict string 2 237 238 @@ -164324,26 +164646,26 @@ closure_ref 241 ir_emitter_core___fnval_0 closure_ref 242 ir_emitter_core___fnval_1 closure_ref 243 ir_emitter_core___fnval_3 call 244 ir_decode_emit_ir_emit_config_decode_specialization_body void 5 239 240 241 242 243 -jmp L4402 -label L4408 +jmp L4444 +label L4450 iconst 245 0 -store __and_245_4413 245 +store __and_245_4455 245 load 246 concrete_types call 247 pith_list_len int 1 246 iconst 248 1 eq 249 247 248 -store __and_245_4413 249 -brif 249 L4413 L4414 -label L4413 +store __and_245_4455 249 +brif 249 L4455 L4456 +label L4455 load 250 base_name load 251 ir_alias_registry_ir_active_generic_module_path load 252 decl_idx call 253 ir_decode_calls_ir_is_toml_decode_specialization bool 3 250 251 252 -store __and_245_4413 253 -label L4414 -load 254 __and_245_4413 -brif 254 L4411 L4412 -label L4411 +store __and_245_4455 253 +label L4456 +load 254 __and_245_4455 +brif 254 L4453 L4454 +label L4453 load 255 concrete_types iconst 256 0 call 257 pith_list_get_value_strict string 2 255 256 @@ -164352,26 +164674,26 @@ closure_ref 259 ir_emitter_core___fnval_0 closure_ref 260 ir_emitter_core___fnval_1 closure_ref 261 ir_emitter_core___fnval_3 call 262 ir_decode_emit_ir_emit_toml_decode_specialization_body void 5 257 258 259 260 261 -jmp L4402 -label L4412 +jmp L4444 +label L4454 iconst 263 0 -store __and_263_4417 263 +store __and_263_4459 263 load 264 concrete_types call 265 pith_list_len int 1 264 iconst 266 1 eq 267 265 266 -store __and_263_4417 267 -brif 267 L4417 L4418 -label L4417 +store __and_263_4459 267 +brif 267 L4459 L4460 +label L4459 load 268 base_name load 269 ir_alias_registry_ir_active_generic_module_path load 270 decl_idx call 271 ir_decode_calls_ir_is_toml_decode_text_specialization bool 3 268 269 270 -store __and_263_4417 271 -label L4418 -load 272 __and_263_4417 -brif 272 L4415 L4416 -label L4415 +store __and_263_4459 271 +label L4460 +load 272 __and_263_4459 +brif 272 L4457 L4458 +label L4457 load 273 concrete_types iconst 274 0 call 275 pith_list_get_value_strict string 2 273 274 @@ -164379,26 +164701,26 @@ load 276 ir_alias_registry_ir_active_generic_module_path load 277 concrete_types load 278 ret_type call 279 ir_decode_emit_ir_emit_toml_decode_text_specialization_body void 4 275 276 277 278 -jmp L4402 -label L4416 +jmp L4444 +label L4458 iconst 280 0 -store __and_280_4421 280 +store __and_280_4463 280 load 281 concrete_types call 282 pith_list_len int 1 281 iconst 283 1 eq 284 282 283 -store __and_280_4421 284 -brif 284 L4421 L4422 -label L4421 +store __and_280_4463 284 +brif 284 L4463 L4464 +label L4463 load 285 base_name load 286 ir_alias_registry_ir_active_generic_module_path load 287 decl_idx call 288 ir_decode_calls_ir_is_toml_decode_path_specialization bool 3 285 286 287 -store __and_280_4421 288 -label L4422 -load 289 __and_280_4421 -brif 289 L4419 L4420 -label L4419 +store __and_280_4463 288 +label L4464 +load 289 __and_280_4463 +brif 289 L4461 L4462 +label L4461 load 290 concrete_types iconst 291 0 call 292 pith_list_get_value_strict string 2 290 291 @@ -164407,26 +164729,26 @@ closure_ref 294 ir_emitter_core___fnval_0 closure_ref 295 ir_emitter_core___fnval_1 closure_ref 296 ir_emitter_core___fnval_3 call 297 ir_decode_emit_ir_emit_toml_decode_path_specialization_body void 5 292 293 294 295 296 -jmp L4402 -label L4420 +jmp L4444 +label L4462 iconst 298 0 -store __and_298_4425 298 +store __and_298_4467 298 load 299 concrete_types call 300 pith_list_len int 1 299 iconst 301 1 eq 302 300 301 -store __and_298_4425 302 -brif 302 L4425 L4426 -label L4425 +store __and_298_4467 302 +brif 302 L4467 L4468 +label L4467 load 303 base_name load 304 ir_alias_registry_ir_active_generic_module_path load 305 decl_idx call 306 ir_decode_calls_ir_is_toml_decode_text_path_specialization bool 3 303 304 305 -store __and_298_4425 306 -label L4426 -load 307 __and_298_4425 -brif 307 L4423 L4424 -label L4423 +store __and_298_4467 306 +label L4468 +load 307 __and_298_4467 +brif 307 L4465 L4466 +label L4465 load 308 concrete_types iconst 309 0 call 310 pith_list_get_value_strict string 2 308 309 @@ -164434,27 +164756,27 @@ load 311 ir_alias_registry_ir_active_generic_module_path load 312 concrete_types load 313 ret_type call 314 ir_decode_emit_ir_emit_toml_decode_text_path_specialization_body void 4 310 311 312 313 -jmp L4402 -label L4424 +jmp L4444 +label L4466 iconst 315 0 -store __and_315_4429 315 +store __and_315_4471 315 load 316 concrete_types call 317 pith_list_len int 1 316 iconst 318 1 eq 319 317 318 -store __and_315_4429 319 -brif 319 L4429 L4430 -label L4429 +store __and_315_4471 319 +brif 319 L4471 L4472 +label L4471 load 320 base_name load 321 ir_alias_registry_ir_active_generic_module_path load 322 decl_idx iconst 323 0 call 324 ir_decode_calls_ir_is_json_decode_specialization bool 4 320 321 322 323 -store __and_315_4429 324 -label L4430 -load 325 __and_315_4429 -brif 325 L4427 L4428 -label L4427 +store __and_315_4471 324 +label L4472 +load 325 __and_315_4471 +brif 325 L4469 L4470 +label L4469 load 326 concrete_types iconst 327 0 call 328 pith_list_get_value_strict string 2 326 327 @@ -164463,27 +164785,27 @@ iconst 330 0 closure_ref 331 ir_emitter_core___fnval_1 closure_ref 332 ir_emitter_core___fnval_3 call 333 ir_decode_emit_ir_emit_json_decode_specialization_body void 5 328 329 330 331 332 -jmp L4402 -label L4428 +jmp L4444 +label L4470 iconst 334 0 -store __and_334_4433 334 +store __and_334_4475 334 load 335 concrete_types call 336 pith_list_len int 1 335 iconst 337 1 eq 338 336 337 -store __and_334_4433 338 -brif 338 L4433 L4434 -label L4433 +store __and_334_4475 338 +brif 338 L4475 L4476 +label L4475 load 339 base_name load 340 ir_alias_registry_ir_active_generic_module_path load 341 decl_idx iconst 342 1 call 343 ir_decode_calls_ir_is_json_decode_specialization bool 4 339 340 341 342 -store __and_334_4433 343 -label L4434 -load 344 __and_334_4433 -brif 344 L4431 L4432 -label L4431 +store __and_334_4475 343 +label L4476 +load 344 __and_334_4475 +brif 344 L4473 L4474 +label L4473 load 345 concrete_types iconst 346 0 call 347 pith_list_get_value_strict string 2 345 346 @@ -164492,26 +164814,26 @@ iconst 349 1 closure_ref 350 ir_emitter_core___fnval_1 closure_ref 351 ir_emitter_core___fnval_3 call 352 ir_decode_emit_ir_emit_json_decode_specialization_body void 5 347 348 349 350 351 -jmp L4402 -label L4432 +jmp L4444 +label L4474 iconst 353 0 -store __and_353_4437 353 +store __and_353_4479 353 load 354 concrete_types call 355 pith_list_len int 1 354 iconst 356 1 eq 357 355 356 -store __and_353_4437 357 -brif 357 L4437 L4438 -label L4437 +store __and_353_4479 357 +brif 357 L4479 L4480 +label L4479 load 358 base_name load 359 ir_alias_registry_ir_active_generic_module_path load 360 decl_idx call 361 ir_decode_calls_ir_is_json_decode_object_specialization bool 3 358 359 360 -store __and_353_4437 361 -label L4438 -load 362 __and_353_4437 -brif 362 L4435 L4436 -label L4435 +store __and_353_4479 361 +label L4480 +load 362 __and_353_4479 +brif 362 L4477 L4478 +label L4477 load 363 concrete_types iconst 364 0 call 365 pith_list_get_value_strict string 2 363 364 @@ -164519,26 +164841,26 @@ load 366 ir_alias_registry_ir_active_generic_module_path closure_ref 367 ir_emitter_core___fnval_1 closure_ref 368 ir_emitter_core___fnval_3 call 369 ir_decode_emit_ir_emit_json_decode_object_specialization_body void 4 365 366 367 368 -jmp L4402 -label L4436 +jmp L4444 +label L4478 iconst 370 0 -store __and_370_4441 370 +store __and_370_4483 370 load 371 concrete_types call 372 pith_list_len int 1 371 iconst 373 1 eq 374 372 373 -store __and_370_4441 374 -brif 374 L4441 L4442 -label L4441 +store __and_370_4483 374 +brif 374 L4483 L4484 +label L4483 load 375 base_name load 376 ir_alias_registry_ir_active_generic_module_path load 377 decl_idx call 378 ir_decode_calls_ir_is_json_decode_path_specialization bool 3 375 376 377 -store __and_370_4441 378 -label L4442 -load 379 __and_370_4441 -brif 379 L4439 L4440 -label L4439 +store __and_370_4483 378 +label L4484 +load 379 __and_370_4483 +brif 379 L4481 L4482 +label L4481 load 380 concrete_types iconst 381 0 call 382 pith_list_get_value_strict string 2 380 381 @@ -164546,11 +164868,11 @@ load 383 ir_alias_registry_ir_active_generic_module_path closure_ref 384 ir_emitter_core___fnval_1 closure_ref 385 ir_emitter_core___fnval_3 call 386 ir_decode_emit_ir_emit_json_decode_path_specialization_body void 4 382 383 384 385 -jmp L4402 -label L4440 +jmp L4444 +label L4482 load 387 body_idx call 388 ir_emitter_core_ir_finish_func_emission void 1 387 -label L4402 +label L4444 load 389 saved_params call 390 pith_list_retain_handle void 1 389 store ir_alias_registry_ir_active_generic_params 389 @@ -164614,8 +164936,8 @@ load 13 arg_tids call 14 pith_list_len int 1 13 iconst 15 0 eq 16 14 15 -brif 16 L4444 L4445 -label L4444 +brif 16 L4486 L4487 +label L4486 load 17 result load 18 arg_tids call 19 pith_list_release_handle void 1 18 @@ -164624,8 +164946,8 @@ call 21 pith_struct_release void 1 20 load 22 cn call 23 pith_struct_release void 1 22 ret 17 -label L4445 -label L4443 +label L4487 +label L4485 load 24 node load 25 fn_idx call 26 ast_get_node struct:Node 1 25 @@ -164640,12 +164962,12 @@ iconst 32 0 store __for_idx_371 32 store __for_len_371 31 store __for_iter_371 30 -label L4446 +label L4488 load 33 __for_idx_371 load 34 __for_len_371 lt 35 33 34 -brif 35 L4447 L4449 -label L4447 +brif 35 L4489 L4491 +label L4489 load 36 __for_iter_371 load 37 __for_idx_371 call 38 pith_list_get_value unknown 2 36 37 @@ -164660,62 +164982,62 @@ field 44 43 0 string kind strref 45 m46s68 call 46 pith_cstring_eq bool 2 44 45 call 47 pith_cstring_release void 1 45 -brif 46 L4451 L4452 -label L4451 +brif 46 L4493 L4494 +label L4493 load 48 param_idx load 49 arg_tids call 50 pith_list_len int 1 49 lt 51 48 50 -brif 51 L4454 L4455 -label L4454 +brif 51 L4496 L4497 +label L4496 load 52 arg_tids load 53 param_idx call 54 pith_list_get_value_strict int 2 52 53 store tid 54 iconst 55 0 -store __and_55_4459 55 +store __and_55_4501 55 load 56 tid iconst 57 0 gte 58 56 57 -store __and_55_4459 58 -brif 58 L4459 L4460 -label L4459 +store __and_55_4501 58 +brif 58 L4501 L4502 +label L4501 load 59 tid call 60 types_get_type_info struct:TypeInfo 1 59 field 61 60 0 string kind strref 62 m46s21 call 63 pith_cstring_eq bool 2 61 62 call 64 pith_cstring_release void 1 62 -store __and_55_4459 63 -label L4460 -load 65 __and_55_4459 -brif 65 L4457 L4458 -label L4457 +store __and_55_4501 63 +label L4502 +load 65 __and_55_4501 +brif 65 L4499 L4500 +label L4499 load 66 result load 67 cn field 68 67 8 string value load 69 tid call 70 map_insert void 3 66 68 69 -jmp L4456 -label L4458 -label L4456 -jmp L4453 -label L4455 -label L4453 +jmp L4498 +label L4500 +label L4498 +jmp L4495 +label L4497 +label L4495 load 71 param_idx iconst 72 1 add 73 71 72 store param_idx 73 -jmp L4450 -label L4452 -label L4450 -label L4448 +jmp L4492 +label L4494 +label L4492 +label L4490 load 74 __for_idx_371 iconst 75 1 add 76 74 75 store __for_idx_371 76 -jmp L4446 -label L4449 +jmp L4488 +label L4491 load 77 result load 78 arg_tids call 79 pith_list_release_handle void 1 78 @@ -164740,13 +165062,13 @@ iconst 0 0 store key 0 iconst 1 0 store i 1 -label L4461 +label L4503 load 2 i load 3 ir_generics_ir_generic_specialization_keys call 4 pith_list_len int 1 3 lt 5 2 4 -brif 5 L4462 L4463 -label L4462 +brif 5 L4504 L4505 +label L4504 load 6 key load 7 ir_generics_ir_generic_specialization_keys load 8 i @@ -164759,23 +165081,23 @@ load 13 key call 14 contains_key bool 2 12 13 iconst 16 1 sub 15 16 14 -brif 15 L4465 L4466 -label L4465 +brif 15 L4507 L4508 +label L4507 load 17 key call 18 ir_emitter_core_ir_emit_generic_specialization void 1 17 load 19 ir_generics_ir_generic_emitted_specializations load 20 key iconst 21 1 call 22 map_insert void 3 19 20 21 -jmp L4464 -label L4466 -label L4464 +jmp L4506 +label L4508 +label L4506 load 23 i iconst 24 1 add 25 23 24 store i 25 -jmp L4461 -label L4463 +jmp L4503 +label L4505 load 26 key call 27 pith_cstring_release void 1 26 iconst 28 0 @@ -164797,16 +165119,16 @@ load 8 impl_type call 9 string_len int 1 8 iconst 10 0 eq 11 9 10 -brif 11 L4468 L4469 -label L4468 +brif 11 L4510 L4511 +label L4510 load 12 impl_type call 13 pith_cstring_release void 1 12 load 14 method_node call 15 pith_struct_release void 1 14 iconst 16 0 ret 16 -label L4469 -label L4467 +label L4511 +label L4509 load 17 node field 18 17 16 list children call 19 pith_auto_len int 1 18 @@ -164814,12 +165136,12 @@ iconst 20 0 store __for_idx_372 20 store __for_len_372 19 store __for_iter_372 18 -label L4470 +label L4512 load 21 __for_idx_372 load 22 __for_len_372 lt 23 21 22 -brif 23 L4471 L4473 -label L4471 +brif 23 L4513 L4515 +label L4513 load 24 __for_iter_372 load 25 __for_idx_372 call 26 pith_list_get_value unknown 2 24 25 @@ -164835,23 +165157,23 @@ store method_node 31 load 33 method_node field 34 33 0 string kind call 35 ir_generics_ir_is_fn_decl_kind bool 1 34 -brif 35 L4475 L4476 -label L4475 +brif 35 L4517 L4518 +label L4517 load 36 impl_type load 37 method_idx load 38 method_node load 39 module_path call 40 ir_emitter_core_ir_record_impl_method_signature void 4 36 37 38 39 -jmp L4474 -label L4476 -label L4474 -label L4472 +jmp L4516 +label L4518 +label L4516 +label L4514 load 41 __for_idx_372 iconst 42 1 add 43 41 42 store __for_idx_372 43 -jmp L4470 -label L4473 +jmp L4512 +label L4515 load 44 node call 45 ir_emitter_core_ir_inherited_default_indices list 1 44 call 46 pith_auto_len int 1 45 @@ -164859,12 +165181,12 @@ iconst 47 0 store __for_idx_373 47 store __for_len_373 46 store __for_iter_373 45 -label L4477 +label L4519 load 48 __for_idx_373 load 49 __for_len_373 lt 50 48 49 -brif 50 L4478 L4480 -label L4478 +brif 50 L4520 L4522 +label L4520 load 51 __for_iter_373 load 52 __for_idx_373 call 53 pith_list_get_value unknown 2 51 52 @@ -164876,13 +165198,13 @@ call 57 ast_get_node struct:Node 1 56 load 58 module_path call 59 ir_emitter_core_ir_record_impl_method_signature void 4 54 55 57 58 call 60 pith_struct_release void 1 57 -label L4479 +label L4521 load 61 __for_idx_373 iconst 62 1 add 63 61 62 store __for_idx_373 63 -jmp L4477 -label L4480 +jmp L4519 +label L4522 load 64 __for_iter_373 call 65 pith_list_release_handle void 1 64 load 66 impl_type @@ -164925,8 +165247,8 @@ load 22 module_path call 23 string_len int 1 22 iconst 24 0 gt 25 23 24 -brif 25 L4482 L4483 -label L4482 +brif 25 L4524 L4525 +label L4524 load 26 full_name load 27 module_path load 28 impl_type @@ -164934,9 +165256,9 @@ load 29 method_name call 30 ir_names_ir_import_impl_method_name string 3 27 28 29 call 31 pith_cstring_release void 1 26 store full_name 30 -jmp L4481 -label L4483 -label L4481 +jmp L4523 +label L4525 +label L4523 load 32 key load 33 impl_type load 34 method_name @@ -165061,8 +165383,8 @@ param body_idx load 1 body_idx iconst 2 0 gte 3 1 2 -brif 3 L4485 L4486 -label L4485 +brif 3 L4527 L4528 +label L4527 load 4 body_idx call 5 ir_match_emit_ir_function_tail_match int 1 4 store ir_match_emit_ir_tail_match_node 5 @@ -165072,9 +165394,9 @@ iconst 8 0 iconst 9 1 sub 10 8 9 store ir_match_emit_ir_tail_match_node 10 -jmp L4484 -label L4486 -label L4484 +jmp L4526 +label L4528 +label L4526 call 11 ir_emitter_core_ir_emit_default_return int 0 iconst 12 0 ret 12 @@ -165094,12 +165416,12 @@ iconst 8 0 store __for_idx_374 8 store __for_len_374 7 store __for_iter_374 6 -label L4487 +label L4529 load 9 __for_idx_374 load 10 __for_len_374 lt 11 9 10 -brif 11 L4488 L4490 -label L4488 +brif 11 L4530 L4532 +label L4530 load 12 __for_iter_374 load 13 __for_idx_374 call 14 pith_list_get_value unknown 2 12 13 @@ -165110,21 +165432,21 @@ field 17 16 0 string kind strref 18 m46s584 call 19 pith_cstring_eq bool 2 17 18 call 20 pith_cstring_release void 1 18 -brif 19 L4492 L4493 -label L4492 +brif 19 L4534 L4535 +label L4534 load 21 tests load 22 item_idx call 23 pith_list_push_value void 2 21 22 -jmp L4491 -label L4493 -label L4491 -label L4489 +jmp L4533 +label L4535 +label L4533 +label L4531 load 24 __for_idx_374 iconst 25 1 add 26 24 25 store __for_idx_374 26 -jmp L4487 -label L4490 +jmp L4529 +label L4532 load 27 __for_iter_374 call 28 pith_list_release_handle void 1 27 load 29 tests @@ -165186,8 +165508,8 @@ load 10 tests call 11 pith_list_len int 1 10 iconst 12 0 eq 13 11 12 -brif 13 L4495 L4496 -label L4495 +brif 13 L4537 L4538 +label L4537 load 14 tests call 15 pith_list_release_handle void 1 14 load 16 run_l @@ -165200,8 +165522,8 @@ load 22 child_l call 23 pith_cstring_release void 1 22 iconst 24 0 ret 24 -label L4496 -label L4494 +label L4538 +label L4536 strref 25 m46s668 call 26 ir_emitter_core_ir_prepare_func_emission void 1 25 call 27 pith_cstring_release void 1 25 @@ -165217,12 +165539,12 @@ iconst 36 0 store __for_idx_375 36 store __for_len_375 35 store __for_iter_375 34 -label L4497 +label L4539 load 37 __for_idx_375 load 38 __for_len_375 lt 39 37 38 -brif 39 L4498 L4500 -label L4498 +brif 39 L4540 L4542 +label L4540 load 40 __for_iter_375 load 41 __for_idx_375 call 42 pith_list_get_value unknown 2 40 41 @@ -165395,13 +165717,13 @@ call 198 ir_builder_ir_emit void 1 196 call 199 pith_cstring_release void 1 196 load 200 skip_l call 201 ir_call_emit_ir_emit_label void 1 200 -label L4499 +label L4541 load 202 __for_idx_375 iconst 203 1 add 204 202 203 store __for_idx_375 204 -jmp L4497 -label L4500 +jmp L4539 +label L4542 call 205 ir_builder_ir_reg int 0 store summary_r 205 load 206 summary_r @@ -165659,12 +165981,12 @@ iconst 5 0 store __for_idx_376 5 store __for_len_376 4 store __for_iter_376 3 -label L4501 +label L4543 load 6 __for_idx_376 load 7 __for_len_376 lt 8 6 7 -brif 8 L4502 L4504 -label L4502 +brif 8 L4544 L4546 +label L4544 load 9 __for_iter_376 load 10 __for_idx_376 call 11 pith_list_get_value unknown 2 9 10 @@ -165679,23 +166001,23 @@ field 17 16 0 string kind strref 18 m46s325 call 19 pith_cstring_eq bool 2 17 18 call 20 pith_cstring_release void 1 18 -brif 19 L4506 L4507 -label L4506 +brif 19 L4548 L4549 +label L4548 load 21 tn field 22 21 8 string value call 23 pith_cstring_retain void 1 22 load 24 tn call 25 pith_struct_release void 1 24 ret 22 -label L4507 -label L4505 -label L4503 +label L4549 +label L4547 +label L4545 load 26 __for_idx_376 iconst 27 1 add 28 26 27 store __for_idx_376 28 -jmp L4501 -label L4504 +jmp L4543 +label L4546 strref 29 m46s82 load 30 tn call 31 pith_struct_release void 1 30 @@ -165712,26 +166034,26 @@ field 2 1 0 string kind strref 3 m46s587 call 4 pith_cstring_eq bool 2 2 3 call 5 pith_cstring_release void 1 3 -brif 4 L4509 L4510 -label L4509 +brif 4 L4551 L4552 +label L4551 load 6 node field 7 6 8 string value call 8 ir_alias_registry_ir_register_import_alias void 1 7 -jmp L4508 -label L4510 +jmp L4550 +label L4552 load 9 node field 10 9 0 string kind strref 11 m46s588 call 12 pith_cstring_eq bool 2 10 11 call 13 pith_cstring_release void 1 11 -brif 12 L4511 L4512 -label L4511 +brif 12 L4553 L4554 +label L4553 load 14 node field 15 14 8 string value call 16 ir_alias_registry_ir_collect_from_import_renames void 1 15 -jmp L4508 -label L4512 -label L4508 +jmp L4550 +label L4554 +label L4550 iconst 17 0 ret 17 endfunc @@ -165750,12 +166072,12 @@ iconst 7 0 store __for_idx_377 7 store __for_len_377 6 store __for_iter_377 5 -label L4513 +label L4555 load 8 __for_idx_377 load 9 __for_len_377 lt 10 8 9 -brif 10 L4514 L4516 -label L4514 +brif 10 L4556 L4558 +label L4556 load 11 __for_iter_377 load 12 __for_idx_377 call 13 pith_list_get_value unknown 2 11 12 @@ -165770,8 +166092,8 @@ field 19 18 0 string kind strref 20 m46s600 call 21 pith_cstring_eq bool 2 19 20 call 22 pith_cstring_release void 1 20 -brif 21 L4518 L4519 -label L4518 +brif 21 L4560 L4561 +label L4560 load 23 aname load 24 cn field 25 24 8 string value @@ -165781,8 +166103,8 @@ store aname 25 load 28 ir_alias_registry_ir_type_aliases load 29 aname call 30 contains_key bool 2 28 29 -brif 30 L4521 L4522 -label L4521 +brif 30 L4563 L4564 +label L4563 load 31 target load 32 ir_alias_registry_ir_type_aliases load 33 aname @@ -165793,8 +166115,8 @@ store target 34 load 37 ir_struct_registry_ir_struct_names load 38 target call 39 contains_key bool 2 37 38 -brif 39 L4524 L4525 -label L4524 +brif 39 L4566 L4567 +label L4566 load 40 ir_struct_registry_ir_struct_names load 41 aname load 42 ir_struct_registry_ir_struct_names @@ -165814,22 +166136,22 @@ concat 55 51 54 call 56 pith_cstring_release void 1 51 call 57 ir_builder_ir_emit void 1 55 call 58 pith_cstring_release void 1 55 -jmp L4523 -label L4525 -label L4523 -jmp L4520 -label L4522 -label L4520 -jmp L4517 -label L4519 -label L4517 -label L4515 +jmp L4565 +label L4567 +label L4565 +jmp L4562 +label L4564 +label L4562 +jmp L4559 +label L4561 +label L4559 +label L4557 load 59 __for_idx_377 iconst 60 1 add 61 59 60 store __for_idx_377 61 -jmp L4513 -label L4516 +jmp L4555 +label L4558 load 62 __for_iter_377 call 63 pith_list_release_handle void 1 62 load 64 cn @@ -165854,12 +166176,12 @@ iconst 6 0 store __for_idx_378 6 store __for_len_378 5 store __for_iter_378 4 -label L4526 +label L4568 load 7 __for_idx_378 load 8 __for_len_378 lt 9 7 8 -brif 9 L4527 L4529 -label L4527 +brif 9 L4569 L4571 +label L4569 load 10 __for_iter_378 load 11 __for_idx_378 call 12 pith_list_get_value unknown 2 10 11 @@ -165874,38 +166196,38 @@ field 18 17 0 string kind strref 19 m46s310 call 20 pith_cstring_eq bool 2 18 19 call 21 pith_cstring_release void 1 19 -brif 20 L4531 L4532 -label L4531 +brif 20 L4573 L4574 +label L4573 load 22 node field 23 22 8 string value load 24 returns_node call 25 ir_emitter_core_ir_record_returns_clause void 2 23 24 iconst 26 1 store has_returns 26 -jmp L4530 -label L4532 -label L4530 -label L4528 +jmp L4572 +label L4574 +label L4572 +label L4570 load 27 __for_idx_378 iconst 28 1 add 29 27 28 store __for_idx_378 29 -jmp L4526 -label L4529 +jmp L4568 +label L4571 load 30 has_returns iconst 32 1 sub 31 32 30 -brif 31 L4534 L4535 -label L4534 +brif 31 L4576 L4577 +label L4576 load 33 ir_method_tables_ir_func_returns load 34 node field 35 34 8 string value strref 36 m46s823 call 37 map_insert void 3 33 35 36 call 38 pith_cstring_release void 1 36 -jmp L4533 -label L4535 -label L4533 +jmp L4575 +label L4577 +label L4575 load 39 returns_node call 40 pith_struct_release void 1 39 iconst 41 0 @@ -165925,12 +166247,12 @@ iconst 7 0 store __for_idx_379 7 store __for_len_379 6 store __for_iter_379 5 -label L4536 +label L4578 load 8 __for_idx_379 load 9 __for_len_379 lt 10 8 9 -brif 10 L4537 L4539 -label L4537 +brif 10 L4579 L4581 +label L4579 load 11 __for_iter_379 load 12 __for_idx_379 call 13 pith_list_get_value unknown 2 11 12 @@ -165945,36 +166267,36 @@ field 19 18 0 string kind strref 20 m46s310 call 21 pith_cstring_eq bool 2 19 20 call 22 pith_cstring_release void 1 20 -brif 21 L4541 L4542 -label L4541 +brif 21 L4583 L4584 +label L4583 load 23 name load 24 returns_node call 25 ir_emitter_core_ir_record_returns_clause void 2 23 24 iconst 26 1 store has_returns 26 -jmp L4540 -label L4542 -label L4540 -label L4538 +jmp L4582 +label L4584 +label L4582 +label L4580 load 27 __for_idx_379 iconst 28 1 add 29 27 28 store __for_idx_379 29 -jmp L4536 -label L4539 +jmp L4578 +label L4581 load 30 has_returns iconst 32 1 sub 31 32 30 -brif 31 L4544 L4545 -label L4544 +brif 31 L4586 L4587 +label L4586 load 33 ir_method_tables_ir_func_returns load 34 name strref 35 m46s823 call 36 map_insert void 3 33 34 35 call 37 pith_cstring_release void 1 35 -jmp L4543 -label L4545 -label L4543 +jmp L4585 +label L4587 +label L4585 load 38 returns_node call 39 pith_struct_release void 1 38 iconst 40 0 @@ -165992,12 +166314,12 @@ iconst 6 0 store __for_idx_380 6 store __for_len_380 5 store __for_iter_380 4 -label L4546 +label L4588 load 7 __for_idx_380 load 8 __for_len_380 lt 9 7 8 -brif 9 L4547 L4549 -label L4547 +brif 9 L4589 L4591 +label L4589 load 10 __for_iter_380 load 11 __for_idx_380 call 12 pith_list_get_value unknown 2 10 11 @@ -166008,87 +166330,87 @@ call 15 ast_get_node struct:Node 1 14 call 16 pith_struct_release void 1 13 store type_node 15 iconst 17 0 -store __or_17_4553 17 +store __or_17_4595 17 iconst 18 0 -store __or_18_4553 18 +store __or_18_4595 18 iconst 19 0 -store __or_19_4553 19 +store __or_19_4595 19 load 20 type_node field 21 20 0 string kind strref 22 m46s325 call 23 pith_cstring_eq bool 2 21 22 call 24 pith_cstring_release void 1 22 -store __or_19_4553 23 -brif 23 L4554 L4553 -label L4553 +store __or_19_4595 23 +brif 23 L4596 L4595 +label L4595 load 25 type_node field 26 25 0 string kind strref 27 m46s324 call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 -store __or_19_4553 28 -label L4554 -load 30 __or_19_4553 -store __or_18_4553 30 -brif 30 L4556 L4555 -label L4555 +store __or_19_4595 28 +label L4596 +load 30 __or_19_4595 +store __or_18_4595 30 +brif 30 L4598 L4597 +label L4597 load 31 type_node field 32 31 0 string kind strref 33 m46s317 call 34 pith_cstring_eq bool 2 32 33 call 35 pith_cstring_release void 1 33 -store __or_18_4553 34 -label L4556 -load 36 __or_18_4553 -store __or_17_4553 36 -brif 36 L4558 L4557 -label L4557 +store __or_18_4595 34 +label L4598 +load 36 __or_18_4595 +store __or_17_4595 36 +brif 36 L4600 L4599 +label L4599 load 37 type_node field 38 37 0 string kind strref 39 m46s318 call 40 pith_cstring_eq bool 2 38 39 call 41 pith_cstring_release void 1 39 -store __or_17_4553 40 -label L4558 -load 42 __or_17_4553 -brif 42 L4551 L4552 -label L4551 +store __or_17_4595 40 +label L4600 +load 42 __or_17_4595 +brif 42 L4593 L4594 +label L4593 load 43 ir_method_tables_ir_func_returns load 44 name load 45 type_idx call 46 ir_alias_registry_ir_resolve_type_node string 1 45 call 47 map_insert void 3 43 44 46 call 48 pith_cstring_release void 1 46 -jmp L4550 -label L4552 -label L4550 +jmp L4592 +label L4594 +label L4592 iconst 49 0 -store __or_49_4562 49 +store __or_49_4604 49 load 50 type_node field 51 50 0 string kind strref 52 m46s22 call 53 pith_cstring_eq bool 2 51 52 call 54 pith_cstring_release void 1 52 -store __or_49_4562 53 -brif 53 L4563 L4562 -label L4562 +store __or_49_4604 53 +brif 53 L4605 L4604 +label L4604 load 55 type_node field 56 55 0 string kind strref 57 m46s317 call 58 pith_cstring_eq bool 2 56 57 call 59 pith_cstring_release void 1 57 -store __or_49_4562 58 -label L4563 -load 60 __or_49_4562 -brif 60 L4560 L4561 -label L4560 +store __or_49_4604 58 +label L4605 +load 60 __or_49_4604 +brif 60 L4602 L4603 +label L4602 load 61 type_node field 62 61 16 list children call 63 pith_list_len int 1 62 iconst 64 0 gt 65 63 64 -brif 65 L4565 L4566 -label L4565 +brif 65 L4607 L4608 +label L4607 load 66 ir_emitter_core_ir_func_result_ok_kinds load 67 name load 68 type_node @@ -166100,19 +166422,19 @@ call 73 ir_alias_registry_ir_retkind string 1 72 call 74 pith_cstring_release void 1 72 call 75 map_insert void 3 66 67 73 call 76 pith_cstring_release void 1 73 -jmp L4564 -label L4566 -label L4564 -jmp L4559 -label L4561 -label L4559 -label L4548 +jmp L4606 +label L4608 +label L4606 +jmp L4601 +label L4603 +label L4601 +label L4590 load 77 __for_idx_380 iconst 78 1 add 79 77 78 store __for_idx_380 79 -jmp L4546 -label L4549 +jmp L4588 +label L4591 load 80 type_node call 81 pith_struct_release void 1 80 iconst 82 0 @@ -166157,12 +166479,12 @@ iconst 24 0 store __for_idx_381 24 store __for_len_381 23 store __for_iter_381 22 -label L4567 +label L4609 load 25 __for_idx_381 load 26 __for_len_381 lt 27 25 26 -brif 27 L4568 L4570 -label L4568 +brif 27 L4610 L4612 +label L4610 load 28 __for_iter_381 load 29 __for_idx_381 call 30 pith_list_get_value unknown 2 28 29 @@ -166173,38 +166495,38 @@ call 33 ast_get_node struct:Node 1 32 call 34 pith_struct_release void 1 31 store gcn 33 iconst 35 0 -store __or_35_4574 35 +store __or_35_4616 35 iconst 36 0 -store __or_36_4574 36 +store __or_36_4616 36 load 37 gcn field 38 37 0 string kind strref 39 m46s325 call 40 pith_cstring_eq bool 2 38 39 call 41 pith_cstring_release void 1 39 -store __or_36_4574 40 -brif 40 L4575 L4574 -label L4574 +store __or_36_4616 40 +brif 40 L4617 L4616 +label L4616 load 42 gcn field 43 42 0 string kind strref 44 m46s324 call 45 pith_cstring_eq bool 2 43 44 call 46 pith_cstring_release void 1 44 -store __or_36_4574 45 -label L4575 -load 47 __or_36_4574 -store __or_35_4574 47 -brif 47 L4577 L4576 -label L4576 +store __or_36_4616 45 +label L4617 +load 47 __or_36_4616 +store __or_35_4616 47 +brif 47 L4619 L4618 +label L4618 load 48 gcn field 49 48 0 string kind strref 50 m46s318 call 51 pith_cstring_eq bool 2 49 50 call 52 pith_cstring_release void 1 50 -store __or_35_4574 51 -label L4577 -load 53 __or_35_4574 -brif 53 L4572 L4573 -label L4572 +store __or_35_4616 51 +label L4619 +load 53 __or_35_4616 +brif 53 L4614 L4615 +label L4614 load 54 global_type load 55 gc call 56 ir_alias_registry_ir_resolve_type_node string 1 55 @@ -166214,25 +166536,25 @@ load 58 global_map_value_type call 59 string_len int 1 58 iconst 60 0 eq 61 59 60 -brif 61 L4579 L4580 -label L4579 +brif 61 L4621 L4622 +label L4621 load 62 global_map_value_type load 63 gc call 64 ir_alias_registry_ir_resolve_map_value_type_node string 1 63 call 65 pith_cstring_release void 1 62 store global_map_value_type 64 -jmp L4578 -label L4580 -label L4578 -jmp L4571 -label L4573 +jmp L4620 +label L4622 +label L4620 +jmp L4613 +label L4615 load 66 gcn field 67 66 0 string kind strref 68 m46s516 call 69 pith_cstring_eq bool 2 67 68 call 70 pith_cstring_release void 1 68 -brif 69 L4581 L4582 -label L4581 +brif 69 L4623 L4624 +label L4623 load 71 init_val load 72 gcn field 73 72 8 string value @@ -166243,24 +166565,24 @@ load 76 global_type call 77 string_len int 1 76 iconst 78 0 eq 79 77 78 -brif 79 L4584 L4585 -label L4584 +brif 79 L4626 L4627 +label L4626 load 80 global_type strref 81 m46s668 call 82 pith_cstring_release void 1 80 store global_type 81 -jmp L4583 -label L4585 -label L4583 -jmp L4571 -label L4582 +jmp L4625 +label L4627 +label L4625 +jmp L4613 +label L4624 load 83 gcn field 84 83 0 string kind strref 85 m46s514 call 86 pith_cstring_eq bool 2 84 85 call 87 pith_cstring_release void 1 85 -brif 86 L4586 L4587 -label L4586 +brif 86 L4628 L4629 +label L4628 load 88 si load 89 gcn field 90 89 8 string value @@ -166278,24 +166600,24 @@ load 99 global_type call 100 string_len int 1 99 iconst 101 0 eq 102 100 101 -brif 102 L4589 L4590 -label L4589 +brif 102 L4631 L4632 +label L4631 load 103 global_type strref 104 m46s672 call 105 pith_cstring_release void 1 103 store global_type 104 -jmp L4588 -label L4590 -label L4588 -jmp L4571 -label L4587 +jmp L4630 +label L4632 +label L4630 +jmp L4613 +label L4629 load 106 gcn field 107 106 0 string kind strref 108 m46s20 call 109 pith_cstring_eq bool 2 107 108 call 110 pith_cstring_release void 1 108 -brif 109 L4591 L4592 -label L4591 +brif 109 L4633 L4634 +label L4633 load 111 init_val strref 112 m46s20 call 113 pith_cstring_release void 1 111 @@ -166304,24 +166626,24 @@ load 114 global_type call 115 string_len int 1 114 iconst 116 0 eq 117 115 116 -brif 117 L4594 L4595 -label L4594 +brif 117 L4636 L4637 +label L4636 load 118 global_type strref 119 m46s20 call 120 pith_cstring_release void 1 118 store global_type 119 -jmp L4593 -label L4595 -label L4593 -jmp L4571 -label L4592 +jmp L4635 +label L4637 +label L4635 +jmp L4613 +label L4634 load 121 gcn field 122 121 0 string kind strref 123 m46s19 call 124 pith_cstring_eq bool 2 122 123 call 125 pith_cstring_release void 1 123 -brif 124 L4596 L4597 -label L4596 +brif 124 L4638 L4639 +label L4638 load 126 init_val strref 127 m46s19 call 128 pith_cstring_release void 1 126 @@ -166330,24 +166652,24 @@ load 129 global_type call 130 string_len int 1 129 iconst 131 0 eq 132 130 131 -brif 132 L4599 L4600 -label L4599 +brif 132 L4641 L4642 +label L4641 load 133 global_type strref 134 m46s19 call 135 pith_cstring_release void 1 133 store global_type 134 -jmp L4598 -label L4600 -label L4598 -jmp L4571 -label L4597 +jmp L4640 +label L4642 +label L4640 +jmp L4613 +label L4639 load 136 gcn field 137 136 0 string kind strref 138 m46s18 call 139 pith_cstring_eq bool 2 137 138 call 140 pith_cstring_release void 1 138 -brif 139 L4601 L4602 -label L4601 +brif 139 L4643 L4644 +label L4643 load 141 init_val load 142 gc call 143 ir_type_helpers_ir_checked_type string 1 142 @@ -166357,128 +166679,128 @@ load 145 init_val call 146 string_len int 1 145 iconst 147 0 eq 148 146 147 -brif 148 L4604 L4605 -label L4604 +brif 148 L4646 L4647 +label L4646 load 149 init_val load 150 gc call 151 ir_emitter_core_ir_infer_type string 1 150 call 152 pith_cstring_release void 1 149 store init_val 151 -jmp L4603 -label L4605 -label L4603 +jmp L4645 +label L4647 +label L4645 load 153 init_val call 154 string_len int 1 153 iconst 155 0 eq 156 154 155 -brif 156 L4607 L4608 -label L4607 +brif 156 L4649 L4650 +label L4649 load 157 init_val strref 158 m46s18 call 159 pith_cstring_release void 1 157 store init_val 158 -jmp L4606 -label L4608 -label L4606 +jmp L4648 +label L4650 +label L4648 load 160 global_type call 161 string_len int 1 160 iconst 162 0 eq 163 161 162 -brif 163 L4610 L4611 -label L4610 +brif 163 L4652 L4653 +label L4652 load 164 global_type load 165 init_val call 166 pith_cstring_retain void 1 165 call 167 pith_cstring_release void 1 164 store global_type 165 -jmp L4609 -label L4611 -label L4609 -jmp L4571 -label L4602 +jmp L4651 +label L4653 +label L4651 +jmp L4613 +label L4644 load 168 gcn field 169 168 0 string kind strref 170 m46s513 call 171 pith_cstring_eq bool 2 169 170 call 172 pith_cstring_release void 1 170 -brif 171 L4612 L4613 -label L4612 +brif 171 L4654 L4655 +label L4654 load 173 gcn field 174 173 8 string value strref 175 m46s75 call 176 pith_cstring_eq bool 2 174 175 call 177 pith_cstring_release void 1 175 -brif 176 L4615 L4616 -label L4615 +brif 176 L4657 L4658 +label L4657 load 178 init_val strref 179 m46s176 call 180 pith_cstring_release void 1 178 store init_val 179 -jmp L4614 -label L4616 +jmp L4656 +label L4658 load 181 init_val strref 182 m46s177 call 183 pith_cstring_release void 1 181 store init_val 182 -label L4614 +label L4656 load 184 global_type call 185 string_len int 1 184 iconst 186 0 eq 187 185 186 -brif 187 L4618 L4619 -label L4618 +brif 187 L4660 L4661 +label L4660 load 188 global_type strref 189 m46s670 call 190 pith_cstring_release void 1 188 store global_type 189 -jmp L4617 -label L4619 -label L4617 -jmp L4571 +jmp L4659 +label L4661 +label L4659 +jmp L4613 +label L4655 label L4613 -label L4571 -label L4569 +label L4611 load 191 __for_idx_381 iconst 192 1 add 193 191 192 store __for_idx_381 193 -jmp L4567 -label L4570 +jmp L4609 +label L4612 load 194 global_type call 195 string_len int 1 194 iconst 196 0 gt 197 195 196 -brif 197 L4621 L4622 -label L4621 +brif 197 L4663 L4664 +label L4663 load 198 gname load 199 global_type call 200 ir_alias_registry_ir_record_global_type void 2 198 199 -jmp L4620 -label L4622 -label L4620 +jmp L4662 +label L4664 +label L4662 load 201 global_map_value_type call 202 string_len int 1 201 iconst 203 0 gt 204 202 203 -brif 204 L4624 L4625 -label L4624 +brif 204 L4666 L4667 +label L4666 load 205 ir_alias_registry_ir_global_map_value_types load 206 gname load 207 global_map_value_type call 208 map_insert void 3 205 206 207 -jmp L4623 -label L4625 -label L4623 +jmp L4665 +label L4667 +label L4665 load 209 is_threadlocal -brif 209 L4627 L4628 -label L4627 +brif 209 L4669 L4670 +label L4669 load 210 ir_emitter_core_ir_threadlocal_slots load 211 gname call 212 contains_key bool 2 210 211 iconst 214 1 sub 213 214 212 -brif 213 L4630 L4631 -label L4630 +brif 213 L4672 L4673 +label L4672 load 215 ir_emitter_core_ir_threadlocal_slots load 216 gname load 217 ir_emitter_core_ir_next_tls_slot @@ -166487,9 +166809,9 @@ load 219 ir_emitter_core_ir_next_tls_slot iconst 220 1 add 221 219 220 store ir_emitter_core_ir_next_tls_slot 221 -jmp L4629 -label L4631 -label L4629 +jmp L4671 +label L4673 +label L4671 load 222 ir_emitter_core_ir_threadlocal_kinds load 223 gname load 224 global_type @@ -166508,8 +166830,8 @@ load 236 si call 237 pith_cstring_release void 1 236 iconst 238 0 ret 238 -label L4628 -label L4626 +label L4670 +label L4668 strref 239 m46s1170 load 240 gname concat 241 239 240 @@ -166561,12 +166883,12 @@ iconst 11 0 store __for_idx_382 11 store __for_len_382 10 store __for_iter_382 9 -label L4632 +label L4674 load 12 __for_idx_382 load 13 __for_len_382 lt 14 12 13 -brif 14 L4633 L4635 -label L4633 +brif 14 L4675 L4677 +label L4675 load 15 __for_iter_382 load 16 __for_idx_382 call 17 pith_list_get_value unknown 2 15 16 @@ -166583,11 +166905,11 @@ call 26 pith_cstring_eq bool 2 23 24 iconst 27 1 sub 25 27 26 call 28 pith_cstring_release void 1 24 -brif 25 L4637 L4638 -label L4637 -jmp L4634 -label L4638 -label L4636 +brif 25 L4679 L4680 +label L4679 +jmp L4676 +label L4680 +label L4678 load 29 binding load 30 cn field 31 30 16 list children @@ -166601,11 +166923,11 @@ field 37 36 0 string kind call 38 ir_ast_helpers_ir_is_binding_kind bool 1 37 iconst 40 1 sub 39 40 38 -brif 39 L4640 L4641 -label L4640 -jmp L4634 -label L4641 -label L4639 +brif 39 L4682 L4683 +label L4682 +jmp L4676 +label L4683 +label L4681 load 41 gname load 42 binding call 43 ir_ast_helpers_ir_binding_name string 1 42 @@ -166624,32 +166946,32 @@ load 52 parts field 53 52 16 int type_idx iconst 54 0 gte 55 53 54 -brif 55 L4643 L4644 -label L4643 +brif 55 L4685 L4686 +label L4685 load 56 target load 57 parts field 58 57 16 int type_idx call 59 ir_alias_registry_ir_resolve_type_node string 1 58 call 60 pith_cstring_release void 1 56 store target 59 -jmp L4642 -label L4644 -label L4642 +jmp L4684 +label L4686 +label L4684 load 61 target call 62 string_len int 1 61 iconst 63 0 eq 64 62 63 -brif 64 L4646 L4647 -label L4646 +brif 64 L4688 L4689 +label L4688 load 65 target load 66 parts field 67 66 8 int val_idx call 68 ir_emitter_core_ir_infer_type string 1 67 call 69 pith_cstring_release void 1 65 store target 68 -jmp L4645 -label L4647 -label L4645 +jmp L4687 +label L4689 +label L4687 load 70 target call 71 ir_emitter_core_ir_prepare_func_emission void 1 70 strref 72 m46s1169 @@ -166677,42 +166999,42 @@ call 91 ir_struct_registry_ir_rc_kind string 1 90 call 92 pith_cstring_release void 1 89 store gkind 91 iconst 93 0 -store __and_93_4651 93 +store __and_93_4693 93 iconst 94 0 -store __and_94_4651 94 +store __and_94_4693 94 load 95 gkind call 96 string_len int 1 95 iconst 97 0 gt 98 96 97 -store __and_94_4651 98 -brif 98 L4651 L4652 -label L4651 +store __and_94_4693 98 +brif 98 L4693 L4694 +label L4693 load 99 gtarget strref 100 m46s23 call 102 pith_cstring_eq bool 2 99 100 iconst 103 1 sub 101 103 102 call 104 pith_cstring_release void 1 100 -store __and_94_4651 101 -label L4652 -load 105 __and_94_4651 -store __and_93_4651 105 -brif 105 L4653 L4654 -label L4653 +store __and_94_4693 101 +label L4694 +load 105 __and_94_4693 +store __and_93_4693 105 +brif 105 L4695 L4696 +label L4695 load 106 parts field 107 106 8 int val_idx call 108 ir_emitter_core_ir_string_expr_is_borrowed bool 1 107 -store __and_93_4651 108 -label L4654 -load 109 __and_93_4651 -brif 109 L4649 L4650 -label L4649 +store __and_93_4693 108 +label L4696 +load 109 __and_93_4693 +brif 109 L4691 L4692 +label L4691 load 110 r load 111 gkind call 112 ir_ownership_ir_rc_retain_reg void 2 110 111 -jmp L4648 -label L4650 -label L4648 +jmp L4690 +label L4692 +label L4690 strref 113 m46s844 load 114 r call 115 int_to_string string 1 114 @@ -166724,13 +167046,13 @@ call 120 pith_cstring_release void 1 116 strref 121 m46s872 call 122 ir_builder_ir_emit void 1 121 call 123 pith_cstring_release void 1 121 -label L4634 +label L4676 load 124 __for_idx_382 iconst 125 1 add 126 124 125 store __for_idx_382 126 -jmp L4632 -label L4635 +jmp L4674 +label L4677 load 127 cn call 128 pith_struct_release void 1 127 load 129 binding @@ -166883,21 +167205,21 @@ endfunc func ir_emitter_core_ir_name_is_threadlocal 1 bool param name iconst 1 0 -store __and_1_4655 1 +store __and_1_4697 1 load 2 ir_emitter_core_ir_threadlocal_slots load 3 name call 4 contains_key bool 2 2 3 -store __and_1_4655 4 -brif 4 L4655 L4656 -label L4655 +store __and_1_4697 4 +brif 4 L4697 L4698 +label L4697 load 5 ir_builder_ir_var_regs load 6 name call 7 contains_key bool 2 5 6 iconst 9 1 sub 8 9 7 -store __and_1_4655 8 -label L4656 -load 10 __and_1_4655 +store __and_1_4697 8 +label L4698 +load 10 __and_1_4697 ret 10 iconst 11 0 ret 11 @@ -166907,13 +167229,13 @@ param dest_r param name load 2 name call 3 ir_emitter_core_ir_name_is_threadlocal bool 1 2 -brif 3 L4658 L4659 -label L4658 +brif 3 L4700 L4701 +label L4700 load 4 dest_r load 5 name call 6 ir_emitter_core_ir_emit_tls_load void 2 4 5 -jmp L4657 -label L4659 +jmp L4699 +label L4701 strref 7 m46s824 load 8 dest_r call 9 int_to_string string 1 8 @@ -166931,7 +167253,7 @@ call 20 pith_cstring_release void 1 14 call 21 pith_cstring_release void 1 18 call 22 ir_builder_ir_emit void 1 19 call 23 pith_cstring_release void 1 19 -label L4657 +label L4699 iconst 24 0 ret 24 endfunc @@ -166940,13 +167262,13 @@ param name param val_r load 2 name call 3 ir_emitter_core_ir_name_is_threadlocal bool 1 2 -brif 3 L4661 L4662 -label L4661 +brif 3 L4703 L4704 +label L4703 load 4 name load 5 val_r call 6 ir_emitter_core_ir_emit_tls_store void 2 4 5 -jmp L4660 -label L4662 +jmp L4702 +label L4704 strref 7 m46s825 load 8 name call 9 ir_emitter_core_ir_resolve_storage_name string 1 8 @@ -166964,7 +167286,7 @@ call 20 pith_cstring_release void 1 14 call 21 pith_cstring_release void 1 18 call 22 ir_builder_ir_emit void 1 19 call 23 pith_cstring_release void 1 19 -label L4660 +label L4702 iconst 24 0 ret 24 endfunc @@ -166981,12 +167303,12 @@ iconst 6 0 store __for_idx_383 6 store __for_len_383 5 store __for_iter_383 4 -label L4663 +label L4705 load 7 __for_idx_383 load 8 __for_len_383 lt 9 7 8 -brif 9 L4664 L4666 -label L4664 +brif 9 L4706 L4708 +label L4706 load 10 __for_iter_383 load 11 __for_idx_383 call 12 pith_list_get_value unknown 2 10 11 @@ -167001,8 +167323,8 @@ field 18 17 0 string kind strref 19 m46s586 call 20 pith_cstring_eq bool 2 18 19 call 21 pith_cstring_release void 1 19 -brif 20 L4668 L4669 -label L4668 +brif 20 L4710 L4711 +label L4710 load 22 inner load 23 cn field 24 23 16 list children @@ -167014,34 +167336,34 @@ store inner 27 load 29 inner field 30 29 0 string kind call 31 ir_ast_helpers_ir_is_binding_kind bool 1 30 -brif 31 L4671 L4672 -label L4671 +brif 31 L4713 L4714 +label L4713 load 32 inner iconst 33 1 call 34 ir_emitter_core_ir_emit_global_binding void 2 32 33 -jmp L4670 -label L4672 -label L4670 -jmp L4667 -label L4669 +jmp L4712 +label L4714 +label L4712 +jmp L4709 +label L4711 load 35 cn field 36 35 0 string kind call 37 ir_ast_helpers_ir_is_binding_kind bool 1 36 -brif 37 L4673 L4674 -label L4673 +brif 37 L4715 L4716 +label L4715 load 38 cn iconst 39 0 call 40 ir_emitter_core_ir_emit_global_binding void 2 38 39 -jmp L4667 -label L4674 -label L4667 -label L4665 +jmp L4709 +label L4716 +label L4709 +label L4707 load 41 __for_idx_383 iconst 42 1 add 43 41 42 store __for_idx_383 43 -jmp L4663 -label L4666 +jmp L4705 +label L4708 load 44 cn call 45 pith_struct_release void 1 44 load 46 inner @@ -167058,14 +167380,14 @@ load 3 raw_name call 4 ir_emitter_core_ir_struct_needs_dtor bool 1 3 iconst 6 1 sub 5 6 4 -brif 5 L4676 L4677 -label L4676 +brif 5 L4718 L4719 +label L4718 load 7 sname call 8 pith_cstring_release void 1 7 iconst 9 0 ret 9 -label L4677 -label L4675 +label L4719 +label L4717 load 10 sname load 11 raw_name call 12 ir_struct_registry_ir_struct_base_name string 1 11 @@ -167147,12 +167469,12 @@ iconst 24 0 store __for_idx_384 24 store __for_len_384 23 store __for_iter_384 22 -label L4678 +label L4720 load 25 __for_idx_384 load 26 __for_len_384 lt 27 25 26 -brif 27 L4679 L4681 -label L4679 +brif 27 L4721 L4723 +label L4721 load 28 __for_iter_384 load 29 __for_idx_384 call 30 pith_list_get_value_unchecked string 2 28 29 @@ -167234,13 +167556,13 @@ call 101 pith_cstring_release void 1 97 strref 102 m46s872 call 103 ir_builder_ir_emit void 1 102 call 104 pith_cstring_release void 1 102 -label L4680 +label L4722 load 105 __for_idx_384 iconst 106 1 add 107 105 106 store __for_idx_384 107 -jmp L4678 -label L4681 +jmp L4720 +label L4723 load 108 kinds call 109 pith_list_release_handle void 1 108 iconst 110 0 @@ -167260,12 +167582,12 @@ iconst 6 0 store __for_idx_385 6 store __for_len_385 5 store __for_iter_385 4 -label L4682 +label L4724 load 7 __for_idx_385 load 8 __for_len_385 lt 9 7 8 -brif 9 L4683 L4685 -label L4683 +brif 9 L4725 L4727 +label L4725 load 10 __for_iter_385 load 11 __for_idx_385 call 12 pith_list_get_value_unchecked string 2 10 11 @@ -167276,28 +167598,28 @@ call 15 pith_cstring_index_of int 2 13 14 call 16 pith_cstring_release void 1 14 iconst 17 0 gte 18 15 17 -brif 18 L4687 L4688 -label L4687 -jmp L4684 -label L4688 -label L4686 +brif 18 L4729 L4730 +label L4729 +jmp L4726 +label L4730 +label L4728 load 19 ir_struct_registry_ir_boxed_enums load 20 sname call 21 contains_key bool 2 19 20 -brif 21 L4690 L4691 -label L4690 -jmp L4684 -label L4691 -label L4689 +brif 21 L4732 L4733 +label L4732 +jmp L4726 +label L4733 +label L4731 load 22 sname call 23 ir_emitter_core_ir_struct_needs_dtor bool 1 22 iconst 25 1 sub 24 25 23 -brif 24 L4693 L4694 -label L4693 -jmp L4684 -label L4694 -label L4692 +brif 24 L4735 L4736 +label L4735 +jmp L4726 +label L4736 +label L4734 strref 26 m46s1161 load 27 sname concat 28 26 27 @@ -167329,12 +167651,12 @@ call 52 ir_struct_registry_ir_struct_field_count int 1 51 store count 52 iconst 53 0 store i 53 -label L4695 +label L4737 load 54 i load 55 count lt 56 54 55 -brif 56 L4696 L4697 -label L4696 +brif 56 L4738 L4739 +label L4738 load 57 fname load 58 sname load 59 i @@ -167355,8 +167677,8 @@ store fkind 69 load 71 sname load 72 fname call 73 ir_emitter_core_ir_struct_field_is_weak bool 2 71 72 -brif 73 L4699 L4700 -label L4699 +brif 73 L4741 L4742 +label L4741 call 74 ir_builder_ir_reg int 0 store fr 74 strref 75 m46s832 @@ -167413,14 +167735,14 @@ call 124 pith_cstring_release void 1 118 call 125 pith_cstring_release void 1 122 call 126 ir_builder_ir_emit void 1 123 call 127 pith_cstring_release void 1 123 -jmp L4698 -label L4700 +jmp L4740 +label L4742 load 128 fkind call 129 string_len int 1 128 iconst 130 0 gt 131 129 130 -brif 131 L4701 L4702 -label L4701 +brif 131 L4743 L4744 +label L4743 call 132 ir_builder_ir_reg int 0 store fr 132 strref 133 m46s832 @@ -167461,15 +167783,15 @@ call 167 pith_cstring_release void 1 164 load 168 fr load 169 fkind call 170 ir_ownership_ir_rc_release_reg void 2 168 169 -jmp L4698 -label L4702 -label L4698 +jmp L4740 +label L4744 +label L4740 load 171 i iconst 172 1 add 173 171 172 store i 173 -jmp L4695 -label L4697 +jmp L4737 +label L4739 call 174 ir_builder_ir_reg int 0 store zr 174 strref 175 m46s827 @@ -167495,13 +167817,13 @@ call 194 pith_cstring_release void 1 190 strref 195 m46s872 call 196 ir_builder_ir_emit void 1 195 call 197 pith_cstring_release void 1 195 -label L4684 +label L4726 load 198 __for_idx_385 iconst 199 1 add 200 198 199 store __for_idx_385 200 -jmp L4682 -label L4685 +jmp L4724 +label L4727 load 201 __for_iter_385 call 202 pith_list_release_handle void 1 201 load 203 fname @@ -167533,12 +167855,12 @@ iconst 9 0 store __for_idx_386 9 store __for_len_386 8 store __for_iter_386 7 -label L4703 +label L4745 load 10 __for_idx_386 load 11 __for_len_386 lt 12 10 11 -brif 12 L4704 L4706 -label L4704 +brif 12 L4746 L4748 +label L4746 load 13 __for_iter_386 load 14 __for_idx_386 call 15 pith_list_get_value_unchecked string 2 13 14 @@ -167547,21 +167869,21 @@ load 16 ename call 17 ir_emitter_core_ir_enum_needs_dtor bool 1 16 iconst 19 1 sub 18 19 17 -brif 18 L4708 L4709 -label L4708 -jmp L4705 -label L4709 -label L4707 +brif 18 L4750 L4751 +label L4750 +jmp L4747 +label L4751 +label L4749 load 20 ir_struct_registry_ir_enum_variant_lists load 21 ename call 22 contains_key bool 2 20 21 iconst 24 1 sub 23 24 22 -brif 23 L4711 L4712 -label L4711 -jmp L4705 -label L4712 -label L4710 +brif 23 L4753 L4754 +label L4753 +jmp L4747 +label L4754 +label L4752 strref 25 m46s1161 load 26 ename concat 27 25 26 @@ -167622,13 +167944,13 @@ call 79 pith_list_release_handle void 1 72 store variants 77 iconst 80 0 store vi 80 -label L4713 +label L4755 load 81 vi load 82 variants call 83 pith_list_len int 1 82 lt 84 81 83 -brif 84 L4714 L4715 -label L4714 +brif 84 L4756 L4757 +label L4756 load 85 vkey load 86 ename strref 87 m46s26 @@ -167644,8 +167966,8 @@ store vkey 93 load 96 ir_struct_registry_ir_enum_payload_kinds load 97 vkey call 98 contains_key bool 2 96 97 -brif 98 L4717 L4718 -label L4717 +brif 98 L4759 L4760 +label L4759 load 99 kinds load 100 ir_struct_registry_ir_enum_payload_kinds load 101 vkey @@ -167659,13 +167981,13 @@ iconst 107 0 store has_rc 107 iconst 108 0 store c 108 -label L4719 +label L4761 load 109 c load 110 kinds call 111 pith_list_len int 1 110 lt 112 109 111 -brif 112 L4720 L4721 -label L4720 +brif 112 L4762 L4763 +label L4762 load 113 kinds load 114 c call 115 pith_list_get_value_strict string 2 113 114 @@ -167674,22 +167996,22 @@ call 117 string_len int 1 116 call 118 pith_cstring_release void 1 116 iconst 119 0 gt 120 117 119 -brif 120 L4723 L4724 -label L4723 +brif 120 L4765 L4766 +label L4765 iconst 121 1 store has_rc 121 -jmp L4722 -label L4724 -label L4722 +jmp L4764 +label L4766 +label L4764 load 122 c iconst 123 1 add 124 122 123 store c 124 -jmp L4719 -label L4721 +jmp L4761 +label L4763 load 125 has_rc -brif 125 L4726 L4727 -label L4726 +brif 125 L4768 L4769 +label L4768 call 126 ir_builder_ir_reg int 0 store vtag 126 strref 127 m46s827 @@ -167771,13 +168093,13 @@ load 199 hit_l call 200 ir_call_emit_ir_emit_label void 1 199 iconst 201 0 store s 201 -label L4728 +label L4770 load 202 s load 203 kinds call 204 pith_list_len int 1 203 lt 205 202 204 -brif 205 L4729 L4730 -label L4729 +brif 205 L4771 L4772 +label L4771 load 206 rk load 207 kinds load 208 s @@ -167789,8 +168111,8 @@ load 212 rk call 213 string_len int 1 212 iconst 214 0 gt 215 213 214 -brif 215 L4732 L4733 -label L4732 +brif 215 L4774 L4775 +label L4774 call 216 ir_builder_ir_reg int 0 store slot_r 216 strref 217 m46s832 @@ -167835,29 +168157,29 @@ call 255 pith_cstring_release void 1 251 load 256 slot_r load 257 rk call 258 ir_ownership_ir_rc_release_reg void 2 256 257 -jmp L4731 -label L4733 -label L4731 +jmp L4773 +label L4775 +label L4773 load 259 s iconst 260 1 add 261 259 260 store s 261 -jmp L4728 -label L4730 +jmp L4770 +label L4772 load 262 skip_l call 263 ir_call_emit_ir_emit_label void 1 262 -jmp L4725 -label L4727 -label L4725 -jmp L4716 -label L4718 -label L4716 +jmp L4767 +label L4769 +label L4767 +jmp L4758 +label L4760 +label L4758 load 264 vi iconst 265 1 add 266 264 265 store vi 266 -jmp L4713 -label L4715 +jmp L4755 +label L4757 call 267 ir_builder_ir_reg int 0 store zr 267 strref 268 m46s827 @@ -167883,13 +168205,13 @@ call 287 pith_cstring_release void 1 283 strref 288 m46s872 call 289 ir_builder_ir_emit void 1 288 call 290 pith_cstring_release void 1 288 -label L4705 +label L4747 load 291 __for_idx_386 iconst 292 1 add 293 291 292 store __for_idx_386 293 -jmp L4703 -label L4706 +jmp L4745 +label L4748 load 294 __for_iter_386 call 295 pith_list_release_handle void 1 294 load 296 variants @@ -167916,12 +168238,12 @@ iconst 3 0 store __for_idx_387 3 store __for_len_387 2 store __for_iter_387 1 -label L4734 +label L4776 load 4 __for_idx_387 load 5 __for_len_387 lt 6 4 5 -brif 6 L4735 L4737 -label L4735 +brif 6 L4777 L4779 +label L4777 load 7 __for_iter_387 load 8 __for_idx_387 call 9 pith_list_get_value_unchecked string 2 7 8 @@ -167952,13 +168274,13 @@ call 31 ir_builder_ir_emit void 1 28 call 32 pith_cstring_release void 1 28 iconst 33 0 store i 33 -label L4738 +label L4780 load 34 i load 35 sig call 36 string_len int 1 35 lt 37 34 36 -brif 37 L4739 L4740 -label L4739 +brif 37 L4781 L4782 +label L4781 load 38 kind load 39 sig load 40 i @@ -167974,8 +168296,8 @@ load 48 kind call 49 string_len int 1 48 iconst 50 0 gt 51 49 50 -brif 51 L4742 L4743 -label L4742 +brif 51 L4784 L4785 +label L4784 call 52 ir_builder_ir_reg int 0 store fr 52 strref 53 m46s832 @@ -168018,15 +168340,15 @@ call 89 pith_cstring_release void 1 85 load 90 fr load 91 kind call 92 ir_ownership_ir_rc_release_reg void 2 90 91 -jmp L4741 -label L4743 -label L4741 +jmp L4783 +label L4785 +label L4783 load 93 i iconst 94 1 add 95 93 94 store i 95 -jmp L4738 -label L4740 +jmp L4780 +label L4782 call 96 ir_builder_ir_reg int 0 store zr 96 strref 97 m46s827 @@ -168052,13 +168374,13 @@ call 116 pith_cstring_release void 1 112 strref 117 m46s872 call 118 ir_builder_ir_emit void 1 117 call 119 pith_cstring_release void 1 117 -label L4736 +label L4778 load 120 __for_idx_387 iconst 121 1 add 122 120 121 store __for_idx_387 122 -jmp L4734 -label L4737 +jmp L4776 +label L4779 load 123 kind call 124 pith_cstring_release void 1 123 iconst 125 0 @@ -168090,12 +168412,12 @@ iconst 12 0 store __for_idx_388 12 store __for_len_388 11 store __for_iter_388 10 -label L4744 +label L4786 load 13 __for_idx_388 load 14 __for_len_388 lt 15 13 14 -brif 15 L4745 L4747 -label L4745 +brif 15 L4787 L4789 +label L4787 load 16 __for_iter_388 load 17 __for_idx_388 call 18 pith_list_get_value_unchecked string 2 16 17 @@ -168105,11 +168427,11 @@ load 20 ename call 21 contains_key bool 2 19 20 iconst 23 1 sub 22 23 21 -brif 22 L4749 L4750 -label L4749 -jmp L4746 -label L4750 -label L4748 +brif 22 L4791 L4792 +label L4791 +jmp L4788 +label L4792 +label L4790 strref 24 m46s1152 load 25 ename concat 26 24 25 @@ -168328,13 +168650,13 @@ concat 226 222 225 call 227 pith_cstring_release void 1 222 call 228 ir_builder_ir_emit void 1 226 call 229 pith_cstring_release void 1 226 -label L4751 +label L4793 load 230 vi load 231 variants call 232 pith_list_len int 1 231 lt 233 230 232 -brif 233 L4752 L4753 -label L4752 +brif 233 L4794 L4795 +label L4794 load 234 vkey load 235 ename strref 236 m46s26 @@ -168350,8 +168672,8 @@ store vkey 242 load 245 ir_struct_registry_ir_enum_payload_kinds load 246 vkey call 247 contains_key bool 2 245 246 -brif 247 L4755 L4756 -label L4755 +brif 247 L4797 L4798 +label L4797 load 248 chain_l call 249 ir_call_emit_ir_emit_label void 1 248 load 250 chain_l @@ -168444,13 +168766,13 @@ call 332 pith_list_release_handle void 1 325 store kinds 330 iconst 333 0 store k 333 -label L4757 +label L4799 load 334 k load 335 kinds call 336 pith_list_len int 1 335 lt 337 334 336 -brif 337 L4758 L4759 -label L4758 +brif 337 L4800 L4801 +label L4800 call 338 ir_builder_ir_reg int 0 store fa 338 strref 339 m46s832 @@ -168541,8 +168863,8 @@ call 421 pith_list_get_value_strict string 2 419 420 strref 422 m46s672 call 423 pith_cstring_eq bool 2 421 422 call 424 pith_cstring_release void 1 422 -brif 423 L4761 L4762 -label L4761 +brif 423 L4803 L4804 +label L4803 load 425 cmp_r strref 426 m46s719 strref 427 m46s670 @@ -168551,15 +168873,15 @@ load 429 fb call 430 ir_call_emit_ir_emit_call2 void 5 425 426 427 428 429 call 431 pith_cstring_release void 1 426 call 432 pith_cstring_release void 1 427 -jmp L4760 -label L4762 +jmp L4802 +label L4804 load 433 ir_struct_registry_ir_boxed_enums load 434 kinds load 435 k call 436 pith_list_get_value_strict string 2 434 435 call 437 contains_key bool 2 433 436 -brif 437 L4763 L4764 -label L4763 +brif 437 L4805 L4806 +label L4805 load 438 cmp_r strref 439 m46s1152 load 440 kinds @@ -168573,8 +168895,8 @@ load 447 fb call 448 ir_call_emit_ir_emit_call2 void 5 438 443 445 446 447 call 449 pith_cstring_release void 1 443 call 450 pith_cstring_release void 1 445 -jmp L4760 -label L4764 +jmp L4802 +label L4806 strref 451 m46s834 load 452 cmp_r call 453 int_to_string string 1 452 @@ -168601,7 +168923,7 @@ call 473 pith_cstring_release void 1 467 call 474 pith_cstring_release void 1 471 call 475 ir_builder_ir_emit void 1 472 call 476 pith_cstring_release void 1 472 -label L4760 +label L4802 load 477 next_slot_l call 478 ir_builder_ir_label string 0 call 479 pith_cstring_release void 1 477 @@ -168634,23 +168956,23 @@ load 504 k iconst 505 1 add 506 504 505 store k 506 -jmp L4757 -label L4759 +jmp L4799 +label L4801 strref 507 m46s828 load 508 true_l concat 509 507 508 call 510 pith_cstring_release void 1 507 call 511 ir_builder_ir_emit void 1 509 call 512 pith_cstring_release void 1 509 -jmp L4754 -label L4756 -label L4754 +jmp L4796 +label L4798 +label L4796 load 513 vi iconst 514 1 add 515 513 514 store vi 515 -jmp L4751 -label L4753 +jmp L4793 +label L4795 load 516 chain_l call 517 ir_call_emit_ir_emit_label void 1 516 strref 518 m46s828 @@ -168710,13 +169032,13 @@ call 569 pith_cstring_release void 1 565 strref 570 m46s872 call 571 ir_builder_ir_emit void 1 570 call 572 pith_cstring_release void 1 570 -label L4746 +label L4788 load 573 __for_idx_388 iconst 574 1 add 575 573 574 store __for_idx_388 575 -jmp L4744 -label L4747 +jmp L4786 +label L4789 load 576 __for_iter_388 call 577 pith_list_release_handle void 1 576 load 578 true_l @@ -168755,16 +169077,16 @@ load 7 parts field 8 7 8 int val_idx iconst 9 0 lt 10 8 9 -brif 10 L4766 L4767 -label L4766 +brif 10 L4808 L4809 +label L4808 iconst 11 0 load 12 parts call 13 pith_struct_release void 1 12 load 14 vk call 15 pith_cstring_release void 1 14 ret 11 -label L4767 -label L4765 +label L4809 +label L4807 load 16 vk load 17 parts field 18 17 8 int val_idx @@ -168774,93 +169096,93 @@ call 21 pith_cstring_retain void 1 20 call 22 pith_cstring_release void 1 16 store vk 20 iconst 23 0 -store __or_23_4771 23 +store __or_23_4813 23 iconst 24 0 -store __or_24_4771 24 +store __or_24_4813 24 iconst 25 0 -store __or_25_4771 25 +store __or_25_4813 25 load 26 vk strref 27 m46s516 call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 -store __or_25_4771 28 -brif 28 L4772 L4771 -label L4771 +store __or_25_4813 28 +brif 28 L4814 L4813 +label L4813 load 30 vk strref 31 m46s513 call 32 pith_cstring_eq bool 2 30 31 call 33 pith_cstring_release void 1 31 -store __or_25_4771 32 -label L4772 -load 34 __or_25_4771 -store __or_24_4771 34 -brif 34 L4774 L4773 -label L4773 +store __or_25_4813 32 +label L4814 +load 34 __or_25_4813 +store __or_24_4813 34 +brif 34 L4816 L4815 +label L4815 load 35 vk strref 36 m46s75 call 37 pith_cstring_eq bool 2 35 36 call 38 pith_cstring_release void 1 36 -store __or_24_4771 37 -label L4774 -load 39 __or_24_4771 -store __or_23_4771 39 -brif 39 L4776 L4775 -label L4775 +store __or_24_4813 37 +label L4816 +load 39 __or_24_4813 +store __or_23_4813 39 +brif 39 L4818 L4817 +label L4817 load 40 vk strref 41 m46s74 call 42 pith_cstring_eq bool 2 40 41 call 43 pith_cstring_release void 1 41 -store __or_23_4771 42 -label L4776 -load 44 __or_23_4771 -brif 44 L4769 L4770 -label L4769 +store __or_23_4813 42 +label L4818 +load 44 __or_23_4813 +brif 44 L4811 L4812 +label L4811 iconst 45 0 load 46 parts call 47 pith_struct_release void 1 46 load 48 vk call 49 pith_cstring_release void 1 48 ret 45 -label L4770 -label L4768 +label L4812 +label L4810 iconst 50 0 -store __or_50_4780 50 +store __or_50_4822 50 iconst 51 0 -store __or_51_4780 51 +store __or_51_4822 51 load 52 vk strref 53 m46s514 call 54 pith_cstring_eq bool 2 52 53 call 55 pith_cstring_release void 1 53 -store __or_51_4780 54 -brif 54 L4781 L4780 -label L4780 +store __or_51_4822 54 +brif 54 L4823 L4822 +label L4822 load 56 vk strref 57 m46s672 call 58 pith_cstring_eq bool 2 56 57 call 59 pith_cstring_release void 1 57 -store __or_51_4780 58 -label L4781 -load 60 __or_51_4780 -store __or_50_4780 60 -brif 60 L4783 L4782 -label L4782 +store __or_51_4822 58 +label L4823 +load 60 __or_51_4822 +store __or_50_4822 60 +brif 60 L4825 L4824 +label L4824 load 61 vk strref 62 m46s1020 call 63 pith_cstring_eq bool 2 61 62 call 64 pith_cstring_release void 1 62 -store __or_50_4780 63 -label L4783 -load 65 __or_50_4780 -brif 65 L4778 L4779 -label L4778 +store __or_50_4822 63 +label L4825 +load 65 __or_50_4822 +brif 65 L4820 L4821 +label L4820 iconst 66 0 load 67 parts call 68 pith_struct_release void 1 67 load 69 vk call 70 pith_cstring_release void 1 69 ret 66 -label L4779 -label L4777 +label L4821 +label L4819 iconst 71 1 load 72 parts call 73 pith_struct_release void 1 72 @@ -168897,12 +169219,12 @@ iconst 11 0 store __for_idx_389 11 store __for_len_389 10 store __for_iter_389 9 -label L4784 +label L4826 load 12 __for_idx_389 load 13 __for_len_389 lt 14 12 13 -brif 14 L4785 L4787 -label L4785 +brif 14 L4827 L4829 +label L4827 load 15 __for_iter_389 load 16 __for_idx_389 call 17 pith_list_get_value unknown 2 15 16 @@ -168913,37 +169235,37 @@ call 20 ir_ast_helpers_ir_unwrap_pub_node struct:Node 1 19 call 21 pith_struct_release void 1 18 store cn 20 iconst 22 0 -store __and_22_4791 22 +store __and_22_4833 22 load 23 cn field 24 23 0 string kind call 25 ir_ast_helpers_ir_is_binding_kind bool 1 24 -store __and_22_4791 25 -brif 25 L4791 L4792 -label L4791 +store __and_22_4833 25 +brif 25 L4833 L4834 +label L4833 load 26 cn call 27 ir_emitter_core_ir_global_needs_runtime_init bool 1 26 -store __and_22_4791 27 -label L4792 -load 28 __and_22_4791 -brif 28 L4789 L4790 -label L4789 +store __and_22_4833 27 +label L4834 +load 28 __and_22_4833 +brif 28 L4831 L4832 +label L4831 iconst 29 1 store has_runtime_inits 29 -jmp L4788 -label L4790 -label L4788 -label L4786 +jmp L4830 +label L4832 +label L4830 +label L4828 load 30 __for_idx_389 iconst 31 1 add 32 30 31 store __for_idx_389 32 -jmp L4784 -label L4787 +jmp L4826 +label L4829 load 33 has_runtime_inits iconst 35 1 sub 34 35 33 -brif 34 L4794 L4795 -label L4794 +brif 34 L4836 L4837 +label L4836 load 36 cn call 37 pith_struct_release void 1 36 load 38 gname @@ -168958,8 +169280,8 @@ load 46 gkind call 47 pith_cstring_release void 1 46 iconst 48 0 ret 48 -label L4795 -label L4793 +label L4837 +label L4835 strref 49 m46s1151 iconst 50 0 strref 51 m46s668 @@ -168973,12 +169295,12 @@ iconst 58 0 store __for_idx_390 58 store __for_len_390 57 store __for_iter_390 56 -label L4796 +label L4838 load 59 __for_idx_390 load 60 __for_len_390 lt 61 59 60 -brif 61 L4797 L4799 -label L4797 +brif 61 L4839 L4841 +label L4839 load 62 __for_iter_390 load 63 __for_idx_390 call 64 pith_list_get_value unknown 2 62 63 @@ -168989,20 +169311,20 @@ call 67 ir_ast_helpers_ir_unwrap_pub_node struct:Node 1 66 call 68 pith_struct_release void 1 65 store cn 67 iconst 69 0 -store __and_69_4803 69 +store __and_69_4845 69 load 70 cn field 71 70 0 string kind call 72 ir_ast_helpers_ir_is_binding_kind bool 1 71 -store __and_69_4803 72 -brif 72 L4803 L4804 -label L4803 +store __and_69_4845 72 +brif 72 L4845 L4846 +label L4845 load 73 cn call 74 ir_emitter_core_ir_global_needs_runtime_init bool 1 73 -store __and_69_4803 74 -label L4804 -load 75 __and_69_4803 -brif 75 L4801 L4802 -label L4801 +store __and_69_4845 74 +label L4846 +load 75 __and_69_4845 +brif 75 L4843 L4844 +label L4843 load 76 gname load 77 cn call 78 ir_ast_helpers_ir_binding_name string 1 77 @@ -169021,32 +169343,32 @@ load 87 parts field 88 87 16 int type_idx iconst 89 0 gte 90 88 89 -brif 90 L4806 L4807 -label L4806 +brif 90 L4848 L4849 +label L4848 load 91 target load 92 parts field 93 92 16 int type_idx call 94 ir_alias_registry_ir_resolve_type_node string 1 93 call 95 pith_cstring_release void 1 91 store target 94 -jmp L4805 -label L4807 -label L4805 +jmp L4847 +label L4849 +label L4847 load 96 target call 97 string_len int 1 96 iconst 98 0 eq 99 97 98 -brif 99 L4809 L4810 -label L4809 +brif 99 L4851 L4852 +label L4851 load 100 target load 101 parts field 102 101 8 int val_idx call 103 ir_emitter_core_ir_infer_type string 1 102 call 104 pith_cstring_release void 1 100 store target 103 -jmp L4808 -label L4810 -label L4808 +jmp L4850 +label L4852 +label L4850 load 105 gtarget load 106 gname load 107 target @@ -169064,42 +169386,42 @@ call 116 ir_struct_registry_ir_rc_kind string 1 115 call 117 pith_cstring_release void 1 114 store gkind 116 iconst 118 0 -store __and_118_4814 118 +store __and_118_4856 118 iconst 119 0 -store __and_119_4814 119 +store __and_119_4856 119 load 120 gkind call 121 string_len int 1 120 iconst 122 0 gt 123 121 122 -store __and_119_4814 123 -brif 123 L4814 L4815 -label L4814 +store __and_119_4856 123 +brif 123 L4856 L4857 +label L4856 load 124 gtarget strref 125 m46s23 call 127 pith_cstring_eq bool 2 124 125 iconst 128 1 sub 126 128 127 call 129 pith_cstring_release void 1 125 -store __and_119_4814 126 -label L4815 -load 130 __and_119_4814 -store __and_118_4814 130 -brif 130 L4816 L4817 -label L4816 +store __and_119_4856 126 +label L4857 +load 130 __and_119_4856 +store __and_118_4856 130 +brif 130 L4858 L4859 +label L4858 load 131 parts field 132 131 8 int val_idx call 133 ir_emitter_core_ir_string_expr_is_borrowed bool 1 132 -store __and_118_4814 133 -label L4817 -load 134 __and_118_4814 -brif 134 L4812 L4813 -label L4812 +store __and_118_4856 133 +label L4859 +load 134 __and_118_4856 +brif 134 L4854 L4855 +label L4854 load 135 r load 136 gkind call 137 ir_ownership_ir_rc_retain_reg void 2 135 136 -jmp L4811 -label L4813 -label L4811 +jmp L4853 +label L4855 +label L4853 strref 138 m46s825 load 139 gname concat 140 138 139 @@ -169115,16 +169437,16 @@ call 149 pith_cstring_release void 1 143 call 150 pith_cstring_release void 1 147 call 151 ir_builder_ir_emit void 1 148 call 152 pith_cstring_release void 1 148 -jmp L4800 -label L4802 -label L4800 -label L4798 +jmp L4842 +label L4844 +label L4842 +label L4840 load 153 __for_idx_390 iconst 154 1 add 155 153 154 store __for_idx_390 155 -jmp L4796 -label L4799 +jmp L4838 +label L4841 call 156 ir_builder_ir_reg int 0 store dr 156 strref 157 m46s827 @@ -169181,12 +169503,12 @@ iconst 8 0 store __for_idx_391 8 store __for_len_391 7 store __for_iter_391 6 -label L4818 +label L4860 load 9 __for_idx_391 load 10 __for_len_391 lt 11 9 10 -brif 11 L4819 L4821 -label L4819 +brif 11 L4861 L4863 +label L4861 load 12 __for_iter_391 load 13 __for_idx_391 call 14 pith_list_get_value unknown 2 12 13 @@ -169197,67 +169519,67 @@ call 17 ast_get_node struct:Node 1 16 call 18 pith_struct_release void 1 15 store actual_node 17 iconst 19 0 -store __or_19_4825 19 +store __or_19_4867 19 load 20 actual_node field 21 20 0 string kind strref 22 m46s615 call 23 pith_cstring_eq bool 2 21 22 call 24 pith_cstring_release void 1 22 -store __or_19_4825 23 -brif 23 L4826 L4825 -label L4825 +store __or_19_4867 23 +brif 23 L4868 L4867 +label L4867 load 25 actual_node field 26 25 0 string kind strref 27 m46s573 call 28 pith_cstring_eq bool 2 26 27 call 29 pith_cstring_release void 1 27 -store __or_19_4825 28 -label L4826 -load 30 __or_19_4825 -brif 30 L4823 L4824 -label L4823 +store __or_19_4867 28 +label L4868 +load 30 __or_19_4867 +brif 30 L4865 L4866 +label L4865 load 31 actual_node call 32 ir_generics_ir_has_generic_params bool 1 31 -brif 32 L4828 L4829 -label L4828 -jmp L4820 -label L4829 -label L4827 +brif 32 L4870 L4871 +label L4870 +jmp L4862 +label L4871 +label L4869 iconst 33 0 -store __and_33_4833 33 +store __and_33_4875 33 load 34 ir_emitter_core_ir_emit_tests -store __and_33_4833 34 -brif 34 L4833 L4834 -label L4833 +store __and_33_4875 34 +brif 34 L4875 L4876 +label L4875 load 35 actual_node field 36 35 8 string value strref 37 m46s1150 call 38 pith_cstring_eq bool 2 36 37 call 39 pith_cstring_release void 1 37 -store __and_33_4833 38 -label L4834 -load 40 __and_33_4833 +store __and_33_4875 38 +label L4876 +load 40 __and_33_4875 iconst 42 1 sub 41 42 40 -brif 41 L4831 L4832 -label L4831 +brif 41 L4873 L4874 +label L4873 load 43 item_idx call 44 ir_emitter_core_ir_func void 1 43 -jmp L4830 -label L4832 -label L4830 -jmp L4822 -label L4824 +jmp L4872 +label L4874 +label L4872 +jmp L4864 +label L4866 load 45 actual_node field 46 45 0 string kind strref 47 m46s584 call 48 pith_cstring_eq bool 2 46 47 call 49 pith_cstring_release void 1 47 -brif 48 L4835 L4836 -label L4835 +brif 48 L4877 L4878 +label L4877 load 50 ir_emitter_core_ir_emit_tests -brif 50 L4838 L4839 -label L4838 +brif 50 L4880 L4881 +label L4880 load 51 item_idx load 52 test_ord call 53 ir_emitter_core_ir_emit_test_func void 2 51 52 @@ -169265,18 +169587,18 @@ load 54 test_ord iconst 55 1 add 56 54 55 store test_ord 56 -jmp L4837 -label L4839 -label L4837 -jmp L4822 -label L4836 +jmp L4879 +label L4881 +label L4879 +jmp L4864 +label L4878 load 57 actual_node field 58 57 0 string kind strref 59 m46s585 call 60 pith_cstring_eq bool 2 58 59 call 61 pith_cstring_release void 1 59 -brif 60 L4840 L4841 -label L4840 +brif 60 L4882 L4883 +label L4882 load 62 impl_type load 63 actual_node call 64 ir_emitter_core_ir_impl_target_type string 1 63 @@ -169285,26 +169607,26 @@ store impl_type 64 load 66 actual_node load 67 impl_type call 68 ir_emitter_core_ir_emit_impl_methods void 2 66 67 -jmp L4822 -label L4841 -label L4822 -label L4820 +jmp L4864 +label L4883 +label L4864 +label L4862 load 69 __for_idx_391 iconst 70 1 add 71 69 70 store __for_idx_391 71 -jmp L4818 -label L4821 +jmp L4860 +label L4863 load 72 __for_iter_391 call 73 pith_list_release_handle void 1 72 load 74 ir_emitter_core_ir_emit_tests -brif 74 L4843 L4844 -label L4843 +brif 74 L4885 L4886 +label L4885 load 75 root_idx call 76 ir_emitter_core_ir_emit_test_main void 1 75 -jmp L4842 -label L4844 -label L4842 +jmp L4884 +label L4886 +label L4884 load 77 actual_node call 78 pith_struct_release void 1 77 load 79 impl_type @@ -169344,12 +169666,12 @@ iconst 10 0 store __for_idx_392 10 store __for_len_392 9 store __for_iter_392 8 -label L4845 +label L4887 load 11 __for_idx_392 load 12 __for_len_392 lt 13 11 12 -brif 13 L4846 L4848 -label L4846 +brif 13 L4888 L4890 +label L4888 load 14 __for_iter_392 load 15 __for_idx_392 call 16 pith_list_get_value_unchecked string 2 14 15 @@ -169361,13 +169683,13 @@ call 20 pith_cstring_release void 1 18 call 21 ir_builder_ir_str string 1 19 call 22 pith_cstring_release void 1 19 call 23 pith_cstring_release void 1 21 -label L4847 +label L4889 load 24 __for_idx_392 iconst 25 1 add 26 24 25 store __for_idx_392 26 -jmp L4845 -label L4848 +jmp L4887 +label L4890 load 27 builtin_names call 28 pith_list_release_handle void 1 27 iconst 29 0 @@ -169387,12 +169709,12 @@ iconst 6 0 store __for_idx_393 6 store __for_len_393 5 store __for_iter_393 4 -label L4849 +label L4891 load 7 __for_idx_393 load 8 __for_len_393 lt 9 7 8 -brif 9 L4850 L4852 -label L4850 +brif 9 L4892 L4894 +label L4892 load 10 __for_iter_393 load 11 __for_idx_393 call 12 pith_list_get_value unknown 2 10 11 @@ -169404,13 +169726,13 @@ load 15 ir_emitter_core_ir_preloaded_import_paths load 16 i call 17 pith_list_get_value_strict string 2 15 16 call 18 ir_alias_registry_ir_collect_preloaded_root_metadata void 2 14 17 -label L4851 +label L4893 load 19 __for_idx_393 iconst 20 1 add 21 19 20 store __for_idx_393 21 -jmp L4849 -label L4852 +jmp L4891 +label L4894 iconst 22 0 ret 22 endfunc @@ -169436,12 +169758,12 @@ iconst 11 0 store __for_idx_394 11 store __for_len_394 10 store __for_iter_394 9 -label L4853 +label L4895 load 12 __for_idx_394 load 13 __for_len_394 lt 14 12 13 -brif 14 L4854 L4856 -label L4854 +brif 14 L4896 L4898 +label L4896 load 15 __for_iter_394 load 16 __for_idx_394 call 17 pith_list_get_value unknown 2 15 16 @@ -169456,8 +169778,8 @@ load 22 preload_i load 23 ir_emitter_core_ir_preloaded_import_paths call 24 pith_list_len int 1 23 lt 25 22 24 -brif 25 L4858 L4859 -label L4858 +brif 25 L4900 L4901 +label L4900 load 26 module_path load 27 ir_emitter_core_ir_preloaded_import_paths load 28 preload_i @@ -169465,9 +169787,9 @@ call 29 pith_list_get_value_strict string 2 27 28 call 30 pith_cstring_retain void 1 29 call 31 pith_cstring_release void 1 26 store module_path 29 -jmp L4857 -label L4859 -label L4857 +jmp L4899 +label L4901 +label L4899 load 32 root call 33 ir_tree_cache_ir_root_items list 1 32 call 34 pith_auto_len int 1 33 @@ -169475,12 +169797,12 @@ iconst 35 0 store __for_idx_395 35 store __for_len_395 34 store __for_iter_395 33 -label L4860 +label L4902 load 36 __for_idx_395 load 37 __for_len_395 lt 38 36 37 -brif 38 L4861 L4863 -label L4861 +brif 38 L4903 L4905 +label L4903 load 39 __for_iter_395 load 40 __for_idx_395 call 41 pith_list_get_value unknown 2 39 40 @@ -169493,8 +169815,8 @@ store node 44 load 46 node field 47 46 0 string kind call 48 ir_generics_ir_is_fn_decl_kind bool 1 47 -brif 48 L4865 L4866 -label L4865 +brif 48 L4907 L4908 +label L4907 load 49 module_path load 50 node field 51 50 8 string value @@ -169502,28 +169824,28 @@ call 52 ir_names_ir_import_target_name string 2 49 51 load 53 node call 54 ir_emitter_core_ir_record_function_return_as void 2 52 53 call 55 pith_cstring_release void 1 52 -jmp L4864 -label L4866 -label L4864 -label L4862 +jmp L4906 +label L4908 +label L4906 +label L4904 load 56 __for_idx_395 iconst 57 1 add 58 56 57 store __for_idx_395 58 -jmp L4860 -label L4863 +jmp L4902 +label L4905 load 59 __for_iter_395 call 60 pith_list_release_handle void 1 59 load 61 root load 62 module_path call 63 ir_emitter_core_ir_collect_generic_function_decls_from_root void 2 61 62 -label L4855 +label L4897 load 64 __for_idx_394 iconst 65 1 add 66 64 65 store __for_idx_394 66 -jmp L4853 -label L4856 +jmp L4895 +label L4898 load 67 root_idx call 68 ir_tree_cache_ir_root_items list 1 67 call 69 pith_auto_len int 1 68 @@ -169531,12 +169853,12 @@ iconst 70 0 store __for_idx_396 70 store __for_len_396 69 store __for_iter_396 68 -label L4867 +label L4909 load 71 __for_idx_396 load 72 __for_len_396 lt 73 71 72 -brif 73 L4868 L4870 -label L4868 +brif 73 L4910 L4912 +label L4910 load 74 __for_iter_396 load 75 __for_idx_396 call 76 pith_list_get_value unknown 2 74 75 @@ -169553,8 +169875,8 @@ field 84 83 0 string kind strref 85 m46s600 call 86 pith_cstring_eq bool 2 84 85 call 87 pith_cstring_release void 1 85 -brif 86 L4872 L4873 -label L4872 +brif 86 L4914 L4915 +label L4914 load 88 target load 89 node call 90 ir_emitter_core_ir_type_alias_target string 1 89 @@ -169564,47 +169886,47 @@ load 92 target call 93 string_len int 1 92 iconst 94 0 gt 95 93 94 -brif 95 L4875 L4876 -label L4875 +brif 95 L4917 L4918 +label L4917 load 96 ir_alias_registry_ir_type_aliases load 97 node field 98 97 8 string value load 99 target call 100 map_insert void 3 96 98 99 -jmp L4874 -label L4876 -label L4874 -jmp L4871 -label L4873 +jmp L4916 +label L4918 +label L4916 +jmp L4913 +label L4915 load 101 node field 102 101 0 string kind call 103 ir_generics_ir_is_fn_decl_kind bool 1 102 -brif 103 L4877 L4878 -label L4877 +brif 103 L4919 L4920 +label L4919 load 104 node call 105 ir_emitter_core_ir_record_function_return void 1 104 load 106 node call 107 ir_generics_ir_has_generic_params bool 1 106 -brif 107 L4880 L4881 -label L4880 +brif 107 L4922 L4923 +label L4922 load 108 item_idx load 109 node strref 110 m46s82 call 111 ir_generics_ir_record_generic_function_decl void 3 108 109 110 call 112 pith_cstring_release void 1 110 -jmp L4879 -label L4881 -label L4879 -jmp L4871 -label L4878 -label L4871 -label L4869 +jmp L4921 +label L4923 +label L4921 +jmp L4913 +label L4920 +label L4913 +label L4911 load 113 __for_idx_396 iconst 114 1 add 115 113 114 store __for_idx_396 115 -jmp L4867 -label L4870 +jmp L4909 +label L4912 load 116 __for_iter_396 call 117 pith_list_release_handle void 1 116 load 118 module_path @@ -169643,13 +169965,13 @@ call 19 map_clear void 1 18 call 20 ir_emitter_core_ir_register_known_import_structs void 0 iconst 21 0 store iface_i 21 -label L4882 +label L4924 load 22 iface_i load 23 ir_emitter_core_ir_preloaded_import_roots call 24 pith_list_len int 1 23 lt 25 22 24 -brif 25 L4883 L4884 -label L4883 +brif 25 L4925 L4926 +label L4925 load 26 ir_emitter_core_ir_preloaded_import_roots load 27 iface_i call 28 pith_list_get_value_strict int 2 26 27 @@ -169662,21 +169984,21 @@ load 34 iface_i iconst 35 1 add 36 34 35 store iface_i 36 -jmp L4882 -label L4884 +jmp L4924 +label L4926 load 37 root_idx call 38 ir_emitter_core_ir_index_interfaces_in_root void 1 37 load 39 root_idx call 40 ir_emitter_core_ir_collect_assoc_bindings_in_root void 1 39 iconst 41 0 store preload_i 41 -label L4885 +label L4927 load 42 preload_i load 43 ir_emitter_core_ir_preloaded_import_roots call 44 pith_list_len int 1 43 lt 45 42 44 -brif 45 L4886 L4887 -label L4886 +brif 45 L4928 L4929 +label L4928 load 46 ir_emitter_core_ir_preloaded_import_roots load 47 preload_i call 48 pith_list_get_value_strict int 2 46 47 @@ -169693,8 +170015,8 @@ load 58 preload_i iconst 59 1 add 60 58 59 store preload_i 60 -jmp L4885 -label L4887 +jmp L4927 +label L4929 load 61 root_idx call 62 ir_tree_cache_ir_root_items list 1 61 call 63 pith_auto_len int 1 62 @@ -169702,12 +170024,12 @@ iconst 64 0 store __for_idx_397 64 store __for_len_397 63 store __for_iter_397 62 -label L4888 +label L4930 load 65 __for_idx_397 load 66 __for_len_397 lt 67 65 66 -brif 67 L4889 L4891 -label L4889 +brif 67 L4931 L4933 +label L4931 load 68 __for_iter_397 load 69 __for_idx_397 call 70 pith_list_get_value unknown 2 68 69 @@ -169718,77 +170040,77 @@ call 73 ast_get_node struct:Node 1 72 call 74 pith_struct_release void 1 71 store node 73 iconst 75 0 -store __or_75_4895 75 +store __or_75_4937 75 load 76 node field 77 76 0 string kind strref 78 m46s31 call 79 pith_cstring_eq bool 2 77 78 call 80 pith_cstring_release void 1 78 -store __or_75_4895 79 -brif 79 L4896 L4895 -label L4895 +store __or_75_4937 79 +brif 79 L4938 L4937 +label L4937 load 81 node field 82 81 0 string kind strref 83 m46s15 call 84 pith_cstring_eq bool 2 82 83 call 85 pith_cstring_release void 1 83 -store __or_75_4895 84 -label L4896 -load 86 __or_75_4895 -brif 86 L4893 L4894 -label L4893 +store __or_75_4937 84 +label L4938 +load 86 __or_75_4937 +brif 86 L4935 L4936 +label L4935 load 87 item_idx load 88 node iconst 89 1 call 90 ir_emitter_core_ir_collect_struct_decl void 3 87 88 89 -jmp L4892 -label L4894 +jmp L4934 +label L4936 iconst 91 0 -store __or_91_4899 91 +store __or_91_4941 91 load 92 node field 93 92 0 string kind strref 94 m46s30 call 95 pith_cstring_eq bool 2 93 94 call 96 pith_cstring_release void 1 94 -store __or_91_4899 95 -brif 95 L4900 L4899 -label L4899 +store __or_91_4941 95 +brif 95 L4942 L4941 +label L4941 load 97 node field 98 97 0 string kind strref 99 m46s14 call 100 pith_cstring_eq bool 2 98 99 call 101 pith_cstring_release void 1 99 -store __or_91_4899 100 -label L4900 -load 102 __or_91_4899 -brif 102 L4897 L4898 -label L4897 +store __or_91_4941 100 +label L4942 +load 102 __or_91_4941 +brif 102 L4939 L4940 +label L4939 load 103 node iconst 104 1 call 105 ir_emitter_core_ir_collect_enum_decl void 2 103 104 -jmp L4892 -label L4898 +jmp L4934 +label L4940 load 106 node field 107 106 0 string kind strref 108 m46s585 call 109 pith_cstring_eq bool 2 107 108 call 110 pith_cstring_release void 1 108 -brif 109 L4901 L4902 -label L4901 +brif 109 L4943 L4944 +label L4943 load 111 node strref 112 m46s82 call 113 ir_emitter_core_ir_collect_impl_method_signatures void 2 111 112 call 114 pith_cstring_release void 1 112 -jmp L4892 -label L4902 -label L4892 -label L4890 +jmp L4934 +label L4944 +label L4934 +label L4932 load 115 __for_idx_397 iconst 116 1 add 117 115 116 store __for_idx_397 117 -jmp L4888 -label L4891 +jmp L4930 +label L4933 load 118 __for_iter_397 call 119 pith_list_release_handle void 1 118 load 120 root_idx @@ -169843,12 +170165,12 @@ iconst 7 0 store __for_idx_398 7 store __for_len_398 6 store __for_iter_398 5 -label L4903 +label L4945 load 8 __for_idx_398 load 9 __for_len_398 lt 10 8 9 -brif 10 L4904 L4906 -label L4904 +brif 10 L4946 L4948 +label L4946 load 11 __for_iter_398 load 12 __for_idx_398 call 13 pith_list_get_value unknown 2 11 12 @@ -169865,24 +170187,24 @@ field 20 19 0 string kind strref 21 m46s574 call 22 pith_cstring_eq bool 2 20 21 call 23 pith_cstring_release void 1 21 -brif 22 L4908 L4909 -label L4908 +brif 22 L4950 L4951 +label L4950 load 24 node field 25 24 16 list children iconst 26 0 call 27 pith_list_get_value_strict int 2 25 26 call 28 ast_get_node struct:Node 1 27 store actual_node 28 -jmp L4907 -label L4909 -label L4907 +jmp L4949 +label L4951 +label L4949 load 29 actual_node field 30 29 0 string kind strref 31 m46s585 call 32 pith_cstring_eq bool 2 30 31 call 33 pith_cstring_release void 1 31 -brif 32 L4911 L4912 -label L4911 +brif 32 L4953 L4954 +label L4953 load 34 impl_type load 35 actual_node call 36 ir_emitter_core_ir_impl_target_type string 1 35 @@ -169892,24 +170214,24 @@ load 38 impl_type call 39 string_len int 1 38 iconst 40 0 gt 41 39 40 -brif 41 L4914 L4915 -label L4914 +brif 41 L4956 L4957 +label L4956 load 42 actual_node load 43 impl_type call 44 ir_emitter_core_ir_register_impl_method_specialization_names void 2 42 43 -jmp L4913 -label L4915 -label L4913 -jmp L4910 -label L4912 -label L4910 -label L4905 +jmp L4955 +label L4957 +label L4955 +jmp L4952 +label L4954 +label L4952 +label L4947 load 45 __for_idx_398 iconst 46 1 add 47 45 46 store __for_idx_398 47 -jmp L4903 -label L4906 +jmp L4945 +label L4948 load 48 __for_iter_398 call 49 pith_list_release_handle void 1 48 load 50 node @@ -169940,8 +170262,8 @@ load 9 impl_type call 10 checker_has_generic_declaration bool 1 9 iconst 12 1 sub 11 12 10 -brif 11 L4917 L4918 -label L4917 +brif 11 L4959 L4960 +label L4959 load 13 sdecl call 14 pith_struct_release void 1 13 load 15 struct_params @@ -169958,8 +170280,8 @@ load 25 child_node call 26 pith_struct_release void 1 25 iconst 27 0 ret 27 -label L4918 -label L4916 +label L4960 +label L4958 load 28 sdecl load 29 impl_type call 30 checker_get_generic_declaration_index int 1 29 @@ -169975,8 +170297,8 @@ load 37 struct_params call 38 pith_list_len int 1 37 iconst 39 0 eq 40 38 39 -brif 40 L4920 L4921 -label L4920 +brif 40 L4962 L4963 +label L4962 load 41 sdecl call 42 pith_struct_release void 1 41 load 43 struct_params @@ -169993,8 +170315,8 @@ load 53 child_node call 54 pith_struct_release void 1 53 iconst 55 0 ret 55 -label L4921 -label L4919 +label L4963 +label L4961 load 56 instance_tids load 57 checker_struct_instance_tids call 58 pith_list_retain_handle void 1 57 @@ -170006,12 +170328,12 @@ iconst 62 0 store __for_idx_399 62 store __for_len_399 61 store __for_iter_399 60 -label L4922 +label L4964 load 63 __for_idx_399 load 64 __for_len_399 lt 65 63 64 -brif 65 L4923 L4925 -label L4923 +brif 65 L4965 L4967 +label L4965 load 66 __for_iter_399 load 67 __for_idx_399 call 68 pith_list_get_value unknown 2 66 67 @@ -170023,21 +170345,21 @@ load 72 impl_type call 74 pith_cstring_eq bool 2 71 72 iconst 75 1 sub 73 75 74 -brif 73 L4927 L4928 -label L4927 -jmp L4924 -label L4928 -label L4926 +brif 73 L4969 L4970 +label L4969 +jmp L4966 +label L4970 +label L4968 load 76 checker_struct_instance_type_args load 77 inst_tid call 78 map_contains_ikey bool 2 76 77 iconst 80 1 sub 79 80 78 -brif 79 L4930 L4931 -label L4930 -jmp L4924 -label L4931 -label L4929 +brif 79 L4972 L4973 +label L4972 +jmp L4966 +label L4973 +label L4971 load 81 arg_tids load 82 checker_struct_instance_type_args load 83 inst_tid @@ -170055,12 +170377,12 @@ iconst 92 0 store __for_idx_400 92 store __for_len_400 91 store __for_iter_400 90 -label L4932 +label L4974 load 93 __for_idx_400 load 94 __for_len_400 lt 95 93 94 -brif 95 L4933 L4935 -label L4933 +brif 95 L4975 L4977 +label L4975 load 96 __for_iter_400 load 97 __for_idx_400 call 98 pith_list_get_value unknown 2 96 97 @@ -170069,13 +170391,13 @@ load 99 arg_names load 100 at call 101 ir_type_helpers_ir_type_from_tid string 1 100 call 102 pith_list_push_value void 2 99 101 -label L4934 +label L4976 load 103 __for_idx_400 iconst 104 1 add 105 103 104 store __for_idx_400 105 -jmp L4932 -label L4935 +jmp L4974 +label L4977 load 106 instance_type_name load 107 inst_tid call 108 types_get_type_name string 1 107 @@ -170088,12 +170410,12 @@ iconst 113 0 store __for_idx_401 113 store __for_len_401 112 store __for_iter_401 111 -label L4936 +label L4978 load 114 __for_idx_401 load 115 __for_len_401 lt 116 114 115 -brif 116 L4937 L4939 -label L4937 +brif 116 L4979 L4981 +label L4979 load 117 __for_iter_401 load 118 __for_idx_401 call 119 pith_list_get_value unknown 2 117 118 @@ -170108,30 +170430,30 @@ field 125 124 0 string kind strref 126 m46s573 call 127 pith_cstring_eq bool 2 125 126 call 128 pith_cstring_release void 1 126 -brif 127 L4941 L4942 -label L4941 +brif 127 L4983 L4984 +label L4983 load 129 child_node load 130 impl_type load 131 instance_type_name load 132 arg_names call 133 ir_method_tables_ir_register_one_specialized_method_name void 4 129 130 131 132 -jmp L4940 -label L4942 -label L4940 -label L4938 +jmp L4982 +label L4984 +label L4982 +label L4980 load 134 __for_idx_401 iconst 135 1 add 136 134 135 store __for_idx_401 136 -jmp L4936 -label L4939 -label L4924 +jmp L4978 +label L4981 +label L4966 load 137 __for_idx_399 iconst 138 1 add 139 137 138 store __for_idx_399 139 -jmp L4922 -label L4925 +jmp L4964 +label L4967 load 140 sdecl call 141 pith_struct_release void 1 140 load 142 struct_params @@ -170181,13 +170503,13 @@ call 8 pith_struct_release void 1 5 store root 7 iconst 9 0 store preload_i 9 -label L4943 +label L4985 load 10 preload_i load 11 ir_emitter_core_ir_preloaded_import_roots call 12 pith_list_len int 1 11 lt 13 10 12 -brif 13 L4944 L4945 -label L4944 +brif 13 L4986 L4987 +label L4986 load 14 ir_emitter_core_ir_preloaded_import_roots load 15 preload_i call 16 pith_list_get_value_strict int 2 14 15 @@ -170200,16 +170522,16 @@ load 22 preload_i iconst 23 1 add 24 22 23 store preload_i 24 -jmp L4943 -label L4945 +jmp L4985 +label L4987 load 25 root_idx call 26 ir_emitter_core_ir_collect_strings void 1 25 load 27 root_idx call 28 ir_emitter_core_ir_collect_struct_field_strings void 1 27 call 29 ir_emitter_core_ir_preseed_result_error_strings void 0 load 30 ir_emitter_core_ir_emit_tests -brif 30 L4947 L4948 -label L4947 +brif 30 L4989 L4990 +label L4989 load 31 root_idx call 32 ir_emitter_core_ir_collect_test_decls list 1 31 call 33 pith_auto_len int 1 32 @@ -170217,12 +170539,12 @@ iconst 34 0 store __for_idx_402 34 store __for_len_402 33 store __for_iter_402 32 -label L4949 +label L4991 load 35 __for_idx_402 load 36 __for_len_402 lt 37 35 36 -brif 37 L4950 L4952 -label L4950 +brif 37 L4992 L4994 +label L4992 load 38 __for_iter_402 load 39 __for_idx_402 call 40 pith_list_get_value unknown 2 38 39 @@ -170234,18 +170556,18 @@ field 44 43 8 string value call 45 ir_builder_ir_str string 1 44 call 46 pith_cstring_release void 1 41 store _name_id 45 -label L4951 +label L4993 load 47 __for_idx_402 iconst 48 1 add 49 47 48 store __for_idx_402 49 -jmp L4949 -label L4952 +jmp L4991 +label L4994 load 50 __for_iter_402 call 51 pith_list_release_handle void 1 50 -jmp L4946 -label L4948 -label L4946 +jmp L4988 +label L4990 +label L4988 call 52 ir_builder_ir_emit_string_table void 0 load 53 root_idx call 54 ir_emitter_core_ir_collect_root_import_metadata void 1 53 @@ -170491,328 +170813,331 @@ string m47s164 "set_int" string m47s165 "string_interp" string m47s166 "if_expr" string m47s167 "match_expr" -string m47s168 "ok" -string m47s169 "catch" -string m47s170 "is_ok" -string m47s171 "err" -string m47s172 "closure_ref " -string m47s173 "function" -string m47s174 "binary" -string m47s175 "unary" -string m47s176 "float" -string m47s177 "float_lit" -string m47s178 "integer" -string m47s179 "pith_list_get_opt" -string m47s180 "map_get_ikey_opt" -string m47s181 "map_int" -string m47s182 "map_get_opt" -string m47s183 "index out of bounds" -string m47s184 "list_string" -string m47s185 "neq " -string m47s186 " 0.0" -string m47s187 "fconst " -string m47s188 "struct:" -string m47s189 "__struct_alloc" -string m47s190 "field_init" -string m47s191 "__arg_" -string m47s192 "__fnval_" -string m47s193 "__spawn_" -string m47s194 "__lambda_" -string m47s195 "concat " -string m47s196 "lit" -string m47s197 "interp_spec" -string m47s198 "map_insert_ikey" -string m47s199 "map_insert" -string m47s200 "insert" -string m47s201 "identity" -string m47s202 "pith_list_set_value" -string m47s203 "__list_push" -string m47s204 "pith_list_push_value" -string m47s205 "push" -string m47s206 "__last_call" -string m47s207 "list_join_int" -string m47s208 "list_join" -string m47s209 "__cl_field" -string m47s210 "value" -string m47s211 "unwrap_or" -string m47s212 "to_string" -string m47s213 "or_else" -string m47s214 "uint_to_string" -string m47s215 "UInt64" -string m47s216 "UInt32" -string m47s217 "UInt16" -string m47s218 "UInt8" -string m47s219 "UInt" -string m47s220 "primitive" -string m47s221 "pith_channel_try_send" -string m47s222 "try_send" -string m47s223 "pith_channel_send" -string m47s224 "send" -string m47s225 "select" -string m47s226 "sleep" -string m47s227 "mod " -string m47s228 "gte " -string m47s229 "time" -string m47s230 "pith_select_next_index" -string m47s231 "select_offset" -string m47s232 "select_deadline" -string m47s233 "select_send_arm" -string m47s234 "select_recv_arm" -string m47s235 "select_default_arm" -string m47s236 "select_timeout_arm" -string m47s237 "pith_channel_try_recv" -string m47s238 "handler" -string m47s239 "int_to_string" -string m47s240 "float_to_string" -string m47s241 "bool_to_string" -string m47s242 "result_to_string" -string m47s243 "is_err" -string m47s244 "result_bool" -string m47s245 "result_int" -string m47s246 "legacy_result" -string m47s247 " 1 " -string m47s248 " 0 " -string m47s249 "struct:tuple" -string m47s250 " 3" -string m47s251 "_m" -string m47s252 "__tuple_dtor_" -string m47s253 "p" -string m47s254 "c" -string m47s255 "u" -string m47s256 "b" -string m47s257 "t" -string m47s258 "m" -string m47s259 "l" -string m47s260 "s" -string m47s261 "__list_new" -string m47s262 "__list_new_bytes" -string m47s263 "__list_new_struct" -string m47s264 "__list_new_map" -string m47s265 "__list_new_list" -string m47s266 "__list_new_str" -string m47s267 "__map_new" -string m47s268 "__map_new_str_val" -string m47s269 "__map_new_int" -string m47s270 "__map_new_int_str_val" -string m47s271 "entry" -string m47s272 "assert_eq" -string m47s273 "assert" -string m47s274 "Channel" -string m47s275 "ord" -string m47s276 "__callee" -string m47s277 "]" -string m47s278 "file_path" -string m47s279 "decode_file_path" -string m47s280 "decode_file" -string m47s281 "input" -string m47s282 "decode_text_path" -string m47s283 "decode_path" -string m47s284 "decode_text" -string m47s285 "handle" -string m47s286 "decode" -string m47s287 "decode_object" -string m47s288 "reduce" -string m47s289 "filter" -string m47s290 "contains" -string m47s291 "index_of" -string m47s292 "is_empty" -string m47s293 "label " -string m47s294 "__idx_opt_result" -string m47s295 "__list_index_i" -string m47s296 "__list_index_result" -string m47s297 "__reduce_i" -string m47s298 "__reduce_acc" -string m47s299 "__reduce_fn" -string m47s300 "__filter_i" -string m47s301 "__filter_fn" -string m47s302 "__map_i" -string m47s303 "__map_fn" -string m47s304 "parse_required" -string m47s305 "toml_decode_text_path" -string m47s306 "pith_assert_eq_fail" -string m47s307 "eq" -string m47s308 "pith_list_eq_scalar" -string m47s309 "pith_list_eq_string" -string m47s310 "bytes_eq" -string m47s311 "binop " -string m47s312 "pith_cstring_lte" -string m47s313 "pith_cstring_lt" -string m47s314 "gt" -string m47s315 "add" -string m47s316 "or" -string m47s317 "and" -string m47s318 "chr" -string m47s319 "byte_at" -string m47s320 "'" -string m47s321 "\"" -string m47s322 "\\" -string m47s323 "r" -string m47s324 "n" -string m47s325 "gte" -string m47s326 "sub " -string m47s327 "__closure_get_env" -string m47s328 "__closure" -string m47s329 "param __closure" -string m47s330 "__closure_set_env" -string m47s331 "pith_closure_set_env_rc" -string m47s332 ")" -string m47s333 "..." -string m47s334 ": " -string m47s335 ", " -string m47s336 "(" -string m47s337 "show" -string m47s338 "pith_display_map" -string m47s339 "pith_display_list" -string m47s340 "__set_to_list" -string m47s341 " format_pad string 4 " -string m47s342 "float_format" -string m47s343 "^" -string m47s344 ">" -string m47s345 "<" -string m47s346 "unwrap of none" -string m47s347 "task:" -string m47s348 "task" -string m47s349 "channel:" -string m47s350 "channel" -string m47s351 "mod" -string m47s352 "div" -string m47s353 "mul" -string m47s354 "sub" -string m47s355 "concat" -string m47s356 "slice" -string m47s357 "cap" -string m47s358 "len" -string m47s359 "to_float" -string m47s360 "fix" -string m47s361 "col" -string m47s362 "line" -string m47s363 "file" -string m47s364 "message" -string m47s365 "code" -string m47s366 "severity" -string m47s367 "Diagnostic" -string m47s368 "variant_types" -string m47s369 "variants" -string m47s370 "elements" -string m47s371 "value_type" -string m47s372 "key_type" -string m47s373 "inner" -string m47s374 "return_type" -string m47s375 "param_types" -string m47s376 "field_mut" -string m47s377 "field_pub" -string m47s378 "field_types" -string m47s379 "fields" -string m47s380 "name" -string m47s381 "kind" -string m47s382 "TypeInfo" -string m47s383 "current_column" -string m47s384 "current_line" -string m47s385 "Token" -string m47s386 "children" -string m47s387 "Node" -string m47s388 "struct " -string m47s389 "variant" -string m47s390 "field" -string m47s391 "interface_decl" -string m47s392 "assoc_type_bind" -string m47s393 "for_type" -string m47s394 "pat_variant" -string m47s395 "List" -string m47s396 " 16 unknown err" -string m47s397 " 8 unknown ok" -string m47s398 " 0 bool is_ok" -string m47s399 "__tuple_cascade_" -string m47s400 "00" -string m47s401 "none" -string m47s402 "is_none" -string m47s403 "is_some" -string m47s404 "pop" -string m47s405 "char_at" -string m47s406 "trim_right" -string m47s407 "trim_left" -string m47s408 "replace" -string m47s409 "repeat" -string m47s410 "join" -string m47s411 "reverse" -string m47s412 "to_lower" -string m47s413 "to_upper" -string m47s414 "substring" -string m47s415 "trim" -string m47s416 "interp" -string m47s417 "map_int_str_val" -string m47s418 "map_str_val" -string m47s419 "func " -string m47s420 "AtomicInt" -string m47s421 "Semaphore" -string m47s422 "WaitGroup" -string m47s423 "Mutex" -string m47s424 " pith_struct_weak_retain void 1 " -string m47s425 " weak" -string m47s426 " ok" -string m47s427 "IrSelectParts(" -string m47s428 "probe_arms,itimeout_idx,idefault_idx" -string m47s429 "probe_arms" -string m47s430 "probe_arms: " -string m47s431 "timeout_idx" -string m47s432 ", timeout_idx: " -string m47s433 "default_idx" -string m47s434 ", default_idx: " -string m47s435 "LambdaParts(" -string m47s436 "params,ibody_idx,captures" -string m47s437 "params" -string m47s438 "params: " -string m47s439 "body_idx" -string m47s440 ", body_idx: " -string m47s441 "captures" -string m47s442 ", captures: " -string m47s443 "parse_int failed" -string m47s444 "file_open_read failed" -string m47s445 "file_open_write failed" -string m47s446 "file_open_append failed" -string m47s447 "byte_buffer_write failed" -string m47s448 "byte_buffer_write_string_utf8 failed" -string m47s449 "byte_buffer_write_byte failed" -string m47s450 "file_write failed" -string m47s451 "file_write_bytes failed" -string m47s452 "tcp_connect failed" -string m47s453 "tcp_listen failed" -string m47s454 "tcp_accept failed" -string m47s455 "tcp_write failed" -string m47s456 "tcp_write_bytes failed" -string m47s457 "process_spawn failed" -string m47s458 "process_spawn_argv failed" -string m47s459 "process_output_argv failed" -string m47s460 "process_write failed" -string m47s461 "process_write_bytes failed" -string m47s462 "crypto_x25519_keygen failed" -string m47s463 "write_file failed" -string m47s464 "append_file failed" -string m47s465 "write_file_bytes failed" -string m47s466 "append_file_bytes failed" -string m47s467 "read_file failed" -string m47s468 "exec_output failed" -string m47s469 "dns_resolve failed" -string m47s470 "bytes_to_string_utf8 failed" -string m47s471 "bytes_substring_utf8 failed" -string m47s472 "file_read failed" -string m47s473 "tcp_read failed" -string m47s474 "process_read failed" -string m47s475 "process_read_err failed" -string m47s476 "read_file_bytes failed" -string m47s477 "b64_decode failed" -string m47s478 "from_hex failed" -string m47s479 "file_read_bytes failed" -string m47s480 "tcp_read_bytes failed" -string m47s481 "process_read_bytes failed" -string m47s482 "process_read_err_bytes failed" -string m47s483 "crypto_x25519_public_key failed" -string m47s484 "crypto_x25519_shared_secret failed" -string m47s485 "crypto_aes_128_gcm_seal failed" -string m47s486 "crypto_aes_128_gcm_open failed" -string m47s487 "crypto_chacha20_poly1305_seal failed" -string m47s488 "crypto_chacha20_poly1305_open failed" -string m47s489 "crypto_sign_rsa_pss_sha256_pkcs8 failed" +string m47s168 "borrowed" +string m47s169 "ok" +string m47s170 "catch" +string m47s171 "is_ok" +string m47s172 "err" +string m47s173 "closure_ref " +string m47s174 "function" +string m47s175 "binary" +string m47s176 "unary" +string m47s177 "float" +string m47s178 "float_lit" +string m47s179 "integer" +string m47s180 "pith_list_get_opt" +string m47s181 "map_get_ikey_opt" +string m47s182 "map_int" +string m47s183 "map_get_opt" +string m47s184 "index out of bounds" +string m47s185 "list_string" +string m47s186 "neq " +string m47s187 " 0.0" +string m47s188 "fconst " +string m47s189 "struct:" +string m47s190 "__struct_alloc" +string m47s191 "field_init" +string m47s192 "__arg_" +string m47s193 "__fnval_" +string m47s194 "__spawn_" +string m47s195 "__lambda_" +string m47s196 "concat " +string m47s197 "lit" +string m47s198 "interp_spec" +string m47s199 "map_insert_ikey" +string m47s200 "map_insert" +string m47s201 "insert" +string m47s202 "identity" +string m47s203 "pith_list_set_value" +string m47s204 "__list_push" +string m47s205 "pith_list_push_value" +string m47s206 "push" +string m47s207 "__last_call" +string m47s208 "list_join_int" +string m47s209 "list_join" +string m47s210 "__cl_field" +string m47s211 "value" +string m47s212 "unwrap_or" +string m47s213 "to_string" +string m47s214 "or_else" +string m47s215 "uint_to_string" +string m47s216 "UInt64" +string m47s217 "UInt32" +string m47s218 "UInt16" +string m47s219 "UInt8" +string m47s220 "UInt" +string m47s221 "primitive" +string m47s222 "pith_channel_try_send" +string m47s223 "try_send" +string m47s224 "pith_channel_send" +string m47s225 "send" +string m47s226 "select" +string m47s227 "sleep" +string m47s228 "mod " +string m47s229 "gte " +string m47s230 "time" +string m47s231 "pith_select_next_index" +string m47s232 "select_offset" +string m47s233 "select_deadline" +string m47s234 "select_send_arm" +string m47s235 "select_recv_arm" +string m47s236 "select_default_arm" +string m47s237 "select_timeout_arm" +string m47s238 "pith_channel_try_recv" +string m47s239 "handler" +string m47s240 "int_to_string" +string m47s241 "float_to_string" +string m47s242 "bool_to_string" +string m47s243 "result_to_string" +string m47s244 "opaque" +string m47s245 "owned" +string m47s246 "is_err" +string m47s247 "result_bool" +string m47s248 "result_int" +string m47s249 "legacy_result" +string m47s250 " 1 " +string m47s251 " 0 " +string m47s252 "struct:tuple" +string m47s253 " 3" +string m47s254 "_m" +string m47s255 "__tuple_dtor_" +string m47s256 "p" +string m47s257 "c" +string m47s258 "u" +string m47s259 "b" +string m47s260 "t" +string m47s261 "m" +string m47s262 "l" +string m47s263 "s" +string m47s264 "__list_new" +string m47s265 "__list_new_bytes" +string m47s266 "__list_new_struct" +string m47s267 "__list_new_map" +string m47s268 "__list_new_list" +string m47s269 "__list_new_str" +string m47s270 "__map_new" +string m47s271 "__map_new_str_val" +string m47s272 "__map_new_int" +string m47s273 "__map_new_int_str_val" +string m47s274 "entry" +string m47s275 "assert_eq" +string m47s276 "assert" +string m47s277 "Channel" +string m47s278 "ord" +string m47s279 "__callee" +string m47s280 "]" +string m47s281 "file_path" +string m47s282 "decode_file_path" +string m47s283 "decode_file" +string m47s284 "input" +string m47s285 "decode_text_path" +string m47s286 "decode_path" +string m47s287 "decode_text" +string m47s288 "handle" +string m47s289 "decode" +string m47s290 "decode_object" +string m47s291 "reduce" +string m47s292 "filter" +string m47s293 "contains" +string m47s294 "index_of" +string m47s295 "is_empty" +string m47s296 "label " +string m47s297 "__idx_opt_result" +string m47s298 "__list_index_i" +string m47s299 "__list_index_result" +string m47s300 "__reduce_i" +string m47s301 "__reduce_acc" +string m47s302 "__reduce_fn" +string m47s303 "__filter_i" +string m47s304 "__filter_fn" +string m47s305 "__map_i" +string m47s306 "__map_fn" +string m47s307 "parse_required" +string m47s308 "toml_decode_text_path" +string m47s309 "pith_assert_eq_fail" +string m47s310 "eq" +string m47s311 "pith_list_eq_scalar" +string m47s312 "pith_list_eq_string" +string m47s313 "bytes_eq" +string m47s314 "binop " +string m47s315 "pith_cstring_lte" +string m47s316 "pith_cstring_lt" +string m47s317 "gt" +string m47s318 "add" +string m47s319 "or" +string m47s320 "and" +string m47s321 "chr" +string m47s322 "byte_at" +string m47s323 "'" +string m47s324 "\"" +string m47s325 "\\" +string m47s326 "r" +string m47s327 "n" +string m47s328 "gte" +string m47s329 "sub " +string m47s330 "__closure_get_env" +string m47s331 "__closure" +string m47s332 "param __closure" +string m47s333 "__closure_set_env" +string m47s334 "pith_closure_set_env_rc" +string m47s335 ")" +string m47s336 "..." +string m47s337 ": " +string m47s338 ", " +string m47s339 "(" +string m47s340 "show" +string m47s341 "pith_display_map" +string m47s342 "pith_display_list" +string m47s343 "__set_to_list" +string m47s344 " format_pad string 4 " +string m47s345 "float_format" +string m47s346 "^" +string m47s347 ">" +string m47s348 "<" +string m47s349 "unwrap of none" +string m47s350 "task:" +string m47s351 "task" +string m47s352 "channel:" +string m47s353 "channel" +string m47s354 "mod" +string m47s355 "div" +string m47s356 "mul" +string m47s357 "sub" +string m47s358 "concat" +string m47s359 "slice" +string m47s360 "cap" +string m47s361 "len" +string m47s362 "to_float" +string m47s363 "fix" +string m47s364 "col" +string m47s365 "line" +string m47s366 "file" +string m47s367 "message" +string m47s368 "code" +string m47s369 "severity" +string m47s370 "Diagnostic" +string m47s371 "variant_types" +string m47s372 "variants" +string m47s373 "elements" +string m47s374 "value_type" +string m47s375 "key_type" +string m47s376 "inner" +string m47s377 "return_type" +string m47s378 "param_types" +string m47s379 "field_mut" +string m47s380 "field_pub" +string m47s381 "field_types" +string m47s382 "fields" +string m47s383 "name" +string m47s384 "kind" +string m47s385 "TypeInfo" +string m47s386 "current_column" +string m47s387 "current_line" +string m47s388 "Token" +string m47s389 "children" +string m47s390 "Node" +string m47s391 "struct " +string m47s392 "variant" +string m47s393 "field" +string m47s394 "interface_decl" +string m47s395 "assoc_type_bind" +string m47s396 "for_type" +string m47s397 "pat_variant" +string m47s398 "List" +string m47s399 " 16 unknown err" +string m47s400 " 8 unknown ok" +string m47s401 " 0 bool is_ok" +string m47s402 "__tuple_cascade_" +string m47s403 "00" +string m47s404 "none" +string m47s405 "is_none" +string m47s406 "is_some" +string m47s407 "pop" +string m47s408 "char_at" +string m47s409 "trim_right" +string m47s410 "trim_left" +string m47s411 "replace" +string m47s412 "repeat" +string m47s413 "join" +string m47s414 "reverse" +string m47s415 "to_lower" +string m47s416 "to_upper" +string m47s417 "substring" +string m47s418 "trim" +string m47s419 "interp" +string m47s420 "map_int_str_val" +string m47s421 "map_str_val" +string m47s422 "func " +string m47s423 "AtomicInt" +string m47s424 "Semaphore" +string m47s425 "WaitGroup" +string m47s426 "Mutex" +string m47s427 " pith_struct_weak_retain void 1 " +string m47s428 " weak" +string m47s429 " ok" +string m47s430 "IrSelectParts(" +string m47s431 "probe_arms,itimeout_idx,idefault_idx" +string m47s432 "probe_arms" +string m47s433 "probe_arms: " +string m47s434 "timeout_idx" +string m47s435 ", timeout_idx: " +string m47s436 "default_idx" +string m47s437 ", default_idx: " +string m47s438 "LambdaParts(" +string m47s439 "params,ibody_idx,captures" +string m47s440 "params" +string m47s441 "params: " +string m47s442 "body_idx" +string m47s443 ", body_idx: " +string m47s444 "captures" +string m47s445 ", captures: " +string m47s446 "parse_int failed" +string m47s447 "file_open_read failed" +string m47s448 "file_open_write failed" +string m47s449 "file_open_append failed" +string m47s450 "byte_buffer_write failed" +string m47s451 "byte_buffer_write_string_utf8 failed" +string m47s452 "byte_buffer_write_byte failed" +string m47s453 "file_write failed" +string m47s454 "file_write_bytes failed" +string m47s455 "tcp_connect failed" +string m47s456 "tcp_listen failed" +string m47s457 "tcp_accept failed" +string m47s458 "tcp_write failed" +string m47s459 "tcp_write_bytes failed" +string m47s460 "process_spawn failed" +string m47s461 "process_spawn_argv failed" +string m47s462 "process_output_argv failed" +string m47s463 "process_write failed" +string m47s464 "process_write_bytes failed" +string m47s465 "crypto_x25519_keygen failed" +string m47s466 "write_file failed" +string m47s467 "append_file failed" +string m47s468 "write_file_bytes failed" +string m47s469 "append_file_bytes failed" +string m47s470 "read_file failed" +string m47s471 "exec_output failed" +string m47s472 "dns_resolve failed" +string m47s473 "bytes_to_string_utf8 failed" +string m47s474 "bytes_substring_utf8 failed" +string m47s475 "file_read failed" +string m47s476 "tcp_read failed" +string m47s477 "process_read failed" +string m47s478 "process_read_err failed" +string m47s479 "read_file_bytes failed" +string m47s480 "b64_decode failed" +string m47s481 "from_hex failed" +string m47s482 "file_read_bytes failed" +string m47s483 "tcp_read_bytes failed" +string m47s484 "process_read_bytes failed" +string m47s485 "process_read_err_bytes failed" +string m47s486 "crypto_x25519_public_key failed" +string m47s487 "crypto_x25519_shared_secret failed" +string m47s488 "crypto_aes_128_gcm_seal failed" +string m47s489 "crypto_aes_128_gcm_open failed" +string m47s490 "crypto_chacha20_poly1305_seal failed" +string m47s491 "crypto_chacha20_poly1305_open failed" +string m47s492 "crypto_sign_rsa_pss_sha256_pkcs8 failed" struct Node kind value children line col struct Token kind value current_line current_column struct TypeInfo kind name fields field_types field_pub field_mut param_types return_type inner key_type value_type elements variants variant_types diff --git a/self-host/ir_emitter_core.pith b/self-host/ir_emitter_core.pith index 6945b834..32d26ba6 100644 --- a/self-host/ir_emitter_core.pith +++ b/self-host/ir_emitter_core.pith @@ -3706,9 +3706,38 @@ fn ir_method_call_arg_expr(node: Node, arg_index: Int) -> Int: return cn.children[0] return child -fn ir_emit_result_unwrap_or(node: Node) -> Int: +# how `!`, `catch`, and `unwrap_or` should treat the shell of their result +# or optional operand: +# "owned" — a fresh shell this extraction is the sole owner of: a call +# or method-call result (results and optionals always arrive +# owned from a call; user returns retain borrowed payloads on +# the way out, runtime producers mint new tuples), or an +# awaited task's value. +# "borrowed" — a shell some other owner will release: a parameter or a +# named local (an ident), a struct field, a container +# element. the extraction must not free the shell, and must +# not hand out the shell's payload count as if it owned it — +# the owner releases the shell at its own scope exit, so +# either mistake is a double-free. +# "opaque" — anything else (a match or if expression value, ...): kept +# on the historical owned-style treatment, which can leak a +# shell but predates this classification. +# parens are transparent. mirrors ir_optional_subject_is_owned, which makes +# the same call-vs-borrow split for optional subjects. +fn ir_extraction_operand_class(idx: Int) -> String: + node := get_node(idx) + if node.kind == "grouped" and node.children.len() > 0: + return ir_extraction_operand_class(node.children[0]) + if node.kind == "call" or node.kind == "method_call" or node.kind == "await": + return "owned" + if node.kind == "ident" or node.kind == "field_access" or node.kind == "index": + return "borrowed" + return "opaque" + +fn ir_emit_result_unwrap_or(idx: Int, node: Node) -> Int: recv_r := ir_expr(node.children[0]) recv_tid := c_get_expr_type(node.children[0]) + operand_class := ir_extraction_operand_class(node.children[0]) cond_r := ir_emit_result_flag_field(recv_r, "is_ok") temp_name := ir_new_temp_name("unwrap_or") arg_idx := ir_method_call_arg_expr(node, 0) @@ -3718,7 +3747,19 @@ fn ir_emit_result_unwrap_or(node: Node) -> Int: ir_emit("brif " + cond_r.to_string() + " " + ok_l + " " + fallback_l) ir_emit_label(ok_l) ok_value_r := ir_emit_result_value_field(recv_r, recv_tid, "ok") - ir_emit_call1(ir_reg(), "pith_struct_release", "void", recv_r) + if operand_class == "borrowed": + # the operand's owner keeps the shell and its payload count. + # consumers treat a heap-kind unwrap_or value as owned (see the + # method_call cases in ir_string_expr_is_borrowed), so hand them + # their own count instead of the one the shell holds; a string + # payload stays classified borrowed and keeps the retain-at-escape + # convention, exactly like a `.ok` read. + if not ir_string_expr_is_borrowed(idx): + ir_rc_retain_reg(ok_value_r, ir_rc_kind(ir_result_field_kind(recv_tid, "ok"))) + else: + # a fresh shell: the extracted payload carries the count out, and + # the destructor-less tuple frees as just its three slots. + ir_emit_call1(ir_reg(), "pith_struct_release", "void", recv_r) ir_emit("store " + temp_name + " " + ok_value_r.to_string()) ir_emit("jmp " + merge_l) ir_emit_label(fallback_l) @@ -3727,8 +3768,9 @@ fn ir_emit_result_unwrap_or(node: Node) -> Int: # (`r.unwrap_or(bytes.empty())`) every ok iteration. this mirrors the # optional unwrap_or, which already defers its default into the none arm. fallback_r := ir_expr(arg_idx) - ir_emit_release_result_error(recv_r, recv_tid) - ir_emit_call1(ir_reg(), "pith_struct_release", "void", recv_r) + if operand_class != "borrowed": + ir_emit_release_result_error(recv_r, recv_tid) + ir_emit_call1(ir_reg(), "pith_struct_release", "void", recv_r) ir_emit("store " + temp_name + " " + fallback_r.to_string()) ir_emit_label(merge_l) r := ir_reg() @@ -4135,7 +4177,7 @@ fn ir_emit_typed_receiver_method(idx: Int) -> Int: return out_r if recv_info.kind == "result": if mname == "unwrap_or": - return ir_emit_result_unwrap_or(node) + return ir_emit_result_unwrap_or(idx, node) if mname == "or_else": return ir_emit_result_or_else(idx, node) if mname == "to_string": @@ -4163,9 +4205,15 @@ fn ir_emit_typed_receiver_method(idx: Int) -> Int: ir_emit("brif " + flag_r.to_string() + " " + some_l + " " + none_l) ir_emit_label(some_l) inner_r := ir_optional_value_field(obj_r, recv_tid) - # the result escapes to the caller, so a heap inner must be - # retained out of the shell before the shell is freed below. - if owns_subject and inner_kind.len() > 0: + # a borrowed subject moves its inner out without a retain: the + # subject's own cleanup is shell-only, so the single count the + # shell holds transfers to the extracted value and is released + # once, at that value's scope. only an owned (fresh) subject, + # whose shell is freed just below, needs a retain first so the + # inner survives the free. (extracting the same borrowed local + # twice is a separate, rarer bug tracked on its own — a retain + # here to cover it leaked the far more common single case.) + if inner_kind.len() > 0 and owns_subject: ir_rc_retain_reg(inner_r, inner_kind) ir_emit("store " + tmp + " " + inner_r.to_string()) ir_emit("jmp " + end_l) @@ -4813,6 +4861,8 @@ fn ir_emit_try_expr(node: Node) -> Int: result_kind := ir_expr_result_kind(node.children[0]) val_r := ir_expr(node.children[0]) if result_kind == "tuple": + operand_class := ir_extraction_operand_class(node.children[0]) + operand_tid := c_get_expr_type(node.children[0]) cond_r := ir_emit_result_flag_field(val_r, "is_ok") ok_l := ir_label() err_l := ir_label() @@ -4820,15 +4870,35 @@ fn ir_emit_try_expr(node: Node) -> Int: ir_emit("brif " + cond_r.to_string() + " " + ok_l + " " + err_l) ir_emit_label(ok_l) decoded_r := ir_emit_result_ok_field_for_expr(val_r, node.children[0]) - # the extracted payload carries the count; the tuple shell has - # no destructor, so this frees only the three-slot allocation. - # the error path returns the same tuple upward instead — its - # consumer releases it there. - ir_emit_call1(ir_reg(), "pith_struct_release", "void", val_r) + if operand_class != "borrowed": + # a fresh shell: the extracted payload carries the count; the + # tuple shell has no destructor, so this frees only the + # three-slot allocation. the error path returns the same + # tuple upward instead — its consumer releases it there. + ir_emit_call1(ir_reg(), "pith_struct_release", "void", val_r) + # a borrowed operand (a parameter, a live named local) keeps its + # shell and its payload count with its owner. the unwrapped value + # stays a borrow — a `!` over a non-call operand is classified + # borrowed, so bindings and returns retain at the escape site, + # the same as a `.ok` read. ir_emit("jmp " + merge_l) ir_emit_label(err_l) if ir_emit_tests and ir_emitting_test_func: ir_test_assert_fail_return() + elif operand_class == "borrowed": + # propagate a FRESH error tuple: returning the borrowed + # tuple itself would hand the operand's shell to a second + # owner, and its owner still releases it here. the error + # value gets its own count for the new tuple; the reads + # happen before cleanup can release a named operand's shell. + err_kind := ir_rc_kind(ir_result_field_kind(operand_tid, "err")) + err_r := ir_emit_result_value_field(val_r, operand_tid, "err") + if err_kind.len() > 0: + ir_rc_retain_reg(err_r, err_kind) + fresh_err_r := ir_emit_err_result_tuple(err_r) + ir_defer_emit_to_function_frame(true) + ir_emit_string_cleanup("") + ir_emit("ret " + fresh_err_r.to_string()) else: # propagating the error out early skips the normal return, # so release the function's owned locals here too; the error @@ -5145,6 +5215,7 @@ fn ir_emit_discard_result(result_r: Int, result_tid: Int): fn ir_emit_catch_expr(node: Node) -> Int: result_r := ir_expr(node.children[0]) result_tid := c_get_expr_type(node.children[0]) + operand_class := ir_extraction_operand_class(node.children[0]) cond_r := ir_emit_result_flag_field(result_r, "is_ok") temp_name := ir_new_temp_name("catch") ok_l := ir_label() @@ -5153,13 +5224,24 @@ fn ir_emit_catch_expr(node: Node) -> Int: ir_emit("brif " + cond_r.to_string() + " " + ok_l + " " + fallback_l) ir_emit_label(ok_l) ok_value_r := ir_emit_result_value_field(result_r, result_tid, "ok") - ir_emit_call1(ir_reg(), "pith_struct_release", "void", result_r) + if operand_class == "borrowed": + # the operand's owner keeps the shell and its payload count. a catch + # value always arrives owned at its consumer (see the catch_expr case + # in ir_string_expr_is_borrowed), so give it a count of its own — + # handing out the shell's count, or freeing the shell here, would + # double-free once the owner cleans up. + ir_rc_retain_reg(ok_value_r, ir_rc_kind(ir_result_field_kind(result_tid, "ok"))) + else: + ir_emit_call1(ir_reg(), "pith_struct_release", "void", result_r) ir_emit("store " + temp_name + " " + ok_value_r.to_string()) ir_emit("jmp " + merge_l) ir_emit_label(fallback_l) - # the error is being thrown away for the fallback value; drop it first - ir_emit_release_result_error(result_r, result_tid) - ir_emit_call1(ir_reg(), "pith_struct_release", "void", result_r) + # the error is being thrown away for the fallback value; drop it first — + # unless the operand is a borrow, in which case both the error and the + # shell stay with their owner + if operand_class != "borrowed": + ir_emit_release_result_error(result_r, result_tid) + ir_emit_call1(ir_reg(), "pith_struct_release", "void", result_r) # both arms must hand back an OWNED value: the ok arm transferred the # result payload out of the destructor-less tuple shell, so a borrowed # fallback needs its own count. the whole catch is classified owned diff --git a/tests/cases/test_borrowed_operand_extraction.pith b/tests/cases/test_borrowed_operand_extraction.pith new file mode 100644 index 00000000..0cdb4ecd --- /dev/null +++ b/tests/cases/test_borrowed_operand_extraction.pith @@ -0,0 +1,90 @@ +# `!`, `catch`, and `unwrap_or` on a BORROWED result/optional operand — a +# parameter or a named local — must leave the operand's shell and payload +# count with their owner. each of them used to shell-release the operand +# unconditionally (and `!` returned the borrowed tuple itself on the error +# path), so the owner's own cleanup freed the same block a second time. +# +# valgrind-gated in MEMCHECK_CASES with the struct freelist disabled: the +# freelist recycles the freed block in place, so the printed total comes out +# right even when the extraction reads and frees memory it does not own — +# only valgrind catches the use-after-free. + +struct Bag: + data: String + +fn make(i: Int) -> Bag!: + if i < 0: + fail "neg-" + i.to_string() + return Bag("payload-" + i.to_string()) + +fn find(i: Int) -> Bag?: + if i % 3 == 0: + return none + return Bag("maybe-" + i.to_string()) + +# `!` on a T! parameter: the ok path unwraps a borrow; the error path must +# propagate a fresh error tuple, not the caller's own shell +fn bang_param(r: Bag!) -> Int!: + b := r! + return b.data.len() + +fn catch_param(r: Bag!) -> Int: + b := r catch Bag("fb") + return b.data.len() + +fn unwrap_param(r: Bag!) -> Int: + return r.unwrap_or(Bag("fb")).data.len() + +# a named result local as the operand, extracted more than once: no +# extraction may free the shell the local's cleanup will free, nor read a +# payload another extraction already moved +fn named_local(i: Int) -> Int: + x := make(i) + a := x catch Bag("fb") + b := x.unwrap_or(Bag("fb")) + return a.data.len() + b.data.len() + +fn bang_local(i: Int) -> Int!: + x := make(i) + b := x! + return b.data.len() + +# a borrowed optional subject (a parameter): single extraction, the common +# shape. (extracting the same optional local twice is a separate, rarer +# pre-existing bug, not covered here.) +fn opt_param(o: Bag?) -> Int: + return o.unwrap_or(Bag("fb")).data.len() + +# owned inline operands are the control: they keep the move-the-payload-out +# and free-the-fresh-shell behavior, on the ok and the error path +fn inline_owned(i: Int) -> Int: + a := make(i) catch Bag("fb") + n := a.data.len() + make(i).unwrap_or(Bag("fb")).data.len() + e := make(0 - i - 1) catch Bag("fb") + return n + e.data.len() + make(0 - i - 1).unwrap_or(Bag("fb")).data.len() + +fn main() -> Int: + mut total := 0 + mut i := 0 + while i < 400: + rp := make(i) + total = total + (bang_param(rp) catch 0) + re := make(0 - 1) + total = total + (bang_param(re) catch 7) + cp := make(i) + total = total + catch_param(cp) + ce := make(0 - 1) + total = total + catch_param(ce) + up := make(i) + total = total + unwrap_param(up) + ue := make(0 - 1) + total = total + unwrap_param(ue) + total = total + named_local(i) + total = total + (bang_local(i) catch 0) + total = total + (bang_local(0 - 1) catch 7) + op := find(i) + total = total + opt_param(op) + total = total + inline_owned(i) + i = i + 1 + print("total " + total.to_string()) + return 0 diff --git a/tests/expected/test_borrowed_operand_extraction.txt b/tests/expected/test_borrowed_operand_extraction.txt new file mode 100644 index 00000000..67f68e76 --- /dev/null +++ b/tests/expected/test_borrowed_operand_extraction.txt @@ -0,0 +1 @@ +total 45710