]> gitweb.factorcode.org Git - factor.git/commitdiff
classes.tuple: make error slots read only for small space savings
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Mon, 1 Feb 2010 07:54:08 +0000 (20:54 +1300)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 3 Feb 2010 10:11:25 +0000 (23:11 +1300)
core/classes/tuple/tuple.factor

index e3b51267139f3945b625a5f98fbed4b1d89b954e..ee49980f4daf218ff257e27f9bd9c759a7edd151 100644 (file)
@@ -250,6 +250,13 @@ GENERIC# (define-tuple-class) 2 ( class superclass slots -- )
 : thrower-effect ( slots -- effect )
     [ name>> ] map { "*" } <effect> ;
 
+: error-slots ( slots -- slots' )
+    [
+        dup string? [ 1array ] when
+        read-only swap remove
+        read-only suffix
+    ] map ;
+
 PRIVATE>
 
 : define-tuple-class ( class superclass slots -- )
@@ -265,6 +272,7 @@ M: tuple-class (define-tuple-class)
     [ 2drop ?define-symbol ] [ redefine-tuple-class ] if ;
 
 : define-error-class ( class superclass slots -- )
+    error-slots
     [ define-tuple-class ]
     [ 2drop reset-generic ]
     [