vm: clean up windows ctrl-handler
							parent
							
								
									c70a1004f8
								
							
						
					
					
						commit
						8e66c7abee
					
				| 
						 | 
					@ -23,10 +23,8 @@ void factor_vm::init_c_io()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void factor_vm::io_error()
 | 
					void factor_vm::io_error()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
#ifndef WINCE
 | 
					 | 
				
			||||||
	if(errno == EINTR)
 | 
						if(errno == EINTR)
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	general_error(ERROR_IO,tag_fixnum(errno),false_object);
 | 
						general_error(ERROR_IO,tag_fixnum(errno),false_object);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -50,7 +48,7 @@ int factor_vm::safe_fgetc(FILE *stream)
 | 
				
			||||||
	int c;
 | 
						int c;
 | 
				
			||||||
	for(;;)
 | 
						for(;;)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		c = fgetc(stream);
 | 
							c = getc(stream);
 | 
				
			||||||
		if(c == EOF)
 | 
							if(c == EOF)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			if(feof(stream))
 | 
								if(feof(stream))
 | 
				
			||||||
| 
						 | 
					@ -89,7 +87,7 @@ void factor_vm::safe_fputc(int c, FILE *stream)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	for(;;)
 | 
						for(;;)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if(fputc(c,stream) == EOF)
 | 
							if(putc(c,stream) == EOF)
 | 
				
			||||||
			io_error();
 | 
								io_error();
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -287,15 +287,8 @@ static BOOL WINAPI ctrl_handler(DWORD dwCtrlType)
 | 
				
			||||||
		VM we can get. This will not be a good idea when we actually support native
 | 
							VM we can get. This will not be a good idea when we actually support native
 | 
				
			||||||
		threads. */
 | 
							threads. */
 | 
				
			||||||
		assert(thread_vms.size() == 1);
 | 
							assert(thread_vms.size() == 1);
 | 
				
			||||||
		THREADHANDLE vm_thread = thread_vms.begin()->first;
 | 
					 | 
				
			||||||
		factor_vm *vm = thread_vms.begin()->second;
 | 
							factor_vm *vm = thread_vms.begin()->second;
 | 
				
			||||||
 | 
					 | 
				
			||||||
		assert(SuspendThread(vm_thread) == 0);
 | 
					 | 
				
			||||||
		std::cout << "handling ctrl-c" << std::endl;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		vm->enqueue_safepoint_fep();
 | 
							vm->enqueue_safepoint_fep();
 | 
				
			||||||
		MemoryBarrier();
 | 
					 | 
				
			||||||
		assert(ResumeThread(vm_thread) == 1);
 | 
					 | 
				
			||||||
		return TRUE;
 | 
							return TRUE;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	default:
 | 
						default:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue