From 89da530898fa08c23b59e3e3bf64f266f113e014 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Tue, 23 Jan 2024 10:01:11 +0100 Subject: [DYNAREC] use an rbtree for dynablock size and max_db_size update --- src/include/box64context.h | 2 ++ src/include/rbtree.h | 1 + 2 files changed, 3 insertions(+) (limited to 'src/include') diff --git a/src/include/box64context.h b/src/include/box64context.h index 96442038..da09bc49 100644 --- a/src/include/box64context.h +++ b/src/include/box64context.h @@ -27,6 +27,7 @@ typedef struct kh_mapsymbols_s kh_mapsymbols_t; typedef struct library_s library_t; typedef struct linkmap_s linkmap_t; typedef struct kh_threadstack_s kh_threadstack_t; +typedef struct rbtree rbtree; typedef struct atfork_fnc_s { uintptr_t prepare; uintptr_t parent; @@ -154,6 +155,7 @@ typedef struct box64context_s { pthread_mutex_t mutex_bridge; #endif uintptr_t max_db_size; // the biggest (in x86_64 instructions bytes) built dynablock + rbtree* db_sizes; int trace_dynarec; pthread_mutex_t mutex_lock; // this is for the Test interpreter #ifdef __riscv diff --git a/src/include/rbtree.h b/src/include/rbtree.h index 82695d8c..c210d55d 100644 --- a/src/include/rbtree.h +++ b/src/include/rbtree.h @@ -12,6 +12,7 @@ uint32_t rb_get(rbtree *tree, uintptr_t addr); int rb_get_end(rbtree* tree, uintptr_t addr, uint32_t* val, uintptr_t* end); int rb_set(rbtree *tree, uintptr_t start, uintptr_t end, uint32_t data); int rb_unset(rbtree *tree, uintptr_t start, uintptr_t end); +uintptr_t rb_get_righter(rbtree *tree); void print_rbtree(const rbtree *tree); -- cgit 1.4.1