3485 }
3486
3487
3488 void java_lang_boxing_object::print(BasicType type, jvalue* value, outputStream* st) {
3489 switch (type) {
3490 case T_BOOLEAN: st->print("%s", value->z ? "true" : "false"); break;
3491 case T_CHAR: st->print("%d", value->c); break;
3492 case T_BYTE: st->print("%d", value->b); break;
3493 case T_SHORT: st->print("%d", value->s); break;
3494 case T_INT: st->print("%d", value->i); break;
3495 case T_LONG: st->print(JLONG_FORMAT, value->j); break;
3496 case T_FLOAT: st->print("%f", value->f); break;
3497 case T_DOUBLE: st->print("%lf", value->d); break;
3498 default: st->print("type %d?", type); break;
3499 }
3500 }
3501
3502 // Support for java_lang_ref_Reference
3503
3504 bool java_lang_ref_Reference::is_referent_field(oop obj, ptrdiff_t offset) {
3505 assert(!oopDesc::is_null(obj), "sanity");
3506 if (offset != java_lang_ref_Reference::referent_offset) {
3507 return false;
3508 }
3509
3510 Klass* k = obj->klass();
3511 if (!k->is_instance_klass()) {
3512 return false;
3513 }
3514
3515 InstanceKlass* ik = InstanceKlass::cast(obj->klass());
3516 bool is_reference = ik->reference_type() != REF_NONE;
3517 assert(!is_reference || ik->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
3518 return is_reference;
3519 }
3520
3521 // Support for java_lang_ref_SoftReference
3522 //
3523
3524 #define SOFTREFERENCE_FIELDS_DO(macro) \
3525 macro(timestamp_offset, k, "timestamp", long_signature, false); \
|
3485 }
3486
3487
3488 void java_lang_boxing_object::print(BasicType type, jvalue* value, outputStream* st) {
3489 switch (type) {
3490 case T_BOOLEAN: st->print("%s", value->z ? "true" : "false"); break;
3491 case T_CHAR: st->print("%d", value->c); break;
3492 case T_BYTE: st->print("%d", value->b); break;
3493 case T_SHORT: st->print("%d", value->s); break;
3494 case T_INT: st->print("%d", value->i); break;
3495 case T_LONG: st->print(JLONG_FORMAT, value->j); break;
3496 case T_FLOAT: st->print("%f", value->f); break;
3497 case T_DOUBLE: st->print("%lf", value->d); break;
3498 default: st->print("type %d?", type); break;
3499 }
3500 }
3501
3502 // Support for java_lang_ref_Reference
3503
3504 bool java_lang_ref_Reference::is_referent_field(oop obj, ptrdiff_t offset) {
3505 assert(obj != NULL, "sanity");
3506 if (offset != java_lang_ref_Reference::referent_offset) {
3507 return false;
3508 }
3509
3510 Klass* k = obj->klass();
3511 if (!k->is_instance_klass()) {
3512 return false;
3513 }
3514
3515 InstanceKlass* ik = InstanceKlass::cast(obj->klass());
3516 bool is_reference = ik->reference_type() != REF_NONE;
3517 assert(!is_reference || ik->is_subclass_of(SystemDictionary::Reference_klass()), "sanity");
3518 return is_reference;
3519 }
3520
3521 // Support for java_lang_ref_SoftReference
3522 //
3523
3524 #define SOFTREFERENCE_FIELDS_DO(macro) \
3525 macro(timestamp_offset, k, "timestamp", long_signature, false); \
|