summaryrefslogtreecommitdiff
path: root/libguile/intrinsics.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-05-14 15:15:22 +0200
committerAndy Wingo <wingo@pobox.com>2018-05-14 15:15:22 +0200
commitceffb5e990efa6d8f9a2eb6cc128ebbddf61a819 (patch)
treeea0317519649620d2783df15e9d001cb4fa0b3fb /libguile/intrinsics.c
parent77e7bea4c25431f39bb8ba7f900e35ef008ea00b (diff)
downloadguile-ceffb5e990efa6d8f9a2eb6cc128ebbddf61a819.tar.gz
Compile "define!" via intrinsic
* libguile/intrinsics.c (scm_bootstrap_intrinsics): * libguile/intrinsics.h (SCM_FOR_ALL_VM_INTRINSICS): Add new define! intrinsic. * module/language/cps/compile-bytecode.scm (compile-function): Adapt compilation for define! to take two arguments. * module/language/cps/effects-analysis.scm (current-module): Update define! for two arguments. * module/language/tree-il/compile-cps.scm (convert): When reifying "define", grab the current module. * module/system/vm/assembler.scm (define!): Define assembler as intrinsic.
Diffstat (limited to 'libguile/intrinsics.c')
-rw-r--r--libguile/intrinsics.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/libguile/intrinsics.c b/libguile/intrinsics.c
index 64f8d7f32..0655c2aa8 100644
--- a/libguile/intrinsics.c
+++ b/libguile/intrinsics.c
@@ -300,6 +300,7 @@ scm_bootstrap_intrinsics (void)
scm_vm_intrinsics.numerically_equal_p = numerically_equal_p;
scm_vm_intrinsics.resolve_module = resolve_module;
scm_vm_intrinsics.lookup = lookup;
+ scm_vm_intrinsics.define_x = scm_module_ensure_local_variable;
scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
"scm_init_intrinsics",