Sat, 05 Oct 2013 03:14:53 +0200
Merge
1.1 --- a/src/share/vm/prims/jvm.cpp Sat Oct 05 00:53:02 2013 +0200 1.2 +++ b/src/share/vm/prims/jvm.cpp Sat Oct 05 03:14:53 2013 +0200 1.3 @@ -3954,248 +3954,6 @@ 1.4 } 1.5 1.6 1.7 -// Serialization 1.8 -JVM_ENTRY(void, JVM_SetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, 1.9 - jlongArray fieldIDs, jcharArray typecodes, jbyteArray data)) 1.10 - assert(!JDK_Version::is_gte_jdk14x_version(), "should only be used in 1.3.1 and earlier"); 1.11 - 1.12 - typeArrayOop tcodes = typeArrayOop(JNIHandles::resolve(typecodes)); 1.13 - typeArrayOop dbuf = typeArrayOop(JNIHandles::resolve(data)); 1.14 - typeArrayOop fids = typeArrayOop(JNIHandles::resolve(fieldIDs)); 1.15 - oop o = JNIHandles::resolve(obj); 1.16 - 1.17 - if (o == NULL || fids == NULL || dbuf == NULL || tcodes == NULL) { 1.18 - THROW(vmSymbols::java_lang_NullPointerException()); 1.19 - } 1.20 - 1.21 - jsize nfids = fids->length(); 1.22 - if (nfids == 0) return; 1.23 - 1.24 - if (tcodes->length() < nfids) { 1.25 - THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); 1.26 - } 1.27 - 1.28 - jsize off = 0; 1.29 - /* loop through fields, setting values */ 1.30 - for (jsize i = 0; i < nfids; i++) { 1.31 - jfieldID fid = (jfieldID)(intptr_t) fids->long_at(i); 1.32 - int field_offset; 1.33 - if (fid != NULL) { 1.34 - // NULL is a legal value for fid, but retrieving the field offset 1.35 - // trigger assertion in that case 1.36 - field_offset = jfieldIDWorkaround::from_instance_jfieldID(o->klass(), fid); 1.37 - } 1.38 - 1.39 - switch (tcodes->char_at(i)) { 1.40 - case 'Z': 1.41 - if (fid != NULL) { 1.42 - jboolean val = (dbuf->byte_at(off) != 0) ? JNI_TRUE : JNI_FALSE; 1.43 - o->bool_field_put(field_offset, val); 1.44 - } 1.45 - off++; 1.46 - break; 1.47 - 1.48 - case 'B': 1.49 - if (fid != NULL) { 1.50 - o->byte_field_put(field_offset, dbuf->byte_at(off)); 1.51 - } 1.52 - off++; 1.53 - break; 1.54 - 1.55 - case 'C': 1.56 - if (fid != NULL) { 1.57 - jchar val = ((dbuf->byte_at(off + 0) & 0xFF) << 8) 1.58 - + ((dbuf->byte_at(off + 1) & 0xFF) << 0); 1.59 - o->char_field_put(field_offset, val); 1.60 - } 1.61 - off += 2; 1.62 - break; 1.63 - 1.64 - case 'S': 1.65 - if (fid != NULL) { 1.66 - jshort val = ((dbuf->byte_at(off + 0) & 0xFF) << 8) 1.67 - + ((dbuf->byte_at(off + 1) & 0xFF) << 0); 1.68 - o->short_field_put(field_offset, val); 1.69 - } 1.70 - off += 2; 1.71 - break; 1.72 - 1.73 - case 'I': 1.74 - if (fid != NULL) { 1.75 - jint ival = ((dbuf->byte_at(off + 0) & 0xFF) << 24) 1.76 - + ((dbuf->byte_at(off + 1) & 0xFF) << 16) 1.77 - + ((dbuf->byte_at(off + 2) & 0xFF) << 8) 1.78 - + ((dbuf->byte_at(off + 3) & 0xFF) << 0); 1.79 - o->int_field_put(field_offset, ival); 1.80 - } 1.81 - off += 4; 1.82 - break; 1.83 - 1.84 - case 'F': 1.85 - if (fid != NULL) { 1.86 - jint ival = ((dbuf->byte_at(off + 0) & 0xFF) << 24) 1.87 - + ((dbuf->byte_at(off + 1) & 0xFF) << 16) 1.88 - + ((dbuf->byte_at(off + 2) & 0xFF) << 8) 1.89 - + ((dbuf->byte_at(off + 3) & 0xFF) << 0); 1.90 - jfloat fval = (*int_bits_to_float_fn)(env, NULL, ival); 1.91 - o->float_field_put(field_offset, fval); 1.92 - } 1.93 - off += 4; 1.94 - break; 1.95 - 1.96 - case 'J': 1.97 - if (fid != NULL) { 1.98 - jlong lval = (((jlong) dbuf->byte_at(off + 0) & 0xFF) << 56) 1.99 - + (((jlong) dbuf->byte_at(off + 1) & 0xFF) << 48) 1.100 - + (((jlong) dbuf->byte_at(off + 2) & 0xFF) << 40) 1.101 - + (((jlong) dbuf->byte_at(off + 3) & 0xFF) << 32) 1.102 - + (((jlong) dbuf->byte_at(off + 4) & 0xFF) << 24) 1.103 - + (((jlong) dbuf->byte_at(off + 5) & 0xFF) << 16) 1.104 - + (((jlong) dbuf->byte_at(off + 6) & 0xFF) << 8) 1.105 - + (((jlong) dbuf->byte_at(off + 7) & 0xFF) << 0); 1.106 - o->long_field_put(field_offset, lval); 1.107 - } 1.108 - off += 8; 1.109 - break; 1.110 - 1.111 - case 'D': 1.112 - if (fid != NULL) { 1.113 - jlong lval = (((jlong) dbuf->byte_at(off + 0) & 0xFF) << 56) 1.114 - + (((jlong) dbuf->byte_at(off + 1) & 0xFF) << 48) 1.115 - + (((jlong) dbuf->byte_at(off + 2) & 0xFF) << 40) 1.116 - + (((jlong) dbuf->byte_at(off + 3) & 0xFF) << 32) 1.117 - + (((jlong) dbuf->byte_at(off + 4) & 0xFF) << 24) 1.118 - + (((jlong) dbuf->byte_at(off + 5) & 0xFF) << 16) 1.119 - + (((jlong) dbuf->byte_at(off + 6) & 0xFF) << 8) 1.120 - + (((jlong) dbuf->byte_at(off + 7) & 0xFF) << 0); 1.121 - jdouble dval = (*long_bits_to_double_fn)(env, NULL, lval); 1.122 - o->double_field_put(field_offset, dval); 1.123 - } 1.124 - off += 8; 1.125 - break; 1.126 - 1.127 - default: 1.128 - // Illegal typecode 1.129 - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "illegal typecode"); 1.130 - } 1.131 - } 1.132 -JVM_END 1.133 - 1.134 - 1.135 -JVM_ENTRY(void, JVM_GetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, 1.136 - jlongArray fieldIDs, jcharArray typecodes, jbyteArray data)) 1.137 - assert(!JDK_Version::is_gte_jdk14x_version(), "should only be used in 1.3.1 and earlier"); 1.138 - 1.139 - typeArrayOop tcodes = typeArrayOop(JNIHandles::resolve(typecodes)); 1.140 - typeArrayOop dbuf = typeArrayOop(JNIHandles::resolve(data)); 1.141 - typeArrayOop fids = typeArrayOop(JNIHandles::resolve(fieldIDs)); 1.142 - oop o = JNIHandles::resolve(obj); 1.143 - 1.144 - if (o == NULL || fids == NULL || dbuf == NULL || tcodes == NULL) { 1.145 - THROW(vmSymbols::java_lang_NullPointerException()); 1.146 - } 1.147 - 1.148 - jsize nfids = fids->length(); 1.149 - if (nfids == 0) return; 1.150 - 1.151 - if (tcodes->length() < nfids) { 1.152 - THROW(vmSymbols::java_lang_ArrayIndexOutOfBoundsException()); 1.153 - } 1.154 - 1.155 - /* loop through fields, fetching values */ 1.156 - jsize off = 0; 1.157 - for (jsize i = 0; i < nfids; i++) { 1.158 - jfieldID fid = (jfieldID)(intptr_t) fids->long_at(i); 1.159 - if (fid == NULL) { 1.160 - THROW(vmSymbols::java_lang_NullPointerException()); 1.161 - } 1.162 - int field_offset = jfieldIDWorkaround::from_instance_jfieldID(o->klass(), fid); 1.163 - 1.164 - switch (tcodes->char_at(i)) { 1.165 - case 'Z': 1.166 - { 1.167 - jboolean val = o->bool_field(field_offset); 1.168 - dbuf->byte_at_put(off++, (val != 0) ? 1 : 0); 1.169 - } 1.170 - break; 1.171 - 1.172 - case 'B': 1.173 - dbuf->byte_at_put(off++, o->byte_field(field_offset)); 1.174 - break; 1.175 - 1.176 - case 'C': 1.177 - { 1.178 - jchar val = o->char_field(field_offset); 1.179 - dbuf->byte_at_put(off++, (val >> 8) & 0xFF); 1.180 - dbuf->byte_at_put(off++, (val >> 0) & 0xFF); 1.181 - } 1.182 - break; 1.183 - 1.184 - case 'S': 1.185 - { 1.186 - jshort val = o->short_field(field_offset); 1.187 - dbuf->byte_at_put(off++, (val >> 8) & 0xFF); 1.188 - dbuf->byte_at_put(off++, (val >> 0) & 0xFF); 1.189 - } 1.190 - break; 1.191 - 1.192 - case 'I': 1.193 - { 1.194 - jint val = o->int_field(field_offset); 1.195 - dbuf->byte_at_put(off++, (val >> 24) & 0xFF); 1.196 - dbuf->byte_at_put(off++, (val >> 16) & 0xFF); 1.197 - dbuf->byte_at_put(off++, (val >> 8) & 0xFF); 1.198 - dbuf->byte_at_put(off++, (val >> 0) & 0xFF); 1.199 - } 1.200 - break; 1.201 - 1.202 - case 'F': 1.203 - { 1.204 - jfloat fval = o->float_field(field_offset); 1.205 - jint ival = (*float_to_int_bits_fn)(env, NULL, fval); 1.206 - dbuf->byte_at_put(off++, (ival >> 24) & 0xFF); 1.207 - dbuf->byte_at_put(off++, (ival >> 16) & 0xFF); 1.208 - dbuf->byte_at_put(off++, (ival >> 8) & 0xFF); 1.209 - dbuf->byte_at_put(off++, (ival >> 0) & 0xFF); 1.210 - } 1.211 - break; 1.212 - 1.213 - case 'J': 1.214 - { 1.215 - jlong val = o->long_field(field_offset); 1.216 - dbuf->byte_at_put(off++, (val >> 56) & 0xFF); 1.217 - dbuf->byte_at_put(off++, (val >> 48) & 0xFF); 1.218 - dbuf->byte_at_put(off++, (val >> 40) & 0xFF); 1.219 - dbuf->byte_at_put(off++, (val >> 32) & 0xFF); 1.220 - dbuf->byte_at_put(off++, (val >> 24) & 0xFF); 1.221 - dbuf->byte_at_put(off++, (val >> 16) & 0xFF); 1.222 - dbuf->byte_at_put(off++, (val >> 8) & 0xFF); 1.223 - dbuf->byte_at_put(off++, (val >> 0) & 0xFF); 1.224 - } 1.225 - break; 1.226 - 1.227 - case 'D': 1.228 - { 1.229 - jdouble dval = o->double_field(field_offset); 1.230 - jlong lval = (*double_to_long_bits_fn)(env, NULL, dval); 1.231 - dbuf->byte_at_put(off++, (lval >> 56) & 0xFF); 1.232 - dbuf->byte_at_put(off++, (lval >> 48) & 0xFF); 1.233 - dbuf->byte_at_put(off++, (lval >> 40) & 0xFF); 1.234 - dbuf->byte_at_put(off++, (lval >> 32) & 0xFF); 1.235 - dbuf->byte_at_put(off++, (lval >> 24) & 0xFF); 1.236 - dbuf->byte_at_put(off++, (lval >> 16) & 0xFF); 1.237 - dbuf->byte_at_put(off++, (lval >> 8) & 0xFF); 1.238 - dbuf->byte_at_put(off++, (lval >> 0) & 0xFF); 1.239 - } 1.240 - break; 1.241 - 1.242 - default: 1.243 - // Illegal typecode 1.244 - THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(), "illegal typecode"); 1.245 - } 1.246 - } 1.247 -JVM_END 1.248 - 1.249 1.250 // Shared JNI/JVM entry points ////////////////////////////////////////////////////////////// 1.251
2.1 --- a/src/share/vm/prims/jvm_misc.hpp Sat Oct 05 00:53:02 2013 +0200 2.2 +++ b/src/share/vm/prims/jvm_misc.hpp Sat Oct 05 03:14:53 2013 +0200 2.3 @@ -36,22 +36,6 @@ 2.4 void trace_class_resolution(Klass* to_class); 2.5 2.6 /* 2.7 - * Support for Serialization and RMI. Currently used by HotSpot only. 2.8 - */ 2.9 - 2.10 -extern "C" { 2.11 - 2.12 -void JNICALL 2.13 -JVM_SetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, 2.14 - jlongArray fieldIDs, jcharArray typecodes, jbyteArray data); 2.15 - 2.16 -void JNICALL 2.17 -JVM_GetPrimitiveFieldValues(JNIEnv *env, jclass cb, jobject obj, 2.18 - jlongArray fieldIDs, jcharArray typecodes, jbyteArray data); 2.19 - 2.20 -} 2.21 - 2.22 -/* 2.23 * Support for -Xcheck:jni 2.24 */ 2.25
3.1 --- a/src/share/vm/prims/nativeLookup.cpp Sat Oct 05 00:53:02 2013 +0200 3.2 +++ b/src/share/vm/prims/nativeLookup.cpp Sat Oct 05 03:14:53 2013 +0200 3.3 @@ -129,10 +129,6 @@ 3.4 #define FN_PTR(f) CAST_FROM_FN_PTR(void*, &f) 3.5 3.6 static JNINativeMethod lookup_special_native_methods[] = { 3.7 - // Next two functions only exist for compatibility with 1.3.1 and earlier. 3.8 - { CC"Java_java_io_ObjectOutputStream_getPrimitiveFieldValues", NULL, FN_PTR(JVM_GetPrimitiveFieldValues) }, // intercept ObjectOutputStream getPrimitiveFieldValues for faster serialization 3.9 - { CC"Java_java_io_ObjectInputStream_setPrimitiveFieldValues", NULL, FN_PTR(JVM_SetPrimitiveFieldValues) }, // intercept ObjectInputStream setPrimitiveFieldValues for faster serialization 3.10 - 3.11 { CC"Java_sun_misc_Unsafe_registerNatives", NULL, FN_PTR(JVM_RegisterUnsafeMethods) }, 3.12 { CC"Java_java_lang_invoke_MethodHandleNatives_registerNatives", NULL, FN_PTR(JVM_RegisterMethodHandleMethods) }, 3.13 { CC"Java_sun_misc_Perf_registerNatives", NULL, FN_PTR(JVM_RegisterPerfMethods) }, 3.14 @@ -140,9 +136,8 @@ 3.15 }; 3.16 3.17 static address lookup_special_native(char* jni_name) { 3.18 - int i = !JDK_Version::is_gte_jdk14x_version() ? 0 : 2; // see comment in lookup_special_native_methods 3.19 int count = sizeof(lookup_special_native_methods) / sizeof(JNINativeMethod); 3.20 - for (; i < count; i++) { 3.21 + for (int i = 0; i < count; i++) { 3.22 // NB: To ignore the jni prefix and jni postfix strstr is used matching. 3.23 if (strstr(jni_name, lookup_special_native_methods[i].name) != NULL) { 3.24 return CAST_FROM_FN_PTR(address, lookup_special_native_methods[i].fnPtr);