Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 jit/cu-mapping.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/jit/cu-mapping.c b/jit/cu-mapping.c
index 87fb1c9..7c13e13 100644
--- a/jit/cu-mapping.c
+++ b/jit/cu-mapping.c
@@ -32,6 +32,8 @@
 #include <vm/buffer.h>
 #include <vm/die.h>
 
+#include <pthread.h>
+
 /*
  * A radix tree is used to associate native method addresses with
  * compilation unit. Only method entry address is stored in the tree
@@ -39,6 +41,7 @@
  * is fast.
  */
 struct radix_tree *cu_map;
+pthread_mutex_t cu_map_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 #define BITS_PER_LEVEL 6
 
@@ -64,12 +67,20 @@ static unsigned long cu_key(struct compilation_unit *cu)
 
 int add_cu_mapping(struct compilation_unit *cu)
 {
-       return radix_tree_insert(cu_map, cu_key(cu), cu);
+       int result;
+
+       pthread_mutex_lock(&cu_map_mutex);
+       result = radix_tree_insert(cu_map, cu_key(cu), cu);
+       pthread_mutex_unlock(&cu_map_mutex);
+
+       return result;
 }
 
 void remove_cu_mapping(struct compilation_unit *cu)
 {
+       pthread_mutex_lock(&cu_map_mutex);
        radix_tree_remove(cu_map, cu_key(cu));
+       pthread_mutex_unlock(&cu_map_mutex);
 }
 
 struct compilation_unit *get_cu_from_native_addr(unsigned long addr)
@@ -77,7 +88,10 @@ struct compilation_unit *get_cu_from_native_addr(unsigned 
long addr)
        struct compilation_unit *cu;
        unsigned long method_addr;
 
+       pthread_mutex_lock(&cu_map_mutex);
        cu = radix_tree_lookup_prev(cu_map, addr_key(addr));
+       pthread_mutex_unlock(&cu_map_mutex);
+
        if (cu == NULL)
                return NULL;
 
-- 
1.6.0.6


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
_______________________________________________
Jatovm-devel mailing list
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to