1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-24 05:20:30 +02:00
guile/module/language/cps
Andy Wingo e2fafeb901 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.
2015-01-22 13:03:11 +01:00
..
arities.scm Fix typo in arities.scm 2014-07-21 21:38:17 +02:00
closure-conversion.scm Add $branch expression type 2014-05-31 21:15:06 -04:00
compile-bytecode.scm Keywords have a tc7 2015-01-22 13:03:11 +01:00
constructors.scm Root higher-order CPS term is always $kfun $cont 2014-04-11 14:01:27 +02:00
contification.scm Root higher-order CPS term is always $kfun $cont 2014-04-11 14:01:27 +02:00
cse.scm Remove dead case in CSE 2014-07-22 12:18:07 +02:00
dce.scm Remove size limit in elide-type-checks 2014-06-30 15:30:39 +02:00
dfg.scm Convert slot allocation to use intsets 2014-07-03 11:24:37 +02:00
effects-analysis.scm Keywords have a tc7 2015-01-22 13:03:11 +01:00
elide-values.scm Root higher-order CPS term is always $kfun $cont 2014-04-11 14:01:27 +02:00
intmap.scm Restrict intsets and maps to non-negative integers 2014-07-03 09:37:30 +02:00
intset.scm Add bitvector->intset. 2014-07-03 10:37:20 +02:00
primitives.scm Keywords have a tc7 2015-01-22 13:03:11 +01:00
prune-bailouts.scm Root higher-order CPS term is always $kfun $cont 2014-04-11 14:01:27 +02:00
prune-top-level-scopes.scm Remove $kif 2014-05-31 21:43:12 -04:00
reify-primitives.scm First-order CPS has $program and $closure forms 2014-04-12 14:59:31 +02:00
renumber.scm Stabilize renumber.scm:sort-conts. 2014-07-21 21:38:17 +02:00
self-references.scm Add $branch expression type 2014-05-31 21:15:06 -04:00
simplify.scm Better simplification of literal constants that continue to branches 2014-07-22 12:18:07 +02:00
slot-allocation.scm Fix allocate-slots for $kreceive with multiple predecessors 2014-07-21 11:47:43 +02:00
spec.scm Rename "RTL" to "bytecode" 2013-12-02 21:31:47 +01:00
specialize-primcalls.scm Keywords have a tc7 2015-01-22 13:03:11 +01:00
type-fold.scm Separate &boolean type into &true and &false 2014-08-24 17:07:49 +02:00
types.scm Keywords have a tc7 2015-01-22 13:03:11 +01:00
verify.scm Remove $kif 2014-05-31 21:43:12 -04:00