2010-01-19 02:00:33 -05:00
|
|
|
! Copyright (C) 2004, 2010 Slava Pestov.
|
2007-09-20 18:09:08 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2015-05-22 14:29:20 -04:00
|
|
|
USING: accessors alien alien.strings arrays assocs byte-arrays classes
|
|
|
|
classes.intersection classes.union combinators generic hashtables
|
|
|
|
hashtables.private io io.encodings.ascii kernel math math.private math.order
|
|
|
|
namespaces make parser quotations sequences strings vectors words layouts
|
|
|
|
classes.private classes.builtin classes.singleton classes.tuple
|
2011-10-31 03:24:04 -04:00
|
|
|
classes.tuple.private kernel.private vocabs vocabs.loader
|
2015-05-22 14:29:20 -04:00
|
|
|
source-files definitions slots classes.predicate compiler.units
|
|
|
|
bootstrap.image.private io.files splitting ;
|
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
|
|
|
|
2015-05-22 14:29:20 -04:00
|
|
|
: asm-file ( arch -- file )
|
|
|
|
"-" split reverse "." join
|
|
|
|
"vocab:bootstrap/assembler/" ".factor" surround ;
|
|
|
|
|
|
|
|
architecture get asm-file 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.
|
2015-06-08 15:02:25 -04:00
|
|
|
"syntax" lookup-vocab vocab-words-assoc bootstrap-syntax set
|
2009-01-23 01:37:02 -05:00
|
|
|
|
2010-01-27 23:30:35 -05:00
|
|
|
H{ } clone dictionary set
|
|
|
|
H{ } clone root-cache set
|
|
|
|
H{ } clone source-files set
|
|
|
|
H{ } clone update-map set
|
|
|
|
H{ } clone implementors-map set
|
2008-02-26 04:30:11 -05:00
|
|
|
|
2010-01-27 23:30:35 -05:00
|
|
|
init-caches
|
2008-03-20 16:30:59 -04:00
|
|
|
|
2010-01-27 09:02:54 -05:00
|
|
|
bootstrapping? on
|
2009-03-13 20:42:35 -04:00
|
|
|
|
2013-11-23 23:12:35 -05:00
|
|
|
call( -- ) ! layouts quot
|
|
|
|
call( -- ) ! arch quot
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2010-01-27 23:30:35 -05:00
|
|
|
! Vocabulary for slot accessors
|
|
|
|
"accessors" create-vocab drop
|
|
|
|
|
2008-03-26 04:57:48 -04:00
|
|
|
! After we execute bootstrap/layouts
|
|
|
|
num-types get f <array> builtins set
|
|
|
|
|
2009-11-13 09:05:02 -05:00
|
|
|
[
|
|
|
|
|
2013-11-23 23:12:35 -05:00
|
|
|
call( -- ) ! syntax-quot
|
2010-01-27 23:30:35 -05:00
|
|
|
|
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"
|
2010-03-26 22:44:43 -04:00
|
|
|
"alien.private"
|
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"
|
2009-11-05 02:07:59 -05:00
|
|
|
"tools.dispatch.private"
|
2011-09-05 19:27:37 -04:00
|
|
|
"tools.memory.private"
|
2011-10-31 02:05:54 -04:00
|
|
|
"tools.profiler.sampling.private"
|
2007-09-20 18:09:08 -04:00
|
|
|
"words"
|
2009-09-27 22:09:11 -04:00
|
|
|
"words.private"
|
2007-09-20 18:09:08 -04:00
|
|
|
"vectors"
|
|
|
|
"vectors.private"
|
2009-09-02 05:43:21 -04:00
|
|
|
"vm"
|
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 )
|
2011-10-19 13:40:12 -04:00
|
|
|
[ target-word ] with-global type-number ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
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
|
|
|
|
2010-01-20 06:44:34 -05:00
|
|
|
: define-builtin-predicate ( class -- )
|
|
|
|
dup class>type [ eq? ] curry [ tag ] prepend define-predicate ;
|
|
|
|
|
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
|
2011-11-06 18:57:24 -05:00
|
|
|
"f" "syntax" lookup-word register-builtin
|
2008-04-02 19:50:21 -04:00
|
|
|
"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
|
2011-11-06 18:57:24 -05:00
|
|
|
"f" "syntax" lookup-word { } define-builtin
|
2008-06-29 03:12:44 -04:00
|
|
|
|
|
|
|
"f" "syntax" create [ not ] "predicate" set-word-prop
|
2015-06-08 15:02:25 -04:00
|
|
|
"f?" "syntax" vocab-words-assoc delete-at
|
2008-06-29 03:12:44 -04:00
|
|
|
|
2011-11-06 18:57:24 -05:00
|
|
|
"t" "syntax" lookup-word define-singleton-class
|
2011-10-31 03:24:04 -04:00
|
|
|
|
2008-06-29 03:12:44 -04:00
|
|
|
! Some unions
|
|
|
|
"c-ptr" "alien" create [
|
2011-11-06 18:57:24 -05:00
|
|
|
"alien" "alien" lookup-word ,
|
|
|
|
"f" "syntax" lookup-word ,
|
|
|
|
"byte-array" "byte-arrays" lookup-word ,
|
2008-06-29 03:12:44 -04:00
|
|
|
] { } make define-union-class
|
|
|
|
|
|
|
|
! A predicate class used for declarations
|
|
|
|
"array-capacity" "sequences.private" create
|
2011-11-06 18:57:24 -05:00
|
|
|
"fixnum" "math" lookup-word
|
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
|
|
|
|
|
2011-11-06 18:57:24 -05:00
|
|
|
"array-capacity" "sequences.private" lookup-word
|
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
|
|
|
|
|
2015-06-08 15:02:25 -04:00
|
|
|
"object?" "kernel" vocab-words-assoc delete-at
|
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
|
|
|
|
|
2015-06-08 15:02:25 -04:00
|
|
|
"null?" "kernel" vocab-words-assoc delete-at
|
2007-09-20 18:09:08 -04:00
|
|
|
|
2008-03-13 19:56:24 -04:00
|
|
|
"fixnum" "math" create { } define-builtin
|
2012-08-03 17:59:59 -04:00
|
|
|
"fixnum" "math" create "integer>fixnum-strict" "math" create 1quotation "coercer" set-word-prop
|
2007-09-20 18:09:08 -04:00
|
|
|
|
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" } }
|
2012-07-27 22:35:48 -04:00
|
|
|
"name"
|
2008-06-29 03:12:44 -04:00
|
|
|
"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-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
|
2014-11-29 19:54:50 -05:00
|
|
|
{ f } "tombstone" "hashtables.private" lookup-word
|
|
|
|
slots>tuple 1quotation ( -- value ) define-inline
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
"((tombstone))" "hashtables.private" create
|
2014-11-29 19:54:50 -05:00
|
|
|
{ t } "tombstone" "hashtables.private" lookup-word
|
|
|
|
slots>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
|
|
|
|
2011-11-06 18:57:24 -05:00
|
|
|
"curry" "kernel" lookup-word
|
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
|
2011-10-18 16:18:42 -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
|
|
|
|
2011-11-06 18:57:24 -05:00
|
|
|
"compose" "kernel" lookup-word
|
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
|
2011-10-18 16:18:42 -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 -- )
|
2010-01-19 02:00:33 -05:00
|
|
|
[
|
|
|
|
create
|
|
|
|
dup t "primitive" set-word-prop
|
|
|
|
dup 1quotation
|
|
|
|
] dip define-declared ;
|
2008-07-11 18:25:46 -04:00
|
|
|
|
|
|
|
{
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "mega-cache-lookup" "generic.single.private" ( methods index cache -- ) }
|
|
|
|
{ "inline-cache-miss" "generic.single.private" ( generic methods index cache -- ) }
|
|
|
|
{ "inline-cache-miss-tail" "generic.single.private" ( generic methods index cache -- ) }
|
|
|
|
{ "drop" "kernel" ( x -- ) }
|
|
|
|
{ "2drop" "kernel" ( x y -- ) }
|
|
|
|
{ "3drop" "kernel" ( x y z -- ) }
|
2012-09-28 12:16:08 -04:00
|
|
|
{ "4drop" "kernel" ( w x y z -- ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "dup" "kernel" ( x -- x x ) }
|
|
|
|
{ "2dup" "kernel" ( x y -- x y x y ) }
|
|
|
|
{ "3dup" "kernel" ( x y z -- x y z x y z ) }
|
2012-09-28 12:16:08 -04:00
|
|
|
{ "4dup" "kernel" ( w x y z -- w x y z w x y z ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "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 ) }
|
|
|
|
{ "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 ) }
|
|
|
|
{ "(execute)" "kernel.private" ( word -- ) }
|
|
|
|
{ "(call)" "kernel.private" ( quot -- ) }
|
|
|
|
{ "fpu-state" "kernel.private" ( -- ) }
|
|
|
|
{ "set-fpu-state" "kernel.private" ( -- ) }
|
2011-10-24 17:26:58 -04:00
|
|
|
{ "signal-handler" "kernel.private" ( -- ) }
|
|
|
|
{ "leaf-signal-handler" "kernel.private" ( -- ) }
|
2011-11-03 01:15:52 -04:00
|
|
|
{ "ffi-signal-handler" "kernel.private" ( -- ) }
|
|
|
|
{ "ffi-leaf-signal-handler" "kernel.private" ( -- ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "unwind-native-frames" "kernel.private" ( -- ) }
|
|
|
|
{ "set-callstack" "kernel.private" ( callstack -- * ) }
|
|
|
|
{ "lazy-jit-compile" "kernel.private" ( -- ) }
|
|
|
|
{ "c-to-factor" "kernel.private" ( -- ) }
|
|
|
|
{ "slot" "slots.private" ( obj m -- value ) }
|
|
|
|
{ "get-local" "locals.backend" ( n -- obj ) }
|
|
|
|
{ "load-local" "locals.backend" ( obj -- ) }
|
|
|
|
{ "drop-locals" "locals.backend" ( n -- ) }
|
|
|
|
{ "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 -- z ) }
|
|
|
|
{ "fixnum-" "math.private" ( x y -- z ) }
|
|
|
|
{ "fixnum*" "math.private" ( x y -- z ) }
|
|
|
|
{ "fixnum<" "math.private" ( x y -- ? ) }
|
|
|
|
{ "fixnum<=" "math.private" ( x y -- z ) }
|
|
|
|
{ "fixnum>" "math.private" ( x y -- ? ) }
|
|
|
|
{ "fixnum>=" "math.private" ( x y -- ? ) }
|
|
|
|
{ "string-nth-fast" "strings.private" ( n string -- ch ) }
|
|
|
|
{ "(set-context)" "threads.private" ( obj context -- obj' ) }
|
|
|
|
{ "(set-context-and-delete)" "threads.private" ( obj context -- * ) }
|
|
|
|
{ "(start-context)" "threads.private" ( obj quot -- obj' ) }
|
|
|
|
{ "(start-context-and-delete)" "threads.private" ( obj quot -- * ) }
|
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
|
2010-01-19 02:00:33 -05:00
|
|
|
: make-primitive ( word vocab function effect -- )
|
2009-03-23 04:03:44 -04:00
|
|
|
[
|
2010-01-19 02:00:33 -05:00
|
|
|
[
|
|
|
|
create
|
|
|
|
dup reset-word
|
|
|
|
dup t "primitive" set-word-prop
|
|
|
|
] dip
|
|
|
|
ascii string>alien [ do-primitive ] curry
|
2009-03-23 04:03:44 -04:00
|
|
|
] dip define-declared ;
|
2007-12-25 18:10:05 -05:00
|
|
|
|
|
|
|
{
|
2014-09-15 06:35:55 -04:00
|
|
|
{ "<callback>" "alien" "primitive_callback" ( word return-rewind -- alien ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "<displaced-alien>" "alien" "primitive_displaced_alien" ( displacement c-ptr -- alien ) }
|
|
|
|
{ "alien-address" "alien" "primitive_alien_address" ( c-ptr -- addr ) }
|
|
|
|
{ "alien-cell" "alien.accessors" "primitive_alien_cell" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-double" "alien.accessors" "primitive_alien_double" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-float" "alien.accessors" "primitive_alien_float" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-signed-1" "alien.accessors" "primitive_alien_signed_1" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-signed-2" "alien.accessors" "primitive_alien_signed_2" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-signed-4" "alien.accessors" "primitive_alien_signed_4" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-signed-8" "alien.accessors" "primitive_alien_signed_8" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-signed-cell" "alien.accessors" "primitive_alien_signed_cell" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-unsigned-1" "alien.accessors" "primitive_alien_unsigned_1" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-unsigned-2" "alien.accessors" "primitive_alien_unsigned_2" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-unsigned-4" "alien.accessors" "primitive_alien_unsigned_4" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-unsigned-8" "alien.accessors" "primitive_alien_unsigned_8" ( c-ptr n -- value ) }
|
|
|
|
{ "alien-unsigned-cell" "alien.accessors" "primitive_alien_unsigned_cell" ( c-ptr n -- value ) }
|
|
|
|
{ "set-alien-cell" "alien.accessors" "primitive_set_alien_cell" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-double" "alien.accessors" "primitive_set_alien_double" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-float" "alien.accessors" "primitive_set_alien_float" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-signed-1" "alien.accessors" "primitive_set_alien_signed_1" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-signed-2" "alien.accessors" "primitive_set_alien_signed_2" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-signed-4" "alien.accessors" "primitive_set_alien_signed_4" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-signed-8" "alien.accessors" "primitive_set_alien_signed_8" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-signed-cell" "alien.accessors" "primitive_set_alien_signed_cell" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-unsigned-1" "alien.accessors" "primitive_set_alien_unsigned_1" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-unsigned-2" "alien.accessors" "primitive_set_alien_unsigned_2" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-unsigned-4" "alien.accessors" "primitive_set_alien_unsigned_4" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-unsigned-8" "alien.accessors" "primitive_set_alien_unsigned_8" ( value c-ptr n -- ) }
|
|
|
|
{ "set-alien-unsigned-cell" "alien.accessors" "primitive_set_alien_unsigned_cell" ( value c-ptr n -- ) }
|
|
|
|
{ "(dlopen)" "alien.libraries" "primitive_dlopen" ( path -- dll ) }
|
|
|
|
{ "(dlsym)" "alien.libraries" "primitive_dlsym" ( name dll -- alien ) }
|
|
|
|
{ "(dlsym-raw)" "alien.libraries" "primitive_dlsym_raw" ( name dll -- alien ) }
|
|
|
|
{ "dlclose" "alien.libraries" "primitive_dlclose" ( dll -- ) }
|
|
|
|
{ "dll-valid?" "alien.libraries" "primitive_dll_validp" ( dll -- ? ) }
|
|
|
|
{ "current-callback" "alien.private" "primitive_current_callback" ( -- n ) }
|
|
|
|
{ "<array>" "arrays" "primitive_array" ( n elt -- array ) }
|
|
|
|
{ "resize-array" "arrays" "primitive_resize_array" ( n array -- new-array ) }
|
|
|
|
{ "(byte-array)" "byte-arrays" "primitive_uninitialized_byte_array" ( n -- byte-array ) }
|
|
|
|
{ "<byte-array>" "byte-arrays" "primitive_byte_array" ( n -- byte-array ) }
|
|
|
|
{ "resize-byte-array" "byte-arrays" "primitive_resize_byte_array" ( n byte-array -- new-byte-array ) }
|
|
|
|
{ "<tuple-boa>" "classes.tuple.private" "primitive_tuple_boa" ( slots... layout -- tuple ) }
|
|
|
|
{ "<tuple>" "classes.tuple.private" "primitive_tuple" ( layout -- tuple ) }
|
|
|
|
{ "modify-code-heap" "compiler.units" "primitive_modify_code_heap" ( alist update-existing? reset-pics? -- ) }
|
|
|
|
{ "lookup-method" "generic.single.private" "primitive_lookup_method" ( object methods -- method ) }
|
|
|
|
{ "mega-cache-miss" "generic.single.private" "primitive_mega_cache_miss" ( methods index cache -- method ) }
|
|
|
|
{ "(exists?)" "io.files.private" "primitive_existsp" ( path -- ? ) }
|
|
|
|
{ "(fopen)" "io.streams.c" "primitive_fopen" ( path mode -- alien ) }
|
|
|
|
{ "fclose" "io.streams.c" "primitive_fclose" ( alien -- ) }
|
|
|
|
{ "fflush" "io.streams.c" "primitive_fflush" ( alien -- ) }
|
|
|
|
{ "fgetc" "io.streams.c" "primitive_fgetc" ( alien -- byte/f ) }
|
|
|
|
{ "fputc" "io.streams.c" "primitive_fputc" ( byte alien -- ) }
|
|
|
|
{ "fread-unsafe" "io.streams.c" "primitive_fread" ( n buf alien -- count ) }
|
2014-09-15 12:20:22 -04:00
|
|
|
{ "free-callback" "alien" "primitive_free_callback" ( alien -- ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "fseek" "io.streams.c" "primitive_fseek" ( alien offset whence -- ) }
|
|
|
|
{ "ftell" "io.streams.c" "primitive_ftell" ( alien -- n ) }
|
|
|
|
{ "fwrite" "io.streams.c" "primitive_fwrite" ( data length alien -- ) }
|
|
|
|
{ "(clone)" "kernel" "primitive_clone" ( obj -- newobj ) }
|
|
|
|
{ "<wrapper>" "kernel" "primitive_wrapper" ( obj -- wrapper ) }
|
|
|
|
{ "callstack" "kernel" "primitive_callstack" ( -- callstack ) }
|
|
|
|
{ "callstack>array" "kernel" "primitive_callstack_to_array" ( callstack -- array ) }
|
|
|
|
{ "datastack" "kernel" "primitive_datastack" ( -- array ) }
|
|
|
|
{ "die" "kernel" "primitive_die" ( -- ) }
|
|
|
|
{ "retainstack" "kernel" "primitive_retainstack" ( -- array ) }
|
|
|
|
{ "(identity-hashcode)" "kernel.private" "primitive_identity_hashcode" ( obj -- code ) }
|
|
|
|
{ "become" "kernel.private" "primitive_become" ( old new -- ) }
|
|
|
|
{ "callstack-bounds" "kernel.private" "primitive_callstack_bounds" ( -- start end ) }
|
|
|
|
{ "check-datastack" "kernel.private" "primitive_check_datastack" ( array in# out# -- ? ) }
|
|
|
|
{ "compute-identity-hashcode" "kernel.private" "primitive_compute_identity_hashcode" ( obj -- ) }
|
|
|
|
{ "context-object" "kernel.private" "primitive_context_object" ( n -- obj ) }
|
|
|
|
{ "innermost-frame-executing" "kernel.private" "primitive_innermost_stack_frame_executing" ( callstack -- obj ) }
|
|
|
|
{ "innermost-frame-scan" "kernel.private" "primitive_innermost_stack_frame_scan" ( callstack -- n ) }
|
|
|
|
{ "set-context-object" "kernel.private" "primitive_set_context_object" ( obj n -- ) }
|
|
|
|
{ "set-datastack" "kernel.private" "primitive_set_datastack" ( array -- ) }
|
|
|
|
{ "set-innermost-frame-quot" "kernel.private" "primitive_set_innermost_stack_frame_quot" ( n callstack -- ) }
|
|
|
|
{ "set-retainstack" "kernel.private" "primitive_set_retainstack" ( array -- ) }
|
|
|
|
{ "set-special-object" "kernel.private" "primitive_set_special_object" ( obj n -- ) }
|
|
|
|
{ "special-object" "kernel.private" "primitive_special_object" ( n -- obj ) }
|
|
|
|
{ "strip-stack-traces" "kernel.private" "primitive_strip_stack_traces" ( -- ) }
|
|
|
|
{ "unimplemented" "kernel.private" "primitive_unimplemented" ( -- * ) }
|
|
|
|
{ "load-locals" "locals.backend" "primitive_load_locals" ( ... n -- ) }
|
|
|
|
{ "bits>double" "math" "primitive_bits_double" ( n -- x ) }
|
|
|
|
{ "bits>float" "math" "primitive_bits_float" ( n -- x ) }
|
|
|
|
{ "double>bits" "math" "primitive_double_bits" ( x -- n ) }
|
|
|
|
{ "float>bits" "math" "primitive_float_bits" ( x -- n ) }
|
|
|
|
{ "(format-float)" "math.parser.private" "primitive_format_float" ( n format -- byte-array ) }
|
|
|
|
{ "bignum*" "math.private" "primitive_bignum_multiply" ( x y -- z ) }
|
|
|
|
{ "bignum+" "math.private" "primitive_bignum_add" ( x y -- z ) }
|
|
|
|
{ "bignum-" "math.private" "primitive_bignum_subtract" ( x y -- z ) }
|
2015-06-07 14:07:34 -04:00
|
|
|
{ "bignum-bit?" "math.private" "primitive_bignum_bitp" ( x n -- ? ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "bignum-bitand" "math.private" "primitive_bignum_and" ( x y -- z ) }
|
|
|
|
{ "bignum-bitnot" "math.private" "primitive_bignum_not" ( x -- y ) }
|
|
|
|
{ "bignum-bitor" "math.private" "primitive_bignum_or" ( x y -- z ) }
|
|
|
|
{ "bignum-bitxor" "math.private" "primitive_bignum_xor" ( x y -- z ) }
|
|
|
|
{ "bignum-log2" "math.private" "primitive_bignum_log2" ( x -- n ) }
|
|
|
|
{ "bignum-mod" "math.private" "primitive_bignum_mod" ( x y -- z ) }
|
2012-04-05 12:17:35 -04:00
|
|
|
{ "bignum-gcd" "math.private" "primitive_bignum_gcd" ( x y -- z ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "bignum-shift" "math.private" "primitive_bignum_shift" ( x y -- z ) }
|
|
|
|
{ "bignum/i" "math.private" "primitive_bignum_divint" ( x y -- z ) }
|
|
|
|
{ "bignum/mod" "math.private" "primitive_bignum_divmod" ( x y -- z w ) }
|
|
|
|
{ "bignum<" "math.private" "primitive_bignum_less" ( x y -- ? ) }
|
|
|
|
{ "bignum<=" "math.private" "primitive_bignum_lesseq" ( x y -- ? ) }
|
|
|
|
{ "bignum=" "math.private" "primitive_bignum_eq" ( x y -- ? ) }
|
|
|
|
{ "bignum>" "math.private" "primitive_bignum_greater" ( x y -- ? ) }
|
|
|
|
{ "bignum>=" "math.private" "primitive_bignum_greatereq" ( x y -- ? ) }
|
|
|
|
{ "bignum>fixnum" "math.private" "primitive_bignum_to_fixnum" ( x -- y ) }
|
2014-06-07 12:46:05 -04:00
|
|
|
{ "bignum>fixnum-strict" "math.private" "primitive_bignum_to_fixnum_strict" ( x -- y ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "fixnum-shift" "math.private" "primitive_fixnum_shift" ( x y -- z ) }
|
|
|
|
{ "fixnum/i" "math.private" "primitive_fixnum_divint" ( x y -- z ) }
|
|
|
|
{ "fixnum/mod" "math.private" "primitive_fixnum_divmod" ( x y -- z w ) }
|
|
|
|
{ "fixnum>bignum" "math.private" "primitive_fixnum_to_bignum" ( x -- y ) }
|
|
|
|
{ "fixnum>float" "math.private" "primitive_fixnum_to_float" ( x -- y ) }
|
|
|
|
{ "float*" "math.private" "primitive_float_multiply" ( x y -- z ) }
|
|
|
|
{ "float+" "math.private" "primitive_float_add" ( x y -- z ) }
|
|
|
|
{ "float-" "math.private" "primitive_float_subtract" ( x y -- z ) }
|
|
|
|
{ "float-u<" "math.private" "primitive_float_less" ( x y -- ? ) }
|
|
|
|
{ "float-u<=" "math.private" "primitive_float_lesseq" ( x y -- ? ) }
|
|
|
|
{ "float-u>" "math.private" "primitive_float_greater" ( x y -- ? ) }
|
|
|
|
{ "float-u>=" "math.private" "primitive_float_greatereq" ( x y -- ? ) }
|
|
|
|
{ "float/f" "math.private" "primitive_float_divfloat" ( x y -- z ) }
|
|
|
|
{ "float<" "math.private" "primitive_float_less" ( x y -- ? ) }
|
|
|
|
{ "float<=" "math.private" "primitive_float_lesseq" ( x y -- ? ) }
|
|
|
|
{ "float=" "math.private" "primitive_float_eq" ( x y -- ? ) }
|
|
|
|
{ "float>" "math.private" "primitive_float_greater" ( x y -- ? ) }
|
|
|
|
{ "float>=" "math.private" "primitive_float_greatereq" ( x y -- ? ) }
|
|
|
|
{ "float>bignum" "math.private" "primitive_float_to_bignum" ( x -- y ) }
|
|
|
|
{ "float>fixnum" "math.private" "primitive_float_to_fixnum" ( x -- y ) }
|
|
|
|
{ "all-instances" "memory" "primitive_all_instances" ( -- array ) }
|
|
|
|
{ "(code-blocks)" "tools.memory.private" "primitive_code_blocks" ( -- array ) }
|
2014-09-10 11:01:48 -04:00
|
|
|
{ "(code-room)" "tools.memory.private" "primitive_code_room" ( -- allocator-room ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "compact-gc" "memory" "primitive_compact_gc" ( -- ) }
|
2014-09-10 11:01:48 -04:00
|
|
|
{ "(callback-room)" "tools.memory.private" "primitive_callback_room" ( -- allocator-room ) }
|
2011-10-18 16:18:42 -04:00
|
|
|
{ "(data-room)" "tools.memory.private" "primitive_data_room" ( -- data-room ) }
|
|
|
|
{ "disable-gc-events" "tools.memory.private" "primitive_disable_gc_events" ( -- events ) }
|
|
|
|
{ "enable-gc-events" "tools.memory.private" "primitive_enable_gc_events" ( -- ) }
|
|
|
|
{ "gc" "memory" "primitive_full_gc" ( -- ) }
|
|
|
|
{ "minor-gc" "memory" "primitive_minor_gc" ( -- ) }
|
|
|
|
{ "size" "memory" "primitive_size" ( obj -- n ) }
|
|
|
|
{ "(save-image)" "memory.private" "primitive_save_image" ( path1 path2 -- ) }
|
|
|
|
{ "(save-image-and-exit)" "memory.private" "primitive_save_image_and_exit" ( path1 path2 -- ) }
|
|
|
|
{ "jit-compile" "quotations" "primitive_jit_compile" ( quot -- ) }
|
|
|
|
{ "quot-compiled?" "quotations" "primitive_quot_compiled_p" ( quot -- ? ) }
|
|
|
|
{ "quotation-code" "quotations" "primitive_quotation_code" ( quot -- start end ) }
|
|
|
|
{ "array>quotation" "quotations.private" "primitive_array_to_quotation" ( array -- quot ) }
|
|
|
|
{ "set-slot" "slots.private" "primitive_set_slot" ( value obj n -- ) }
|
|
|
|
{ "<string>" "strings" "primitive_string" ( n ch -- string ) }
|
|
|
|
{ "resize-string" "strings" "primitive_resize_string" ( n str -- newstr ) }
|
|
|
|
{ "set-string-nth-fast" "strings.private" "primitive_set_string_nth_fast" ( ch n string -- ) }
|
|
|
|
{ "(exit)" "system" "primitive_exit" ( n -- * ) }
|
|
|
|
{ "nano-count" "system" "primitive_nano_count" ( -- ns ) }
|
|
|
|
{ "(sleep)" "threads.private" "primitive_sleep" ( nanos -- ) }
|
|
|
|
{ "callstack-for" "threads.private" "primitive_callstack_for" ( context -- array ) }
|
|
|
|
{ "context-object-for" "threads.private" "primitive_context_object_for" ( n context -- obj ) }
|
|
|
|
{ "datastack-for" "threads.private" "primitive_datastack_for" ( context -- array ) }
|
|
|
|
{ "retainstack-for" "threads.private" "primitive_retainstack_for" ( context -- array ) }
|
|
|
|
{ "dispatch-stats" "tools.dispatch.private" "primitive_dispatch_stats" ( -- stats ) }
|
|
|
|
{ "reset-dispatch-stats" "tools.dispatch.private" "primitive_reset_dispatch_stats" ( -- ) }
|
|
|
|
{ "optimized?" "words" "primitive_optimized_p" ( word -- ? ) }
|
|
|
|
{ "word-code" "words" "primitive_word_code" ( word -- start end ) }
|
|
|
|
{ "(word)" "words.private" "primitive_word" ( name vocab hashcode -- word ) }
|
2011-10-31 02:05:54 -04:00
|
|
|
{ "profiling" "tools.profiler.sampling.private" "primitive_sampling_profiler" ( ? -- ) }
|
|
|
|
{ "(get-samples)" "tools.profiler.sampling.private" "primitive_get_samples" ( -- samples/f ) }
|
2011-10-31 03:17:01 -04:00
|
|
|
{ "(clear-samples)" "tools.profiler.sampling.private" "primitive_clear_samples" ( -- ) }
|
2010-01-19 02:00:33 -05:00
|
|
|
} [ first4 make-primitive ] each
|
2007-12-25 18:10:05 -05:00
|
|
|
|
2007-09-20 18:09:08 -04:00
|
|
|
! Bump build number
|
2011-10-18 16:18:42 -04:00
|
|
|
"build" "kernel" create build 1 + [ ] curry ( -- n ) define-declared
|
2009-11-13 09:05:02 -05:00
|
|
|
|
|
|
|
] with-compilation-unit
|