quick test vocab for mt stuff

Phil Dawes 2009-08-25 18:29:28 +01:00
parent 05d17492ed
commit 898f5be1e0
7 changed files with 38 additions and 11 deletions

View File

@ -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 ;

View File

@ -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

View File

@ -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()

View File

@ -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);

View File

@ -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;

View File

@ -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
}

View File

@ -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
}