Compile current-module as intrinsic call
* libguile/fluids.c (scm_i_fluid_ref): New internal function. (scm_fluid_ref): Use scm_i_fluid_ref. * libguile/intrinsics.h: * libguile/intrinsics.c (current_module): New intrinsic. * libguile/modules.c (scm_i_current_module): New internal function. (scm_current_module): Use new internal function. * module/language/cps/reify-primitives.scm (compute-known-primitives): Add current-module as an intrinsic primitive. * module/system/vm/assembler.scm (define-scm<-thread-intrinsic): (current-module): Arrange to compile to intrinsic call.
This commit is contained in:
parent
0faa4144d1
commit
8918165c40
8 changed files with 41 additions and 11 deletions
|
|
@ -340,6 +340,12 @@ allocate_words (scm_thread *thread, uint64_t n)
|
|||
return SCM_PACK_POINTER (scm_inline_gc_malloc_words (thread, n));
|
||||
}
|
||||
|
||||
static SCM
|
||||
current_module (scm_thread *thread)
|
||||
{
|
||||
return scm_i_current_module (thread);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
scm_bootstrap_intrinsics (void)
|
||||
|
|
@ -394,6 +400,7 @@ scm_bootstrap_intrinsics (void)
|
|||
scm_vm_intrinsics.error_not_enough_values = error_not_enough_values;
|
||||
scm_vm_intrinsics.error_wrong_number_of_values = error_wrong_number_of_values;
|
||||
scm_vm_intrinsics.allocate_words = allocate_words;
|
||||
scm_vm_intrinsics.current_module = current_module;
|
||||
|
||||
scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
|
||||
"scm_init_intrinsics",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue