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