6739920: java 6u4~ use larger C heap if there are many threads

Reviewed-by: chegar
This commit is contained in:
Michael McMahon 2008-09-22 15:53:58 +01:00
parent 44aa1a1519
commit 57bd8dc7e1
2 changed files with 6 additions and 26 deletions

View file

@ -308,6 +308,12 @@ abstract class AbstractPlainSocketImpl extends SocketImpl
FileDescriptor fd = acquireFD();
try {
socketConnect(address, port, timeout);
/* socket may have been closed during poll/select */
synchronized (fdLock) {
if (closePending) {
throw new SocketException ("Socket closed");
}
}
// If we have a ref. to the Socket, then sets the flags
// created, bound & connected to true.
// This is normally done in Socket.connect() but some

View file

@ -491,27 +491,6 @@ Java_java_net_PlainSocketImpl_socketConnect(JNIEnv *env, jobject this,
return;
}
/*
* The socket may have been closed (dup'ed) while we were
* poll/select. In that case SO_ERROR will return 0 making
* it appear that the connection has been established.
* To avoid any race conditions we therefore grab the
* fd lock, check if the socket has been closed, and
* set the various fields whilst holding the lock
*/
fdLock = (*env)->GetObjectField(env, this, psi_fdLockID);
(*env)->MonitorEnter(env, fdLock);
if ((*env)->GetBooleanField(env, this, psi_closePendingID)) {
/* release fdLock */
(*env)->MonitorExit(env, fdLock);
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
"Socket closed");
return;
}
(*env)->SetIntField(env, fdObj, IO_fd_fdID, fd);
/* set the remote peer address and port */
@ -536,11 +515,6 @@ Java_java_net_PlainSocketImpl_socketConnect(JNIEnv *env, jobject this,
(*env)->SetIntField(env, this, psi_localportID, localport);
}
}
/*
* Finally release fdLock
*/
(*env)->MonitorExit(env, fdLock);
}
/*