1807
1808 if (k() == SystemDictionary::Throwable_klass()) {
1809 num_fields--;
1810 skip_backtrace = true;
1811 }
1812 }
1813
1814 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_Field_klass(), num_fields, CHECK_NULL);
1815 objArrayHandle result (THREAD, r);
1816
1817 int out_idx = 0;
1818 fieldDescriptor fd;
1819 for (JavaFieldStream fs(k); !fs.done(); fs.next()) {
1820 if (skip_backtrace) {
1821 // 4496456 skip java.lang.Throwable.backtrace
1822 int offset = fs.offset();
1823 if (offset == java_lang_Throwable::get_backtrace_offset()) continue;
1824 }
1825
1826 if (!publicOnly || fs.access_flags().is_public()) {
1827 fd.initialize(k(), fs.index());
1828 oop field = Reflection::new_field(&fd, UseNewReflection, CHECK_NULL);
1829 result->obj_at_put(out_idx, field);
1830 ++out_idx;
1831 }
1832 }
1833 assert(out_idx == num_fields, "just checking");
1834 return (jobjectArray) JNIHandles::make_local(env, result());
1835 }
1836 JVM_END
1837
1838 JVM_ENTRY(jobjectArray, JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, jboolean publicOnly))
1839 {
1840 JVMWrapper("JVM_GetClassDeclaredMethods");
1841 JvmtiVMObjectAllocEventCollector oam;
1842
1843 // Exclude primitive types and array types
1844 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass))
1845 || java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_array()) {
1846 // Return empty array
1847 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Method_klass(), 0, CHECK_NULL);
|
1807
1808 if (k() == SystemDictionary::Throwable_klass()) {
1809 num_fields--;
1810 skip_backtrace = true;
1811 }
1812 }
1813
1814 objArrayOop r = oopFactory::new_objArray(SystemDictionary::reflect_Field_klass(), num_fields, CHECK_NULL);
1815 objArrayHandle result (THREAD, r);
1816
1817 int out_idx = 0;
1818 fieldDescriptor fd;
1819 for (JavaFieldStream fs(k); !fs.done(); fs.next()) {
1820 if (skip_backtrace) {
1821 // 4496456 skip java.lang.Throwable.backtrace
1822 int offset = fs.offset();
1823 if (offset == java_lang_Throwable::get_backtrace_offset()) continue;
1824 }
1825
1826 if (!publicOnly || fs.access_flags().is_public()) {
1827 fd.reinitialize(k(), fs.index());
1828 oop field = Reflection::new_field(&fd, UseNewReflection, CHECK_NULL);
1829 result->obj_at_put(out_idx, field);
1830 ++out_idx;
1831 }
1832 }
1833 assert(out_idx == num_fields, "just checking");
1834 return (jobjectArray) JNIHandles::make_local(env, result());
1835 }
1836 JVM_END
1837
1838 JVM_ENTRY(jobjectArray, JVM_GetClassDeclaredMethods(JNIEnv *env, jclass ofClass, jboolean publicOnly))
1839 {
1840 JVMWrapper("JVM_GetClassDeclaredMethods");
1841 JvmtiVMObjectAllocEventCollector oam;
1842
1843 // Exclude primitive types and array types
1844 if (java_lang_Class::is_primitive(JNIHandles::resolve_non_null(ofClass))
1845 || java_lang_Class::as_Klass(JNIHandles::resolve_non_null(ofClass))->oop_is_array()) {
1846 // Return empty array
1847 oop res = oopFactory::new_objArray(SystemDictionary::reflect_Method_klass(), 0, CHECK_NULL);
|