const mem = @import("std").mem; const builtin = @import("std").builtin; const std = @import("std"); const mimalloc = @import("./allocators/mimalloc.zig"); const FeatureFlags = @import("./feature_flags.zig"); const Environment = @import("./env.zig"); fn mimalloc_free( _: *anyopaque, buf: []u8, buf_align: u8, _: usize, ) void { // mi_free_size internally just asserts the size // so it's faster if we don't pass that value through // but its good to have that assertion if (comptime Environment.allow_assert) { assert(mimalloc.mi_is_in_heap_region(buf.ptr)); if (mimalloc.canUseAlignedAlloc(buf.len, buf_align)) mimalloc.mi_free_size_aligned(buf.ptr, buf.len, buf_align) else mimalloc.mi_free_size(buf.ptr, buf.len); } else { mimalloc.mi_free(buf.ptr); } } const c = struct { pub const malloc_size = mimalloc.mi_malloc_size; pub const malloc_usable_size = mimalloc.mi_malloc_usable_size; pub const malloc = struct { pub inline fn malloc_wrapped(size: usize) ?*anyopaque { if (comptime FeatureFlags.log_allocations) std.debug.print("Malloc: {d}\n", .{size}); return mimalloc.mi_malloc(size); } }.malloc_wrapped; pub inline fn free(ptr: anytype) void { if (comptime Environment.allow_assert) { assert(mimalloc.mi_is_in_heap_region(ptr)); } mimalloc.mi_free(ptr); } pub const posix_memalign = struct { pub inline fn mi_posix_memalign(p: [*c]?*anyopaque, alignment: usize, size: usize) c_int { if (comptime FeatureFlags.log_allocations) std.debug.print("Posix_memalign: {d}\n", .{std.mem.alignForward(size, alignment)}); return mimalloc.mi_posix_memalign(p, alignment, size); } }.mi_posix_memalign; }; const Allocator = mem.Allocator; const assert = std.debug.assert; const CAllocator = struct { const malloc_size = c.malloc_size; pub const supports_posix_memalign = true; fn alignedAlloc(len: usize, alignment: usize) ?[*]u8 { if (comptime FeatureFlags.log_allocations) std.debug.print("Malloc: {d}\n", .{len}); var ptr: ?*anyopaque = if (mimalloc.canUseAlignedAlloc(len, alignment)) mimalloc.mi_malloc_aligned(len, alignment) else mimalloc.mi_malloc(len); if (comptime Environment.allow_assert) { const usable = mimalloc.mi_malloc_usable_size(ptr); if (usable < len) { std.debug.panic("mimalloc: allocated size is too small: {d} < {d}", .{ usable, len }); } } return @ptrCast(?[*]u8, ptr); } fn alignedAllocSize(ptr: [*]u8) usize { return CAllocator.malloc_size(ptr); } fn alloc(_: *anyopaque, len: usize, ptr_align: u8, _: usize) ?[*]u8 { return alignedAlloc(len, ptr_align); } fn resize(_: *anyopaque, buf: []u8, _: u8, new_len: usize, _: usize) bool { if (new_len <= buf.len) { return true; } const full_len = alignedAllocSize(buf.ptr); if (new_len <= full_len) { return true; } return false; } const free = mimalloc_free; }; pub const c_allocator = Allocator{ .ptr = undefined, .vtable = &c_allocator_vtable, }; const c_allocator_vtable = Allocator.VTable{ .alloc = &CAllocator.alloc, .resize = &CAllocator.resize, .free = &CAllocator.free, }; const ZAllocator = struct { const malloc_size = c.malloc_size; pub const supports_posix_memalign = true; fn alignedAlloc(len: usize, alignment: usize) ?[*]u8 { if (comptime FeatureFlags.log_allocations) std.debug.print("Malloc: {d}\n", .{len}); var ptr = if (mimalloc.canUseAlignedAlloc(len, alignment)) mimalloc.mi_zalloc_aligned(len, alignment) else mimalloc.mi_zalloc(len); if (comptime Environment.allow_assert) { const usable = mimalloc.mi_malloc_usable_size(ptr); if (usable < len) { std.debug.panic("mimalloc: allocated size is too small: {d} < {d}", .{ usable, len }); } } return @ptrCast(?[*]u8, ptr); } fn alignedAllocSize(ptr: [*]u8) usize { return CAllocator.malloc_size(ptr); } fn alloc(_: *anyopaque, len: usize, ptr_align: u8, _: usize) ?[*]u8 { return alignedAlloc(len, ptr_align); } fn resize(_: *anyopaque, buf: []u8, _: u8, new_len: usize, _: usize) bool { if (new_len <= buf.len) { return true; } const full_len = alignedAllocSize(buf.ptr); if (new_len <= full_len) { return true; } return false; } const free = mimalloc_free; }; pub const z_allocator = Allocator{ .ptr = undefined, .vtable = &z_allocator_vtable, }; const z_allocator_vtable = Allocator.VTable{ .alloc = &ZAllocator.alloc, .resize = &ZAllocator.resize, .free = &ZAllocator.free, }; const HugeAllocator = struct { fn alloc( _: *anyopaque, len: usize, alignment: u29, len_align: u29, return_address: usize, ) error{OutOfMemory}![]u8 { _ = return_address; assert(len > 0); assert(std.math.isPowerOfTwo(alignment)); var slice = std.os.mmap( null, len, std.os.PROT.READ | std.os.PROT.WRITE, std.os.MAP.ANONYMOUS | std.os.MAP.PRIVATE, -1, 0, ) catch return error.OutOfMemory; _ = len_align; return slice; } fn resize( _: *anyopaque, _: []u8, _: u29, _: usize, _: u29, _: usize, ) ?usize { return null; } fn free( _: *anyopaque, buf: []u8, _: u29, _: usize, ) void { std.os.munmap(@alignCast(std.meta.alignment([]align(std.mem.page_size) u8), buf)); } }; pub const huge_allocator = Allocator{ .ptr = undefined, .vtable = &huge_allocator_vtable, }; const huge_allocator_vtable = Allocator.VTable{ .alloc = HugeAllocator.alloc, .resize = HugeAllocator.resize, .free = HugeAllocator.free, }; pub const huge_threshold = 1024 * 256; const AutoSizeAllocator = struct { fn alloc( _: *anyopaque, len: usize, alignment: u29, len_align: u29, return_address: usize, ) error{OutOfMemory}![]u8 { _ = len_align; if (len >= huge_threshold) { return huge_allocator.rawAlloc( len, alignment, return_address, ) orelse return error.OutOfMemory; } return c_allocator.rawAlloc( len, alignment, return_address, ) orelse return error.OutOfMemory; } fn resize( _: *anyopaque, _: []u8, _: u29, _: usize, _: u29, _: usize, ) ?usize { return null; } fn free( _: *anyopaque, buf: []u8, a: u29, b: usize, ) void { if (buf.len >= huge_threshold) { return huge_allocator.rawFree( buf, a, b, ); } return c_allocator.rawFree( buf, a, b, ); } }; pub const auto_allocator = Allocator{ .ptr = undefined, .vtable = &auto_allocator_vtable, }; const auto_allocator_vtable = Allocator.VTable{ .alloc = AutoSizeAllocator.alloc, .resize = AutoSizeAllocator.resize, .free = AutoSizeAllocator.free, }; alue='feat/fonts-retrieve-data'>feat/fonts-retrieve-data Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/packages/integrations/netlify/test/edge-functions (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2023-05-30Content collections - fix `.json` collection errors (#7246)Gravatar Ben Holmes 4-7/+52
* fix: avoid error on collectionType === 'unknown' * fix: ignore underscores in file globs * chore: clarify [!_] * fix: mismatch error not throwing * fix: bad collectionType var * test: no error for empty collection * chore: changeset
2023-05-30[ci] formatGravatar bholmesdev 4-5/+5
2023-05-30Markdoc - remove `$entry` variable (#7244)Gravatar Ben Holmes 16-257/+217
* refactor: remove entry prop from `getRenderModule()` * refactor: remove `$entry` from markdoc * test: update entry-prop -> variables test * refactor: unify `getEntryConfigByExt` * chore: clean up shared content / data get logic * docs: update `$entry` recommendation * chore: rename entry-prop -> variables * chore: changeset * chore: missed a spot
2023-05-30Markdoc: new README for Markdoc nodes (#7225)Gravatar Ben Holmes 1-46/+85
* docs: all-new nodes documentation * edit: `.astro` ONLY Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: `.` outside links, line break Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: such as, not like Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: more Astro less probs Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: reviewers React to Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: tagz Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * chore: add `default: 'article'` for document * edit: reword client-side instructions * edit: prism stylesheet got lost * fix: heading -> blockquote --------- Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca>
2023-05-30[ci] formatGravatar MoustaphaDev 1-1/+1
2023-05-30fix: prioritize dynamic prerendered routes over dynamic server routes (#7235)Gravatar Happydev 6-19/+361
* test: add unit tests * fix: prioritize prerendered routes * chore: fix test * add comment * test: try avoiding race condition * chore: changeset * try avoiding race conditions attempt #2 * try avoiding race conditions (attempt 3) * final fix hopefuly * tet: add more tests * sort conflicting dynamic routes aplhabetically * test: fix test
2023-05-30[ci] formatGravatar matthewp 1-5/+8
2023-05-30Bug 6672 (#7062)Gravatar wulinsheng123 10-0/+138
* fix miss a head when the templaterender has a promise * fix * add some test * test files move to md directory * fix add * delect file --------- Co-authored-by: wuls <linsheng.wu@beantechs.com>