| ... | ... | @@ -5914,27 +5914,32 @@ fn extraFuncDecl(tid: Zcu.PerThread.Id, extra: Local.Extra, extra_index: u32) Ke |
| 5914 | 5914 | } |
| 5915 | 5915 | |
| 5916 | 5916 | fn extraFuncInstance(ip: *const InternPool, tid: Zcu.PerThread.Id, extra: Local.Extra, extra_index: u32) Key.Func { |
| 5917 | | const P = Tag.FuncInstance; |
| 5918 | | const fi = extraDataTrail(extra, P, extra_index); |
| 5919 | | const func_decl = ip.funcDeclInfo(fi.data.generic_owner); |
| 5917 | const extra_items = extra.view().items(.@"0"); |
| 5918 | const analysis_extra_index = extra_index + std.meta.fieldIndex(Tag.FuncInstance, "analysis").?; |
| 5919 | const analysis: FuncAnalysis = @bitCast(@atomicLoad(u32, &extra_items[analysis_extra_index], .monotonic)); |
| 5920 | const owner_decl: DeclIndex = @enumFromInt(extra_items[extra_index + std.meta.fieldIndex(Tag.FuncInstance, "owner_decl").?]); |
| 5921 | const ty: Index = @enumFromInt(extra_items[extra_index + std.meta.fieldIndex(Tag.FuncInstance, "ty").?]); |
| 5922 | const generic_owner: Index = @enumFromInt(extra_items[extra_index + std.meta.fieldIndex(Tag.FuncInstance, "generic_owner").?]); |
| 5923 | const func_decl = ip.funcDeclInfo(generic_owner); |
| 5924 | const end_extra_index = extra_index + @as(u32, @typeInfo(Tag.FuncInstance).Struct.fields.len); |
| 5920 | 5925 | return .{ |
| 5921 | 5926 | .tid = tid, |
| 5922 | | .ty = fi.data.ty, |
| 5923 | | .uncoerced_ty = fi.data.ty, |
| 5924 | | .analysis_extra_index = extra_index + std.meta.fieldIndex(P, "analysis").?, |
| 5927 | .ty = ty, |
| 5928 | .uncoerced_ty = ty, |
| 5929 | .analysis_extra_index = analysis_extra_index, |
| 5925 | 5930 | .zir_body_inst_extra_index = func_decl.zir_body_inst_extra_index, |
| 5926 | | .resolved_error_set_extra_index = if (fi.data.analysis.inferred_error_set) fi.end else 0, |
| 5927 | | .branch_quota_extra_index = extra_index + std.meta.fieldIndex(P, "branch_quota").?, |
| 5928 | | .owner_decl = fi.data.owner_decl, |
| 5931 | .resolved_error_set_extra_index = if (analysis.inferred_error_set) end_extra_index else 0, |
| 5932 | .branch_quota_extra_index = extra_index + std.meta.fieldIndex(Tag.FuncInstance, "branch_quota").?, |
| 5933 | .owner_decl = owner_decl, |
| 5929 | 5934 | .zir_body_inst = func_decl.zir_body_inst, |
| 5930 | 5935 | .lbrace_line = func_decl.lbrace_line, |
| 5931 | 5936 | .rbrace_line = func_decl.rbrace_line, |
| 5932 | 5937 | .lbrace_column = func_decl.lbrace_column, |
| 5933 | 5938 | .rbrace_column = func_decl.rbrace_column, |
| 5934 | | .generic_owner = fi.data.generic_owner, |
| 5939 | .generic_owner = generic_owner, |
| 5935 | 5940 | .comptime_args = .{ |
| 5936 | 5941 | .tid = tid, |
| 5937 | | .start = fi.end + @intFromBool(fi.data.analysis.inferred_error_set), |
| 5942 | .start = end_extra_index + @intFromBool(analysis.inferred_error_set), |
| 5938 | 5943 | .len = ip.funcTypeParamsLen(func_decl.ty), |
| 5939 | 5944 | }, |
| 5940 | 5945 | }; |