@@ -3251,8 +3251,8 @@ pub const Type = extern union {
32513251
32523252 .array_u8 = > return AbiSizeAdvanced { .scalar = ty .castTag (.array_u8 ).? .data },
32533253 .array_u8_sentinel_0 = > return AbiSizeAdvanced { .scalar = ty .castTag (.array_u8_sentinel_0 ).? .data + 1 },
3254- .array , .vector = > {
3255- const payload = ty .cast ( Payload . Array ).? .data ;
3254+ .array = > {
3255+ const payload = ty .castTag ( .array ).? .data ;
32563256 switch (try payload .elem_type .abiSizeAdvanced (target , strat )) {
32573257 .scalar = > | elem_size | return AbiSizeAdvanced { .scalar = payload .len * elem_size },
32583258 .val = > switch (strat ) {
@@ -3274,6 +3274,28 @@ pub const Type = extern union {
32743274 }
32753275 },
32763276
3277+ .vector = > {
3278+ const payload = ty .castTag (.vector ).? .data ;
3279+ const sema_kit = switch (strat ) {
3280+ .sema_kit = > | sk | sk ,
3281+ .eager = > null ,
3282+ .lazy = > | arena | return AbiSizeAdvanced {
3283+ .val = try Value .Tag .lazy_size .create (arena , ty ),
3284+ },
3285+ };
3286+ const elem_bits = try payload .elem_type .bitSizeAdvanced (target , sema_kit );
3287+ const total_bits = elem_bits * payload .len ;
3288+ const total_bytes = (total_bits + 7 ) / 8 ;
3289+ const alignment = switch (try ty .abiAlignmentAdvanced (target , strat )) {
3290+ .scalar = > | x | x ,
3291+ .val = > return AbiSizeAdvanced {
3292+ .val = try Value .Tag .lazy_size .create (strat .lazy , ty ),
3293+ },
3294+ };
3295+ const result = std .mem .alignForwardGeneric (u64 , total_bytes , alignment );
3296+ return AbiSizeAdvanced { .scalar = result };
3297+ },
3298+
32773299 .isize ,
32783300 .usize ,
32793301 .@"anyframe" ,
0 commit comments