mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 19:50:24 +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:
parent
3f736c4781
commit
5fcc761b43
2 changed files with 20 additions and 24 deletions
|
@ -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?
|
||||||
|
|
|
@ -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)))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue