]> gitweb.factorcode.org Git - factor.git/commitdiff
classes.tuple: speed up slots>tuple a bit.
authorJohn Benediktsson <mrjbq7@gmail.com>
Sat, 26 Sep 2020 19:22:02 +0000 (12:22 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Sat, 26 Sep 2020 19:22:02 +0000 (12:22 -0700)
Only get the initial values that are needed to supplement provided values.

core/classes/tuple/tuple.factor

index 8cc87a0306e941979aefa892e0723d108a3e9556..ef2de584446f6e41e79a85833e402fea93af904b 100644 (file)
@@ -82,15 +82,13 @@ M: tuple class-of layout-of 2 slot { word } declare ; inline
         ] 2each
     ] if-bootstrapping ; inline
 
-: initial-values ( class -- seq )
-    all-slots [ initial>> ] map ; inline
-
 : pad-slots ( seq class -- seq' class )
-    [ initial-values ] keep
-    2over [ length ] bi@ 2dup > [
+    [ all-slots ] keep 2over [ length ] bi@ 2dup > [
         [ nip swap ] 2dip too-many-slots
     ] [
-        drop [ tail append ] curry dip
+        drop [
+            tail-slice [ [ initial>> ] map append ] unless-empty
+        ] curry dip
     ] if ; inline
 
 PRIVATE>
@@ -174,6 +172,9 @@ M: object final-class? drop f ;
 : define-boa-check ( class -- )
     dup boa-check-quot "boa-check" set-word-prop ;
 
+: initial-values ( class -- seq )
+    all-slots [ initial>> ] map ; inline
+
 : tuple-prototype ( class -- prototype )
     [ initial-values ] keep over [ ] any?
     [ slots>tuple ] [ 2drop f ] if ;