mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-23 20:44:41 +02:00
6739920: java 6u4~ use larger C heap if there are many threads
Reviewed-by: chegar
This commit is contained in:
parent
44aa1a1519
commit
57bd8dc7e1
2 changed files with 6 additions and 26 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue