add scheme_get_place_table()
This commit is contained in:
parent
cb09dfbdd3
commit
a5c7d4f5f8
|
@ -339,3 +339,21 @@ Returns the string that is used as the Racket startup banner.}
|
||||||
@function[(char* scheme_version)]{
|
@function[(char* scheme_version)]{
|
||||||
|
|
||||||
Returns a string for the executing version of Racket.}
|
Returns a string for the executing version of Racket.}
|
||||||
|
|
||||||
|
@function[(Scheme_Object* scheme_get_place_table)]{
|
||||||
|
|
||||||
|
Returns an @racket[eq?]-based hash table that is global to the current
|
||||||
|
place.}
|
||||||
|
|
||||||
|
@function[(void* scheme_register_process_global
|
||||||
|
[const-char* key]
|
||||||
|
[void* val])]{
|
||||||
|
|
||||||
|
Gets or sets a value in a process-global table (i.e., shared across
|
||||||
|
multiple places, if any). If @var{val} is NULL, the current mapping
|
||||||
|
for @var{key} is given, otherwise @var{val} is installed as the value
|
||||||
|
for @var{key} and @cpp{NULL} is returned. The given @var{val} must not
|
||||||
|
refer to garbage-collected memory.
|
||||||
|
|
||||||
|
This function is intended for infrequent use with a small number of
|
||||||
|
keys.}
|
||||||
|
|
|
@ -583,4 +583,5 @@ EXPORTS
|
||||||
scheme_get_signal_handle
|
scheme_get_signal_handle
|
||||||
scheme_char_strlen
|
scheme_char_strlen
|
||||||
scheme_stx_extract_marks
|
scheme_stx_extract_marks
|
||||||
|
scheme_get_place_table
|
||||||
scheme_register_process_global
|
scheme_register_process_global
|
||||||
|
|
|
@ -599,4 +599,5 @@ EXPORTS
|
||||||
scheme_get_signal_handle
|
scheme_get_signal_handle
|
||||||
scheme_char_strlen
|
scheme_char_strlen
|
||||||
scheme_stx_extract_marks
|
scheme_stx_extract_marks
|
||||||
|
scheme_get_place_table
|
||||||
scheme_register_process_global
|
scheme_register_process_global
|
||||||
|
|
|
@ -600,4 +600,5 @@ scheme_signal_received_at
|
||||||
scheme_get_signal_handle
|
scheme_get_signal_handle
|
||||||
scheme_char_strlen
|
scheme_char_strlen
|
||||||
scheme_stx_extract_marks
|
scheme_stx_extract_marks
|
||||||
|
scheme_get_place_table
|
||||||
scheme_register_process_global
|
scheme_register_process_global
|
||||||
|
|
|
@ -607,4 +607,5 @@ scheme_signal_received_at
|
||||||
scheme_get_signal_handle
|
scheme_get_signal_handle
|
||||||
scheme_char_strlen
|
scheme_char_strlen
|
||||||
scheme_stx_extract_marks
|
scheme_stx_extract_marks
|
||||||
|
scheme_get_place_table
|
||||||
scheme_register_process_global
|
scheme_register_process_global
|
||||||
|
|
|
@ -294,6 +294,7 @@ typedef struct Thread_Local_Variables {
|
||||||
struct Scheme_Hash_Table *place_local_parallel_symbol_table_;
|
struct Scheme_Hash_Table *place_local_parallel_symbol_table_;
|
||||||
struct FFI_Sync_Queue *ffi_sync_queue_;
|
struct FFI_Sync_Queue *ffi_sync_queue_;
|
||||||
struct Scheme_GC_Pre_Post_Callback_Desc *gc_prepost_callback_descs_;
|
struct Scheme_GC_Pre_Post_Callback_Desc *gc_prepost_callback_descs_;
|
||||||
|
struct Scheme_Hash_Table *place_local_misc_table_;
|
||||||
} Thread_Local_Variables;
|
} Thread_Local_Variables;
|
||||||
|
|
||||||
#if defined(IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS)
|
#if defined(IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS)
|
||||||
|
@ -589,6 +590,7 @@ XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL;
|
||||||
#define place_local_parallel_symbol_table XOA (scheme_get_thread_local_variables()->place_local_parallel_symbol_table_)
|
#define place_local_parallel_symbol_table XOA (scheme_get_thread_local_variables()->place_local_parallel_symbol_table_)
|
||||||
#define ffi_sync_queue XOA (scheme_get_thread_local_variables()->ffi_sync_queue_)
|
#define ffi_sync_queue XOA (scheme_get_thread_local_variables()->ffi_sync_queue_)
|
||||||
#define gc_prepost_callback_descs XOA (scheme_get_thread_local_variables()->gc_prepost_callback_descs_)
|
#define gc_prepost_callback_descs XOA (scheme_get_thread_local_variables()->gc_prepost_callback_descs_)
|
||||||
|
#define place_local_misc_table XOA (scheme_get_thread_local_variables()->place_local_misc_table_)
|
||||||
|
|
||||||
/* **************************************** */
|
/* **************************************** */
|
||||||
|
|
||||||
|
|
|
@ -1128,4 +1128,5 @@ MZ_EXTERN int scheme_char_strlen(const mzchar *s);
|
||||||
|
|
||||||
MZ_EXTERN Scheme_Object *scheme_stx_extract_marks(Scheme_Object *stx);
|
MZ_EXTERN Scheme_Object *scheme_stx_extract_marks(Scheme_Object *stx);
|
||||||
|
|
||||||
|
MZ_EXTERN Scheme_Object *scheme_get_place_table(void);
|
||||||
MZ_EXTERN void *scheme_register_process_global(const char *key, void *val);
|
MZ_EXTERN void *scheme_register_process_global(const char *key, void *val);
|
||||||
|
|
|
@ -929,6 +929,7 @@ void (*scheme_signal_received_at)(void *);
|
||||||
void *(*scheme_get_signal_handle)();
|
void *(*scheme_get_signal_handle)();
|
||||||
int (*scheme_char_strlen)(const mzchar *s);
|
int (*scheme_char_strlen)(const mzchar *s);
|
||||||
Scheme_Object *(*scheme_stx_extract_marks)(Scheme_Object *stx);
|
Scheme_Object *(*scheme_stx_extract_marks)(Scheme_Object *stx);
|
||||||
|
Scheme_Object *(*scheme_get_place_table)(void);
|
||||||
void *(*scheme_register_process_global)(const char *key, void *val);
|
void *(*scheme_register_process_global)(const char *key, void *val);
|
||||||
#ifndef SCHEME_EX_INLINE
|
#ifndef SCHEME_EX_INLINE
|
||||||
} Scheme_Extension_Table;
|
} Scheme_Extension_Table;
|
||||||
|
|
|
@ -655,4 +655,5 @@
|
||||||
scheme_extension_table->scheme_get_signal_handle = scheme_get_signal_handle;
|
scheme_extension_table->scheme_get_signal_handle = scheme_get_signal_handle;
|
||||||
scheme_extension_table->scheme_char_strlen = scheme_char_strlen;
|
scheme_extension_table->scheme_char_strlen = scheme_char_strlen;
|
||||||
scheme_extension_table->scheme_stx_extract_marks = scheme_stx_extract_marks;
|
scheme_extension_table->scheme_stx_extract_marks = scheme_stx_extract_marks;
|
||||||
|
scheme_extension_table->scheme_get_place_table = scheme_get_place_table;
|
||||||
scheme_extension_table->scheme_register_process_global = scheme_register_process_global;
|
scheme_extension_table->scheme_register_process_global = scheme_register_process_global;
|
||||||
|
|
|
@ -655,6 +655,7 @@
|
||||||
#define scheme_get_signal_handle (scheme_extension_table->scheme_get_signal_handle)
|
#define scheme_get_signal_handle (scheme_extension_table->scheme_get_signal_handle)
|
||||||
#define scheme_char_strlen (scheme_extension_table->scheme_char_strlen)
|
#define scheme_char_strlen (scheme_extension_table->scheme_char_strlen)
|
||||||
#define scheme_stx_extract_marks (scheme_extension_table->scheme_stx_extract_marks)
|
#define scheme_stx_extract_marks (scheme_extension_table->scheme_stx_extract_marks)
|
||||||
|
#define scheme_get_place_table (scheme_extension_table->scheme_get_place_table)
|
||||||
#define scheme_register_process_global (scheme_extension_table->scheme_register_process_global)
|
#define scheme_register_process_global (scheme_extension_table->scheme_register_process_global)
|
||||||
#ifdef MZ_PRECISE_GC
|
#ifdef MZ_PRECISE_GC
|
||||||
#pragma GC_VARIABLE_STACK_THOUGH_TABLE
|
#pragma GC_VARIABLE_STACK_THOUGH_TABLE
|
||||||
|
|
|
@ -239,6 +239,9 @@ THREAD_LOCAL_DECL(static Scheme_Object *recycle_cell);
|
||||||
THREAD_LOCAL_DECL(static Scheme_Object *maybe_recycle_cell);
|
THREAD_LOCAL_DECL(static Scheme_Object *maybe_recycle_cell);
|
||||||
THREAD_LOCAL_DECL(static int recycle_cc_count);
|
THREAD_LOCAL_DECL(static int recycle_cc_count);
|
||||||
|
|
||||||
|
THREAD_LOCAL_DECL(struct Scheme_Hash_Table *place_local_misc_table);
|
||||||
|
|
||||||
|
|
||||||
#ifdef MZ_PRECISE_GC
|
#ifdef MZ_PRECISE_GC
|
||||||
extern long GC_get_memory_use(void *c);
|
extern long GC_get_memory_use(void *c);
|
||||||
#else
|
#else
|
||||||
|
@ -827,6 +830,7 @@ void scheme_init_thread_places(void) {
|
||||||
REGISTER_SO(recycle_cell);
|
REGISTER_SO(recycle_cell);
|
||||||
REGISTER_SO(maybe_recycle_cell);
|
REGISTER_SO(maybe_recycle_cell);
|
||||||
REGISTER_SO(gc_prepost_callback_descs);
|
REGISTER_SO(gc_prepost_callback_descs);
|
||||||
|
REGISTER_SO(place_local_misc_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
void scheme_init_memtrace(Scheme_Env *env)
|
void scheme_init_memtrace(Scheme_Env *env)
|
||||||
|
@ -2584,6 +2588,13 @@ void scheme_init_process_globals(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Scheme_Object *scheme_get_place_table(void)
|
||||||
|
{
|
||||||
|
if (!place_local_misc_table)
|
||||||
|
place_local_misc_table = scheme_make_hash_table(SCHEME_hash_ptr);
|
||||||
|
return (Scheme_Object *)place_local_misc_table;
|
||||||
|
}
|
||||||
|
|
||||||
/*========================================================================*/
|
/*========================================================================*/
|
||||||
/* thread creation and swapping */
|
/* thread creation and swapping */
|
||||||
/*========================================================================*/
|
/*========================================================================*/
|
||||||
|
|
Loading…
Reference in New Issue
Block a user