1.1 --- a/src/share/vm/runtime/fieldDescriptor.cpp Sat Sep 10 00:11:04 2011 -0700 1.2 +++ b/src/share/vm/runtime/fieldDescriptor.cpp Sat Sep 10 17:29:02 2011 -0700 1.3 @@ -42,59 +42,51 @@ 1.4 objArrayOop md = ik->fields_annotations(); 1.5 if (md == NULL) 1.6 return NULL; 1.7 - assert((index() % instanceKlass::next_offset) == 0, ""); 1.8 - return typeArrayOop(md->obj_at(index() / instanceKlass::next_offset)); 1.9 + return typeArrayOop(md->obj_at(index())); 1.10 } 1.11 1.12 constantTag fieldDescriptor::initial_value_tag() const { 1.13 - return constants()->tag_at(_initial_value_index); 1.14 + return constants()->tag_at(initial_value_index()); 1.15 } 1.16 1.17 jint fieldDescriptor::int_initial_value() const { 1.18 - return constants()->int_at(_initial_value_index); 1.19 + return constants()->int_at(initial_value_index()); 1.20 } 1.21 1.22 jlong fieldDescriptor::long_initial_value() const { 1.23 - return constants()->long_at(_initial_value_index); 1.24 + return constants()->long_at(initial_value_index()); 1.25 } 1.26 1.27 jfloat fieldDescriptor::float_initial_value() const { 1.28 - return constants()->float_at(_initial_value_index); 1.29 + return constants()->float_at(initial_value_index()); 1.30 } 1.31 1.32 jdouble fieldDescriptor::double_initial_value() const { 1.33 - return constants()->double_at(_initial_value_index); 1.34 + return constants()->double_at(initial_value_index()); 1.35 } 1.36 1.37 oop fieldDescriptor::string_initial_value(TRAPS) const { 1.38 - return constants()->string_at(_initial_value_index, CHECK_0); 1.39 + return constants()->string_at(initial_value_index(), CHECK_0); 1.40 } 1.41 1.42 void fieldDescriptor::initialize(klassOop k, int index) { 1.43 instanceKlass* ik = instanceKlass::cast(k); 1.44 _cp = ik->constants(); 1.45 - typeArrayOop fields = ik->fields(); 1.46 + FieldInfo* f = ik->field(index); 1.47 + assert(!f->is_internal(), "regular Java fields only"); 1.48 1.49 - assert(fields->length() % instanceKlass::next_offset == 0, "Illegal size of field array"); 1.50 - assert(fields->length() >= index + instanceKlass::next_offset, "Illegal size of field array"); 1.51 - 1.52 - _access_flags.set_field_flags(fields->ushort_at(index + instanceKlass::access_flags_offset)); 1.53 - _name_index = fields->ushort_at(index + instanceKlass::name_index_offset); 1.54 - _signature_index = fields->ushort_at(index + instanceKlass::signature_index_offset); 1.55 - _initial_value_index = fields->ushort_at(index + instanceKlass::initval_index_offset); 1.56 - guarantee(_name_index != 0 && _signature_index != 0, "bad constant pool index for fieldDescriptor"); 1.57 - _offset = ik->offset_from_fields( index ); 1.58 - _generic_signature_index = fields->ushort_at(index + instanceKlass::generic_signature_offset); 1.59 + _access_flags = accessFlags_from(f->access_flags()); 1.60 + guarantee(f->name_index() != 0 && f->signature_index() != 0, "bad constant pool index for fieldDescriptor"); 1.61 _index = index; 1.62 } 1.63 1.64 #ifndef PRODUCT 1.65 1.66 void fieldDescriptor::print_on(outputStream* st) const { 1.67 - _access_flags.print_on(st); 1.68 - constants()->symbol_at(_name_index)->print_value_on(st); 1.69 + access_flags().print_on(st); 1.70 + name()->print_value_on(st); 1.71 st->print(" "); 1.72 - constants()->symbol_at(_signature_index)->print_value_on(st); 1.73 + signature()->print_value_on(st); 1.74 st->print(" @%d ", offset()); 1.75 if (WizardMode && has_initial_value()) { 1.76 st->print("(initval ");