const string = @import("string_types.zig").string; const Allocator = @import("std").mem.Allocator; const assert = @import("std").debug.assert; const copy = @import("std").mem.copy; const Env = @import("./env.zig"); const bun = @import("./global.zig"); const StringBuilder = @This(); const DebugHashTable = if (Env.allow_assert) std.AutoHashMapUnmanaged(u64, void) else void; len: usize = 0, cap: usize = 0, ptr: ?[*]u8 = null, debug_only_checker: DebugHashTable = DebugHashTable{}, pub fn count(this: *StringBuilder, slice: string) void { this.cap += slice.len; if (comptime Env.allow_assert) { _ = this.debug_only_checker.getOrPut(bun.default_allocator, bun.hash(slice)) catch unreachable; } } pub fn allocate(this: *StringBuilder, allocator: Allocator) !void { var slice = try allocator.alloc(u8, this.cap); this.ptr = slice.ptr; this.len = 0; } pub fn deinit(this: *StringBuilder, allocator: Allocator) void { if (this.ptr == null or this.cap == 0) return; allocator.free(this.ptr.?[0..this.cap]); if (comptime Env.allow_assert) { this.debug_only_checker.deinit(bun.default_allocator); this.debug_only_checker = .{}; } } pub fn append(this: *StringBuilder, slice: string) string { if (comptime Env.allow_assert) { assert(this.len <= this.cap); // didn't count everything assert(this.ptr != null); // must call allocate first } if (comptime Env.allow_assert) { assert(this.debug_only_checker.contains(bun.hash(slice))); } bun.copy(u8, this.ptr.?[this.len..this.cap], slice); const result = this.ptr.?[this.len..this.cap][0..slice.len]; this.len += slice.len; if (Env.allow_assert) { assert(this.len <= this.cap); } return result; } const std = @import("std"); pub fn fmt(this: *StringBuilder, comptime str: string, args: anytype) string { if (Env.allow_assert) { assert(this.len <= this.cap); // didn't count everything assert(this.ptr != null); // must call allocate first } var buf = this.ptr.?[this.len..this.cap]; const out = std.fmt.bufPrint(buf, str, args) catch unreachable; this.len += out.len; if (Env.allow_assert) { assert(this.len <= this.cap); } return out; } pub fn fmtCount(this: *StringBuilder, comptime str: string, args: anytype) void { this.cap += std.fmt.count(str, args); } -length Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/bench/snippets/text-encoder.mjs (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2022-11-27fix hanging testGravatar Jarred Sumner 1-8/+13
2022-11-27don't start NetworkThread unless necessaryGravatar Jarred Sumner 2-3/+2
2022-11-27Fix `make headers`Gravatar Jarred Sumner 3-1/+4
2022-11-27fix extra indentGravatar Jarred Sumner 1-0/+2
2022-11-27[console.log] Fix printing latin1 supplement characters at runtimeGravatar Jarred Sumner 6-37/+83
2022-11-27[console.log] Improve Object formatting and error handlingGravatar Jarred Sumner 3-182/+399
2022-11-27`[console.log]` log Proxy objectsGravatar Jarred Sumner 1-0/+7
2022-11-27[console.log] Treat `GlobalObject` like `Object`Gravatar Jarred Sumner 1-1/+1
2022-11-27[console.log] Treat `ArrayBuffer` like `Uint8Array`Gravatar Jarred Sumner 1-0/+1
2022-11-27[console.log] Fix logging `Symbol` valuesGravatar Jarred Sumner 1-3/+2
2022-11-27Now that utf16 is fast we can just count the length instead of re-allocatingGravatar Jarred Sumner 1-5/+1
2022-11-27Remove extra indentGravatar Jarred Sumner 1-2/+0
2022-11-27Fix strangeness with Bun.env keysGravatar Jarred Sumner 1-9/+10
2022-11-27Fix crash in Headers.prototype.countGravatar Jarred Sumner 1-2/+5
2022-11-27Fix crash in OnigurumaRegExp gettersGravatar Jarred Sumner 1-0/+6
2022-11-26Fix build issueGravatar Jarred Sumner 2-15/+17
2022-11-26[bun:sqlite] Fix bug with latin1 supplemental charactersGravatar Jarred Sumner 2-2/+31
2022-11-26prettier?Gravatar Jarred Sumner 1-336/+339
2022-11-26Update mimallocGravatar Jarred Sumner 1-0/+0
2022-11-26Update string_immutable.zigGravatar Jarred Sumner 1-1/+1
2022-11-26Faster UTF16 -> UTF8 and UTF8 -> UTF16 (#1552)Gravatar Jarred Sumner 14-6/+31329
2022-11-26Make HTTP status text more consistent with other HTTP serversGravatar Jarred Sumner 2-2/+153