@@ -3260,8 +3260,8 @@ pub const Type = extern union {
3260
3260
3261
3261
.array_u8 = > return AbiSizeAdvanced { .scalar = ty .castTag (.array_u8 ).? .data },
3262
3262
.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 ;
3265
3265
switch (try payload .elem_type .abiSizeAdvanced (target , strat )) {
3266
3266
.scalar = > | elem_size | return AbiSizeAdvanced { .scalar = payload .len * elem_size },
3267
3267
.val = > switch (strat ) {
@@ -3283,6 +3283,28 @@ pub const Type = extern union {
3283
3283
}
3284
3284
},
3285
3285
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
+
3286
3308
.isize ,
3287
3309
.usize ,
3288
3310
.@"anyframe" ,
0 commit comments