src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6703888 Cdiff src/share/vm/classfile/javaClasses.cpp

src/share/vm/classfile/javaClasses.cpp

Print this page

        

*** 1870,1880 **** break; case T_FLOAT: box->float_field_put(value_offset, value->f); break; case T_DOUBLE: ! box->double_field_put(value_offset, value->d); break; case T_BYTE: box->byte_field_put(value_offset, value->b); break; case T_SHORT: --- 1870,1880 ---- break; case T_FLOAT: box->float_field_put(value_offset, value->f); break; case T_DOUBLE: ! box->double_field_put(long_value_offset, value->d); break; case T_BYTE: box->byte_field_put(value_offset, value->b); break; case T_SHORT:
*** 1882,1892 **** break; case T_INT: box->int_field_put(value_offset, value->i); break; case T_LONG: ! box->long_field_put(value_offset, value->j); break; default: return NULL; } return box; --- 1882,1892 ---- break; case T_INT: box->int_field_put(value_offset, value->i); break; case T_LONG: ! box->long_field_put(long_value_offset, value->j); break; default: return NULL; } return box;
*** 1913,1923 **** break; case T_FLOAT: value->f = box->float_field(value_offset); break; case T_DOUBLE: ! value->d = box->double_field(value_offset); break; case T_BYTE: value->b = box->byte_field(value_offset); break; case T_SHORT: --- 1913,1923 ---- break; case T_FLOAT: value->f = box->float_field(value_offset); break; case T_DOUBLE: ! value->d = box->double_field(long_value_offset); break; case T_BYTE: value->b = box->byte_field(value_offset); break; case T_SHORT:
*** 1925,1935 **** break; case T_INT: value->i = box->int_field(value_offset); break; case T_LONG: ! value->j = box->long_field(value_offset); break; default: return T_ILLEGAL; } // end switch return type; --- 1925,1935 ---- break; case T_INT: value->i = box->int_field(value_offset); break; case T_LONG: ! value->j = box->long_field(long_value_offset); break; default: return T_ILLEGAL; } // end switch return type;
*** 1947,1957 **** break; case T_FLOAT: box->float_field_put(value_offset, value->f); break; case T_DOUBLE: ! box->double_field_put(value_offset, value->d); break; case T_BYTE: box->byte_field_put(value_offset, value->b); break; case T_SHORT: --- 1947,1957 ---- break; case T_FLOAT: box->float_field_put(value_offset, value->f); break; case T_DOUBLE: ! box->double_field_put(long_value_offset, value->d); break; case T_BYTE: box->byte_field_put(value_offset, value->b); break; case T_SHORT:
*** 1959,1969 **** break; case T_INT: box->int_field_put(value_offset, value->i); break; case T_LONG: ! box->long_field_put(value_offset, value->j); break; default: return T_ILLEGAL; } // end switch return type; --- 1959,1969 ---- break; case T_INT: box->int_field_put(value_offset, value->i); break; case T_LONG: ! box->long_field_put(long_value_offset, value->j); break; default: return T_ILLEGAL; } // end switch return type;
*** 2161,2170 **** --- 2161,2171 ---- int java_lang_reflect_Field::slot_offset; int java_lang_reflect_Field::modifiers_offset; int java_lang_reflect_Field::signature_offset; int java_lang_reflect_Field::annotations_offset; int java_lang_boxing_object::value_offset; + int java_lang_boxing_object::long_value_offset; int java_lang_ref_Reference::referent_offset; int java_lang_ref_Reference::queue_offset; int java_lang_ref_Reference::next_offset; int java_lang_ref_Reference::discovered_offset; int java_lang_ref_Reference::static_lock_offset;
*** 2280,2293 **** // Compute hard-coded offsets // Invoked before SystemDictionary::initialize, so pre-loaded classes // are not available to determine the offset_of_static_fields. void JavaClasses::compute_hard_coded_offsets() { const int x = heapOopSize; ! // Objects don't get allocated in the gap in the header with compressed oops ! // for these special classes because hard coded offsets can't be conditional ! // so base_offset_in_bytes() is wrong here, allocate after the header. ! const int header = sizeof(instanceOopDesc); // Do the String Class java_lang_String::value_offset = java_lang_String::hc_value_offset * x + header; java_lang_String::offset_offset = java_lang_String::hc_offset_offset * x + header; java_lang_String::count_offset = java_lang_String::offset_offset + sizeof (jint); --- 2281,2291 ---- // Compute hard-coded offsets // Invoked before SystemDictionary::initialize, so pre-loaded classes // are not available to determine the offset_of_static_fields. void JavaClasses::compute_hard_coded_offsets() { const int x = heapOopSize; ! const int header = instanceOopDesc::base_offset_in_bytes(); // Do the String Class java_lang_String::value_offset = java_lang_String::hc_value_offset * x + header; java_lang_String::offset_offset = java_lang_String::hc_offset_offset * x + header; java_lang_String::count_offset = java_lang_String::offset_offset + sizeof (jint);
*** 2306,2316 **** java_lang_Throwable::detailMessage_offset = java_lang_Throwable::hc_detailMessage_offset * x + header; java_lang_Throwable::cause_offset = java_lang_Throwable::hc_cause_offset * x + header; java_lang_Throwable::stackTrace_offset = java_lang_Throwable::hc_stackTrace_offset * x + header; // java_lang_boxing_object ! java_lang_boxing_object::value_offset = java_lang_boxing_object::hc_value_offset * x + header; // java_lang_ref_Reference: java_lang_ref_Reference::referent_offset = java_lang_ref_Reference::hc_referent_offset * x + header; java_lang_ref_Reference::queue_offset = java_lang_ref_Reference::hc_queue_offset * x + header; java_lang_ref_Reference::next_offset = java_lang_ref_Reference::hc_next_offset * x + header; --- 2304,2315 ---- java_lang_Throwable::detailMessage_offset = java_lang_Throwable::hc_detailMessage_offset * x + header; java_lang_Throwable::cause_offset = java_lang_Throwable::hc_cause_offset * x + header; java_lang_Throwable::stackTrace_offset = java_lang_Throwable::hc_stackTrace_offset * x + header; // java_lang_boxing_object ! java_lang_boxing_object::value_offset = java_lang_boxing_object::hc_value_offset + header; ! java_lang_boxing_object::long_value_offset = align_size_up((java_lang_boxing_object::hc_value_offset + header), BytesPerLong); // java_lang_ref_Reference: java_lang_ref_Reference::referent_offset = java_lang_ref_Reference::hc_referent_offset * x + header; java_lang_ref_Reference::queue_offset = java_lang_ref_Reference::hc_queue_offset * x + header; java_lang_ref_Reference::next_offset = java_lang_ref_Reference::hc_next_offset * x + header;
*** 2320,2330 **** // Artificial fields for java_lang_ref_Reference // The first field is for the discovered field added in 1.4 java_lang_ref_Reference::number_of_fake_oop_fields = 1; // java_lang_ref_SoftReference Class ! java_lang_ref_SoftReference::timestamp_offset = java_lang_ref_SoftReference::hc_timestamp_offset * x + header; // Don't multiply static fields because they are always in wordSize units java_lang_ref_SoftReference::static_clock_offset = java_lang_ref_SoftReference::hc_static_clock_offset * x; // java_lang_ClassLoader java_lang_ClassLoader::parent_offset = java_lang_ClassLoader::hc_parent_offset * x + header; --- 2319,2329 ---- // Artificial fields for java_lang_ref_Reference // The first field is for the discovered field added in 1.4 java_lang_ref_Reference::number_of_fake_oop_fields = 1; // java_lang_ref_SoftReference Class ! java_lang_ref_SoftReference::timestamp_offset = align_size_up((java_lang_ref_SoftReference::hc_timestamp_offset * x + header), BytesPerLong); // Don't multiply static fields because they are always in wordSize units java_lang_ref_SoftReference::static_clock_offset = java_lang_ref_SoftReference::hc_static_clock_offset * x; // java_lang_ClassLoader java_lang_ClassLoader::parent_offset = java_lang_ClassLoader::hc_parent_offset * x + header;
*** 2467,2476 **** --- 2466,2478 ---- bool valid = true; #define CHECK_OFFSET(klass_name, cpp_klass_name, field_name, field_sig) \ valid &= check_offset(klass_name, cpp_klass_name :: field_name ## _offset, #field_name, field_sig) + #define CHECK_LONG_OFFSET(klass_name, cpp_klass_name, field_name, field_sig) \ + valid &= check_offset(klass_name, cpp_klass_name :: long_ ## field_name ## _offset, #field_name, field_sig) + #define CHECK_STATIC_OFFSET(klass_name, cpp_klass_name, field_name, field_sig) \ valid &= check_static_offset(klass_name, cpp_klass_name :: static_ ## field_name ## _offset, #field_name, field_sig) #define CHECK_CONSTANT(klass_name, cpp_klass_name, field_name, field_sig) \ valid &= check_constant(klass_name, cpp_klass_name :: field_name, #field_name, field_sig)
*** 2499,2513 **** // Boxed primitive objects (java_lang_boxing_object) CHECK_OFFSET("java/lang/Boolean", java_lang_boxing_object, value, "Z"); CHECK_OFFSET("java/lang/Character", java_lang_boxing_object, value, "C"); CHECK_OFFSET("java/lang/Float", java_lang_boxing_object, value, "F"); ! CHECK_OFFSET("java/lang/Double", java_lang_boxing_object, value, "D"); CHECK_OFFSET("java/lang/Byte", java_lang_boxing_object, value, "B"); CHECK_OFFSET("java/lang/Short", java_lang_boxing_object, value, "S"); CHECK_OFFSET("java/lang/Integer", java_lang_boxing_object, value, "I"); ! CHECK_OFFSET("java/lang/Long", java_lang_boxing_object, value, "J"); // java.lang.ClassLoader CHECK_OFFSET("java/lang/ClassLoader", java_lang_ClassLoader, parent, "Ljava/lang/ClassLoader;"); --- 2501,2515 ---- // Boxed primitive objects (java_lang_boxing_object) CHECK_OFFSET("java/lang/Boolean", java_lang_boxing_object, value, "Z"); CHECK_OFFSET("java/lang/Character", java_lang_boxing_object, value, "C"); CHECK_OFFSET("java/lang/Float", java_lang_boxing_object, value, "F"); ! CHECK_LONG_OFFSET("java/lang/Double", java_lang_boxing_object, value, "D"); CHECK_OFFSET("java/lang/Byte", java_lang_boxing_object, value, "B"); CHECK_OFFSET("java/lang/Short", java_lang_boxing_object, value, "S"); CHECK_OFFSET("java/lang/Integer", java_lang_boxing_object, value, "I"); ! CHECK_LONG_OFFSET("java/lang/Long", java_lang_boxing_object, value, "J"); // java.lang.ClassLoader CHECK_OFFSET("java/lang/ClassLoader", java_lang_ClassLoader, parent, "Ljava/lang/ClassLoader;");
src/share/vm/classfile/javaClasses.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File