| ... | @@ -623,9 +623,9 @@ fn eql_addr(a: usize, b: usize) bool { | ... | @@ -623,9 +623,9 @@ fn eql_addr(a: usize, b: usize) bool { |
| 623 | const test_config = Config{}; | 623 | const test_config = Config{}; |
| 624 | | 624 | |
| 625 | test "small allocations - free in same order" { | 625 | test "small allocations - free in same order" { |
| 626 | var gpda = GeneralPurposeAllocator(test_config){}; | 626 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 627 | defer std.testing.expect(!gpda.deinit()); | 627 | defer std.testing.expect(!gpa.deinit()); |
| 628 | const allocator = &gpda.allocator; | 628 | const allocator = &gpa.allocator; |
| 629 | | 629 | |
| 630 | var list = std.ArrayList(*u64).init(std.testing.allocator); | 630 | var list = std.ArrayList(*u64).init(std.testing.allocator); |
| 631 | defer list.deinit(); | 631 | defer list.deinit(); |
| ... | @@ -642,9 +642,9 @@ test "small allocations - free in same order" { | ... | @@ -642,9 +642,9 @@ test "small allocations - free in same order" { |
| 642 | } | 642 | } |
| 643 | | 643 | |
| 644 | test "small allocations - free in reverse order" { | 644 | test "small allocations - free in reverse order" { |
| 645 | var gpda = GeneralPurposeAllocator(test_config){}; | 645 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 646 | defer std.testing.expect(!gpda.deinit()); | 646 | defer std.testing.expect(!gpa.deinit()); |
| 647 | const allocator = &gpda.allocator; | 647 | const allocator = &gpa.allocator; |
| 648 | | 648 | |
| 649 | var list = std.ArrayList(*u64).init(std.testing.allocator); | 649 | var list = std.ArrayList(*u64).init(std.testing.allocator); |
| 650 | defer list.deinit(); | 650 | defer list.deinit(); |
| ... | @@ -661,9 +661,9 @@ test "small allocations - free in reverse order" { | ... | @@ -661,9 +661,9 @@ test "small allocations - free in reverse order" { |
| 661 | } | 661 | } |
| 662 | | 662 | |
| 663 | test "large allocations" { | 663 | test "large allocations" { |
| 664 | var gpda = GeneralPurposeAllocator(test_config){}; | 664 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 665 | defer std.testing.expect(!gpda.deinit()); | 665 | defer std.testing.expect(!gpa.deinit()); |
| 666 | const allocator = &gpda.allocator; | 666 | const allocator = &gpa.allocator; |
| 667 | | 667 | |
| 668 | const ptr1 = try allocator.alloc(u64, 42768); | 668 | const ptr1 = try allocator.alloc(u64, 42768); |
| 669 | const ptr2 = try allocator.alloc(u64, 52768); | 669 | const ptr2 = try allocator.alloc(u64, 52768); |
| ... | @@ -674,9 +674,9 @@ test "large allocations" { | ... | @@ -674,9 +674,9 @@ test "large allocations" { |
| 674 | } | 674 | } |
| 675 | | 675 | |
| 676 | test "realloc" { | 676 | test "realloc" { |
| 677 | var gpda = GeneralPurposeAllocator(test_config){}; | 677 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 678 | defer std.testing.expect(!gpda.deinit()); | 678 | defer std.testing.expect(!gpa.deinit()); |
| 679 | const allocator = &gpda.allocator; | 679 | const allocator = &gpa.allocator; |
| 680 | | 680 | |
| 681 | var slice = try allocator.alignedAlloc(u8, @alignOf(u32), 1); | 681 | var slice = try allocator.alignedAlloc(u8, @alignOf(u32), 1); |
| 682 | defer allocator.free(slice); | 682 | defer allocator.free(slice); |
| ... | @@ -696,9 +696,9 @@ test "realloc" { | ... | @@ -696,9 +696,9 @@ test "realloc" { |
| 696 | } | 696 | } |
| 697 | | 697 | |
| 698 | test "shrink" { | 698 | test "shrink" { |
| 699 | var gpda = GeneralPurposeAllocator(test_config){}; | 699 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 700 | defer std.testing.expect(!gpda.deinit()); | 700 | defer std.testing.expect(!gpa.deinit()); |
| 701 | const allocator = &gpda.allocator; | 701 | const allocator = &gpa.allocator; |
| 702 | | 702 | |
| 703 | var slice = try allocator.alloc(u8, 20); | 703 | var slice = try allocator.alloc(u8, 20); |
| 704 | defer allocator.free(slice); | 704 | defer allocator.free(slice); |
| ... | @@ -719,14 +719,14 @@ test "shrink" { | ... | @@ -719,14 +719,14 @@ test "shrink" { |
| 719 | } | 719 | } |
| 720 | | 720 | |
| 721 | test "large object - grow" { | 721 | test "large object - grow" { |
| 722 | var gpda = GeneralPurposeAllocator(test_config){}; | 722 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 723 | defer std.testing.expect(!gpda.deinit()); | 723 | defer std.testing.expect(!gpa.deinit()); |
| 724 | const allocator = &gpda.allocator; | 724 | const allocator = &gpa.allocator; |
| 725 | | 725 | |
| 726 | var slice1 = try allocator.alloc(u8, page_size * 2 - 20); | 726 | var slice1 = try allocator.alloc(u8, page_size * 2 - 20); |
| 727 | defer allocator.free(slice1); | 727 | defer allocator.free(slice1); |
| 728 | | 728 | |
| 729 | var old = slice1; | 729 | const old = slice1; |
| 730 | slice1 = try allocator.realloc(slice1, page_size * 2 - 10); | 730 | slice1 = try allocator.realloc(slice1, page_size * 2 - 10); |
| 731 | std.testing.expect(slice1.ptr == old.ptr); | 731 | std.testing.expect(slice1.ptr == old.ptr); |
| 732 | | 732 | |
| ... | @@ -737,9 +737,9 @@ test "large object - grow" { | ... | @@ -737,9 +737,9 @@ test "large object - grow" { |
| 737 | } | 737 | } |
| 738 | | 738 | |
| 739 | test "realloc small object to large object" { | 739 | test "realloc small object to large object" { |
| 740 | var gpda = GeneralPurposeAllocator(test_config){}; | 740 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 741 | defer std.testing.expect(!gpda.deinit()); | 741 | defer std.testing.expect(!gpa.deinit()); |
| 742 | const allocator = &gpda.allocator; | 742 | const allocator = &gpa.allocator; |
| 743 | | 743 | |
| 744 | var slice = try allocator.alloc(u8, 70); | 744 | var slice = try allocator.alloc(u8, 70); |
| 745 | defer allocator.free(slice); | 745 | defer allocator.free(slice); |
| ... | @@ -754,9 +754,9 @@ test "realloc small object to large object" { | ... | @@ -754,9 +754,9 @@ test "realloc small object to large object" { |
| 754 | } | 754 | } |
| 755 | | 755 | |
| 756 | test "shrink large object to large object" { | 756 | test "shrink large object to large object" { |
| 757 | var gpda = GeneralPurposeAllocator(test_config){}; | 757 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 758 | defer std.testing.expect(!gpda.deinit()); | 758 | defer std.testing.expect(!gpa.deinit()); |
| 759 | const allocator = &gpda.allocator; | 759 | const allocator = &gpa.allocator; |
| 760 | | 760 | |
| 761 | var slice = try allocator.alloc(u8, page_size * 2 + 50); | 761 | var slice = try allocator.alloc(u8, page_size * 2 + 50); |
| 762 | defer allocator.free(slice); | 762 | defer allocator.free(slice); |
| ... | @@ -777,9 +777,9 @@ test "shrink large object to large object" { | ... | @@ -777,9 +777,9 @@ test "shrink large object to large object" { |
| 777 | } | 777 | } |
| 778 | | 778 | |
| 779 | test "shrink large object to large object with larger alignment" { | 779 | test "shrink large object to large object with larger alignment" { |
| 780 | var gpda = GeneralPurposeAllocator(test_config){}; | 780 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 781 | defer std.testing.expect(!gpda.deinit()); | 781 | defer std.testing.expect(!gpa.deinit()); |
| 782 | const allocator = &gpda.allocator; | 782 | const allocator = &gpa.allocator; |
| 783 | | 783 | |
| 784 | var debug_buffer: [1000]u8 = undefined; | 784 | var debug_buffer: [1000]u8 = undefined; |
| 785 | const debug_allocator = &std.heap.FixedBufferAllocator.init(&debug_buffer).allocator; | 785 | const debug_allocator = &std.heap.FixedBufferAllocator.init(&debug_buffer).allocator; |
| ... | @@ -805,9 +805,9 @@ test "shrink large object to large object with larger alignment" { | ... | @@ -805,9 +805,9 @@ test "shrink large object to large object with larger alignment" { |
| 805 | } | 805 | } |
| 806 | | 806 | |
| 807 | test "realloc large object to small object" { | 807 | test "realloc large object to small object" { |
| 808 | var gpda = GeneralPurposeAllocator(test_config){}; | 808 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 809 | defer std.testing.expect(!gpda.deinit()); | 809 | defer std.testing.expect(!gpa.deinit()); |
| 810 | const allocator = &gpda.allocator; | 810 | const allocator = &gpa.allocator; |
| 811 | | 811 | |
| 812 | var slice = try allocator.alloc(u8, page_size * 2 + 50); | 812 | var slice = try allocator.alloc(u8, page_size * 2 + 50); |
| 813 | defer allocator.free(slice); | 813 | defer allocator.free(slice); |
| ... | @@ -820,18 +820,18 @@ test "realloc large object to small object" { | ... | @@ -820,18 +820,18 @@ test "realloc large object to small object" { |
| 820 | } | 820 | } |
| 821 | | 821 | |
| 822 | test "non-page-allocator backing allocator" { | 822 | test "non-page-allocator backing allocator" { |
| 823 | var gpda = GeneralPurposeAllocator(.{}){ .backing_allocator = std.testing.allocator }; | 823 | var gpa = GeneralPurposeAllocator(.{}){ .backing_allocator = std.testing.allocator }; |
| 824 | defer std.testing.expect(!gpda.deinit()); | 824 | defer std.testing.expect(!gpa.deinit()); |
| 825 | const allocator = &gpda.allocator; | 825 | const allocator = &gpa.allocator; |
| 826 | | 826 | |
| 827 | const ptr = try allocator.create(i32); | 827 | const ptr = try allocator.create(i32); |
| 828 | defer allocator.destroy(ptr); | 828 | defer allocator.destroy(ptr); |
| 829 | } | 829 | } |
| 830 | | 830 | |
| 831 | test "realloc large object to larger alignment" { | 831 | test "realloc large object to larger alignment" { |
| 832 | var gpda = GeneralPurposeAllocator(test_config){}; | 832 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 833 | defer std.testing.expect(!gpda.deinit()); | 833 | defer std.testing.expect(!gpa.deinit()); |
| 834 | const allocator = &gpda.allocator; | 834 | const allocator = &gpa.allocator; |
| 835 | | 835 | |
| 836 | var debug_buffer: [1000]u8 = undefined; | 836 | var debug_buffer: [1000]u8 = undefined; |
| 837 | const debug_allocator = &std.heap.FixedBufferAllocator.init(&debug_buffer).allocator; | 837 | const debug_allocator = &std.heap.FixedBufferAllocator.init(&debug_buffer).allocator; |
| ... | @@ -865,9 +865,9 @@ test "realloc large object to larger alignment" { | ... | @@ -865,9 +865,9 @@ test "realloc large object to larger alignment" { |
| 865 | | 865 | |
| 866 | test "large object shrinks to small but allocation fails during shrink" { | 866 | test "large object shrinks to small but allocation fails during shrink" { |
| 867 | var failing_allocator = std.testing.FailingAllocator.init(std.heap.page_allocator, 3); | 867 | var failing_allocator = std.testing.FailingAllocator.init(std.heap.page_allocator, 3); |
| 868 | var gpda = GeneralPurposeAllocator(.{}){ .backing_allocator = &failing_allocator.allocator }; | 868 | var gpa = GeneralPurposeAllocator(.{}){ .backing_allocator = &failing_allocator.allocator }; |
| 869 | defer std.testing.expect(!gpda.deinit()); | 869 | defer std.testing.expect(!gpa.deinit()); |
| 870 | const allocator = &gpda.allocator; | 870 | const allocator = &gpa.allocator; |
| 871 | | 871 | |
| 872 | var slice = try allocator.alloc(u8, page_size * 2 + 50); | 872 | var slice = try allocator.alloc(u8, page_size * 2 + 50); |
| 873 | defer allocator.free(slice); | 873 | defer allocator.free(slice); |
| ... | @@ -882,9 +882,9 @@ test "large object shrinks to small but allocation fails during shrink" { | ... | @@ -882,9 +882,9 @@ test "large object shrinks to small but allocation fails during shrink" { |
| 882 | } | 882 | } |
| 883 | | 883 | |
| 884 | test "objects of size 1024 and 2048" { | 884 | test "objects of size 1024 and 2048" { |
| 885 | var gpda = GeneralPurposeAllocator(test_config){}; | 885 | var gpa = GeneralPurposeAllocator(test_config){}; |
| 886 | defer std.testing.expect(!gpda.deinit()); | 886 | defer std.testing.expect(!gpa.deinit()); |
| 887 | const allocator = &gpda.allocator; | 887 | const allocator = &gpa.allocator; |
| 888 | | 888 | |
| 889 | const slice = try allocator.alloc(u8, 1025); | 889 | const slice = try allocator.alloc(u8, 1025); |
| 890 | const slice2 = try allocator.alloc(u8, 3000); | 890 | const slice2 = try allocator.alloc(u8, 3000); |
| ... | @@ -894,27 +894,27 @@ test "objects of size 1024 and 2048" { | ... | @@ -894,27 +894,27 @@ test "objects of size 1024 and 2048" { |
| 894 | } | 894 | } |
| 895 | | 895 | |
| 896 | test "setting a memory cap" { | 896 | test "setting a memory cap" { |
| 897 | var gpda = GeneralPurposeAllocator(.{ .enable_memory_limit = true }){}; | 897 | var gpa = GeneralPurposeAllocator(.{ .enable_memory_limit = true }){}; |
| 898 | defer std.testing.expect(!gpda.deinit()); | 898 | defer std.testing.expect(!gpa.deinit()); |
| 899 | const allocator = &gpda.allocator; | 899 | const allocator = &gpa.allocator; |
| 900 | | 900 | |
| 901 | gpda.setRequestedMemoryLimit(1010); | 901 | gpa.setRequestedMemoryLimit(1010); |
| 902 | | 902 | |
| 903 | const small = try allocator.create(i32); | 903 | const small = try allocator.create(i32); |
| 904 | std.testing.expect(gpda.total_requested_bytes == 4); | 904 | std.testing.expect(gpa.total_requested_bytes == 4); |
| 905 | | 905 | |
| 906 | const big = try allocator.alloc(u8, 1000); | 906 | const big = try allocator.alloc(u8, 1000); |
| 907 | std.testing.expect(gpda.total_requested_bytes == 1004); | 907 | std.testing.expect(gpa.total_requested_bytes == 1004); |
| 908 | | 908 | |
| 909 | std.testing.expectError(error.OutOfMemory, allocator.create(u64)); | 909 | std.testing.expectError(error.OutOfMemory, allocator.create(u64)); |
| 910 | | 910 | |
| 911 | allocator.destroy(small); | 911 | allocator.destroy(small); |
| 912 | std.testing.expect(gpda.total_requested_bytes == 1000); | 912 | std.testing.expect(gpa.total_requested_bytes == 1000); |
| 913 | | 913 | |
| 914 | allocator.free(big); | 914 | allocator.free(big); |
| 915 | std.testing.expect(gpda.total_requested_bytes == 0); | 915 | std.testing.expect(gpa.total_requested_bytes == 0); |
| 916 | | 916 | |
| 917 | const exact = try allocator.alloc(u8, 1010); | 917 | const exact = try allocator.alloc(u8, 1010); |
| 918 | std.testing.expect(gpda.total_requested_bytes == 1010); | 918 | std.testing.expect(gpa.total_requested_bytes == 1010); |
| 919 | allocator.free(exact); | 919 | allocator.free(exact); |
| 920 | } | 920 | } |