Merge "JarFile: Optimize getMetaInfEntryNames."
diff --git a/ojluni/src/main/java/java/net/Inet4Address.java b/ojluni/src/main/java/java/net/Inet4Address.java
index 57da1c4..1570fad 100755
--- a/ojluni/src/main/java/java/net/Inet4Address.java
+++ b/ojluni/src/main/java/java/net/Inet4Address.java
@@ -106,13 +106,6 @@
public static final InetAddress LOOPBACK =
new Inet4Address("localhost", new byte[] { 127, 0, 0, 1 });
- /*
- * Perform initializations.
- */
- static {
- init();
- }
-
Inet4Address() {
super();
holder().hostName = null;
@@ -386,9 +379,4 @@
{
return (src[0] & 0xff) + "." + (src[1] & 0xff) + "." + (src[2] & 0xff) + "." + (src[3] & 0xff);
}
-
- /**
- * Perform class load-time initializations.
- */
- private static native void init();
}
diff --git a/ojluni/src/main/java/java/net/Inet6Address.java b/ojluni/src/main/java/java/net/Inet6Address.java
index f66b68d..4b353e5 100755
--- a/ojluni/src/main/java/java/net/Inet6Address.java
+++ b/ojluni/src/main/java/java/net/Inet6Address.java
@@ -210,13 +210,6 @@
private static final long serialVersionUID = 6880410070516793377L;
- /*
- * Perform initializations.
- */
- static {
- init();
- }
-
Inet6Address() {
super();
holder().hostName = null;
@@ -768,11 +761,6 @@
}
/**
- * Perform class load-time initializations.
- */
- private static native void init();
-
- /**
* Following field is only used during (de)/serialization
*/
private String ifname;
diff --git a/ojluni/src/main/java/java/net/InetAddress.java b/ojluni/src/main/java/java/net/InetAddress.java
index d8057ff..3ea1086 100755
--- a/ojluni/src/main/java/java/net/InetAddress.java
+++ b/ojluni/src/main/java/java/net/InetAddress.java
@@ -246,13 +246,6 @@
/** use serialVersionUID from JDK 1.0.2 for interoperability */
private static final long serialVersionUID = 3286316764910316507L;
- /*
- * Load net library into runtime, and perform initializations.
- */
- static {
- init();
- }
-
/**
* Constructor for the Socket.accept() method.
* This creates an empty InetAddress, which is filled in by
@@ -823,12 +816,6 @@
return impl.lookupAllHostAddr(local, NETID_UNSET)[0];
}
- /**
- * Perform class load-time initializations.
- */
- private static native void init();
-
-
/*
* Returns the InetAddress representing anyLocalAddress
* (typically 0.0.0.0 or ::0)
diff --git a/ojluni/src/main/java/java/net/NetworkInterface.java b/ojluni/src/main/java/java/net/NetworkInterface.java
index 1f5825f..edae4b3 100755
--- a/ojluni/src/main/java/java/net/NetworkInterface.java
+++ b/ojluni/src/main/java/java/net/NetworkInterface.java
@@ -54,7 +54,6 @@
private static final int defaultIndex; /* index of defaultInterface */
static {
- init();
defaultInterface = DefaultInterface.getDefault();
if (defaultInterface != null) {
defaultIndex = defaultInterface.getIndex();
@@ -541,8 +540,6 @@
return result;
}
- private static native void init();
-
/**
* Returns the default network interface of this system
*
diff --git a/ojluni/src/main/java/java/net/PlainSocketImpl.java b/ojluni/src/main/java/java/net/PlainSocketImpl.java
index 32be8e5..b6a2677 100755
--- a/ojluni/src/main/java/java/net/PlainSocketImpl.java
+++ b/ojluni/src/main/java/java/net/PlainSocketImpl.java
@@ -36,10 +36,6 @@
class PlainSocketImpl extends AbstractPlainSocketImpl
{
- static {
- initProto();
- }
-
/**
* Constructs an empty instance.
*/
@@ -72,8 +68,6 @@
native void socketShutdown(int howto) throws IOException;
- static native void initProto();
-
native void socketSetOption(int cmd, boolean on, Object value)
throws SocketException;
diff --git a/ojluni/src/main/native/Inet4Address.c b/ojluni/src/main/native/Inet4Address.c
index cd41068..5c7df40 100755
--- a/ojluni/src/main/native/Inet4Address.c
+++ b/ojluni/src/main/native/Inet4Address.c
@@ -37,13 +37,7 @@
jclass ia4_class;
jmethodID ia4_ctrID;
-/*
- * Class: java_net_Inet4Address
- * Method: init
- * Signature: ()V
- */
-JNIEXPORT void JNICALL
-Inet4Address_init(JNIEnv *env, jclass cls) {
+static void Inet4Address_init(JNIEnv *env) {
jclass c = (*env)->FindClass(env, "java/net/Inet4Address");
CHECK_NULL(c);
ia4_class = (*env)->NewGlobalRef(env, c);
@@ -52,10 +46,6 @@
CHECK_NULL(ia4_ctrID);
}
-static JNINativeMethod gMethods[] = {
- NATIVE_METHOD(Inet4Address, init, "()V"),
-};
-
void register_java_net_Inet4Address(JNIEnv* env) {
- jniRegisterNativeMethods(env, "java/net/Inet4Address", gMethods, NELEM(gMethods));
+ Inet4Address_init(env);
}
diff --git a/ojluni/src/main/native/Inet6Address.c b/ojluni/src/main/native/Inet6Address.c
index 2dfc38f..ad2d978 100755
--- a/ojluni/src/main/native/Inet6Address.c
+++ b/ojluni/src/main/native/Inet6Address.c
@@ -43,13 +43,7 @@
jfieldID ia6_scopeifnamesetID;
jmethodID ia6_ctrID;
-/*
- * Class: java_net_Inet6Address
- * Method: init
- * Signature: ()V
- */
-JNIEXPORT void JNICALL
-Inet6Address_init(JNIEnv *env, jclass cls) {
+static void Inet6Address_init(JNIEnv *env) {
jclass c = (*env)->FindClass(env, "java/net/Inet6Address");
CHECK_NULL(c);
ia6_class = (*env)->NewGlobalRef(env, c);
@@ -68,10 +62,6 @@
CHECK_NULL(ia6_ctrID);
}
-static JNINativeMethod gMethods[] = {
- NATIVE_METHOD(Inet6Address, init, "()V"),
-};
-
void register_java_net_Inet6Address(JNIEnv* env) {
- jniRegisterNativeMethods(env, "java/net/Inet6Address", gMethods, NELEM(gMethods));
+ Inet6Address_init(env);
}
diff --git a/ojluni/src/main/native/InetAddress.c b/ojluni/src/main/native/InetAddress.c
index ef76ed8..0f0fefe 100755
--- a/ojluni/src/main/native/InetAddress.c
+++ b/ojluni/src/main/native/InetAddress.c
@@ -42,13 +42,7 @@
jfieldID iac_familyID;
jfieldID iac_hostNameID;
-/*
- * Class: java_net_InetAddress
- * Method: init
- * Signature: ()V
- */
-JNIEXPORT void JNICALL
-InetAddress_init(JNIEnv *env, jclass cls) {
+static void InetAddress_init(JNIEnv *env) {
jclass c = (*env)->FindClass(env,"java/net/InetAddress");
CHECK_NULL(c);
ia_class = (*env)->NewGlobalRef(env, c);
@@ -67,10 +61,6 @@
CHECK_NULL(iac_hostNameID);
}
-static JNINativeMethod gMethods[] = {
- NATIVE_METHOD(InetAddress, init, "()V"),
-};
-
void register_java_net_InetAddress(JNIEnv* env) {
- jniRegisterNativeMethods(env, "java/net/InetAddress", gMethods, NELEM(gMethods));
+ InetAddress_init(env);
}
diff --git a/ojluni/src/main/native/NetworkInterface.c b/ojluni/src/main/native/NetworkInterface.c
index a147dd0..d9dcff2 100755
--- a/ojluni/src/main/native/NetworkInterface.c
+++ b/ojluni/src/main/native/NetworkInterface.c
@@ -125,13 +125,7 @@
/******************* Java entry points *****************************/
-/*
- * Class: java_net_NetworkInterface
- * Method: init
- * Signature: ()V
- */
-JNIEXPORT void JNICALL
-NetworkInterface_init(JNIEnv *env, jclass cls) {
+static void NetworkInterface_init(JNIEnv *env) {
ni_class = (*env)->FindClass(env,"java/net/NetworkInterface");
ni_class = (*env)->NewGlobalRef(env, ni_class);
ni_nameID = (*env)->GetFieldID(env, ni_class,"name", "Ljava/lang/String;");
@@ -1080,10 +1074,8 @@
NATIVE_METHOD(NetworkInterface, getByInetAddress0, "(Ljava/net/InetAddress;)Ljava/net/NetworkInterface;"),
NATIVE_METHOD(NetworkInterface, getByIndex0, "(I)Ljava/net/NetworkInterface;"),
NATIVE_METHOD(NetworkInterface, getByName0, "(Ljava/lang/String;)Ljava/net/NetworkInterface;"),
- NATIVE_METHOD(NetworkInterface, init, "()V"),
-
};
void register_java_net_NetworkInterface(JNIEnv* env) {
- jniRegisterNativeMethods(env, "java/net/NetworkInterface", gMethods, NELEM(gMethods));
+ NetworkInterface_init(env);
}
diff --git a/ojluni/src/main/native/PlainDatagramSocketImpl.c b/ojluni/src/main/native/PlainDatagramSocketImpl.c
index 1b1e3f6..c7b753e 100755
--- a/ojluni/src/main/native/PlainDatagramSocketImpl.c
+++ b/ojluni/src/main/native/PlainDatagramSocketImpl.c
@@ -168,11 +168,6 @@
IO_fd_fdID = NET_GetFileDescriptorID(env);
CHECK_NULL(IO_fd_fdID);
- InetAddress_init(env, 0);
- Inet4Address_init(env, 0);
- Inet6Address_init(env, 0);
- NetworkInterface_init(env, 0);
-
#ifdef __linux__
#ifdef AF_INET6
pdsi_multicastInterfaceID = (*env)->GetFieldID(env, cls, "multicastInterface", "I");
diff --git a/ojluni/src/main/native/PlainSocketImpl.c b/ojluni/src/main/native/PlainSocketImpl.c
index db25104..521a6ef 100755
--- a/ojluni/src/main/native/PlainSocketImpl.c
+++ b/ojluni/src/main/native/PlainSocketImpl.c
@@ -98,17 +98,8 @@
return (*env)->GetIntField(env, fdObj, IO_fd_fdID);
}
-/*
- * The initroto function is called whenever PlainSocketImpl is
- * loaded, to cache fieldIds for efficiency. This is called everytime
- * the Java class is loaded.
- *
- * Class: java_net_PlainSocketImpl
- * Method: initProto
- * Signature: ()V
- */
-JNIEXPORT void JNICALL
-PlainSocketImpl_initProto(JNIEnv *env, jclass cls) {
+static void PlainSocketImpl_initProto(JNIEnv *env) {
+ jclass cls = (*env)->FindClass(env, "java/net/PlainSocketImpl");
psi_fdID = (*env)->GetFieldID(env, cls , "fd",
"Ljava/io/FileDescriptor;");
CHECK_NULL(psi_fdID);
@@ -1091,9 +1082,9 @@
NATIVE_METHOD(PlainSocketImpl, socketBind, "(Ljava/net/InetAddress;I)V"),
NATIVE_METHOD(PlainSocketImpl, socketConnect, "(Ljava/net/InetAddress;II)V"),
NATIVE_METHOD(PlainSocketImpl, socketCreate, "(Z)V"),
- NATIVE_METHOD(PlainSocketImpl, initProto, "()V"),
};
void register_java_net_PlainSocketImpl(JNIEnv* env) {
jniRegisterNativeMethods(env, "java/net/PlainSocketImpl", gMethods, NELEM(gMethods));
+ PlainSocketImpl_initProto(env);
}
diff --git a/ojluni/src/main/native/Register.cpp b/ojluni/src/main/native/Register.cpp
index 8e522d6..f1eb490 100644
--- a/ojluni/src/main/native/Register.cpp
+++ b/ojluni/src/main/native/Register.cpp
@@ -116,6 +116,19 @@
register_sun_nio_ch_NativeThread(env);
register_sun_nio_ch_FileKey(env);
register_java_io_ObjectStreamClass(env);
+ register_java_lang_Character(env);
+ register_java_lang_Float(env);
+ register_java_lang_Double(env);
+ register_java_lang_StrictMath(env);
+ register_java_lang_Math(env);
+ register_java_lang_ProcessEnvironment(env);
+ register_java_lang_Runtime(env);
+ register_java_lang_System(env);
+ register_java_lang_Shutdown(env);
+ register_java_lang_UNIXProcess(env);
+ // register_java_net_InetAddress depends on java_lang_Float & Math being
+ // fully registered (getMethodId on InetAddress class triggers its
+ // <clinit> which depends on java.lang.Float)
register_java_net_InetAddress(env);
register_java_net_Inet4Address(env);
register_java_net_Inet6Address(env);
@@ -127,16 +140,6 @@
register_java_net_SocketInputStream(env);
register_java_net_SocketOutputStream(env);
register_java_nio_Bits(env);
- register_java_lang_Character(env);
- register_java_lang_Float(env);
- register_java_lang_Double(env);
- register_java_lang_StrictMath(env);
- register_java_lang_Math(env);
- register_java_lang_ProcessEnvironment(env);
- register_java_lang_Runtime(env);
- register_java_lang_System(env);
- register_java_lang_Shutdown(env);
- register_java_lang_UNIXProcess(env);
register_java_util_prefs_FileSystemPreferences(env);
register_sun_nio_ch_ServerSocketChannelImpl(env);
register_sun_nio_ch_SocketChannelImpl(env);
diff --git a/ojluni/src/main/native/java_net_PlainSocketImpl.h b/ojluni/src/main/native/java_net_PlainSocketImpl.h
index 22bd59e..a7c14c5 100644
--- a/ojluni/src/main/native/java_net_PlainSocketImpl.h
+++ b/ojluni/src/main/native/java_net_PlainSocketImpl.h
@@ -102,13 +102,6 @@
JNIEXPORT void JNICALL PlainSocketImpl_socketShutdown
(JNIEnv *, jobject, jint);
-/*
- * Class: java_net_PlainSocketImpl
- * Method: initProto
- * Signature: ()V
- */
-JNIEXPORT void JNICALL PlainSocketImpl_initProto
- (JNIEnv *, jclass);
/*
* Class: java_net_PlainSocketImpl
diff --git a/ojluni/src/main/native/net_util.c b/ojluni/src/main/native/net_util.c
index c3acf0c..a656ed3 100755
--- a/ojluni/src/main/native/net_util.c
+++ b/ojluni/src/main/native/net_util.c
@@ -62,17 +62,6 @@
return JNI_VERSION_1_2;
}
-static int initialized = 0;
-
-static void initInetAddrs(JNIEnv *env) {
- if (!initialized) {
- InetAddress_init(env, 0);
- Inet4Address_init(env, 0);
- Inet6Address_init(env, 0);
- initialized = 1;
- }
-}
-
/* The address, and family fields used to be in InetAddress
* but are now in an implementation object. So, there is an extra
* level of indirection to access them now.
@@ -85,28 +74,24 @@
void setInetAddress_addr(JNIEnv *env, jobject iaObj, int address) {
jobject holder;
- initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
(*env)->SetIntField(env, holder, iac_addressID, address);
}
void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) {
jobject holder;
- initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
(*env)->SetIntField(env, holder, iac_familyID, family);
}
void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) {
jobject holder;
- initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
(*env)->SetObjectField(env, holder, iac_hostNameID, host);
}
int getInetAddress_addr(JNIEnv *env, jobject iaObj) {
jobject holder;
- initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
return (*env)->GetIntField(env, holder, iac_addressID);
}
@@ -114,14 +99,12 @@
int getInetAddress_family(JNIEnv *env, jobject iaObj) {
jobject holder;
- initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
return (*env)->GetIntField(env, holder, iac_familyID);
}
jobject getInetAddress_hostName(JNIEnv *env, jobject iaObj) {
jobject holder;
- initInetAddrs(env);
holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
return (*env)->GetObjectField(env, holder, iac_hostNameID);
}
@@ -129,7 +112,6 @@
JNIEXPORT jobject JNICALL
NET_SockaddrToInetAddress(JNIEnv *env, struct sockaddr *him, int *port) {
jobject iaObj;
- initInetAddrs(env);
#ifdef AF_INET6
if (him->sa_family == AF_INET6) {
jbyteArray ipaddress;
diff --git a/ojluni/src/main/native/net_util.h b/ojluni/src/main/native/net_util.h
index 61302e2f..74e8089 100755
--- a/ojluni/src/main/native/net_util.h
+++ b/ojluni/src/main/native/net_util.h
@@ -103,10 +103,6 @@
/************************************************************************
* Utilities
*/
-JNIEXPORT void JNICALL InetAddress_init(JNIEnv *env, jclass cls);
-JNIEXPORT void JNICALL Inet4Address_init(JNIEnv *env, jclass cls);
-JNIEXPORT void JNICALL Inet6Address_init(JNIEnv *env, jclass cls);
-JNIEXPORT void JNICALL NetworkInterface_init(JNIEnv *env, jclass cls);
JNIEXPORT void JNICALL NET_ThrowNew(JNIEnv *env, int errorNum, char *msg);
int NET_GetError();