src/share/vm/runtime/fieldDescriptor.cpp

Print this page




  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/systemDictionary.hpp"
  27 #include "classfile/vmSymbols.hpp"
  28 #include "memory/resourceArea.hpp"
  29 #include "memory/universe.inline.hpp"
  30 #include "oops/instanceKlass.hpp"
  31 #include "oops/fieldStreams.hpp"
  32 #include "runtime/fieldDescriptor.hpp"
  33 #include "runtime/handles.inline.hpp"
  34 #include "runtime/signature.hpp"
  35 
  36 
  37 oop fieldDescriptor::loader() const {
  38   return instanceKlass::cast(_cp->pool_holder())->class_loader();
  39 }
  40 
  41 Symbol* fieldDescriptor::generic_signature() const {




  42   int idx = 0;
  43   instanceKlass* ik = instanceKlass::cast(field_holder());
  44   for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
  45     if (idx == _index) {
  46       return fs.generic_signature();
  47     } else {
  48       idx ++;
  49     }
  50   }
  51   assert(false, "should never happen");
  52   return NULL;
  53 }
  54 
  55 typeArrayOop fieldDescriptor::annotations() const {
  56   instanceKlass* ik = instanceKlass::cast(field_holder());
  57   objArrayOop md = ik->fields_annotations();
  58   if (md == NULL)
  59     return NULL;
  60   return typeArrayOop(md->obj_at(index()));
  61 }




  22  *
  23  */
  24 
  25 #include "precompiled.hpp"
  26 #include "classfile/systemDictionary.hpp"
  27 #include "classfile/vmSymbols.hpp"
  28 #include "memory/resourceArea.hpp"
  29 #include "memory/universe.inline.hpp"
  30 #include "oops/instanceKlass.hpp"
  31 #include "oops/fieldStreams.hpp"
  32 #include "runtime/fieldDescriptor.hpp"
  33 #include "runtime/handles.inline.hpp"
  34 #include "runtime/signature.hpp"
  35 
  36 
  37 oop fieldDescriptor::loader() const {
  38   return instanceKlass::cast(_cp->pool_holder())->class_loader();
  39 }
  40 
  41 Symbol* fieldDescriptor::generic_signature() const {
  42   if (!has_generic_signature()) {
  43     return NULL;
  44   }
  45 
  46   int idx = 0;
  47   instanceKlass* ik = instanceKlass::cast(field_holder());
  48   for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
  49     if (idx == _index) {
  50       return fs.generic_signature();
  51     } else {
  52       idx ++;
  53     }
  54   }
  55   assert(false, "should never happen");
  56   return NULL;
  57 }
  58 
  59 typeArrayOop fieldDescriptor::annotations() const {
  60   instanceKlass* ik = instanceKlass::cast(field_holder());
  61   objArrayOop md = ik->fields_annotations();
  62   if (md == NULL)
  63     return NULL;
  64   return typeArrayOop(md->obj_at(index()));
  65 }