summaryrefslogtreecommitdiffstats
path: root/eval.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-08-20 20:07:57 -0700
committerKaz Kylheku <kaz@kylheku.com>2019-08-20 20:07:57 -0700
commit607f0d271211e37d96ce7ba50a3f69372c000779 (patch)
treeff6f9a5220fbe2ae2f82d8675b3e3840a51806a1 /eval.c
parenta38d8cad117770db020c470adc3397da072aab6d (diff)
downloadtxr-607f0d271211e37d96ce7ba50a3f69372c000779.tar.gz
txr-607f0d271211e37d96ce7ba50a3f69372c000779.tar.bz2
txr-607f0d271211e37d96ce7ba50a3f69372c000779.zip
lib: streamline interning slightly.
We get rid of some defaulting and error checks from interning. This saves a few cycles on startup in the large number of intern calls that are performed. * eval.c (eval_init): Wire the intern intrinsic to the new intern_intrinsic function rather than intern. * lib.c (intern): Remove package lookup and error check on str argument. (intern_intrinsic): New function, which has the package lookup and error check. (intern_fallback): Remove package lookup and error check. * lib.h (intern_intrinsic): Declared. * txr.c (txr_main): Fix one instance of an intern call that relies on defaulting of the second argument, by passing cur_package.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/eval.c b/eval.c
index 1e9a5d76..7ac4c666 100644
--- a/eval.c
+++ b/eval.c
@@ -6625,7 +6625,7 @@ void eval_init(void)
reg_fun(intern(lit("unuse-sym"), user_package), func_n2o(unuse_sym, 1));
reg_fun(intern(lit("use-package"), user_package), func_n2o(use_package, 1));
reg_fun(intern(lit("unuse-package"), user_package), func_n2o(unuse_package, 1));
- reg_fun(intern(lit("intern"), user_package), func_n2o(intern, 1));
+ reg_fun(intern(lit("intern"), user_package), func_n2o(intern_intrinsic, 1));
reg_fun(intern(lit("unintern"), user_package), func_n2o(unintern, 1));
reg_fun(intern(lit("find-symbol"), user_package), func_n3o(find_symbol, 1));
reg_fun(intern(lit("find-symbol-fb"), user_package), func_n3o(find_symbol_fb, 1));