bootstrap.primitives: new predicate integer-array-capacity
It is to be used to declare values for better optimizations.locals-and-roots
							parent
							
								
									a3ce61f8da
								
							
						
					
					
						commit
						c7ed8a88bb
					
				| 
						 | 
					@ -1,13 +1,11 @@
 | 
				
			||||||
! Copyright (C) 2004, 2010 Slava Pestov.
 | 
					! Copyright (C) 2004, 2010 Slava Pestov.
 | 
				
			||||||
! See http://factorcode.org/license.txt for BSD license.
 | 
					! See http://factorcode.org/license.txt for BSD license.
 | 
				
			||||||
USING: accessors alien alien.strings arrays assocs byte-arrays classes
 | 
					USING: alien.strings arrays assocs bootstrap.image.private classes
 | 
				
			||||||
classes.intersection classes.union combinators generic hashtables
 | 
					classes.builtin classes.intersection classes.predicate classes.private
 | 
				
			||||||
hashtables.private io io.encodings.ascii kernel math math.private math.order
 | 
					classes.singleton classes.tuple classes.tuple.private classes.union
 | 
				
			||||||
namespaces make parser quotations sequences strings vectors words layouts
 | 
					combinators compiler.units io io.encodings.ascii kernel kernel.private
 | 
				
			||||||
classes.private classes.builtin classes.singleton classes.tuple
 | 
					layouts make math math.private namespaces parser quotations sequences
 | 
				
			||||||
classes.tuple.private kernel.private vocabs vocabs.loader
 | 
					slots source-files splitting vocabs vocabs.loader words ;
 | 
				
			||||||
source-files definitions slots  classes.predicate compiler.units
 | 
					 | 
				
			||||||
bootstrap.image.private io.files splitting ;
 | 
					 | 
				
			||||||
IN: bootstrap.primitives
 | 
					IN: bootstrap.primitives
 | 
				
			||||||
 | 
					
 | 
				
			||||||
"Creating primitives and basic runtime structures..." print flush
 | 
					"Creating primitives and basic runtime structures..." print flush
 | 
				
			||||||
| 
						 | 
					@ -160,7 +158,11 @@ call( -- ) ! syntax-quot
 | 
				
			||||||
    "byte-array" "byte-arrays" lookup-word ,
 | 
					    "byte-array" "byte-arrays" lookup-word ,
 | 
				
			||||||
] { } make define-union-class
 | 
					] { } make define-union-class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! A predicate class used for declarations
 | 
					"integer" "math" create-word
 | 
				
			||||||
 | 
					"fixnum" "math" lookup-word "bignum" "math" lookup-word 2array
 | 
				
			||||||
 | 
					define-union-class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					! Two predicate classes used for declarations.
 | 
				
			||||||
"array-capacity" "sequences.private" create-word
 | 
					"array-capacity" "sequences.private" create-word
 | 
				
			||||||
"fixnum" "math" lookup-word
 | 
					"fixnum" "math" lookup-word
 | 
				
			||||||
[
 | 
					[
 | 
				
			||||||
| 
						 | 
					@ -174,6 +176,15 @@ define-predicate-class
 | 
				
			||||||
[ >fixnum ] bootstrap-max-array-capacity <fake-bignum> [ fixnum-bitand ] curry append
 | 
					[ >fixnum ] bootstrap-max-array-capacity <fake-bignum> [ fixnum-bitand ] curry append
 | 
				
			||||||
"coercer" set-word-prop
 | 
					"coercer" set-word-prop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"integer-array-capacity" "sequences.private" create-word
 | 
				
			||||||
 | 
					"integer" "math" lookup-word
 | 
				
			||||||
 | 
					[
 | 
				
			||||||
 | 
					    [ dup 0 >= ] %
 | 
				
			||||||
 | 
					    bootstrap-max-array-capacity <fake-bignum> [ <= ] curry ,
 | 
				
			||||||
 | 
					    [ [ drop f ] if ] %
 | 
				
			||||||
 | 
					] [ ] make
 | 
				
			||||||
 | 
					define-predicate-class
 | 
				
			||||||
 | 
					
 | 
				
			||||||
! Catch-all class for providing a default method.
 | 
					! Catch-all class for providing a default method.
 | 
				
			||||||
"object" "kernel" create-word
 | 
					"object" "kernel" create-word
 | 
				
			||||||
[ f f { } intersection-class define-class ]
 | 
					[ f f { } intersection-class define-class ]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -267,10 +267,16 @@ HELP: first4
 | 
				
			||||||
{ $errors "Throws an error if the sequence has less than four elements." } ;
 | 
					{ $errors "Throws an error if the sequence has less than four elements." } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: array-capacity
 | 
					HELP: array-capacity
 | 
				
			||||||
{ $values { "array" array } { "n" "a non-negative fixnum" } }
 | 
					{ $class-description "A predicate class whose instances are fixnums of valid array sizes for the current architecture. The minimum value is zero and the maximum value is " { $link max-array-capacity } "." }
 | 
				
			||||||
{ $class-description "A predicate class whose instances are valid array sizes for the current architecture. The minimum value is zero and the maximum value is " { $link max-array-capacity } "." }
 | 
					 | 
				
			||||||
{ $description "Low-level array length accessor." }
 | 
					{ $description "Low-level array length accessor." }
 | 
				
			||||||
{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types, so improper use can corrupt memory." } ;
 | 
					{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types, so improper use can corrupt memory." }
 | 
				
			||||||
 | 
					{ $see-also integer-array-capacity } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HELP: integer-array-capacity
 | 
				
			||||||
 | 
					{ $class-description "A predicate class whose instances are integer of valid array sizes for the current architecture. The minimum value is zero and the maximum value is " { $link max-array-capacity } "." }
 | 
				
			||||||
 | 
					{ $description "Low-level array length accessor." }
 | 
				
			||||||
 | 
					{ $warning "This word is in the " { $vocab-link "sequences.private" } " vocabulary because it is unsafe. It does not check types, so improper use can corrupt memory." }
 | 
				
			||||||
 | 
					{ $see-also array-capacity } ;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HELP: array-nth
 | 
					HELP: array-nth
 | 
				
			||||||
{ $values { "n" "a non-negative fixnum" } { "array" array } { "elt" object } }
 | 
					{ $values { "n" "a non-negative fixnum" } { "array" array } { "elt" object } }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue