quick test vocab for mt stuff
parent
05d17492ed
commit
898f5be1e0
|
@ -123,6 +123,8 @@ M:: x86.64 %unbox-large-struct ( n c-type -- )
|
|||
[ ]
|
||||
tri copy-register ;
|
||||
|
||||
|
||||
|
||||
M:: x86.64 %box ( n rep func -- )
|
||||
n [
|
||||
n
|
||||
|
@ -131,7 +133,7 @@ M:: x86.64 %box ( n rep func -- )
|
|||
] [
|
||||
rep load-return-value
|
||||
] if
|
||||
func %vm-invoke-2nd-arg ;
|
||||
rep int-rep? [ func %vm-invoke-2nd-arg ] [ func %vm-invoke-1st-arg ] if ;
|
||||
|
||||
M: x86.64 %box-long-long ( n func -- )
|
||||
[ int-rep ] dip %box ;
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
USING: alien.syntax io io.encodings.utf16n io.encodings.utf8 io.files
|
||||
kernel namespaces sequences system threads unix.utilities ;
|
||||
IN: mttest
|
||||
|
||||
FUNCTION: void* start_standalone_factor_in_new_thread ( int argc, char** argv ) ;
|
||||
|
||||
HOOK: native-string-encoding os ( -- encoding )
|
||||
M: windows native-string-encoding utf16n ;
|
||||
M: unix native-string-encoding utf8 ;
|
||||
|
||||
: start-vm-in-os-thread ( args -- threadhandle )
|
||||
\ vm get-global prefix
|
||||
[ length ] [ native-string-encoding strings>alien ] bi
|
||||
start_standalone_factor_in_new_thread ;
|
||||
|
||||
: start-tetris-in-os-thread ( -- )
|
||||
{ "-run=tetris" } start-vm-in-os-thread drop ;
|
||||
|
||||
: start-testthread-in-os-thread ( -- )
|
||||
{ "-run=mttest" } start-vm-in-os-thread drop ;
|
||||
|
||||
: testthread ( -- )
|
||||
"/tmp/hello" utf8 [ "hello!\n" write ] with-file-appender 5000000 sleep ;
|
||||
|
||||
MAIN: testthread
|
|
@ -165,7 +165,7 @@ void factorvm::memory_signal_handler_impl()
|
|||
|
||||
void memory_signal_handler_impl()
|
||||
{
|
||||
SIGNAL_VM_PTR->misc_signal_handler_impl();
|
||||
SIGNAL_VM_PTR()->misc_signal_handler_impl();
|
||||
}
|
||||
|
||||
void factorvm::misc_signal_handler_impl()
|
||||
|
@ -175,7 +175,7 @@ void factorvm::misc_signal_handler_impl()
|
|||
|
||||
void misc_signal_handler_impl()
|
||||
{
|
||||
SIGNAL_VM_PTR->misc_signal_handler_impl();
|
||||
SIGNAL_VM_PTR()->misc_signal_handler_impl();
|
||||
}
|
||||
|
||||
void factorvm::fp_signal_handler_impl()
|
||||
|
|
|
@ -818,7 +818,7 @@ void factorvm::box_double(double flo)
|
|||
dpush(allot_float(flo));
|
||||
}
|
||||
|
||||
VM_C_API void box_double(double flo,factorvm *myvm) // not sure if this is ever called
|
||||
VM_C_API void box_double(double flo,factorvm *myvm)
|
||||
{
|
||||
ASSERTVM();
|
||||
return VM_PTR->box_double(flo);
|
||||
|
|
|
@ -133,7 +133,7 @@ stack_frame *factorvm::uap_stack_pointer(void *uap)
|
|||
|
||||
void memory_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||
{
|
||||
factorvm *myvm = lookup_vm(thread_id());
|
||||
factorvm *myvm = SIGNAL_VM_PTR();
|
||||
myvm->signal_fault_addr = (cell)siginfo->si_addr;
|
||||
myvm->signal_callstack_top = myvm->uap_stack_pointer(uap);
|
||||
UAP_PROGRAM_COUNTER(uap) = (cell)memory_signal_handler_impl;
|
||||
|
@ -141,7 +141,7 @@ void memory_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
|||
|
||||
void misc_signal_handler(int signal, siginfo_t *siginfo, void *uap)
|
||||
{
|
||||
factorvm *myvm = lookup_vm(thread_id());
|
||||
factorvm *myvm = SIGNAL_VM_PTR();
|
||||
myvm->signal_number = signal;
|
||||
myvm->signal_callstack_top = myvm->uap_stack_pointer(uap);
|
||||
UAP_PROGRAM_COUNTER(uap) = (cell)misc_signal_handler_impl;
|
||||
|
|
|
@ -37,13 +37,13 @@ struct tagged
|
|||
|
||||
explicit tagged(cell tagged) : value_(tagged) {
|
||||
#ifdef FACTOR_DEBUG
|
||||
untag_check(SIGNAL_VM_PTR);
|
||||
untag_check(SIGNAL_VM_PTR());
|
||||
#endif
|
||||
}
|
||||
|
||||
explicit tagged(TYPE *untagged) : value_(factor::tag(untagged)) {
|
||||
#ifdef FACTOR_DEBUG
|
||||
untag_check(SIGNAL_VM_PTR);
|
||||
untag_check(SIGNAL_VM_PTR());
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -700,7 +700,7 @@ extern void register_vm(unsigned long threadid,factorvm *vm);
|
|||
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
||||
#define VM_PTR vm
|
||||
#define ASSERTVM()
|
||||
#define SIGNAL_VM_PTR vm
|
||||
#define SIGNAL_VM_PTR() vm
|
||||
#endif
|
||||
|
||||
#ifdef FACTOR_TESTING_MULTITHREADED
|
||||
|
@ -709,7 +709,7 @@ extern void register_vm(unsigned long threadid,factorvm *vm);
|
|||
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
||||
#define VM_PTR myvm
|
||||
#define ASSERTVM() assert(vm==myvm)
|
||||
#define SIGNAL_VM_PTR lookup_vm(thread_id())
|
||||
#define SIGNAL_VM_PTR() lookup_vm(thread_id())
|
||||
#endif
|
||||
|
||||
#ifdef FACTOR_MULTITHREADED
|
||||
|
@ -717,7 +717,7 @@ extern void register_vm(unsigned long threadid,factorvm *vm);
|
|||
#define PRIMITIVE_OVERFLOW_GETVM() ((factorvm*)myvm)
|
||||
#define VM_PTR myvm
|
||||
#define ASSERTVM()
|
||||
#define SIGNAL_VM_PTR lookup_vm(thread_id())
|
||||
#define SIGNAL_VM_PTR() lookup_vm(thread_id())
|
||||
#endif
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue