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 ;
|
tri copy-register ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
M:: x86.64 %box ( n rep func -- )
|
M:: x86.64 %box ( n rep func -- )
|
||||||
n [
|
n [
|
||||||
n
|
n
|
||||||
|
@ -131,7 +133,7 @@ M:: x86.64 %box ( n rep func -- )
|
||||||
] [
|
] [
|
||||||
rep load-return-value
|
rep load-return-value
|
||||||
] if
|
] 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 -- )
|
M: x86.64 %box-long-long ( n func -- )
|
||||||
[ int-rep ] dip %box ;
|
[ 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()
|
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()
|
void factorvm::misc_signal_handler_impl()
|
||||||
|
@ -175,7 +175,7 @@ void factorvm::misc_signal_handler_impl()
|
||||||
|
|
||||||
void 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()
|
void factorvm::fp_signal_handler_impl()
|
||||||
|
|
|
@ -818,7 +818,7 @@ void factorvm::box_double(double flo)
|
||||||
dpush(allot_float(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();
|
ASSERTVM();
|
||||||
return VM_PTR->box_double(flo);
|
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)
|
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_fault_addr = (cell)siginfo->si_addr;
|
||||||
myvm->signal_callstack_top = myvm->uap_stack_pointer(uap);
|
myvm->signal_callstack_top = myvm->uap_stack_pointer(uap);
|
||||||
UAP_PROGRAM_COUNTER(uap) = (cell)memory_signal_handler_impl;
|
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)
|
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_number = signal;
|
||||||
myvm->signal_callstack_top = myvm->uap_stack_pointer(uap);
|
myvm->signal_callstack_top = myvm->uap_stack_pointer(uap);
|
||||||
UAP_PROGRAM_COUNTER(uap) = (cell)misc_signal_handler_impl;
|
UAP_PROGRAM_COUNTER(uap) = (cell)misc_signal_handler_impl;
|
||||||
|
|
|
@ -37,13 +37,13 @@ struct tagged
|
||||||
|
|
||||||
explicit tagged(cell tagged) : value_(tagged) {
|
explicit tagged(cell tagged) : value_(tagged) {
|
||||||
#ifdef FACTOR_DEBUG
|
#ifdef FACTOR_DEBUG
|
||||||
untag_check(SIGNAL_VM_PTR);
|
untag_check(SIGNAL_VM_PTR());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit tagged(TYPE *untagged) : value_(factor::tag(untagged)) {
|
explicit tagged(TYPE *untagged) : value_(factor::tag(untagged)) {
|
||||||
#ifdef FACTOR_DEBUG
|
#ifdef FACTOR_DEBUG
|
||||||
untag_check(SIGNAL_VM_PTR);
|
untag_check(SIGNAL_VM_PTR());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -700,7 +700,7 @@ extern void register_vm(unsigned long threadid,factorvm *vm);
|
||||||
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
||||||
#define VM_PTR vm
|
#define VM_PTR vm
|
||||||
#define ASSERTVM()
|
#define ASSERTVM()
|
||||||
#define SIGNAL_VM_PTR vm
|
#define SIGNAL_VM_PTR() vm
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FACTOR_TESTING_MULTITHREADED
|
#ifdef FACTOR_TESTING_MULTITHREADED
|
||||||
|
@ -709,7 +709,7 @@ extern void register_vm(unsigned long threadid,factorvm *vm);
|
||||||
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
#define PRIMITIVE_OVERFLOW_GETVM() vm
|
||||||
#define VM_PTR myvm
|
#define VM_PTR myvm
|
||||||
#define ASSERTVM() assert(vm==myvm)
|
#define ASSERTVM() assert(vm==myvm)
|
||||||
#define SIGNAL_VM_PTR lookup_vm(thread_id())
|
#define SIGNAL_VM_PTR() lookup_vm(thread_id())
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FACTOR_MULTITHREADED
|
#ifdef FACTOR_MULTITHREADED
|
||||||
|
@ -717,7 +717,7 @@ extern void register_vm(unsigned long threadid,factorvm *vm);
|
||||||
#define PRIMITIVE_OVERFLOW_GETVM() ((factorvm*)myvm)
|
#define PRIMITIVE_OVERFLOW_GETVM() ((factorvm*)myvm)
|
||||||
#define VM_PTR myvm
|
#define VM_PTR myvm
|
||||||
#define ASSERTVM()
|
#define ASSERTVM()
|
||||||
#define SIGNAL_VM_PTR lookup_vm(thread_id())
|
#define SIGNAL_VM_PTR() lookup_vm(thread_id())
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue