| ... | ... | @@ -808,6 +808,54 @@ pub fn generateSymbol( |
| 808 | 808 | } |
| 809 | 809 | return Result{ .appended = {} }; |
| 810 | 810 | }, |
| 811 | .Vector => switch (typed_value.val.tag()) { |
| 812 | .bytes => { |
| 813 | const bytes = typed_value.val.castTag(.bytes).?.data; |
| 814 | const len = @intCast(usize, typed_value.ty.arrayLen()); |
| 815 | try code.ensureUnusedCapacity(len); |
| 816 | code.appendSliceAssumeCapacity(bytes[0..len]); |
| 817 | return Result{ .appended = {} }; |
| 818 | }, |
| 819 | .aggregate => { |
| 820 | const elem_vals = typed_value.val.castTag(.aggregate).?.data; |
| 821 | const elem_ty = typed_value.ty.elemType(); |
| 822 | const len = @intCast(usize, typed_value.ty.arrayLen()); |
| 823 | for (elem_vals[0..len]) |elem_val| { |
| 824 | switch (try generateSymbol(bin_file, src_loc, .{ |
| 825 | .ty = elem_ty, |
| 826 | .val = elem_val, |
| 827 | }, code, debug_output, reloc_info)) { |
| 828 | .appended => {}, |
| 829 | .externally_managed => |slice| { |
| 830 | code.appendSliceAssumeCapacity(slice); |
| 831 | }, |
| 832 | .fail => |em| return Result{ .fail = em }, |
| 833 | } |
| 834 | } |
| 835 | return Result{ .appended = {} }; |
| 836 | }, |
| 837 | .repeated => { |
| 838 | const array = typed_value.val.castTag(.repeated).?.data; |
| 839 | const elem_ty = typed_value.ty.childType(); |
| 840 | const len = typed_value.ty.arrayLen(); |
| 841 | |
| 842 | var index: u64 = 0; |
| 843 | while (index < len) : (index += 1) { |
| 844 | switch (try generateSymbol(bin_file, src_loc, .{ |
| 845 | .ty = elem_ty, |
| 846 | .val = array, |
| 847 | }, code, debug_output, reloc_info)) { |
| 848 | .appended => {}, |
| 849 | .externally_managed => |slice| { |
| 850 | code.appendSliceAssumeCapacity(slice); |
| 851 | }, |
| 852 | .fail => |em| return Result{ .fail = em }, |
| 853 | } |
| 854 | } |
| 855 | return Result{ .appended = {} }; |
| 856 | }, |
| 857 | else => unreachable, |
| 858 | }, |
| 811 | 859 | else => |t| { |
| 812 | 860 | return Result{ |
| 813 | 861 | .fail = try ErrorMsg.create( |