1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

Use make-struct/simple in psyntax

* module/ice-9/psyntax.scm (define-expansion-constructors): Use
  make-struct/simple, so we can inline allocations.
* module/ice-9/psyntax-pp.scm: Regenerate.
This commit is contained in:
Andy Wingo 2018-01-22 08:06:09 +01:00
parent 3f736c4781
commit 5fcc761b43
2 changed files with 20 additions and 24 deletions

View file

@ -9,23 +9,19 @@
(letrec* (letrec*
((make-void ((make-void
(lambda (src) (lambda (src)
(make-struct/no-tail (vector-ref %expanded-vtables 0) src))) (make-struct/simple (vector-ref %expanded-vtables 0) src)))
(make-const (make-const
(lambda (src exp) (lambda (src exp)
(make-struct/no-tail (vector-ref %expanded-vtables 1) src exp))) (make-struct/simple (vector-ref %expanded-vtables 1) src exp)))
(make-primitive-ref (make-primitive-ref
(lambda (src name) (lambda (src name)
(make-struct/no-tail (vector-ref %expanded-vtables 2) src name))) (make-struct/simple (vector-ref %expanded-vtables 2) src name)))
(make-lexical-ref (make-lexical-ref
(lambda (src name gensym) (lambda (src name gensym)
(make-struct/no-tail (make-struct/simple (vector-ref %expanded-vtables 3) src name gensym)))
(vector-ref %expanded-vtables 3)
src
name
gensym)))
(make-lexical-set (make-lexical-set
(lambda (src name gensym exp) (lambda (src name gensym exp)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 4) (vector-ref %expanded-vtables 4)
src src
name name
@ -33,7 +29,7 @@
exp))) exp)))
(make-module-ref (make-module-ref
(lambda (src mod name public?) (lambda (src mod name public?)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 5) (vector-ref %expanded-vtables 5)
src src
mod mod
@ -41,7 +37,7 @@
public?))) public?)))
(make-module-set (make-module-set
(lambda (src mod name public? exp) (lambda (src mod name public? exp)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 6) (vector-ref %expanded-vtables 6)
src src
mod mod
@ -50,16 +46,16 @@
exp))) exp)))
(make-toplevel-ref (make-toplevel-ref
(lambda (src name) (lambda (src name)
(make-struct/no-tail (vector-ref %expanded-vtables 7) src name))) (make-struct/simple (vector-ref %expanded-vtables 7) src name)))
(make-toplevel-set (make-toplevel-set
(lambda (src name exp) (lambda (src name exp)
(make-struct/no-tail (vector-ref %expanded-vtables 8) src name exp))) (make-struct/simple (vector-ref %expanded-vtables 8) src name exp)))
(make-toplevel-define (make-toplevel-define
(lambda (src name exp) (lambda (src name exp)
(make-struct/no-tail (vector-ref %expanded-vtables 9) src name exp))) (make-struct/simple (vector-ref %expanded-vtables 9) src name exp)))
(make-conditional (make-conditional
(lambda (src test consequent alternate) (lambda (src test consequent alternate)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 10) (vector-ref %expanded-vtables 10)
src src
test test
@ -67,19 +63,19 @@
alternate))) alternate)))
(make-call (make-call
(lambda (src proc args) (lambda (src proc args)
(make-struct/no-tail (vector-ref %expanded-vtables 11) src proc args))) (make-struct/simple (vector-ref %expanded-vtables 11) src proc args)))
(make-primcall (make-primcall
(lambda (src name args) (lambda (src name args)
(make-struct/no-tail (vector-ref %expanded-vtables 12) src name args))) (make-struct/simple (vector-ref %expanded-vtables 12) src name args)))
(make-seq (make-seq
(lambda (src head tail) (lambda (src head tail)
(make-struct/no-tail (vector-ref %expanded-vtables 13) src head tail))) (make-struct/simple (vector-ref %expanded-vtables 13) src head tail)))
(make-lambda (make-lambda
(lambda (src meta body) (lambda (src meta body)
(make-struct/no-tail (vector-ref %expanded-vtables 14) src meta body))) (make-struct/simple (vector-ref %expanded-vtables 14) src meta body)))
(make-lambda-case (make-lambda-case
(lambda (src req opt rest kw inits gensyms body alternate) (lambda (src req opt rest kw inits gensyms body alternate)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 15) (vector-ref %expanded-vtables 15)
src src
req req
@ -92,7 +88,7 @@
alternate))) alternate)))
(make-let (make-let
(lambda (src names gensyms vals body) (lambda (src names gensyms vals body)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 16) (vector-ref %expanded-vtables 16)
src src
names names
@ -101,7 +97,7 @@
body))) body)))
(make-letrec (make-letrec
(lambda (src in-order? names gensyms vals body) (lambda (src in-order? names gensyms vals body)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables 17) (vector-ref %expanded-vtables 17)
src src
in-order? in-order?

View file

@ -1,6 +1,6 @@
;;;; -*-scheme-*- ;;;; -*-scheme-*-
;;;; ;;;;
;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010-2017 ;;;; Copyright (C) 2001, 2003, 2006, 2009, 2010-2018
;;;; Free Software Foundation, Inc. ;;;; Free Software Foundation, Inc.
;;;; ;;;;
;;;; This library is free software; you can redistribute it and/or ;;;; This library is free software; you can redistribute it and/or
@ -184,7 +184,7 @@
(sfields (map (lambda (f) (datum->syntax x f)) fields)) (sfields (map (lambda (f) (datum->syntax x f)) fields))
(ctor (datum->syntax x (symbol-append 'make- stem)))) (ctor (datum->syntax x (symbol-append 'make- stem))))
(cons #`(define (#,ctor #,@sfields) (cons #`(define (#,ctor #,@sfields)
(make-struct/no-tail (make-struct/simple
(vector-ref %expanded-vtables #,n) (vector-ref %expanded-vtables #,n)
#,@sfields)) #,@sfields))
out))) out)))