@@ -3251,8 +3251,8 @@ pub const Type = extern union {
3251
3251
3252
3252
.array_u8 = > return AbiSizeAdvanced { .scalar = ty .castTag (.array_u8 ).? .data },
3253
3253
.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 ;
3256
3256
switch (try payload .elem_type .abiSizeAdvanced (target , strat )) {
3257
3257
.scalar = > | elem_size | return AbiSizeAdvanced { .scalar = payload .len * elem_size },
3258
3258
.val = > switch (strat ) {
@@ -3274,6 +3274,28 @@ pub const Type = extern union {
3274
3274
}
3275
3275
},
3276
3276
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
+
3277
3299
.isize ,
3278
3300
.usize ,
3279
3301
.@"anyframe" ,
0 commit comments