aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-30 08:27:31 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-07-30 08:27:31 -0700
commit092ada6d2f31212754e17ab944168463c2d2d327 (patch)
tree717aceada5ed60cd8565f7877725d9342f91a955
parente636f1b02693e418ec276942f51e9bdefb23f2f6 (diff)
downloadbun-092ada6d2f31212754e17ab944168463c2d2d327.tar.gz
bun-092ada6d2f31212754e17ab944168463c2d2d327.tar.zst
bun-092ada6d2f31212754e17ab944168463c2d2d327.zip
Micro-optimize LineOffsetTable.generate
5.00 ms 100.0% 0 s bun (81023) 2.00 ms 40.0% 2.00 ms WTF::HashTableAddResult<WTF::HashTableIterator<WTF::HashTable<WTF::Packed<WTF::StringImpl*>, WTF::Packed<WTF::StringImpl*>, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>>, WTF::Packed<WTF::StringImpl*>, WTF::Packed<WTF::StringImpl*>, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>>> WTF::HashTable<WTF::Packed<WTF::StringImpl*>, WTF::Packed<WTF::StringImpl*>, WTF::IdentityExtractor, WTF::DefaultHash<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>, WTF::HashTraits<WTF::Packed<WTF::StringImpl*>>>::addPassingHashCode<WTF::HashSetTranslatorAdapter<WTF::BufferFromStaticDataTranslator<unsigned char>>, WTF::HashTranslatorCharBuffer<unsigned char> const&, WTF::HashTranslatorCharBuffer<unsigned char> const&>(WTF::HashTranslatorCharBuffer<unsigned char> const&, WTF::HashTranslatorCharBuffer<unsigned char> const&) 2.00 ms 40.0% 2.00 ms heap.StackFallbackAllocator(1024).free 2.00 ms 40.0% 0 s em.Allocator.rawFree 2.00 ms 40.0% 0 s em.Allocator.log2a 2.00 ms 40.0% 0 s em.Allocator.free__anon_1330765 2.00 ms 40.0% 0 s em.Allocator.resize__anon_1069235 2.00 ms 40.0% 0 s array_list.ArrayListAligned(i32,null).toOwnedSlice
-rw-r--r--src/sourcemap/sourcemap.zig5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/sourcemap/sourcemap.zig b/src/sourcemap/sourcemap.zig
index 178422848..c090397b3 100644
--- a/src/sourcemap/sourcemap.zig
+++ b/src/sourcemap/sourcemap.zig
@@ -933,7 +933,10 @@ pub const LineOffsetTable = struct {
continue;
}
- var owned = columns_for_non_ascii.toOwnedSlice() catch unreachable;
+ // We don't call .toOwnedSlice() because it is expensive to
+ // reallocate the array AND when inside an Arena, it's
+ // hideously expensive
+ var owned = columns_for_non_ascii.items;
if (stack_fallback.fixed_buffer_allocator.ownsSlice(std.mem.sliceAsBytes(owned))) {
owned = allocator.dupe(i32, owned) catch unreachable;
}