Merge

Sat, 05 Oct 2013 03:14:53 +0200

author
coleenp
date
Sat, 05 Oct 2013 03:14:53 +0200
changeset 5840
4212bfb33d76
parent 5837
3bf767171ea4
parent 5839
a1fd44b003c7
child 5841
2720ab7a0d70

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);

mercurial