-
-
Save MasterDuke17/0cde60931db68b66fc3cf889c817ef53 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 adding a page of size 14336 for bin = 12 | |
1 adding a page of size 20480 for bin = 18 | |
1 adding a page of size 21504 for bin = 19 | |
1 adding a page of size 28672 for bin = 26 | |
1 adding a page of size 31744 for bin = 29 | |
1 adding a page of size 34816 for bin = 32 | |
2 adding a page of size 18432 for bin = 16 | |
4 adding a page of size 19456 for bin = 17 | |
4 adding a page of size 23552 for bin = 21 | |
4 adding a page of size 50176 for bin = 47 | |
5 adding a page of size 16384 for bin = 14 | |
5 adding a page of size 47104 for bin = 44 | |
6 adding a page of size 22528 for bin = 20 | |
6 adding a page of size 25600 for bin = 23 | |
15 adding a page of size 13312 for bin = 11 | |
27 adding a page of size 5120 for bin = 3 | |
27 adding a page of size 6144 for bin = 4 | |
58 adding a page of size 12288 for bin = 10 | |
65 adding a page of size 66560 for bin = 63 | |
102 adding a page of size 3072 for bin = 1 | |
112 adding a page of size 10240 for bin = 8 | |
128 adding a page of size 2048 for bin = 0 | |
133 adding a page of size 11264 for bin = 9 | |
149 adding a page of size 33792 for bin = 31 | |
833 adding a page of size 4096 for bin = 2 | |
6591 adding a page of size 9216 for bin = 7 | |
9706 adding a page of size 8192 for bin = 6 | |
10136 adding a page of size 17408 for bin = 15 | |
29739 adding a page of size 7168 for bin = 5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 adding a page of size 14336 for bin = 12 | |
1 adding a page of size 20480 for bin = 18 | |
1 adding a page of size 21504 for bin = 19 | |
1 adding a page of size 28672 for bin = 26 | |
1 adding a page of size 31744 for bin = 29 | |
1 adding a page of size 34816 for bin = 32 | |
2 adding a page of size 18432 for bin = 16 | |
4 adding a page of size 19456 for bin = 17 | |
4 adding a page of size 23552 for bin = 21 | |
4 adding a page of size 50176 for bin = 47 | |
5 adding a page of size 16384 for bin = 14 | |
5 adding a page of size 47104 for bin = 44 | |
6 adding a page of size 20480 for bin = 3 | |
6 adding a page of size 22528 for bin = 20 | |
6 adding a page of size 24576 for bin = 4 | |
6 adding a page of size 25600 for bin = 23 | |
15 adding a page of size 13312 for bin = 11 | |
25 adding a page of size 12288 for bin = 1 | |
28 adding a page of size 40960 for bin = 8 | |
31 adding a page of size 8192 for bin = 0 | |
52 adding a page of size 65536 for bin = 2 | |
58 adding a page of size 12288 for bin = 10 | |
65 adding a page of size 66560 for bin = 63 | |
133 adding a page of size 11264 for bin = 9 | |
149 adding a page of size 33792 for bin = 31 | |
1267 adding a page of size 139264 for bin = 15 | |
1646 adding a page of size 36864 for bin = 7 | |
1858 adding a page of size 114688 for bin = 5 | |
2426 adding a page of size 32768 for bin = 6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 adding a page of size 14336 for bin = 12 | |
1 adding a page of size 20480 for bin = 18 | |
1 adding a page of size 21504 for bin = 19 | |
1 adding a page of size 22528 for bin = 20 | |
1 adding a page of size 28672 for bin = 26 | |
1 adding a page of size 33792 for bin = 31 | |
1 adding a page of size 34816 for bin = 32 | |
1 adding a page of size 47104 for bin = 44 | |
2 adding a page of size 16384 for bin = 14 | |
2 adding a page of size 18432 for bin = 16 | |
2 adding a page of size 19456 for bin = 17 | |
4 adding a page of size 23552 for bin = 21 | |
4 adding a page of size 25600 for bin = 23 | |
4 adding a page of size 50176 for bin = 47 | |
8 adding a page of size 13312 for bin = 11 | |
8 adding a page of size 66560 for bin = 63 | |
17 adding a page of size 9216 for bin = 7 | |
18 adding a page of size 5120 for bin = 3 | |
25 adding a page of size 6144 for bin = 4 | |
45 adding a page of size 3072 for bin = 1 | |
56 adding a page of size 10240 for bin = 8 | |
56 adding a page of size 12288 for bin = 10 | |
88 adding a page of size 2048 for bin = 0 | |
131 adding a page of size 11264 for bin = 9 | |
412 adding a page of size 4096 for bin = 2 | |
8902 adding a page of size 17408 for bin = 15 | |
8919 adding a page of size 8192 for bin = 6 | |
25042 adding a page of size 7168 for bin = 5 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 adding a page of size 18432 for bin = 16 | |
1 adding a page of size 20480 for bin = 18 | |
1 adding a page of size 21504 for bin = 19 | |
1 adding a page of size 22528 for bin = 20 | |
1 adding a page of size 28672 for bin = 26 | |
1 adding a page of size 33792 for bin = 31 | |
1 adding a page of size 34816 for bin = 32 | |
1 adding a page of size 47104 for bin = 44 | |
2 adding a page of size 16384 for bin = 14 | |
2 adding a page of size 19456 for bin = 17 | |
4 adding a page of size 23552 for bin = 21 | |
4 adding a page of size 36864 for bin = 7 | |
4 adding a page of size 50176 for bin = 47 | |
5 adding a page of size 20480 for bin = 3 | |
5 adding a page of size 25600 for bin = 23 | |
6 adding a page of size 24576 for bin = 4 | |
8 adding a page of size 66560 for bin = 63 | |
9 adding a page of size 13312 for bin = 11 | |
13 adding a page of size 40960 for bin = 8 | |
19 adding a page of size 12288 for bin = 1 | |
25 adding a page of size 65536 for bin = 2 | |
28 adding a page of size 8192 for bin = 0 | |
56 adding a page of size 12288 for bin = 10 | |
131 adding a page of size 11264 for bin = 9 | |
1210 adding a page of size 139264 for bin = 15 | |
1852 adding a page of size 114688 for bin = 5 | |
2426 adding a page of size 32768 for bin = 6 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git src/core/fixedsizealloc.c src/core/fixedsizealloc.c | |
index 9ee7304c9..345a3a521 100644 | |
--- src/core/fixedsizealloc.c | |
+++ src/core/fixedsizealloc.c | |
@@ -2,6 +2,9 @@ | |
#include "memdebug.h" | |
+#define HEAPTRACK_DEFINE_VALGRIND_MACROS | |
+#include "heaptrack_api.h" | |
+ | |
/* The fixed size allocator provides a thread-safe mechanism for getting and | |
* releasing fixed-size chunks of memory. Requests larger blocks from the | |
* operating system, and then allocates out of them. Can certainly be further | |
@@ -88,9 +91,16 @@ static void setup_bin(MVMFixedSizeAlloc *al, MVMuint32 bin) { | |
MVMuint32 page_size = MVM_FSA_PAGE_ITEMS * ((bin + 1) << MVM_FSA_BIN_BITS) + MVM_FSA_REDZONE_BYTES * 2 * MVM_FSA_PAGE_ITEMS; | |
/* We'll just allocate a single page to start off with. */ | |
+ if (bin == 2 || bin == 5) | |
+ page_size *= 24; | |
+ else if (bin == 15) | |
+ page_size *= 8; | |
+ else if (bin <= 8) | |
+ page_size *= 4; | |
al->size_classes[bin].num_pages = 1; | |
al->size_classes[bin].pages = MVM_malloc(sizeof(void *) * al->size_classes[bin].num_pages); | |
- al->size_classes[bin].pages[0] = MVM_malloc(page_size); | |
+ for (int i = 0; i < al->size_classes[bin].num_pages; i++) | |
+ al->size_classes[bin].pages[i] = MVM_malloc(page_size); | |
/* Set up allocation position and limit. */ | |
al->size_classes[bin].alloc_pos = al->size_classes[bin].pages[0]; | |
@@ -101,6 +111,13 @@ static void setup_bin(MVMFixedSizeAlloc *al, MVMuint32 bin) { | |
static void add_page(MVMFixedSizeAlloc *al, MVMuint32 bin) { | |
/* Work out page size. */ | |
MVMuint32 page_size = MVM_FSA_PAGE_ITEMS * ((bin + 1) << MVM_FSA_BIN_BITS) + MVM_FSA_REDZONE_BYTES * 2 * MVM_FSA_PAGE_ITEMS; | |
+ if (bin == 2 || bin == 5) | |
+ page_size *= 24; | |
+ else if (bin == 15) | |
+ page_size *= 8; | |
+ else if (bin <= 8) | |
+ page_size *= 4; | |
+ fprintf(stderr, "adding a page of size %u for bin = %u\n", page_size, bin); | |
/* Add the extra page. */ | |
MVMuint32 cur_page = al->size_classes[bin].num_pages; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment