summaryrefslogtreecommitdiff
path: root/libguile/evalext.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2015-01-19 16:57:42 +0100
committerAndy Wingo <wingo@pobox.com>2015-01-22 13:03:11 +0100
commite2fafeb9012cbe5e3ec63326692a4cc3a22c318e (patch)
treec056156667ddc699727789114a75f1589a66237f /libguile/evalext.c
parent27b3b5b92d22cbf672d5b0ad20b4efe6cfa80ecf (diff)
downloadguile-e2fafeb9012cbe5e3ec63326692a4cc3a22c318e.tar.gz
Keywords have a tc7
* libguile/tags.h (scm_tc7_keyword): Allocate a tc7, so that the VM can have cheap keyword? tests. * libguile/keywords.c: * libguile/keywords.h: Adapt. * libguile/goops.c (scm_class_of, scm_sys_goops_early_init): Capture <keyword>. * libguile/print.c (iprin1): Inline keyword printer. * libguile/evalext.c (scm_self_evaluating_p): Add keywords here. * libguile/deprecated.h: * libguile/deprecated.c (scm_tc16_keyword): Deprecate. * module/language/cps/compile-bytecode.scm (compile-fun): Add keyword? case, and bitvector? case while we're at it. * module/language/cps/effects-analysis.scm (define-primitive-effects): Add bytevector?, keyword?, and bitvector? cases. * module/language/cps/primitives.scm (*branching-primcall-arities*): Add keyword?. * module/language/cps/types.scm (bitvector?, keyword?, bytevector?): Add branch inferrers. * module/language/tree-il/primitives.scm (*interesting-primitive-names*): (*effect-free-primitives*): (*effect+exception-free-primitives*): Add bytevector?, keyword?, and bitvector?. * module/oop/goops.scm (<keyword>): New class. * module/system/base/types.scm (%tc7-keyword, cell->object): Add cases. * module/system/vm/assembler.scm (br-if-keyword): New definition. * module/system/vm/disassembler.scm (code-annotation): Add br-if-tc7 case for keywords. * test-suite/tests/types.test ("clonable objects"): Update now that keywords are cloneable.
Diffstat (limited to 'libguile/evalext.c')
-rw-r--r--libguile/evalext.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libguile/evalext.c b/libguile/evalext.c
index 48a9eff3c..48d9a1718 100644
--- a/libguile/evalext.c
+++ b/libguile/evalext.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998,1999,2000,2001,2002,2003, 2006, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
+/* Copyright (C) 1998,1999,2000,2001,2002,2003, 2006, 2008, 2009, 2010, 2011, 2012, 2013, 2015 Free Software Foundation, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
@@ -81,6 +81,7 @@ SCM_DEFINE (scm_self_evaluating_p, "self-evaluating?", 1, 0, 0,
case scm_tc7_fluid:
case scm_tc7_dynamic_state:
case scm_tc7_frame:
+ case scm_tc7_keyword:
case scm_tc7_vm_cont:
case scm_tc7_number:
case scm_tc7_string: