3487 }
3488
3489
3490 void java_lang_boxing_object::print(BasicType type, jvalue* value, outputStream* st) {
3491 switch (type) {
3492 case T_BOOLEAN: st->print("%s", value->z ? "true" : "false"); break;
3493 case T_CHAR: st->print("%d", value->c); break;
3494 case T_BYTE: st->print("%d", value->b); break;
3495 case T_SHORT: st->print("%d", value->s); break;
3496 case T_INT: st->print("%d", value->i); break;
3497 case T_LONG: st->print(JLONG_FORMAT, value->j); break;
3498 case T_FLOAT: st->print("%f", value->f); break;
3499 case T_DOUBLE: st->print("%lf", value->d); break;
3500 default: st->print("type %d?", type); break;
3501 }
3502 }
3503
3504 // Support for java_lang_ref_Reference
3505
3506 bool java_lang_ref_Reference::is_referent_field(oop obj, ptrdiff_t offset) {
3507 assert(!oopDesc::is_null(obj), "sanity");
3508 if (offset != java_lang_ref_Reference::referent_offset) {
3509 return false;
3510 }
3511
3512 Klass* k = obj->klass();
3513 if (!k->is_instance_klass()) {
3514 return false;
3515 }
3516
3517 InstanceKlass* ik = InstanceKlass::cast(obj->klass());
3518 bool is_reference = ik->reference_type() != REF_NONE;
3519 assert(!is_reference || ik->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
3520 return is_reference;
3521 }
3522
3523 // Support for java_lang_ref_SoftReference
3524 //
3525
3526 #define SOFTREFERENCE_FIELDS_DO(macro) \
3527 macro(timestamp_offset, k, "timestamp", long_signature, false); \
4114
4115 void java_lang_System::compute_offsets() {
4116 InstanceKlass* k = SystemDictionary::System_klass();
4117 SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
4118 }
4119
4120 #if INCLUDE_CDS
4121 void java_lang_System::serialize(SerializeClosure* f) {
4122 SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
4123 }
4124 #endif
4125
4126 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
4127 int java_lang_System::out_offset_in_bytes() { return static_out_offset; }
4128 int java_lang_System::err_offset_in_bytes() { return static_err_offset; }
4129
4130
4131 bool java_lang_System::has_security_manager() {
4132 InstanceKlass* ik = SystemDictionary::System_klass();
4133 oop base = ik->static_field_base_raw();
4134 return !oopDesc::is_null(base->obj_field(static_security_offset));
4135 }
4136
4137 int java_lang_Class::_klass_offset;
4138 int java_lang_Class::_array_klass_offset;
4139 int java_lang_Class::_oop_size_offset;
4140 int java_lang_Class::_static_oop_field_count_offset;
4141 int java_lang_Class::_class_loader_offset;
4142 int java_lang_Class::_module_offset;
4143 int java_lang_Class::_protection_domain_offset;
4144 int java_lang_Class::_component_mirror_offset;
4145 int java_lang_Class::_init_lock_offset;
4146 int java_lang_Class::_signers_offset;
4147 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
4148 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
4149 int java_lang_Throwable::backtrace_offset;
4150 int java_lang_Throwable::detailMessage_offset;
4151 int java_lang_Throwable::stackTrace_offset;
4152 int java_lang_Throwable::depth_offset;
4153 int java_lang_Throwable::static_unassigned_stacktrace_offset;
4154 int java_lang_reflect_AccessibleObject::override_offset;
|
3487 }
3488
3489
3490 void java_lang_boxing_object::print(BasicType type, jvalue* value, outputStream* st) {
3491 switch (type) {
3492 case T_BOOLEAN: st->print("%s", value->z ? "true" : "false"); break;
3493 case T_CHAR: st->print("%d", value->c); break;
3494 case T_BYTE: st->print("%d", value->b); break;
3495 case T_SHORT: st->print("%d", value->s); break;
3496 case T_INT: st->print("%d", value->i); break;
3497 case T_LONG: st->print(JLONG_FORMAT, value->j); break;
3498 case T_FLOAT: st->print("%f", value->f); break;
3499 case T_DOUBLE: st->print("%lf", value->d); break;
3500 default: st->print("type %d?", type); break;
3501 }
3502 }
3503
3504 // Support for java_lang_ref_Reference
3505
3506 bool java_lang_ref_Reference::is_referent_field(oop obj, ptrdiff_t offset) {
3507 assert(obj != NULL, "sanity");
3508 if (offset != java_lang_ref_Reference::referent_offset) {
3509 return false;
3510 }
3511
3512 Klass* k = obj->klass();
3513 if (!k->is_instance_klass()) {
3514 return false;
3515 }
3516
3517 InstanceKlass* ik = InstanceKlass::cast(obj->klass());
3518 bool is_reference = ik->reference_type() != REF_NONE;
3519 assert(!is_reference || ik->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
3520 return is_reference;
3521 }
3522
3523 // Support for java_lang_ref_SoftReference
3524 //
3525
3526 #define SOFTREFERENCE_FIELDS_DO(macro) \
3527 macro(timestamp_offset, k, "timestamp", long_signature, false); \
4114
4115 void java_lang_System::compute_offsets() {
4116 InstanceKlass* k = SystemDictionary::System_klass();
4117 SYSTEM_FIELDS_DO(FIELD_COMPUTE_OFFSET);
4118 }
4119
4120 #if INCLUDE_CDS
4121 void java_lang_System::serialize(SerializeClosure* f) {
4122 SYSTEM_FIELDS_DO(FIELD_SERIALIZE_OFFSET);
4123 }
4124 #endif
4125
4126 int java_lang_System::in_offset_in_bytes() { return static_in_offset; }
4127 int java_lang_System::out_offset_in_bytes() { return static_out_offset; }
4128 int java_lang_System::err_offset_in_bytes() { return static_err_offset; }
4129
4130
4131 bool java_lang_System::has_security_manager() {
4132 InstanceKlass* ik = SystemDictionary::System_klass();
4133 oop base = ik->static_field_base_raw();
4134 return base->obj_field(static_security_offset) != NULL;
4135 }
4136
4137 int java_lang_Class::_klass_offset;
4138 int java_lang_Class::_array_klass_offset;
4139 int java_lang_Class::_oop_size_offset;
4140 int java_lang_Class::_static_oop_field_count_offset;
4141 int java_lang_Class::_class_loader_offset;
4142 int java_lang_Class::_module_offset;
4143 int java_lang_Class::_protection_domain_offset;
4144 int java_lang_Class::_component_mirror_offset;
4145 int java_lang_Class::_init_lock_offset;
4146 int java_lang_Class::_signers_offset;
4147 GrowableArray<Klass*>* java_lang_Class::_fixup_mirror_list = NULL;
4148 GrowableArray<Klass*>* java_lang_Class::_fixup_module_field_list = NULL;
4149 int java_lang_Throwable::backtrace_offset;
4150 int java_lang_Throwable::detailMessage_offset;
4151 int java_lang_Throwable::stackTrace_offset;
4152 int java_lang_Throwable::depth_offset;
4153 int java_lang_Throwable::static_unassigned_stacktrace_offset;
4154 int java_lang_reflect_AccessibleObject::override_offset;
|