]> gitweb.factorcode.org Git - factor.git/commitdiff
Make array length foldable
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 16 Jul 2008 21:48:09 +0000 (16:48 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 16 Jul 2008 21:48:09 +0000 (16:48 -0500)
core/arrays/arrays.factor
core/bootstrap/compiler/compiler.factor
core/bootstrap/primitives.factor
core/byte-arrays/byte-arrays.factor
core/classes/tuple/tuple.factor
core/hashtables/hashtables.factor
core/sequences/sequences.factor

index 9c5f40d88327f3d2fc4d1686cfca22e207a45694..02e0e45544169faa504d6f09d57ad2ff6233c066 100755 (executable)
@@ -1,11 +1,11 @@
-! Copyright (C) 2005, 2007 Slava Pestov.
+! Copyright (C) 2005, 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel kernel.private math math.private sequences
-sequences.private ;
+USING: accessors kernel kernel.private math math.private
+sequences sequences.private ;
 IN: arrays
 
 M: array clone (clone) ;
-M: array length array-capacity ;
+M: array length length>> ;
 M: array nth-unsafe >r >fixnum r> array-nth ;
 M: array set-nth-unsafe >r >fixnum r> set-array-nth ;
 M: array resize resize-array ;
index 04e53046fe5eca2bae455b380fbfcd7fdc37f92a..f25eafeb17d79c2ccae7f795fdb87857f018a734 100755 (executable)
@@ -37,7 +37,7 @@ nl
     array? hashtable? vector?
     tuple? sbuf? node? tombstone?
 
-    array-capacity array-nth set-array-nth
+    array-nth set-array-nth
 
     wrap probe
 
index b2b6dc4e59087131ee7d53ff54a8782956387a2a..a6ebf13f4de510d6b0893f181875b89c599c76eb 100755 (executable)
@@ -225,7 +225,9 @@ bi
     { "imaginary" { "real" "math" } read-only }
 } define-builtin
 
-"array" "arrays" create { } define-builtin
+"array" "arrays" create {
+    { "length" { "array-capacity" "sequences.private" } read-only }
+} define-builtin
 
 "wrapper" "kernel" create {
     { "wrapped" read-only }
@@ -261,7 +263,9 @@ bi
     { "sub-primitive" read-only }
 } define-builtin
 
-"byte-array" "byte-arrays" create { } define-builtin
+"byte-array" "byte-arrays" create {
+    { "length" { "array-capacity" "sequences.private" } read-only }
+} define-builtin
 
 "callstack" "kernel" create { } define-builtin
 
index d6034708102abf55812b929702621822f7e42615..5461da2b84f307eb98af8c2697eb677e71a951d0 100755 (executable)
@@ -1,11 +1,11 @@
 ! Copyright (C) 2007, 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: kernel kernel.private alien.accessors sequences
+USING: accessors kernel kernel.private alien.accessors sequences
 sequences.private math ;
 IN: byte-arrays
 
 M: byte-array clone (clone) ;
-M: byte-array length array-capacity ;
+M: byte-array length length>> ;
 M: byte-array nth-unsafe swap >fixnum alien-unsigned-1 ;
 M: byte-array set-nth-unsafe swap >fixnum set-alien-unsigned-1 ;
 : >byte-array ( seq -- byte-array ) B{ } clone-like ; inline
index 17d8e3693527722aa7510f98500161ed8b725769..4216a5dc3d672928e01eb462cf51a5382b603bdf 100755 (executable)
@@ -91,7 +91,7 @@ ERROR: bad-superclass class ;
     #! 4 slot == superclasses>>
     rot dup tuple? [
         layout-of 4 slot
-        2dup array-capacity fixnum<
+        2dup 1 slot fixnum<
         [ array-nth eq? ] [ 3drop f ] if
     ] [ 3drop f ] if ; inline
 
index e804bb76fab665e3315c9af4bf2c3a8fa192d336..943071a9f8dbc4f943546e73020062ae650040d9 100755 (executable)
@@ -12,7 +12,7 @@ TUPLE: hashtable
 <PRIVATE
 
 : wrap ( i array -- n )
-    array-capacity 1 fixnum-fast fixnum-bitand ; inline
+    length>> 1 fixnum-fast fixnum-bitand ; inline
 
 : hash@ ( key array -- i )
     >r hashcode >fixnum dup fixnum+fast r> wrap ; inline
@@ -30,7 +30,7 @@ TUPLE: hashtable
     ] if ; inline
 
 : key@ ( key hash -- array n ? )
-    array>> dup array-capacity 0 eq?
+    array>> dup length>> 0 eq?
     [ no-key ] [ 2dup hash@ (key@) ] if ; inline
 
 : <hash-array> ( n -- array )
@@ -71,7 +71,7 @@ TUPLE: hashtable
 
 : hash-large? ( hash -- ? )
     [ count>> 3 fixnum*fast 1 fixnum+fast ]
-    [ array>> array-capacity ] bi fixnum> ; inline
+    [ array>> length>> ] bi fixnum> ; inline
 
 : hash-stale? ( hash -- ? )
     [ deleted>> 10 fixnum*fast ] [ count>> ] bi fixnum> ; inline
index 11cfb975df0e37bb6c444d0774799d74a4e3558c..07900a900db15a1182ac42767a4d903f20bdc846 100755 (executable)
@@ -60,9 +60,6 @@ INSTANCE: immutable-sequence sequence
 
 <PRIVATE
 
-: array-capacity ( array -- n )
-    1 slot { array-capacity } declare ; inline
-
 : array-nth ( n array -- elt )
     swap 2 fixnum+fast slot ; inline