| 
									
										
										
										
											2009-04-28 18:26:11 -04:00
										 |  |  | ! Copyright (C) 2004, 2009 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: alien arrays byte-arrays generic hashtables | 
					
						
							| 
									
										
										
										
											2008-11-23 05:22:38 -05:00
										 |  |  | hashtables.private io kernel math math.private math.order | 
					
						
							|  |  |  | namespaces make parser sequences strings vectors words | 
					
						
							|  |  |  | quotations assocs layouts classes classes.builtin classes.tuple | 
					
						
							|  |  |  | classes.tuple.private kernel.private vocabs vocabs.loader | 
					
						
							|  |  |  | source-files definitions slots classes.union | 
					
						
							|  |  |  | classes.intersection classes.predicate compiler.units | 
					
						
							|  |  |  | bootstrap.image.private io.files accessors combinators ;
 | 
					
						
							| 
									
										
										
										
											2008-03-20 16:30:59 -04:00
										 |  |  | IN: bootstrap.primitives | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | "Creating primitives and basic runtime structures..." print flush
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-11 18:25:46 -04:00
										 |  |  | H{ } clone sub-primitives set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-15 20:53:21 -05:00
										 |  |  | "vocab:bootstrap/syntax.factor" parse-file | 
					
						
							| 
									
										
										
										
											2007-12-24 17:18:26 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-15 20:53:21 -05:00
										 |  |  | "vocab:cpu/" architecture get { | 
					
						
							| 
									
										
										
										
											2008-02-02 00:07:19 -05:00
										 |  |  |     { "x86.32" "x86/32" } | 
					
						
							| 
									
										
										
										
											2008-11-07 21:34:26 -05:00
										 |  |  |     { "winnt-x86.64" "x86/64/winnt" } | 
					
						
							|  |  |  |     { "unix-x86.64" "x86/64/unix" } | 
					
						
							| 
									
										
										
										
											2008-02-02 00:07:19 -05:00
										 |  |  |     { "linux-ppc" "ppc/linux" } | 
					
						
							|  |  |  |     { "macosx-ppc" "ppc/macosx" } | 
					
						
							|  |  |  |     { "arm" "arm" } | 
					
						
							| 
									
										
										
										
											2009-03-15 20:15:28 -04:00
										 |  |  | } ?at [ "Bad architecture: " prepend throw ] unless
 | 
					
						
							|  |  |  | "/bootstrap.factor" 3append parse-file | 
					
						
							| 
									
										
										
										
											2008-01-26 22:38:30 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-15 20:53:21 -05:00
										 |  |  | "vocab:bootstrap/layouts/layouts.factor" parse-file | 
					
						
							| 
									
										
										
										
											2008-01-30 00:13:47 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Now we have ( syntax-quot arch-quot layouts-quot ) on the stack | 
					
						
							| 
									
										
										
										
											2008-01-26 22:38:30 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Bring up a bare cross-compiling vocabulary. | 
					
						
							| 
									
										
										
										
											2009-01-23 01:37:02 -05:00
										 |  |  | "syntax" vocab vocab-words bootstrap-syntax set { | 
					
						
							|  |  |  |     dictionary | 
					
						
							|  |  |  |     new-classes | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     changed-definitions changed-generics changed-effects | 
					
						
							| 
									
										
										
										
											2009-03-13 20:39:32 -04:00
										 |  |  |     outdated-generics forgotten-definitions | 
					
						
							| 
									
										
										
										
											2009-01-23 01:37:02 -05:00
										 |  |  |     root-cache source-files update-map implementors-map | 
					
						
							|  |  |  | } [ H{ } clone swap set ] each
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-24 20:52:21 -04:00
										 |  |  | init-caches | 
					
						
							| 
									
										
										
										
											2008-02-26 04:30:11 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-20 16:30:59 -04:00
										 |  |  | ! Vocabulary for slot accessors | 
					
						
							|  |  |  | "accessors" create-vocab drop
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-13 20:42:35 -04:00
										 |  |  | dummy-compiler compiler-impl set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  | call( -- ) | 
					
						
							|  |  |  | call( -- ) | 
					
						
							|  |  |  | call( -- ) | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-26 04:57:48 -04:00
										 |  |  | ! After we execute bootstrap/layouts | 
					
						
							|  |  |  | num-types get f <array> builtins set
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-09 18:11:46 -04:00
										 |  |  | bootstrapping? on
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Create some empty vocabs where the below primitives and | 
					
						
							|  |  |  | ! classes will go | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     "alien" | 
					
						
							| 
									
										
										
										
											2008-01-31 21:11:46 -05:00
										 |  |  |     "alien.accessors" | 
					
						
							| 
									
										
										
										
											2009-03-26 00:00:19 -04:00
										 |  |  |     "alien.libraries" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "arrays" | 
					
						
							|  |  |  |     "byte-arrays" | 
					
						
							|  |  |  |     "classes.private" | 
					
						
							| 
									
										
										
										
											2008-03-29 04:34:48 -04:00
										 |  |  |     "classes.tuple" | 
					
						
							|  |  |  |     "classes.tuple.private" | 
					
						
							| 
									
										
										
										
											2008-06-29 22:37:57 -04:00
										 |  |  |     "classes.predicate" | 
					
						
							| 
									
										
										
										
											2008-01-09 04:52:08 -05:00
										 |  |  |     "compiler.units" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "continuations.private" | 
					
						
							| 
									
										
										
										
											2009-04-28 17:58:05 -04:00
										 |  |  |     "generic.single" | 
					
						
							| 
									
										
										
										
											2009-04-24 21:43:01 -04:00
										 |  |  |     "generic.single.private" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "growable" | 
					
						
							|  |  |  |     "hashtables" | 
					
						
							|  |  |  |     "hashtables.private" | 
					
						
							|  |  |  |     "io" | 
					
						
							|  |  |  |     "io.files" | 
					
						
							|  |  |  |     "io.files.private" | 
					
						
							|  |  |  |     "io.streams.c" | 
					
						
							| 
									
										
										
										
											2008-10-23 06:49:32 -04:00
										 |  |  |     "locals.backend" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "kernel" | 
					
						
							|  |  |  |     "kernel.private" | 
					
						
							|  |  |  |     "math" | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     "math.parser.private" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "math.private" | 
					
						
							|  |  |  |     "memory" | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     "memory.private" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "quotations" | 
					
						
							|  |  |  |     "quotations.private" | 
					
						
							|  |  |  |     "sbufs" | 
					
						
							|  |  |  |     "sbufs.private" | 
					
						
							|  |  |  |     "scratchpad" | 
					
						
							|  |  |  |     "sequences" | 
					
						
							|  |  |  |     "sequences.private" | 
					
						
							|  |  |  |     "slots.private" | 
					
						
							|  |  |  |     "strings" | 
					
						
							|  |  |  |     "strings.private" | 
					
						
							|  |  |  |     "system" | 
					
						
							| 
									
										
										
										
											2008-03-06 21:44:52 -05:00
										 |  |  |     "system.private" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     "threads.private" | 
					
						
							|  |  |  |     "tools.profiler.private" | 
					
						
							|  |  |  |     "words" | 
					
						
							|  |  |  |     "vectors" | 
					
						
							|  |  |  |     "vectors.private" | 
					
						
							| 
									
										
										
										
											2008-03-18 22:45:04 -04:00
										 |  |  | } [ create-vocab drop ] each
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-25 18:10:05 -05:00
										 |  |  | ! Builtin classes | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | : lookup-type-number ( word -- n )
 | 
					
						
							|  |  |  |     global [ target-word ] bind type-number ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | : register-builtin ( class -- )
 | 
					
						
							| 
									
										
										
										
											2008-03-31 02:19:21 -04:00
										 |  |  |     [ dup lookup-type-number "type" set-word-prop ] | 
					
						
							|  |  |  |     [ dup "type" word-prop builtins get set-nth ] | 
					
						
							| 
									
										
										
										
											2008-05-11 00:59:02 -04:00
										 |  |  |     [ f f f builtin-class define-class ] | 
					
						
							| 
									
										
										
										
											2008-04-02 19:50:21 -04:00
										 |  |  |     tri ;
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | : prepare-slots ( slots -- slots' )
 | 
					
						
							| 
									
										
										
										
											2008-06-29 22:37:57 -04:00
										 |  |  |     [ [ dup pair? [ first2 create ] when ] map ] map ;
 | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : define-builtin-slots ( class slots -- )
 | 
					
						
							| 
									
										
										
										
											2008-07-14 00:26:43 -04:00
										 |  |  |     prepare-slots make-slots 1 finalize-slots | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  |     [ "slots" set-word-prop ] [ define-accessors ] 2bi ;
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : define-builtin ( symbol slotspec -- )
 | 
					
						
							| 
									
										
										
										
											2008-11-23 03:44:56 -05:00
										 |  |  |     [ [ define-builtin-predicate ] keep ] dip define-builtin-slots ;
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-02 19:50:21 -04:00
										 |  |  | "fixnum" "math" create register-builtin | 
					
						
							|  |  |  | "bignum" "math" create register-builtin | 
					
						
							|  |  |  | "tuple" "kernel" create register-builtin | 
					
						
							|  |  |  | "float" "math" create register-builtin | 
					
						
							|  |  |  | "f" "syntax" lookup register-builtin | 
					
						
							|  |  |  | "array" "arrays" create register-builtin | 
					
						
							|  |  |  | "wrapper" "kernel" create register-builtin | 
					
						
							|  |  |  | "callstack" "kernel" create register-builtin | 
					
						
							|  |  |  | "string" "strings" create register-builtin | 
					
						
							|  |  |  | "quotation" "quotations" create register-builtin | 
					
						
							|  |  |  | "dll" "alien" create register-builtin | 
					
						
							|  |  |  | "alien" "alien" create register-builtin | 
					
						
							|  |  |  | "word" "words" create register-builtin | 
					
						
							|  |  |  | "byte-array" "byte-arrays" create register-builtin | 
					
						
							| 
									
										
										
										
											2008-02-04 17:20:07 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-29 03:12:44 -04:00
										 |  |  | ! We need this before defining c-ptr below | 
					
						
							|  |  |  | "f" "syntax" lookup { } define-builtin | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "f" "syntax" create [ not ] "predicate" set-word-prop | 
					
						
							|  |  |  | "f?" "syntax" vocab-words delete-at
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! Some unions | 
					
						
							|  |  |  | "c-ptr" "alien" create [ | 
					
						
							|  |  |  |     "alien" "alien" lookup , | 
					
						
							|  |  |  |     "f" "syntax" lookup , | 
					
						
							|  |  |  |     "byte-array" "byte-arrays" lookup , | 
					
						
							|  |  |  | ] { } make define-union-class | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ! A predicate class used for declarations | 
					
						
							|  |  |  | "array-capacity" "sequences.private" create | 
					
						
							|  |  |  | "fixnum" "math" lookup | 
					
						
							| 
									
										
										
										
											2008-11-23 05:22:38 -05:00
										 |  |  | [ | 
					
						
							|  |  |  |     [ dup 0 fixnum>= ] % | 
					
						
							|  |  |  |     bootstrap-max-array-capacity <fake-bignum> [ fixnum<= ] curry , | 
					
						
							|  |  |  |     [ [ drop f ] if ] % | 
					
						
							|  |  |  | ] [ ] make | 
					
						
							| 
									
										
										
										
											2008-06-29 03:12:44 -04:00
										 |  |  | define-predicate-class | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-06 10:16:29 -05:00
										 |  |  | "array-capacity" "sequences.private" lookup | 
					
						
							| 
									
										
										
										
											2008-12-09 00:37:18 -05:00
										 |  |  | [ >fixnum ] bootstrap-max-array-capacity <fake-bignum> [ fixnum-bitand ] curry append
 | 
					
						
							| 
									
										
										
										
											2008-12-06 10:16:29 -05:00
										 |  |  | "coercer" set-word-prop | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-02 19:50:21 -04:00
										 |  |  | ! Catch-all class for providing a default method. | 
					
						
							| 
									
										
										
										
											2008-05-11 02:37:37 -04:00
										 |  |  | "object" "kernel" create | 
					
						
							|  |  |  | [ f f { } intersection-class define-class ] | 
					
						
							|  |  |  | [ [ drop t ] "predicate" set-word-prop ] | 
					
						
							|  |  |  | bi
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-02 22:27:49 -04:00
										 |  |  | "object?" "kernel" vocab-words delete-at
 | 
					
						
							| 
									
										
										
										
											2008-04-02 19:50:21 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Class of objects with object tag | 
					
						
							|  |  |  | "hi-tag" "kernel.private" create | 
					
						
							| 
									
										
										
										
											2008-04-02 22:27:49 -04:00
										 |  |  | builtins get num-tags get tail define-union-class | 
					
						
							| 
									
										
										
										
											2008-04-02 19:50:21 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ! Empty class with no instances | 
					
						
							| 
									
										
										
										
											2008-04-02 22:27:49 -04:00
										 |  |  | "null" "kernel" create | 
					
						
							| 
									
										
										
										
											2008-05-11 00:59:02 -04:00
										 |  |  | [ f { } f union-class define-class ] | 
					
						
							| 
									
										
										
										
											2008-04-02 22:27:49 -04:00
										 |  |  | [ [ drop f ] "predicate" set-word-prop ] | 
					
						
							|  |  |  | bi
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "null?" "kernel" vocab-words delete-at
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "fixnum" "math" create { } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | "fixnum" "math" create ">fixnum" "math" create 1quotation "coercer" set-word-prop | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "bignum" "math" create { } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | "bignum" "math" create ">bignum" "math" create 1quotation "coercer" set-word-prop | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "float" "math" create { } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | "float" "math" create ">float" "math" create 1quotation "coercer" set-word-prop | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-16 17:48:09 -04:00
										 |  |  | "array" "arrays" create { | 
					
						
							|  |  |  |     { "length" { "array-capacity" "sequences.private" } read-only } | 
					
						
							|  |  |  | } define-builtin | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | "wrapper" "kernel" create { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "wrapped" read-only } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | } define-builtin | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "string" "strings" create { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "length" { "array-capacity" "sequences.private" } read-only } | 
					
						
							| 
									
										
										
										
											2008-06-29 03:12:44 -04:00
										 |  |  |     "aux" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | } define-builtin | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "quotation" "quotations" create { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "array" { "array" "arrays" } read-only } | 
					
						
							| 
									
										
										
										
											2009-03-16 21:11:36 -04:00
										 |  |  |     "cached-effect" | 
					
						
							|  |  |  |     "cache-counter" | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | } define-builtin | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "dll" "alien" create { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "path" { "byte-array" "byte-arrays" } read-only } | 
					
						
							| 
									
										
										
										
											2008-07-01 17:33:45 -04:00
										 |  |  | } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "alien" "alien" create { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "underlying" { "c-ptr" "alien" } read-only } | 
					
						
							| 
									
										
										
										
											2008-07-01 17:33:45 -04:00
										 |  |  |     "expired" | 
					
						
							|  |  |  | } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "word" "words" create { | 
					
						
							| 
									
										
										
										
											2008-06-29 03:12:44 -04:00
										 |  |  |     { "hashcode" { "fixnum" "math" } } | 
					
						
							|  |  |  |     "name" | 
					
						
							|  |  |  |     "vocabulary" | 
					
						
							| 
									
										
										
										
											2008-06-29 22:37:57 -04:00
										 |  |  |     { "def" { "quotation" "quotations" } initial: [ ] } | 
					
						
							| 
									
										
										
										
											2008-06-29 03:12:44 -04:00
										 |  |  |     "props" | 
					
						
							| 
									
										
										
										
											2009-05-06 20:22:22 -04:00
										 |  |  |     "pic-def" | 
					
						
							|  |  |  |     "pic-tail-def" | 
					
						
							| 
									
										
										
										
											2008-06-29 03:12:44 -04:00
										 |  |  |     { "counter" { "fixnum" "math" } } | 
					
						
							| 
									
										
										
										
											2008-07-11 18:25:46 -04:00
										 |  |  |     { "sub-primitive" read-only } | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | } define-builtin | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-16 17:48:09 -04:00
										 |  |  | "byte-array" "byte-arrays" create { | 
					
						
							|  |  |  |     { "length" { "array-capacity" "sequences.private" } read-only } | 
					
						
							|  |  |  | } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-13 19:56:24 -04:00
										 |  |  | "callstack" "kernel" create { } define-builtin | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-14 00:26:43 -04:00
										 |  |  | "tuple" "kernel" create | 
					
						
							|  |  |  | [ { } define-builtin ] | 
					
						
							|  |  |  | [ define-tuple-layout ] | 
					
						
							| 
									
										
										
										
											2008-09-03 04:46:56 -04:00
										 |  |  | bi
 | 
					
						
							| 
									
										
										
										
											2008-03-26 04:57:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Create special tombstone values | 
					
						
							| 
									
										
										
										
											2008-03-26 18:07:50 -04:00
										 |  |  | "tombstone" "hashtables.private" create | 
					
						
							| 
									
										
										
										
											2008-04-14 06:27:04 -04:00
										 |  |  | tuple
 | 
					
						
							| 
									
										
										
										
											2008-09-03 04:46:56 -04:00
										 |  |  | { "state" } define-tuple-class | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | "((empty))" "hashtables.private" create | 
					
						
							|  |  |  | "tombstone" "hashtables.private" lookup f
 | 
					
						
							| 
									
										
										
										
											2008-12-15 20:44:56 -05:00
										 |  |  | 2array >tuple 1quotation (( -- value )) define-inline | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | "((tombstone))" "hashtables.private" create | 
					
						
							|  |  |  | "tombstone" "hashtables.private" lookup t
 | 
					
						
							| 
									
										
										
										
											2008-12-15 20:44:56 -05:00
										 |  |  | 2array >tuple 1quotation (( -- value )) define-inline | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-28 19:15:21 -05:00
										 |  |  | ! Some tuple classes | 
					
						
							| 
									
										
										
										
											2008-02-11 14:50:29 -05:00
										 |  |  | "curry" "kernel" create | 
					
						
							| 
									
										
										
										
											2008-04-14 06:27:04 -04:00
										 |  |  | tuple
 | 
					
						
							| 
									
										
										
										
											2008-02-11 14:50:29 -05:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "obj" read-only } | 
					
						
							|  |  |  |     { "quot" read-only } | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | } prepare-slots define-tuple-class | 
					
						
							| 
									
										
										
										
											2008-02-11 14:50:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-26 04:57:48 -04:00
										 |  |  | "curry" "kernel" lookup | 
					
						
							| 
									
										
										
										
											2008-07-20 02:15:58 -04:00
										 |  |  | { | 
					
						
							|  |  |  |     [ f "inline" set-word-prop ] | 
					
						
							|  |  |  |     [ make-flushable ] | 
					
						
							|  |  |  |     [ ] | 
					
						
							| 
									
										
										
										
											2008-11-21 05:37:17 -05:00
										 |  |  |     [ | 
					
						
							|  |  |  |         [ | 
					
						
							|  |  |  |             callable instance-check-quot % | 
					
						
							|  |  |  |             tuple-layout , | 
					
						
							|  |  |  |             \ <tuple-boa> , | 
					
						
							|  |  |  |         ] [ ] make | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2008-07-20 02:15:58 -04:00
										 |  |  | } cleave
 | 
					
						
							| 
									
										
										
										
											2008-06-12 06:49:46 -04:00
										 |  |  | (( obj quot -- curry )) define-declared | 
					
						
							| 
									
										
										
										
											2008-03-26 04:57:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-11 14:50:29 -05:00
										 |  |  | "compose" "kernel" create | 
					
						
							| 
									
										
										
										
											2008-04-14 06:27:04 -04:00
										 |  |  | tuple
 | 
					
						
							| 
									
										
										
										
											2008-02-11 14:50:29 -05:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2008-06-30 02:44:58 -04:00
										 |  |  |     { "first" read-only } | 
					
						
							|  |  |  |     { "second" read-only } | 
					
						
							| 
									
										
										
										
											2008-06-28 03:36:20 -04:00
										 |  |  | } prepare-slots define-tuple-class | 
					
						
							| 
									
										
										
										
											2008-02-11 14:50:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-03-26 04:57:48 -04:00
										 |  |  | "compose" "kernel" lookup | 
					
						
							| 
									
										
										
										
											2008-07-20 02:15:58 -04:00
										 |  |  | { | 
					
						
							|  |  |  |     [ f "inline" set-word-prop ] | 
					
						
							|  |  |  |     [ make-flushable ] | 
					
						
							|  |  |  |     [ ] | 
					
						
							| 
									
										
										
										
											2008-11-21 05:37:17 -05:00
										 |  |  |     [ | 
					
						
							|  |  |  |         [ | 
					
						
							| 
									
										
										
										
											2008-11-23 03:44:56 -05:00
										 |  |  |             callable instance-check-quot [ dip ] curry % | 
					
						
							| 
									
										
										
										
											2008-11-21 05:37:17 -05:00
										 |  |  |             callable instance-check-quot % | 
					
						
							|  |  |  |             tuple-layout , | 
					
						
							|  |  |  |             \ <tuple-boa> , | 
					
						
							|  |  |  |         ] [ ] make | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2008-07-20 02:15:58 -04:00
										 |  |  | } cleave
 | 
					
						
							| 
									
										
										
										
											2008-06-12 06:49:46 -04:00
										 |  |  | (( quot1 quot2 -- compose )) define-declared | 
					
						
							| 
									
										
										
										
											2008-03-26 04:57:48 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-11 18:25:46 -04:00
										 |  |  | ! Sub-primitive words | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  | : make-sub-primitive ( word vocab effect -- )
 | 
					
						
							|  |  |  |     [ create dup 1quotation ] dip define-declared ;
 | 
					
						
							| 
									
										
										
										
											2008-07-11 18:25:46 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-04-26 03:42:37 -04:00
										 |  |  |     { "(execute)" "kernel.private" (( word -- )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "(call)" "kernel.private" (( quot -- )) } | 
					
						
							|  |  |  |     { "both-fixnums?" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "fixnum+fast" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-fast" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum*fast" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-bitand" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-bitor" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-bitxor" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-bitnot" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "fixnum-mod" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-shift-fast" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum/i-fast" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum/mod-fast" "math.private" (( x y -- z w )) } | 
					
						
							|  |  |  |     { "fixnum<" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "fixnum<=" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum>" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "fixnum>=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "drop" "kernel" (( x -- )) } | 
					
						
							|  |  |  |     { "2drop" "kernel" (( x y -- )) } | 
					
						
							|  |  |  |     { "3drop" "kernel" (( x y z -- )) } | 
					
						
							|  |  |  |     { "dup" "kernel" (( x -- x x )) } | 
					
						
							|  |  |  |     { "2dup" "kernel" (( x y -- x y x y )) } | 
					
						
							|  |  |  |     { "3dup" "kernel" (( x y z -- x y z x y z )) } | 
					
						
							|  |  |  |     { "rot" "kernel" (( x y z -- y z x )) } | 
					
						
							|  |  |  |     { "-rot" "kernel" (( x y z -- z x y )) } | 
					
						
							|  |  |  |     { "dupd" "kernel" (( x y -- x x y )) } | 
					
						
							|  |  |  |     { "swapd" "kernel" (( x y z -- y x z )) } | 
					
						
							|  |  |  |     { "nip" "kernel" (( x y -- y )) } | 
					
						
							|  |  |  |     { "2nip" "kernel" (( x y z -- z )) } | 
					
						
							|  |  |  |     { "tuck" "kernel" (( x y -- y x y )) } | 
					
						
							|  |  |  |     { "over" "kernel" (( x y -- x y x )) } | 
					
						
							|  |  |  |     { "pick" "kernel" (( x y z -- x y z x )) } | 
					
						
							|  |  |  |     { "swap" "kernel" (( x y -- y x )) } | 
					
						
							|  |  |  |     { "eq?" "kernel" (( obj1 obj2 -- ? )) } | 
					
						
							|  |  |  |     { "tag" "kernel.private" (( object -- n )) } | 
					
						
							|  |  |  |     { "slot" "slots.private" (( obj m -- value )) } | 
					
						
							|  |  |  |     { "get-local" "locals.backend" (( n -- obj )) } | 
					
						
							|  |  |  |     { "load-local" "locals.backend" (( obj -- )) } | 
					
						
							|  |  |  |     { "drop-locals" "locals.backend" (( n -- )) } | 
					
						
							| 
									
										
										
										
											2009-04-30 04:37:07 -04:00
										 |  |  |     { "mega-cache-lookup" "generic.single.private" (( methods index cache -- )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  | } [ first3 make-sub-primitive ] each
 | 
					
						
							| 
									
										
										
										
											2008-07-11 18:25:46 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-25 18:10:05 -05:00
										 |  |  | ! Primitive words | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  | : make-primitive ( word vocab n effect -- )
 | 
					
						
							|  |  |  |     [ | 
					
						
							|  |  |  |         [ create dup reset-word ] dip
 | 
					
						
							|  |  |  |         [ do-primitive ] curry
 | 
					
						
							|  |  |  |     ] dip define-declared ;
 | 
					
						
							| 
									
										
										
										
											2007-12-25 18:10:05 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "bignum>fixnum" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "float>fixnum" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "fixnum>bignum" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "float>bignum" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "fixnum>float" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "bignum>float" "math.private" (( x -- y )) } | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     { "(string>float)" "math.parser.private" (( str -- n/f )) } | 
					
						
							|  |  |  |     { "(float>string)" "math.parser.private" (( n -- str )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "float>bits" "math" (( x -- n )) } | 
					
						
							|  |  |  |     { "double>bits" "math" (( x -- n )) } | 
					
						
							|  |  |  |     { "bits>float" "math" (( n -- x )) } | 
					
						
							|  |  |  |     { "bits>double" "math" (( n -- x )) } | 
					
						
							|  |  |  |     { "fixnum+" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum-" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum*" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum/i" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "fixnum/mod" "math.private" (( x y -- z w )) } | 
					
						
							|  |  |  |     { "fixnum-shift" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "bignum+" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum-" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum*" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum/i" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum-mod" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum/mod" "math.private" (( x y -- z w )) } | 
					
						
							|  |  |  |     { "bignum-bitand" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum-bitor" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum-bitxor" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum-bitnot" "math.private" (( x -- y )) } | 
					
						
							|  |  |  |     { "bignum-shift" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "bignum<" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "bignum<=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "bignum>" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "bignum>=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "bignum-bit?" "math.private" (( n x -- ? )) } | 
					
						
							|  |  |  |     { "bignum-log2" "math.private" (( x -- n )) } | 
					
						
							|  |  |  |     { "byte-array>bignum" "math" (( x -- y ))  } | 
					
						
							|  |  |  |     { "float=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float+" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "float-" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "float*" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "float/f" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "float-mod" "math.private" (( x y -- z )) } | 
					
						
							|  |  |  |     { "float<" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float<=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float>" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float>=" "math.private" (( x y -- ? )) } | 
					
						
							| 
									
										
										
										
											2009-09-12 23:20:13 -04:00
										 |  |  |     { "float-u<" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float-u<=" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float-u>" "math.private" (( x y -- ? )) } | 
					
						
							|  |  |  |     { "float-u>=" "math.private" (( x y -- ? )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "<word>" "words" (( name vocab -- word )) } | 
					
						
							|  |  |  |     { "word-xt" "words" (( word -- start end )) } | 
					
						
							|  |  |  |     { "getenv" "kernel.private" (( n -- obj )) } | 
					
						
							|  |  |  |     { "setenv" "kernel.private" (( obj n -- )) } | 
					
						
							|  |  |  |     { "(exists?)" "io.files.private" (( path -- ? )) } | 
					
						
							|  |  |  |     { "gc" "memory" (( -- )) } | 
					
						
							|  |  |  |     { "gc-stats" "memory" f } | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     { "(save-image)" "memory.private" (( path -- )) } | 
					
						
							|  |  |  |     { "(save-image-and-exit)" "memory.private" (( path -- )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "datastack" "kernel" (( -- ds )) } | 
					
						
							|  |  |  |     { "retainstack" "kernel" (( -- rs )) } | 
					
						
							|  |  |  |     { "callstack" "kernel" (( -- cs )) } | 
					
						
							|  |  |  |     { "set-datastack" "kernel" (( ds -- )) } | 
					
						
							|  |  |  |     { "set-retainstack" "kernel" (( rs -- )) } | 
					
						
							|  |  |  |     { "set-callstack" "kernel" (( cs -- )) } | 
					
						
							|  |  |  |     { "exit" "system" (( n -- )) } | 
					
						
							| 
									
										
										
										
											2009-08-10 15:33:07 -04:00
										 |  |  |     { "data-room" "memory" (( -- cards decks generations )) } | 
					
						
							|  |  |  |     { "code-room" "memory" (( -- code-total code-used code-free largest-free-block )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "micros" "system" (( -- us )) } | 
					
						
							|  |  |  |     { "modify-code-heap" "compiler.units" (( alist -- )) } | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     { "(dlopen)" "alien.libraries" (( path -- dll )) } | 
					
						
							|  |  |  |     { "(dlsym)" "alien.libraries" (( name dll -- alien )) } | 
					
						
							| 
									
										
										
										
											2009-03-26 00:00:19 -04:00
										 |  |  |     { "dlclose" "alien.libraries" (( dll -- )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "<byte-array>" "byte-arrays" (( n -- byte-array )) } | 
					
						
							|  |  |  |     { "(byte-array)" "byte-arrays" (( n -- byte-array )) } | 
					
						
							|  |  |  |     { "<displaced-alien>" "alien" (( displacement c-ptr -- alien )) } | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     { "alien-signed-cell" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-signed-cell" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-unsigned-cell" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-unsigned-cell" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-signed-8" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-signed-8" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-unsigned-8" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-unsigned-8" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-signed-4" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-signed-4" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-unsigned-4" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-unsigned-4" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-signed-2" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-signed-2" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-unsigned-2" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-unsigned-2" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-signed-1" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-signed-1" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-unsigned-1" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-unsigned-1" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-float" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-float" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-double" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-double" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							|  |  |  |     { "alien-cell" "alien.accessors" (( c-ptr n -- value )) } | 
					
						
							|  |  |  |     { "set-alien-cell" "alien.accessors" (( value c-ptr n -- )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "alien-address" "alien" (( c-ptr -- addr )) } | 
					
						
							|  |  |  |     { "set-slot" "slots.private" (( value obj n -- )) } | 
					
						
							|  |  |  |     { "string-nth" "strings.private" (( n string -- ch )) } | 
					
						
							|  |  |  |     { "set-string-nth-fast" "strings.private" (( ch n string -- )) } | 
					
						
							|  |  |  |     { "set-string-nth-slow" "strings.private" (( ch n string -- )) } | 
					
						
							|  |  |  |     { "resize-array" "arrays" (( n array -- newarray )) } | 
					
						
							|  |  |  |     { "resize-string" "strings" (( n str -- newstr )) } | 
					
						
							|  |  |  |     { "<array>" "arrays" (( n elt -- array )) } | 
					
						
							|  |  |  |     { "begin-scan" "memory" (( -- )) } | 
					
						
							|  |  |  |     { "next-object" "memory" (( -- obj )) } | 
					
						
							|  |  |  |     { "end-scan" "memory" (( -- )) } | 
					
						
							|  |  |  |     { "size" "memory" (( obj -- n )) } | 
					
						
							|  |  |  |     { "die" "kernel" (( -- )) } | 
					
						
							| 
									
										
										
										
											2009-05-02 14:45:38 -04:00
										 |  |  |     { "(fopen)" "io.streams.c" (( path mode -- alien )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "fgetc" "io.streams.c" (( alien -- ch/f )) } | 
					
						
							|  |  |  |     { "fread" "io.streams.c" (( n alien -- str/f )) } | 
					
						
							|  |  |  |     { "fputc" "io.streams.c" (( ch alien -- )) } | 
					
						
							|  |  |  |     { "fwrite" "io.streams.c" (( string alien -- )) } | 
					
						
							|  |  |  |     { "fflush" "io.streams.c" (( alien -- )) } | 
					
						
							| 
									
										
										
										
											2009-04-03 11:16:25 -04:00
										 |  |  |     { "fseek" "io.streams.c" (( alien offset whence -- )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "fclose" "io.streams.c" (( alien -- )) } | 
					
						
							|  |  |  |     { "<wrapper>" "kernel" (( obj -- wrapper )) } | 
					
						
							|  |  |  |     { "(clone)" "kernel" (( obj -- newobj )) } | 
					
						
							|  |  |  |     { "<string>" "strings" (( n ch -- string )) } | 
					
						
							|  |  |  |     { "array>quotation" "quotations.private" (( array -- quot )) } | 
					
						
							|  |  |  |     { "quotation-xt" "quotations" (( quot -- xt )) } | 
					
						
							|  |  |  |     { "<tuple>" "classes.tuple.private" (( layout -- tuple )) } | 
					
						
							|  |  |  |     { "profiling" "tools.profiler.private" (( ? -- )) } | 
					
						
							|  |  |  |     { "become" "kernel.private" (( old new -- )) } | 
					
						
							|  |  |  |     { "(sleep)" "threads.private" (( us -- )) } | 
					
						
							|  |  |  |     { "<tuple-boa>" "classes.tuple.private" (( ... layout -- tuple )) } | 
					
						
							|  |  |  |     { "callstack>array" "kernel" (( callstack -- array )) } | 
					
						
							| 
									
										
										
										
											2009-05-05 10:12:32 -04:00
										 |  |  |     { "innermost-frame-executing" "kernel.private" (( callstack -- obj )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "innermost-frame-scan" "kernel.private" (( callstack -- n )) } | 
					
						
							|  |  |  |     { "set-innermost-frame-quot" "kernel.private" (( n callstack -- )) } | 
					
						
							|  |  |  |     { "call-clear" "kernel" (( quot -- )) } | 
					
						
							|  |  |  |     { "resize-byte-array" "byte-arrays" (( n byte-array -- newbyte-array )) } | 
					
						
							| 
									
										
										
										
											2009-05-04 10:44:26 -04:00
										 |  |  |     { "dll-valid?" "alien.libraries" (( dll -- ? )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  |     { "unimplemented" "kernel.private" (( -- * )) } | 
					
						
							|  |  |  |     { "gc-reset" "memory" (( -- )) } | 
					
						
							|  |  |  |     { "jit-compile" "quotations" (( quot -- )) } | 
					
						
							|  |  |  |     { "load-locals" "locals.backend" (( ... n -- )) } | 
					
						
							|  |  |  |     { "check-datastack" "kernel.private" (( array in# out# -- ? )) } | 
					
						
							| 
									
										
										
										
											2009-04-30 04:37:07 -04:00
										 |  |  |     { "inline-cache-miss" "generic.single.private" (( generic methods index cache -- )) } | 
					
						
							| 
									
										
										
										
											2009-05-06 20:22:22 -04:00
										 |  |  |     { "inline-cache-miss-tail" "generic.single.private" (( generic methods index cache -- )) } | 
					
						
							| 
									
										
										
										
											2009-04-30 04:37:07 -04:00
										 |  |  |     { "mega-cache-miss" "generic.single.private" (( methods index cache -- method )) } | 
					
						
							|  |  |  |     { "lookup-method" "generic.single.private" (( object methods -- method )) } | 
					
						
							| 
									
										
										
										
											2009-04-28 17:58:05 -04:00
										 |  |  |     { "reset-dispatch-stats" "generic.single" (( -- )) } | 
					
						
							|  |  |  |     { "dispatch-stats" "generic.single" (( -- stats )) } | 
					
						
							|  |  |  |     { "reset-inline-cache-stats" "generic.single" (( -- )) } | 
					
						
							|  |  |  |     { "inline-cache-stats" "generic.single" (( -- stats )) } | 
					
						
							| 
									
										
										
										
											2009-04-28 18:26:11 -04:00
										 |  |  |     { "optimized?" "words" (( word -- ? )) } | 
					
						
							| 
									
										
										
										
											2009-05-12 04:09:15 -04:00
										 |  |  |     { "quot-compiled?" "quotations" (( quot -- ? )) } | 
					
						
							| 
									
										
										
										
											2009-03-23 04:03:44 -04:00
										 |  |  | } [ [ first3 ] dip swap make-primitive ] each-index
 | 
					
						
							| 
									
										
										
										
											2007-12-25 18:10:05 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ! Bump build number | 
					
						
							| 
									
										
										
										
											2009-05-01 20:58:24 -04:00
										 |  |  | "build" "kernel" create build 1 + [ ] curry (( -- n )) define-declared |