src/share/vm/runtime/fieldDescriptor.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8014013 Sdiff src/share/vm/runtime

src/share/vm/runtime/fieldDescriptor.cpp

Print this page




  80 jint fieldDescriptor::int_initial_value() const {
  81   return constants()->int_at(initial_value_index());
  82 }
  83 
  84 jlong fieldDescriptor::long_initial_value() const {
  85   return constants()->long_at(initial_value_index());
  86 }
  87 
  88 jfloat fieldDescriptor::float_initial_value() const {
  89   return constants()->float_at(initial_value_index());
  90 }
  91 
  92 jdouble fieldDescriptor::double_initial_value() const {
  93   return constants()->double_at(initial_value_index());
  94 }
  95 
  96 oop fieldDescriptor::string_initial_value(TRAPS) const {
  97   return constants()->uncached_string_at(initial_value_index(), CHECK_0);
  98 }
  99 
 100 void fieldDescriptor::initialize(InstanceKlass* ik, int index) {
 101   _cp = ik->constants();




 102   FieldInfo* f = ik->field(index);
 103   assert(!f->is_internal(), "regular Java fields only");
 104 
 105   _access_flags = accessFlags_from(f->access_flags());
 106   guarantee(f->name_index() != 0 && f->signature_index() != 0, "bad constant pool index for fieldDescriptor");
 107   _index = index;

 108 }
 109 
 110 #ifndef PRODUCT
 111 









 112 void fieldDescriptor::print_on(outputStream* st) const {
 113   access_flags().print_on(st);
 114   name()->print_value_on(st);
 115   st->print(" ");
 116   signature()->print_value_on(st);
 117   st->print(" @%d ", offset());
 118   if (WizardMode && has_initial_value()) {
 119     st->print("(initval ");
 120     constantTag t = initial_value_tag();
 121     if (t.is_int()) {
 122       st->print("int %d)", int_initial_value());
 123     } else if (t.is_long()){
 124       st->print_jlong(long_initial_value());
 125     } else if (t.is_float()){
 126       st->print("float %f)", float_initial_value());
 127     } else if (t.is_double()){
 128       st->print("double %lf)", double_initial_value());
 129     }
 130   }
 131 }




  80 jint fieldDescriptor::int_initial_value() const {
  81   return constants()->int_at(initial_value_index());
  82 }
  83 
  84 jlong fieldDescriptor::long_initial_value() const {
  85   return constants()->long_at(initial_value_index());
  86 }
  87 
  88 jfloat fieldDescriptor::float_initial_value() const {
  89   return constants()->float_at(initial_value_index());
  90 }
  91 
  92 jdouble fieldDescriptor::double_initial_value() const {
  93   return constants()->double_at(initial_value_index());
  94 }
  95 
  96 oop fieldDescriptor::string_initial_value(TRAPS) const {
  97   return constants()->uncached_string_at(initial_value_index(), CHECK_0);
  98 }
  99 
 100 void fieldDescriptor::reinitialize(InstanceKlass* ik, int index) {
 101   if (_cp.is_null() || field_holder() != ik) {
 102     _cp = constantPoolHandle(Thread::current(), ik->constants());
 103     // _cp should now reference ik's constant pool; i.e., ik is now field_holder.
 104     assert(field_holder() == ik, "must be already initialized to this class");
 105   }
 106   FieldInfo* f = ik->field(index);
 107   assert(!f->is_internal(), "regular Java fields only");
 108 
 109   _access_flags = accessFlags_from(f->access_flags());
 110   guarantee(f->name_index() != 0 && f->signature_index() != 0, "bad constant pool index for fieldDescriptor");
 111   _index = index;
 112   verify();
 113 }
 114 
 115 #ifndef PRODUCT
 116 
 117 void fieldDescriptor::verify() const {
 118   if (_cp.is_null()) {
 119     assert(_index == badInt, "constructor must be called");  // see constructor
 120   } else {
 121     assert(_index >= 0, "good index");
 122     assert(_index < field_holder()->java_fields_count(), "oob");
 123   }
 124 }
 125 
 126 void fieldDescriptor::print_on(outputStream* st) const {
 127   access_flags().print_on(st);
 128   name()->print_value_on(st);
 129   st->print(" ");
 130   signature()->print_value_on(st);
 131   st->print(" @%d ", offset());
 132   if (WizardMode && has_initial_value()) {
 133     st->print("(initval ");
 134     constantTag t = initial_value_tag();
 135     if (t.is_int()) {
 136       st->print("int %d)", int_initial_value());
 137     } else if (t.is_long()){
 138       st->print_jlong(long_initial_value());
 139     } else if (t.is_float()){
 140       st->print("float %f)", float_initial_value());
 141     } else if (t.is_double()){
 142       st->print("double %lf)", double_initial_value());
 143     }
 144   }
 145 }


src/share/vm/runtime/fieldDescriptor.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File