factor/core/bootstrap/primitives.factor

564 lines
24 KiB
Factor
Raw Normal View History

! Copyright (C) 2004, 2010 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
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
classes.tuple.private kernel.private vocabs vocabs.loader
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
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
: asm-file ( arch -- file )
"-" split reverse "." join
"vocab:bootstrap/assembler/" ".factor" surround ;
architecture get asm-file parse-file
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
! Bring up a bare cross-compiling vocabulary.
"syntax" lookup-vocab vocab-words-assoc bootstrap-syntax set
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
bootstrapping? on
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
[
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"
"alien.private"
2007-09-20 18:09:08 -04:00
"arrays"
"byte-arrays"
"classes.private"
"classes.tuple"
"classes.tuple.private"
2008-06-29 22:37:57 -04:00
"classes.predicate"
"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"
"math.parser.private"
2007-09-20 18:09:08 -04:00
"math.private"
"memory"
"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"
"tools.memory.private"
"tools.profiler.sampling.private"
2007-09-20 18:09:08 -04:00
"words"
"words.private"
2007-09-20 18:09:08 -04:00
"vectors"
"vectors.private"
2009-09-02 05:43:21 -04:00
"vm"
} [ 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
: prepare-slots ( slots -- slots' )
2008-06-29 22:37:57 -04:00
[ [ dup pair? [ first2 create ] when ] map ] map ;
: define-builtin-slots ( class slots -- )
2008-07-14 00:26:43 -04:00
prepare-slots make-slots 1 finalize-slots
[ "slots" set-word-prop ] [ define-accessors ] 2bi ;
2008-03-13 19:56:24 -04: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 -- )
[ [ 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
! We need this before defining c-ptr below
2011-11-06 18:57:24 -05:00
"f" "syntax" lookup-word { } define-builtin
"f" "syntax" create [ not ] "predicate" set-word-prop
"f?" "syntax" vocab-words-assoc delete-at
2011-11-06 18:57:24 -05:00
"t" "syntax" lookup-word define-singleton-class
! 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 ,
] { } 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
define-predicate-class
2011-11-06 18:57:24 -05:00
"array-capacity" "sequences.private" lookup-word
[ >fixnum ] bootstrap-max-array-capacity <fake-bignum> [ fixnum-bitand ] curry append
"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
"object?" "kernel" vocab-words-assoc delete-at
2008-04-02 19:50:21 -04:00
! Empty class with no instances
"null" "kernel" create
2008-05-11 00:59:02 -04:00
[ f { } f union-class define-class ]
[ [ drop f ] "predicate" set-word-prop ]
bi
"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
"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 }
"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 }
} 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 }
"expired"
} define-builtin
2007-09-20 18:09:08 -04:00
2008-03-13 19:56:24 -04:00
"word" "words" create {
{ "hashcode" { "fixnum" "math" } }
"name"
"vocabulary"
2008-06-29 22:37:57 -04:00
{ "def" { "quotation" "quotations" } initial: [ ] }
"props"
"pic-def"
"pic-tail-def"
{ "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
{ f } "tombstone" "hashtables.private" lookup-word
slots>tuple 1quotation ( -- value ) define-inline
2007-09-20 18:09:08 -04:00
"((tombstone))" "hashtables.private" create
{ 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
"curry" "kernel" create
2008-04-14 06:27:04 -04:00
tuple
{
2008-06-30 02:44:58 -04:00
{ "obj" read-only }
{ "quot" read-only }
} prepare-slots define-tuple-class
2011-11-06 18:57:24 -05:00
"curry" "kernel" lookup-word
{
[ f "inline" set-word-prop ]
[ make-flushable ]
[ ]
[
[
callable instance-check-quot %
tuple-layout ,
\ <tuple-boa> ,
] [ ] make
]
} cleave
( obj quot -- curry ) define-declared
2008-03-26 04:57:48 -04:00
"compose" "kernel" create
2008-04-14 06:27:04 -04:00
tuple
{
2008-06-30 02:44:58 -04:00
{ "first" read-only }
{ "second" read-only }
} prepare-slots define-tuple-class
2011-11-06 18:57:24 -05:00
"compose" "kernel" lookup-word
{
[ f "inline" set-word-prop ]
[ make-flushable ]
[ ]
[
[
callable instance-check-quot [ dip ] curry %
callable instance-check-quot %
tuple-layout ,
\ <tuple-boa> ,
] [ ] make
]
} cleave
( quot1 quot2 -- compose ) define-declared
2008-03-26 04:57:48 -04:00
! Sub-primitive words
: make-sub-primitive ( word vocab effect -- )
[
create
dup t "primitive" set-word-prop
dup 1quotation
] dip define-declared ;
{
{ "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 -- ) }
{ "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 ) }
{ "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" ( -- ) }
{ "signal-handler" "kernel.private" ( -- ) }
{ "leaf-signal-handler" "kernel.private" ( -- ) }
{ "ffi-signal-handler" "kernel.private" ( -- ) }
{ "ffi-leaf-signal-handler" "kernel.private" ( -- ) }
{ "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 -- * ) }
} [ first3 make-sub-primitive ] each
2007-12-25 18:10:05 -05:00
! Primitive words
: make-primitive ( word vocab function effect -- )
[
[
create
dup reset-word
dup t "primitive" set-word-prop
] dip
ascii string>alien [ do-primitive ] curry
] dip define-declared ;
2007-12-25 18:10:05 -05:00
{
{ "<callback>" "alien" "primitive_callback" ( word return-rewind -- alien ) }
{ "<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 ) }
{ "free-callback" "alien" "primitive_free_callback" ( alien -- ) }
{ "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 ) }
{ "bignum-bit?" "math.private" "primitive_bignum_bitp" ( x n -- ? ) }
{ "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 ) }
{ "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 ) }
{ "bignum>fixnum-strict" "math.private" "primitive_bignum_to_fixnum_strict" ( x -- y ) }
{ "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 ) }
{ "(code-room)" "tools.memory.private" "primitive_code_room" ( -- allocator-room ) }
{ "compact-gc" "memory" "primitive_compact_gc" ( -- ) }
{ "(callback-room)" "tools.memory.private" "primitive_callback_room" ( -- allocator-room ) }
{ "(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 ) }
{ "profiling" "tools.profiler.sampling.private" "primitive_sampling_profiler" ( ? -- ) }
{ "(get-samples)" "tools.profiler.sampling.private" "primitive_get_samples" ( -- samples/f ) }
{ "(clear-samples)" "tools.profiler.sampling.private" "primitive_clear_samples" ( -- ) }
} [ first4 make-primitive ] each
2007-12-25 18:10:05 -05:00
2007-09-20 18:09:08 -04:00
! Bump build number
"build" "kernel" create build 1 + [ ] curry ( -- n ) define-declared
2009-11-13 09:05:02 -05:00
] with-compilation-unit