[Places] make jit code allocation place local
This commit is contained in:
parent
3d9a28eb50
commit
64ed4fb578
|
@ -284,6 +284,8 @@ typedef struct Thread_Local_Variables {
|
|||
struct Scheme_Bucket_Table *place_local_modpath_table_;
|
||||
struct Scheme_Hash_Table *opened_libs_;
|
||||
struct mzrt_mutex *jit_lock_;
|
||||
struct free_list_entry *free_list_;
|
||||
int free_list_bucket_count_;
|
||||
/*KPLAKE1*/
|
||||
} Thread_Local_Variables;
|
||||
|
||||
|
@ -570,6 +572,8 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL;
|
|||
#define place_local_modpath_table XOA (scheme_get_thread_local_variables()->place_local_modpath_table_)
|
||||
#define opened_libs XOA (scheme_get_thread_local_variables()->opened_libs_)
|
||||
#define jit_lock XOA (scheme_get_thread_local_variables()->jit_lock_)
|
||||
#define free_list XOA (scheme_get_thread_local_variables()->free_list_)
|
||||
#define free_list_bucket_count XOA (scheme_get_thread_local_variables()->free_list_bucket_count_)
|
||||
/*KPLAKE2*/
|
||||
|
||||
/* **************************************** */
|
||||
|
|
|
@ -355,7 +355,6 @@ Scheme_Env *scheme_engine_instance_init() {
|
|||
#ifndef DONT_USE_FOREIGN
|
||||
scheme_init_foreign_globals();
|
||||
#endif
|
||||
scheme_init_salloc();
|
||||
make_kernel_env();
|
||||
|
||||
#if defined(MZ_PRECISE_GC) && defined(MZ_USE_PLACES)
|
||||
|
|
|
@ -100,18 +100,8 @@ struct free_list_entry {
|
|||
int count; /* number of items in `elems' */
|
||||
};
|
||||
|
||||
SHARED_OK static struct free_list_entry *free_list;
|
||||
SHARED_OK static int free_list_bucket_count;
|
||||
#ifdef MZ_USE_PLACES
|
||||
SHARED_OK static mzrt_mutex *free_list_mutex;
|
||||
#endif
|
||||
|
||||
|
||||
void scheme_init_salloc() {
|
||||
#ifdef MZ_USE_PLACES
|
||||
mzrt_mutex_create(&free_list_mutex);
|
||||
#endif
|
||||
}
|
||||
THREAD_LOCAL_DECL(static struct free_list_entry *free_list;)
|
||||
THREAD_LOCAL_DECL(static int free_list_bucket_count;)
|
||||
|
||||
void scheme_set_stack_base(void *base, int no_auto_statics)
|
||||
{
|
||||
|
@ -919,10 +909,6 @@ void *scheme_malloc_code(long size)
|
|||
long size2, bucket, sz, page_size;
|
||||
void *p, *pg, *prev;
|
||||
|
||||
# ifdef MZ_USE_PLACES
|
||||
mzrt_mutex_lock(free_list_mutex);
|
||||
# endif
|
||||
|
||||
if (size < CODE_HEADER_SIZE) {
|
||||
/* ensure CODE_HEADER_SIZE alignment
|
||||
and room for free-list pointers */
|
||||
|
@ -986,10 +972,6 @@ void *scheme_malloc_code(long size)
|
|||
LOG_CODE_MALLOC(0, printf("allocated %ld (->%ld / %ld)\n", size, size2, bucket));
|
||||
}
|
||||
|
||||
# ifdef MZ_USE_PLACES
|
||||
mzrt_mutex_unlock(free_list_mutex);
|
||||
# endif
|
||||
|
||||
return p;
|
||||
#else
|
||||
return malloc(size); /* good luck! */
|
||||
|
@ -1003,10 +985,6 @@ void scheme_free_code(void *p)
|
|||
int per_page, n;
|
||||
void *prev;
|
||||
|
||||
# ifdef MZ_USE_PLACES
|
||||
mzrt_mutex_lock(free_list_mutex);
|
||||
# endif
|
||||
|
||||
page_size = get_page_size();
|
||||
|
||||
size = *(long *)CODE_PAGE_OF(p);
|
||||
|
@ -1079,9 +1057,6 @@ void scheme_free_code(void *p)
|
|||
free_page(CODE_PAGE_OF(p), page_size);
|
||||
}
|
||||
}
|
||||
# ifdef MZ_USE_PLACES
|
||||
mzrt_mutex_unlock(free_list_mutex);
|
||||
# endif
|
||||
|
||||
#else
|
||||
free(p);
|
||||
|
|
|
@ -233,7 +233,6 @@ void scheme_init_dynamic_extension(Scheme_Env *env);
|
|||
#ifndef NO_REGEXP_UTILS
|
||||
extern void scheme_regexp_initialize(Scheme_Env *env);
|
||||
#endif
|
||||
void scheme_init_salloc(void);
|
||||
void scheme_init_memtrace(Scheme_Env *env);
|
||||
void scheme_init_paramz(Scheme_Env *env);
|
||||
void scheme_init_parameterization();
|
||||
|
|
Loading…
Reference in New Issue
Block a user