quick test vocab for mt stuff
							parent
							
								
									ca16daa4b2
								
							
						
					
					
						commit
						3345922330
					
				|  | @ -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