int serverFD = java.io.JikesRVMSupport.getFd(fd);
int serverFD = native_fd;
    private FileDescriptor acceptInternal(JikesRVMSocketImpl newSocket) 	throws SocketException, SocketTimeoutException     {	int serverFD = java.io.JikesRVMSupport.getFd(fd);	// If there is a timeout,	// compute total wait time (total number of seconds that	// we are willing to wait before a connection arrives)	boolean hasTimeout = (receiveTimeout > 0);	double totalWaitTime = hasTimeout	    ? ((double) receiveTimeout) / 1000.0	    : VM_ThreadEventConstants.WAIT_INFINITE;	int connectionFd;	double waitStartTime = hasTimeout ? VM_Time.now() : 0.0;	// Main loop; keep trying to accept a connection until we succeed,	// the timeout (if any) is reached, or an error occurs.	while (true) {	    // Try to accept a connection	    VM_ThreadIOQueue.selectInProgressMutex.lock();	    	    VM_BootRecord bootRecord = VM_BootRecord.the_boot_record;	    connectionFd = VM.sysCall2(bootRecord.sysNetSocketAcceptIP,				       serverFD,				       VM_Magic.objectAsAddress(newSocket).toInt());	    VM_ThreadIOQueue.selectInProgressMutex.unlock();	    if (connectionFd >= 0)		// Got a connection		break;	    switch (connectionFd) {	    case -1:		// accept() was interrupted; try again		continue;	    case -2: {		// accept() would have blocked:		// Wait for the fd to become ready.		if (VM.VerifyAssertions) VM._assert(!hasTimeout || totalWaitTime >= 0.0);		VM_ThreadIOWaitData waitData = VM_Wait.ioWaitRead(serverFD, totalWaitTime);				// Check for exceptions (including timeout)		checkIoWaitRead(waitData);				// Update timeout, and make sure it hasn't become negative		// (which the IO queue treats as infinite).		if (hasTimeout) {		    double nextWaitStartTime = VM_Time.now();		    totalWaitTime -= (nextWaitStartTime - waitStartTime);		    if (totalWaitTime < 0.0)			throw new SocketTimeoutException("socket operation timed out");		    waitStartTime = nextWaitStartTime;		}				continue;	    }	    default:		// Some kind of error from accept()		throw new SocketException("accept failed");	    }	}		// Note that sysNetSocketAccept fills in the InetAddress	// in the new socket (family, and integer address); and	// the port field.  In the unlikely event that someone	// has already resolved the integer address and cached	// this value in the object (see InetAddress.getHostName() )	// reset the host value.	java.net.JikesRVMSupport.setHostName(newSocket.getInetAddress(), null);		// Success!	// Note that the file descriptor creation hook (in VM_FileSystem.java)	// will take care of setting the socket fd to nonblocking mode.	return java.io.JikesRVMSupport.createFileDescriptor(connectionFd, false);    }