@@ -3260,8 +3260,8 @@ pub const Type = extern union {
32603260
32613261 .array_u8 = > return AbiSizeAdvanced { .scalar = ty .castTag (.array_u8 ).? .data },
32623262 .array_u8_sentinel_0 = > return AbiSizeAdvanced { .scalar = ty .castTag (.array_u8_sentinel_0 ).? .data + 1 },
3263- .array , .vector = > {
3264- const payload = ty .cast ( Payload . Array ).? .data ;
3263+ .array = > {
3264+ const payload = ty .castTag ( .array ).? .data ;
32653265 switch (try payload .elem_type .abiSizeAdvanced (target , strat )) {
32663266 .scalar = > | elem_size | return AbiSizeAdvanced { .scalar = payload .len * elem_size },
32673267 .val = > switch (strat ) {
@@ -3283,6 +3283,28 @@ pub const Type = extern union {
32833283 }
32843284 },
32853285
3286+ .vector = > {
3287+ const payload = ty .castTag (.vector ).? .data ;
3288+ const sema_kit = switch (strat ) {
3289+ .sema_kit = > | sk | sk ,
3290+ .eager = > null ,
3291+ .lazy = > | arena | return AbiSizeAdvanced {
3292+ .val = try Value .Tag .lazy_size .create (arena , ty ),
3293+ },
3294+ };
3295+ const elem_bits = try payload .elem_type .bitSizeAdvanced (target , sema_kit );
3296+ const total_bits = elem_bits * payload .len ;
3297+ const total_bytes = (total_bits + 7 ) / 8 ;
3298+ const alignment = switch (try ty .abiAlignmentAdvanced (target , strat )) {
3299+ .scalar = > | x | x ,
3300+ .val = > return AbiSizeAdvanced {
3301+ .val = try Value .Tag .lazy_size .create (strat .lazy , ty ),
3302+ },
3303+ };
3304+ const result = std .mem .alignForwardGeneric (u64 , total_bytes , alignment );
3305+ return AbiSizeAdvanced { .scalar = result };
3306+ },
3307+
32863308 .isize ,
32873309 .usize ,
32883310 .@"anyframe" ,
0 commit comments