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 } |