| author | |
| committer | |
| log | 00afaa4b1822e9d2c096830e546e96ab4e87f25b |
| tree | 44200d1f2b888793e4fff996f75597e16eaf6df2 |
| parent | f3332677825f3173de568d643cbaf68f1e1472ed |
but it's pushed out to various callsites5 files changed, 11 insertions(+), 9 deletions(-)
lib/std/debug/Dwarf.zig+1-1| ... | @@ -2236,7 +2236,7 @@ pub const ElfModule = struct { | ... | @@ -2236,7 +2236,7 @@ pub const ElfModule = struct { |
| 2236 | const section_bytes = try chopSlice(mapped_mem, shdr.sh_offset, shdr.sh_size); | 2236 | const section_bytes = try chopSlice(mapped_mem, shdr.sh_offset, shdr.sh_size); |
| 2237 | sections[section_index.?] = if ((shdr.sh_flags & elf.SHF_COMPRESSED) > 0) blk: { | 2237 | sections[section_index.?] = if ((shdr.sh_flags & elf.SHF_COMPRESSED) > 0) blk: { |
| 2238 | var section_reader: std.io.BufferedReader = undefined; | 2238 | var section_reader: std.io.BufferedReader = undefined; |
| 2239 | section_reader.initFixed(section_bytes); | 2239 | section_reader.initFixed(@constCast(section_bytes)); |
| 2240 | const chdr = section_reader.takeStruct(elf.Chdr) catch continue; | 2240 | const chdr = section_reader.takeStruct(elf.Chdr) catch continue; |
| 2241 | if (chdr.ch_type != .ZLIB) continue; | 2241 | if (chdr.ch_type != .ZLIB) continue; |
| 2242 | const ch_size = chdr.ch_size; | 2242 | const ch_size = chdr.ch_size; |
lib/std/debug/Dwarf/expression.zig+2-2| ... | @@ -262,7 +262,7 @@ pub fn StackMachine(comptime options: Options) type { | ... | @@ -262,7 +262,7 @@ pub fn StackMachine(comptime options: Options) type { |
| 262 | ) Error!?Value { | 262 | ) Error!?Value { |
| 263 | if (initial_value) |i| try self.stack.append(allocator, .{ .generic = i }); | 263 | if (initial_value) |i| try self.stack.append(allocator, .{ .generic = i }); |
| 264 | var reader: std.io.BufferedReader = undefined; | 264 | var reader: std.io.BufferedReader = undefined; |
| 265 | reader.initFixed(expression); | 265 | reader.initFixed(@constCast(expression)); |
| 266 | while (try self.step(&reader, allocator, context)) {} | 266 | while (try self.step(&reader, allocator, context)) {} |
| 267 | if (self.stack.items.len == 0) return null; | 267 | if (self.stack.items.len == 0) return null; |
| 268 | return self.stack.items[self.stack.items.len - 1]; | 268 | return self.stack.items[self.stack.items.len - 1]; |
| ... | @@ -721,7 +721,7 @@ pub fn StackMachine(comptime options: Options) type { | ... | @@ -721,7 +721,7 @@ pub fn StackMachine(comptime options: Options) type { |
| 721 | if (context.thread_context == null) return error.IncompleteExpressionContext; | 721 | if (context.thread_context == null) return error.IncompleteExpressionContext; |
| 722 | 722 | ||
| 723 | var block_reader: std.io.BufferedReader = undefined; | 723 | var block_reader: std.io.BufferedReader = undefined; |
| 724 | block_reader.initFixed(block); | 724 | block_reader.initFixed(@constCast(block)); |
| 725 | const register = (try readOperand(&block_reader, block[0], context)).?.register; | 725 | const register = (try readOperand(&block_reader, block[0], context)).?.register; |
| 726 | const value = mem.readInt(usize, (try abi.regBytes(context.thread_context.?, register, context.reg_context))[0..@sizeOf(usize)], native_endian); | 726 | const value = mem.readInt(usize, (try abi.regBytes(context.thread_context.?, register, context.reg_context))[0..@sizeOf(usize)], native_endian); |
| 727 | try self.stack.append(allocator, .{ .generic = value }); | 727 | try self.stack.append(allocator, .{ .generic = value }); |
lib/std/debug/FixedBufferReader.zig+1-1| ... | @@ -53,7 +53,7 @@ pub fn readIntChecked( | ... | @@ -53,7 +53,7 @@ pub fn readIntChecked( |
| 53 | 53 | ||
| 54 | pub fn readLeb128(fbr: *FixedBufferReader, comptime T: type) Error!T { | 54 | pub fn readLeb128(fbr: *FixedBufferReader, comptime T: type) Error!T { |
| 55 | var br: std.io.BufferedReader = undefined; | 55 | var br: std.io.BufferedReader = undefined; |
| 56 | br.initFixed(fbr.buf); | 56 | br.initFixed(@constCast(fbr.buf)); |
| 57 | br.seek = fbr.pos; | 57 | br.seek = fbr.pos; |
| 58 | const result = br.takeLeb128(T); | 58 | const result = br.takeLeb128(T); |
| 59 | fbr.pos = br.seek; | 59 | fbr.pos = br.seek; |
lib/std/debug/SelfInfo.zig+2-2| ... | @@ -2026,8 +2026,8 @@ pub const VirtualMachine = struct { | ... | @@ -2026,8 +2026,8 @@ pub const VirtualMachine = struct { |
| 2026 | if (pc < fde.pc_begin or pc >= fde.pc_begin + fde.pc_range) return error.AddressOutOfRange; | 2026 | if (pc < fde.pc_begin or pc >= fde.pc_begin + fde.pc_range) return error.AddressOutOfRange; |
| 2027 | 2027 | ||
| 2028 | var readers: [2]std.io.BufferedReader = undefined; | 2028 | var readers: [2]std.io.BufferedReader = undefined; |
| 2029 | readers[0].initFixed(cie.initial_instructions); | 2029 | readers[0].initFixed(@constCast(cie.initial_instructions)); |
| 2030 | readers[1].initFixed(fde.instructions); | 2030 | readers[1].initFixed(@constCast(fde.instructions)); |
| 2031 | 2031 | ||
| 2032 | var prev_row: Row = self.current_row; | 2032 | var prev_row: Row = self.current_row; |
| 2033 | for (&readers, [2]bool{ true, false }) |*reader, is_initial| { | 2033 | for (&readers, [2]bool{ true, false }) |*reader, is_initial| { |
lib/std/io/BufferedReader.zig+5-3| ... | @@ -24,12 +24,14 @@ pub fn init(br: *BufferedReader, r: Reader, buffer: []u8) void { | ... | @@ -24,12 +24,14 @@ pub fn init(br: *BufferedReader, r: Reader, buffer: []u8) void { |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | /// Constructs `br` such that it will read from `buffer` and then end. | 26 | /// Constructs `br` such that it will read from `buffer` and then end. |
| 27 | /// TODO either remove the const cast here or make methods of this file return a const slice | 27 | /// |
| 28 | pub fn initFixed(br: *BufferedReader, buffer: []const u8) void { | 28 | /// Most methods do not require mutating `buffer`. Those that do are marked, |
| 29 | /// and if they are avoided then `buffer` can be safely used with `@constCast`. | ||
| 30 | pub fn initFixed(br: *BufferedReader, buffer: []u8) void { | ||
| 29 | br.* = .{ | 31 | br.* = .{ |
| 30 | .seek = 0, | 32 | .seek = 0, |
| 31 | .storage = .{ | 33 | .storage = .{ |
| 32 | .buffer = @constCast(buffer), | 34 | .buffer = buffer, |
| 33 | .unbuffered_writer = .failing, | 35 | .unbuffered_writer = .failing, |
| 34 | }, | 36 | }, |
| 35 | .unbuffered_reader = .ending, | 37 | .unbuffered_reader = .ending, |