inline symbol? and vector? to opcodes, and a psyntax inlining tweak

* libguile/vm-i-scheme.c (symbol?, vector?): New
  instructions. Renumbered the rest.
* libguile/vm-i-system.c: Renumber instructions.
* libguile/_scm.h (SCM_OBJCODE_MINOR_VERSION): Bump.

* module/ice-9/psyntax.scm (binding-type, binding-value): Define using
  macros so that we inline to car and cdr opcodes. Oh, for an inliner :)

* module/language/tree-il/compile-glil.scm (*primcall-ops*)
* module/language/tree-il/primitives.scm
  (*interesting-primitive-names*, *effect-free-primitives*)
  (*effect+exception-free-primitives*): Add symbol? and vector?
  inlines.
This commit is contained in:
Andy Wingo 2010-10-08 11:30:17 +02:00
commit cf45ff030c
6 changed files with 186 additions and 168 deletions

View file

@ -554,8 +554,12 @@
((_ type value) (cons type value))
((_ 'type) '(type))
((_ type) (cons type '()))))
(define binding-type car)
(define binding-value cdr)
(define-syntax binding-type
(syntax-rules ()
((_ x) (car x))))
(define-syntax binding-value
(syntax-rules ()
((_ x) (cdr x))))
(define-syntax null-env (identifier-syntax '()))