| ... | @@ -3,7 +3,6 @@ const string = []const u8; | ... | @@ -3,7 +3,6 @@ const string = []const u8; |
| 3 | const extras = @import("extras"); | 3 | const extras = @import("extras"); |
| 4 | const tracer = @import("tracer"); | 4 | const tracer = @import("tracer"); |
| 5 | | 5 | |
| 6 | const buf_size = 64; | | |
| 7 | const Error = std.mem.Allocator.Error; | 6 | const Error = std.mem.Allocator.Error; |
| 8 | const ObjectHashMap = std.AutoArrayHashMapUnmanaged(StringIndex, ValueIndex); | 7 | const ObjectHashMap = std.AutoArrayHashMapUnmanaged(StringIndex, ValueIndex); |
| 9 | | 8 | |
| ... | @@ -14,8 +13,7 @@ pub fn parse(alloc: std.mem.Allocator, path: string, inreader: anytype) anyerror | ... | @@ -14,8 +13,7 @@ pub fn parse(alloc: std.mem.Allocator, path: string, inreader: anytype) anyerror |
| 14 | _ = path; | 13 | _ = path; |
| 15 | | 14 | |
| 16 | var counter = std.io.countingReader(inreader); | 15 | var counter = std.io.countingReader(inreader); |
| 17 | var buf = std.io.bufferedReader(counter.reader()); | 16 | const anyreader = extras.AnyReader.from(counter.reader()); |
| 18 | const anyreader = extras.AnyReader.from(buf.reader()); | | |
| 19 | var p = Parser.init(alloc, anyreader); | 17 | var p = Parser.init(alloc, anyreader); |
| 20 | defer p.temp.deinit(alloc); | 18 | defer p.temp.deinit(alloc); |
| 21 | defer p.strings_map.deinit(alloc); | 19 | defer p.strings_map.deinit(alloc); |
| ... | @@ -265,16 +263,15 @@ const Parser = struct { | ... | @@ -265,16 +263,15 @@ const Parser = struct { |
| 265 | | 263 | |
| 266 | fn peekAmt(p: *Parser, amt: usize) !void { | 264 | fn peekAmt(p: *Parser, amt: usize) !void { |
| 267 | if (p.avail() >= amt) return; | 265 | if (p.avail() >= amt) return; |
| | 266 | const buf_size = std.mem.page_size; |
| 268 | const diff_amt = amt - p.avail(); | 267 | const diff_amt = amt - p.avail(); |
| 269 | std.debug.assert(diff_amt <= buf_size); | 268 | std.debug.assert(diff_amt <= buf_size); |
| 270 | var buf: [buf_size]u8 = undefined; | 269 | var buf: [buf_size]u8 = undefined; |
| 271 | var target_buf = buf[0..diff_amt]; | 270 | const len = try p.any.readAll(&buf); |
| 272 | const len = try p.any.readAll(target_buf); | | |
| 273 | if (len == 0) p.end = true; | 271 | if (len == 0) p.end = true; |
| 274 | if (len == 0) return error.EndOfStream; | 272 | if (len == 0) return error.EndOfStream; |
| 275 | std.debug.assert(len <= diff_amt); | 273 | try p.temp.appendSlice(p.arena, buf[0..len]); |
| 276 | try p.temp.appendSlice(p.arena, target_buf[0..len]); | 274 | if (amt > len) return error.EndOfStream; |
| 277 | if (len != diff_amt) return error.EndOfStream; | | |
| 278 | } | 275 | } |
| 279 | | 276 | |
| 280 | pub fn eatByte(p: *Parser, test_c: u8) !?u8 { | 277 | pub fn eatByte(p: *Parser, test_c: u8) !?u8 { |