fix bootstrap failure
parent
9cc3616a82
commit
1efa0fa2cc
|
@ -23,6 +23,35 @@ namespaces sequences stdio strings words ;
|
||||||
! parameter, or a missing abi parameter indicates the cdecl ABI
|
! parameter, or a missing abi parameter indicates the cdecl ABI
|
||||||
! should be used, which is common on Unix.
|
! should be used, which is common on Unix.
|
||||||
|
|
||||||
|
! FFI code does not run in the interpreter.
|
||||||
|
|
||||||
|
TUPLE: alien-error lib ;
|
||||||
|
|
||||||
|
C: alien-error ( lib -- ) [ set-alien-error-lib ] keep ;
|
||||||
|
|
||||||
|
M: alien-error error. ( error -- )
|
||||||
|
[
|
||||||
|
"C library interface words cannot be interpreted. " ,
|
||||||
|
"Either the compiler is disabled, " ,
|
||||||
|
"or the ``" , alien-error-lib ,
|
||||||
|
"'' library is missing." ,
|
||||||
|
] make-string print ;
|
||||||
|
|
||||||
|
: alien-invoke ( ... returns library function parameters -- ... )
|
||||||
|
#! Call a C library function.
|
||||||
|
#! 'returns' is a type spec, and 'parameters' is a list of
|
||||||
|
#! type specs. 'library' is an entry in the "libraries"
|
||||||
|
#! namespace.
|
||||||
|
rot <alien-error> throw ;
|
||||||
|
|
||||||
|
: alien-global ( type library name -- value )
|
||||||
|
#! Fetch the value of C global variable.
|
||||||
|
#! 'type' is a type spec. 'library' is an entry in the
|
||||||
|
#! "libraries" namespace.
|
||||||
|
swap <alien-error> throw ;
|
||||||
|
|
||||||
|
! Linear IR nodes
|
||||||
|
|
||||||
SYMBOL: #cleanup ( unwind stack by parameter )
|
SYMBOL: #cleanup ( unwind stack by parameter )
|
||||||
|
|
||||||
SYMBOL: #unbox ( move top of datastack to C stack )
|
SYMBOL: #unbox ( move top of datastack to C stack )
|
||||||
|
@ -129,36 +158,11 @@ DEFER: alien-global
|
||||||
|
|
||||||
\ alien-global [ linearize-alien-global ] "linearizer" set-word-prop
|
\ alien-global [ linearize-alien-global ] "linearizer" set-word-prop
|
||||||
|
|
||||||
TUPLE: alien-error lib ;
|
|
||||||
|
|
||||||
C: alien-error ( lib -- ) [ set-alien-error-lib ] keep ;
|
|
||||||
|
|
||||||
M: alien-error error. ( error -- )
|
|
||||||
[
|
|
||||||
"C library interface words cannot be interpreted. " ,
|
|
||||||
"Either the compiler is disabled, " ,
|
|
||||||
"or the ``" , alien-error-lib ,
|
|
||||||
"'' library is missing." ,
|
|
||||||
] make-string print ;
|
|
||||||
|
|
||||||
: alien-invoke ( ... returns library function parameters -- ... )
|
|
||||||
#! Call a C library function.
|
|
||||||
#! 'returns' is a type spec, and 'parameters' is a list of
|
|
||||||
#! type specs. 'library' is an entry in the "libraries"
|
|
||||||
#! namespace.
|
|
||||||
rot <alien-error> throw ;
|
|
||||||
|
|
||||||
\ alien-invoke [ [ string string string general-list ] [ ] ]
|
\ alien-invoke [ [ string string string general-list ] [ ] ]
|
||||||
"infer-effect" set-word-prop
|
"infer-effect" set-word-prop
|
||||||
|
|
||||||
\ alien-invoke [ infer-alien-invoke ] "infer" set-word-prop
|
\ alien-invoke [ infer-alien-invoke ] "infer" set-word-prop
|
||||||
|
|
||||||
: alien-global ( type library name -- value )
|
|
||||||
#! Fetch the value of C global variable.
|
|
||||||
#! 'type' is a type spec. 'library' is an entry in the
|
|
||||||
#! "libraries" namespace.
|
|
||||||
swap <alien-error> throw ;
|
|
||||||
|
|
||||||
\ alien-global [ [ string string string ] [ object ] ]
|
\ alien-global [ [ string string string ] [ object ] ]
|
||||||
"infer-effect" set-word-prop
|
"infer-effect" set-word-prop
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue