fixed arena.h dependency changes

This commit is contained in:
Richard Thier 2024-10-01 17:51:13 +02:00
parent 2c1edf668a
commit 69750cabf9
4 changed files with 21 additions and 17 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "arena.h"]
path = arena.h
url = ssh://gitea@188.157.159.51:8122/prenex/arena.h.git

View File

@ -1,6 +1,6 @@
#ifndef VIRTUAL_MEM_LIST_H #ifndef VIRTUAL_MEM_LIST_H
#define VIRTUAL_MEM_LIST_H #define VIRTUAL_MEM_LIST_H
#include "arena.h" #include "arena.h/arena.h"
#ifndef VML_NOINLINE #ifndef VML_NOINLINE
#define VML_NOINLINE __attribute__((noinline)) #define VML_NOINLINE __attribute__((noinline))
@ -29,7 +29,7 @@ class VirtualMemList {
public: public:
VML_INLINE VirtualMemList(uint32_t initial_size = 0) noexcept { VML_INLINE VirtualMemList(uint32_t initial_size = 0) noexcept {
a = newarena((ptrdiff_t)1 << 33); a = newarena((ptrdiff_t)1 << 33);
base = ((T*) alloc(&a, sizeof(T), sizeof(T), 1)) + 1; base = ((T*) aralloc(&a, sizeof(T), sizeof(T), 1)) + 1;
end = initial_size; end = initial_size;
} }
@ -46,11 +46,11 @@ public:
// base[end++] = elem; // base[end++] = elem;
// Non-working, but logically better solution: // Non-working, but logically better solution:
// T *value = (T*) alloc(&a, sizeof(T), sizeof(T), 1); // T *value = (T*) aralloc(&a, sizeof(T), sizeof(T), 1);
// *value = elem; // *value = elem;
// Longer solution (more correct - but I let it waste a bit of memory) // Longer solution (more correct - but I let it waste a bit of memory)
T *value = (T*) alloc(&a, sizeof(T), sizeof(T), 1); T *value = (T*) aralloc(&a, sizeof(T), sizeof(T), 1);
base[end++] = elem; base[end++] = elem;
} }

1
arena.h Submodule

@ -0,0 +1 @@
Subproject commit 3037bf6bec96b0ebc231510d308da1daece276fd

View File

@ -10,7 +10,7 @@
#define TLT int #define TLT int
#include "turbolist.h" #include "turbolist.h"
#include"arena.h" #include"arena.h/arena.h"
// #define PRINT_DBG // #define PRINT_DBG
// #define N 65535 // #define N 65535
@ -133,7 +133,7 @@ int main() {
// malloc-like // malloc-like
[](size_t size) { [](size_t size) {
static thread_local arena a = newarena((ptrdiff_t)1 << 33); static thread_local arena a = newarena((ptrdiff_t)1 << 33);
return (void*) alloc(&a, sizeof(uint8_t), sizeof(uint8_t), size); return (void*) aralloc(&a, sizeof(uint8_t), sizeof(uint8_t), size);
}, },
// free-like // free-like
[](void *ptr) {}, [](void *ptr) {},
@ -174,29 +174,29 @@ int main() {
arena a9 = newarena((ptrdiff_t)1 << 33); arena a9 = newarena((ptrdiff_t)1 << 33);
*/ */
// steps at first real elem, there should be N from here! // steps at first real elem, there should be N from here!
int *arenalist = ((int*)alloc(&a, sizeof(int), sizeof(int), 1)) + 1; int *arenalist = ((int *)aralloc(&a, sizeof(int), sizeof(int), 1)) + 1;
for(int i = 0; i < N; ++i) { for(int i = 0; i < N; ++i) {
int *value = (int*)alloc(&a, sizeof(int), sizeof(int), 1); int *value = (int *)aralloc(&a, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
/* /*
value = (int*)alloc(&a1, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a1, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a2, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a2, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a3, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a3, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a4, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a4, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a5, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a5, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a6, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a6, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a7, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a7, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a8, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a8, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a9, sizeof(int), sizeof(int), 1); value = (int*)aralloc(&a9, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
*/ */
} }