Give compiler hint about inline functions
Motivation: Some of the methods are frequently called and so should be inlined if possible. Modifications: Give the compiler a hint that we want to inline these methods. Result: Better performance if inlined.
This commit is contained in:
parent
75630dd892
commit
8f61e4cdd6
@ -89,25 +89,25 @@ static int socketType;
|
|||||||
static const char* ip4prefix = "::ffff:";
|
static const char* ip4prefix = "::ffff:";
|
||||||
|
|
||||||
// util methods
|
// util methods
|
||||||
void throwRuntimeException(JNIEnv* env, char* message) {
|
static inline void throwRuntimeException(JNIEnv* env, char* message) {
|
||||||
(*env)->ThrowNew(env, runtimeExceptionClass, message);
|
(*env)->ThrowNew(env, runtimeExceptionClass, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void throwIOException(JNIEnv* env, char* message) {
|
static inline void throwIOException(JNIEnv* env, char* message) {
|
||||||
(*env)->ThrowNew(env, ioExceptionClass, message);
|
(*env)->ThrowNew(env, ioExceptionClass, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
void throwClosedChannelException(JNIEnv* env) {
|
static inline void throwClosedChannelException(JNIEnv* env) {
|
||||||
jobject exception = (*env)->NewObject(env, closedChannelExceptionClass, closedChannelExceptionMethodId);
|
jobject exception = (*env)->NewObject(env, closedChannelExceptionClass, closedChannelExceptionMethodId);
|
||||||
(*env)->Throw(env, exception);
|
(*env)->Throw(env, exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
void throwOutOfMemoryError(JNIEnv* env) {
|
static inline void throwOutOfMemoryError(JNIEnv* env) {
|
||||||
jclass exceptionClass = (*env)->FindClass(env, "java/lang/OutOfMemoryError");
|
jclass exceptionClass = (*env)->FindClass(env, "java/lang/OutOfMemoryError");
|
||||||
(*env)->ThrowNew(env, exceptionClass, "");
|
(*env)->ThrowNew(env, exceptionClass, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
char* exceptionMessage(char* msg, int error) {
|
static inline char* exceptionMessage(char* msg, int error) {
|
||||||
char* err = strerror(error);
|
char* err = strerror(error);
|
||||||
char* result = malloc(strlen(msg) + strlen(err) + 1);
|
char* result = malloc(strlen(msg) + strlen(err) + 1);
|
||||||
strcpy(result, msg);
|
strcpy(result, msg);
|
||||||
@ -115,9 +115,8 @@ char* exceptionMessage(char* msg, int error) {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
jint epollCtl(JNIEnv* env, jint efd, int op, jint fd, jint flags) {
|
static inline jint epollCtl(JNIEnv* env, jint efd, int op, jint fd, jint flags) {
|
||||||
uint32_t events = flags;
|
uint32_t events = flags;
|
||||||
|
|
||||||
struct epoll_event ev = {
|
struct epoll_event ev = {
|
||||||
.data.fd = fd,
|
.data.fd = fd,
|
||||||
.events = events
|
.events = events
|
||||||
@ -126,7 +125,7 @@ jint epollCtl(JNIEnv* env, jint efd, int op, jint fd, jint flags) {
|
|||||||
return epoll_ctl(efd, op, fd, &ev);
|
return epoll_ctl(efd, op, fd, &ev);
|
||||||
}
|
}
|
||||||
|
|
||||||
jint getOption(JNIEnv* env, jint fd, int level, int optname, void* optval, socklen_t optlen) {
|
static inline jint getOption(JNIEnv* env, jint fd, int level, int optname, void* optval, socklen_t optlen) {
|
||||||
int code;
|
int code;
|
||||||
code = getsockopt(fd, level, optname, optval, &optlen);
|
code = getsockopt(fd, level, optname, optval, &optlen);
|
||||||
if (code == 0) {
|
if (code == 0) {
|
||||||
@ -137,7 +136,7 @@ jint getOption(JNIEnv* env, jint fd, int level, int optname, void* optval, sockl
|
|||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
int setOption(JNIEnv* env, jint fd, int level, int optname, const void* optval, socklen_t len) {
|
static inline int setOption(JNIEnv* env, jint fd, int level, int optname, const void* optval, socklen_t len) {
|
||||||
int rc = setsockopt(fd, level, optname, optval, len);
|
int rc = setsockopt(fd, level, optname, optval, len);
|
||||||
if (rc < 0) {
|
if (rc < 0) {
|
||||||
int err = errno;
|
int err = errno;
|
||||||
@ -174,7 +173,7 @@ jobject createInetSocketAddress(JNIEnv* env, struct sockaddr_storage addr) {
|
|||||||
return socketAddr;
|
return socketAddr;
|
||||||
}
|
}
|
||||||
|
|
||||||
jbyteArray createInetSocketAddressArray(JNIEnv* env, struct sockaddr_storage addr) {
|
static jbyteArray createInetSocketAddressArray(JNIEnv* env, struct sockaddr_storage addr) {
|
||||||
int port;
|
int port;
|
||||||
if (addr.ss_family == AF_INET) {
|
if (addr.ss_family == AF_INET) {
|
||||||
struct sockaddr_in* s = (struct sockaddr_in*) &addr;
|
struct sockaddr_in* s = (struct sockaddr_in*) &addr;
|
||||||
@ -236,7 +235,7 @@ jbyteArray createInetSocketAddressArray(JNIEnv* env, struct sockaddr_storage add
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject createDatagramSocketAddress(JNIEnv* env, struct sockaddr_storage addr, int len) {
|
static jobject createDatagramSocketAddress(JNIEnv* env, struct sockaddr_storage addr, int len) {
|
||||||
char ipstr[INET6_ADDRSTRLEN];
|
char ipstr[INET6_ADDRSTRLEN];
|
||||||
int port;
|
int port;
|
||||||
jstring ipString;
|
jstring ipString;
|
||||||
@ -265,7 +264,7 @@ jobject createDatagramSocketAddress(JNIEnv* env, struct sockaddr_storage addr, i
|
|||||||
return socketAddr;
|
return socketAddr;
|
||||||
}
|
}
|
||||||
|
|
||||||
int init_sockaddr(JNIEnv* env, jbyteArray address, jint scopeId, jint jport, struct sockaddr_storage* addr) {
|
static int init_sockaddr(JNIEnv* env, jbyteArray address, jint scopeId, jint jport, struct sockaddr_storage* addr) {
|
||||||
uint16_t port = htons((uint16_t) jport);
|
uint16_t port = htons((uint16_t) jport);
|
||||||
// Use GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical to signal the VM that we really would like
|
// Use GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical to signal the VM that we really would like
|
||||||
// to not do a memory copy here. This is ok as we not do any blocking action here anyway.
|
// to not do a memory copy here. This is ok as we not do any blocking action here anyway.
|
||||||
@ -308,7 +307,7 @@ static int socket_type() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int init_in_addr(JNIEnv* env, jbyteArray address, struct in_addr* addr) {
|
static int init_in_addr(JNIEnv* env, jbyteArray address, struct in_addr* addr) {
|
||||||
// Use GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical to signal the VM that we really would like
|
// Use GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical to signal the VM that we really would like
|
||||||
// to not do a memory copy here. This is ok as we not do any blocking action here anyway.
|
// to not do a memory copy here. This is ok as we not do any blocking action here anyway.
|
||||||
// This is important as the VM may suspend GC for the time!
|
// This is important as the VM may suspend GC for the time!
|
||||||
@ -667,7 +666,7 @@ JNIEXPORT void JNICALL Java_io_netty_channel_epoll_Native_epollCtlDel(JNIEnv* en
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jint _write(JNIEnv* env, jclass clazz, jint fd, void* buffer, jint pos, jint limit) {
|
static inline jint _write(JNIEnv* env, jclass clazz, jint fd, void* buffer, jint pos, jint limit) {
|
||||||
ssize_t res;
|
ssize_t res;
|
||||||
int err;
|
int err;
|
||||||
do {
|
do {
|
||||||
@ -694,7 +693,7 @@ JNIEXPORT jint JNICALL Java_io_netty_channel_epoll_Native_writeAddress0(JNIEnv*
|
|||||||
return _write(env, clazz, fd, (void*) address, pos, limit);
|
return _write(env, clazz, fd, (void*) address, pos, limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
jint _sendTo(JNIEnv* env, jint fd, void* buffer, jint pos, jint limit ,jbyteArray address, jint scopeId, jint port) {
|
static inline jint _sendTo(JNIEnv* env, jint fd, void* buffer, jint pos, jint limit ,jbyteArray address, jint scopeId, jint port) {
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
if (init_sockaddr(env, address, scopeId, port, &addr) == -1) {
|
if (init_sockaddr(env, address, scopeId, port, &addr) == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
@ -790,7 +789,7 @@ JNIEXPORT jint JNICALL Java_io_netty_channel_epoll_Native_sendmmsg0(JNIEnv* env,
|
|||||||
return (jint) res;
|
return (jint) res;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject recvFrom0(JNIEnv* env, jint fd, void* buffer, jint pos, jint limit) {
|
static inline jobject recvFrom0(JNIEnv* env, jint fd, void* buffer, jint pos, jint limit) {
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
socklen_t addrlen = sizeof(addr);
|
socklen_t addrlen = sizeof(addr);
|
||||||
ssize_t res;
|
ssize_t res;
|
||||||
@ -831,7 +830,7 @@ JNIEXPORT jobject JNICALL Java_io_netty_channel_epoll_Native_recvFromAddress(JNI
|
|||||||
return recvFrom0(env, fd, (void*) address, pos, limit);
|
return recvFrom0(env, fd, (void*) address, pos, limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
jlong _writev(JNIEnv* env, jclass clazz, jint fd, struct iovec* iov, jint length) {
|
static inline jlong _writev(JNIEnv* env, jclass clazz, jint fd, struct iovec* iov, jint length) {
|
||||||
ssize_t res;
|
ssize_t res;
|
||||||
int err;
|
int err;
|
||||||
do {
|
do {
|
||||||
@ -891,7 +890,7 @@ JNIEXPORT jlong JNICALL Java_io_netty_channel_epoll_Native_writevAddresses0(JNIE
|
|||||||
return _writev(env, clazz, fd, iov, length);
|
return _writev(env, clazz, fd, iov, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
jint _read(JNIEnv* env, jclass clazz, jint fd, void* buffer, jint pos, jint limit) {
|
static inline jint _read(JNIEnv* env, jclass clazz, jint fd, void* buffer, jint pos, jint limit) {
|
||||||
ssize_t res;
|
ssize_t res;
|
||||||
int err;
|
int err;
|
||||||
do {
|
do {
|
||||||
@ -940,7 +939,7 @@ JNIEXPORT jint JNICALL Java_io_netty_channel_epoll_Native_shutdown0(JNIEnv* env,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
jint socket0(JNIEnv* env, jclass clazz, int type) {
|
static inline jint socket0(JNIEnv* env, jclass clazz, int type) {
|
||||||
// TODO: Maybe also respect -Djava.net.preferIPv4Stack=true
|
// TODO: Maybe also respect -Djava.net.preferIPv4Stack=true
|
||||||
int fd = socket(socketType, type | SOCK_NONBLOCK, 0);
|
int fd = socket(socketType, type | SOCK_NONBLOCK, 0);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user