private void connectInternal() throws IOException {
private void connectInternal(InetAddress remoteAddr, int remotePort, int timeout) throws IOException {
    private void connectInternal() throws IOException {	VM_BootRecord bootRecord = VM_BootRecord.the_boot_record;	int fd = native_fd;       	int rc = -1;       	byte[] ip = this.address.getAddress();	  	int family = java.net.JikesRVMSupport.getFamily(this.address);       	int address;	address = ip[3] & 0xff;	address |= ((ip[2] << 8) & 0xff00);	address |= ((ip[1] << 16) & 0xff0000);	address |= ((ip[0] << 24) & 0xff000000); 		while (rc < 0) {	    VM_ThreadIOQueue.selectInProgressMutex.lock();	    rc = VM.sysCall4(bootRecord.sysNetSocketConnectIP,			     fd, 			     family,			     address,			     port);	    VM_ThreadIOQueue.selectInProgressMutex.unlock();	    switch (rc) {	    case 0 : // success		break;			    case -1 : // operation interrupted by timer tick - retry		Thread.currentThread().yield();		break;             	    case -2 :  // operation would have blocked		VM_ThreadIOWaitData waitData = VM_Wait.ioWaitWrite(fd);		checkIoWaitWrite(waitData);		break;	    case -4 : // errno was ECONNREFUSED		throw new ConnectException("Connection refused");	    case -5 : // errno was EHOSTUNREACH		throw new NoRouteToHostException();			    case -3 :	    default :		throw new IOException("rc="+rc);	    }       }    } 