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:
Andy Wingo 2018-06-27 14:57:51 +02:00
commit 8918165c40
8 changed files with 41 additions and 11 deletions

View file

@ -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",