| ... | @@ -1378,6 +1378,7 @@ pub const Value = extern union { | ... | @@ -1378,6 +1378,7 @@ pub const Value = extern union { |
| 1378 | var enum_buffer: Payload.U64 = undefined; | 1378 | var enum_buffer: Payload.U64 = undefined; |
| 1379 | const int_val = val.enumToInt(ty, &enum_buffer); | 1379 | const int_val = val.enumToInt(ty, &enum_buffer); |
| 1380 | | 1380 | |
| | 1381 | if (abi_size == 0) return; |
| 1381 | if (abi_size <= @sizeOf(u64)) { | 1382 | if (abi_size <= @sizeOf(u64)) { |
| 1382 | const int: u64 = switch (int_val.tag()) { | 1383 | const int: u64 = switch (int_val.tag()) { |
| 1383 | .zero => 0, | 1384 | .zero => 0, |
| ... | @@ -1571,6 +1572,7 @@ pub const Value = extern union { | ... | @@ -1571,6 +1572,7 @@ pub const Value = extern union { |
| 1571 | const abi_size = @intCast(usize, ty.abiSize(target)); | 1572 | const abi_size = @intCast(usize, ty.abiSize(target)); |
| 1572 | | 1573 | |
| 1573 | const bits = int_info.bits; | 1574 | const bits = int_info.bits; |
| | 1575 | if (bits == 0) return Value.zero; |
| 1574 | if (bits <= 64) switch (int_info.signedness) { // Fast path for integers <= u64 | 1576 | if (bits <= 64) switch (int_info.signedness) { // Fast path for integers <= u64 |
| 1575 | .signed => return Value.Tag.int_i64.create(arena, std.mem.readVarPackedInt(i64, buffer, bit_offset, bits, endian, .signed)), | 1577 | .signed => return Value.Tag.int_i64.create(arena, std.mem.readVarPackedInt(i64, buffer, bit_offset, bits, endian, .signed)), |
| 1576 | .unsigned => return Value.Tag.int_u64.create(arena, std.mem.readVarPackedInt(u64, buffer, bit_offset, bits, endian, .unsigned)), | 1578 | .unsigned => return Value.Tag.int_u64.create(arena, std.mem.readVarPackedInt(u64, buffer, bit_offset, bits, endian, .unsigned)), |