From 734d40a44d806299205b55c526a64f25264dde97 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 6 Nov 2019 13:30:36 -0500 Subject: [PATCH] Faster constructor for record types TODO: validate number of args passed to record type constructor --- scheme/base.sld | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/scheme/base.sld b/scheme/base.sld index 85483aaf..2f858ebc 100644 --- a/scheme/base.sld +++ b/scheme/base.sld @@ -1957,19 +1957,19 @@ (,_type_slot_offset ,name ',(car f)))))) fields) ;; constructor - (,_define ,make - (,_let ((%make (,(rename 'make-constructor/args) - ,(symbol->string make) ;(identifier->symbol make)) - ,name))) - (,_lambda ,make-fields - (%make ,@make-fields)))) - ; Possible alternate version that inlines make-constructor/args ;(,_define ,make - ; (,_lambda ,make-fields - ; (,(rename 'vector) - ; ',record-marker - ; ,name - ; (,(rename 'vector) - ; ,@make-fields)))) + ; (,_let ((%make (,(rename 'make-constructor/args) + ; ,(symbol->string make) ;(identifier->symbol make)) + ; ,name))) + ; (,_lambda ,make-fields + ; (%make ,@make-fields)))) + ; Alternate version that inlines make-constructor/args + (,_define ,make + (,_lambda ,make-fields + (,(rename 'vector) + ',record-marker + ,name + (,(rename 'vector) + ,@make-fields)))) ))))) ))