--- a/hotspot/src/share/vm/runtime/fieldDescriptor.cpp Fri May 18 14:57:28 2012 -0700
+++ b/hotspot/src/share/vm/runtime/fieldDescriptor.cpp Mon May 21 14:10:35 2012 -0400
@@ -28,6 +28,7 @@
#include "memory/resourceArea.hpp"
#include "memory/universe.inline.hpp"
#include "oops/instanceKlass.hpp"
+#include "oops/fieldStreams.hpp"
#include "runtime/fieldDescriptor.hpp"
#include "runtime/handles.inline.hpp"
#include "runtime/signature.hpp"
@@ -37,6 +38,20 @@
return instanceKlass::cast(_cp->pool_holder())->class_loader();
}
+Symbol* fieldDescriptor::generic_signature() const {
+ int idx = 0;
+ instanceKlass* ik = instanceKlass::cast(field_holder());
+ for (AllFieldStream fs(ik); !fs.done(); fs.next()) {
+ if (idx == _index) {
+ return fs.generic_signature();
+ } else {
+ idx ++;
+ }
+ }
+ assert(false, "should never happen");
+ return NULL;
+}
+
typeArrayOop fieldDescriptor::annotations() const {
instanceKlass* ik = instanceKlass::cast(field_holder());
objArrayOop md = ik->fields_annotations();