From 9729d5cdd70e81b001e267cbafd9fa221c6c61bb Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 30 Sep 2015 20:22:30 -0700 Subject: Optimize empty lambdas in defstruct. * share/txr/stdlib/struct.tl (defstruct): Don't generate lambdas with empty body; just generate nil, which make-struct-type accepts. * tests/012/struct.tl: Updated defstruct expansion test. --- tests/012/struct.tl | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'tests') diff --git a/tests/012/struct.tl b/tests/012/struct.tl index 3eb5563c..209bae71 100644 --- a/tests/012/struct.tl +++ b/tests/012/struct.tl @@ -70,24 +70,22 @@ (set *gensym-counter* 0) (stest (sys:expand '(defstruct (boa x y) nil (x 0) (y 0))) - "(sys:make-struct-type 'boa '() '()\n \ - \ '(x y) (lambda (#:g0004))\n \ - \ (lambda (#:g0004)\n \ - \ (let ((#:g0005 (struct-type #:g0004)))\n\ - \ (if (static-slot-p #:g0005 'x)\n \ - \ () (progn (slotset #:g0004 'x\n \ - \ 0)))\n \ - \ (if (static-slot-p #:g0005 'y)\n \ - \ () (progn (slotset #:g0004 'y\n \ - \ 0)))))\n \ - \ (lambda (#:g0004 #:g0006\n \ - \ #:g0007)\n \ - \ (slotset #:g0004 'x\n \ - \ #:g0006)\n \ - \ (slotset #:g0004 'y\n \ + "(sys:make-struct-type 'boa '() '()\n \ + \ '(x y) () (lambda (#:g0004)\n \ + \ (let ((#:g0005 (struct-type #:g0004)))\n \ + \ (if (static-slot-p #:g0005 'x)\n \ + \ () (progn (slotset #:g0004 'x\n \ + \ 0)))\n \ + \ (if (static-slot-p #:g0005 'y)\n \ + \ () (progn (slotset #:g0004 'y\n \ + \ 0)))))\n \ + \ (lambda (#:g0004 #:g0006\n \ + \ #:g0007)\n \ + \ (slotset #:g0004 'x\n \ + \ #:g0006)\n \ + \ (slotset #:g0004 'y\n \ \ #:g0007)))") - (defstruct (boa x y) nil (x 0) (y 0)) -- cgit v1.2.3