comparison src/share/vm/services/management.cpp @ 11986:c01913206da5

8014294: Assert in ThreadTimesClosure::do_thread() due to use of naked oop instead of handle Summary: Assert in ThreadTimesClosure::do_thread() due to use of naked oop instead of handle Reviewed-by: coleenp, sspitsyn
author ctornqvi
date Thu, 01 Aug 2013 22:20:00 +0200
parents 71963b3f802a
children a70566600baf
comparison
equal deleted inserted replaced
11985:9bd314787fad 11986:c01913206da5
1829 1829
1830 class ThreadTimesClosure: public ThreadClosure { 1830 class ThreadTimesClosure: public ThreadClosure {
1831 private: 1831 private:
1832 objArrayHandle _names_strings; 1832 objArrayHandle _names_strings;
1833 char **_names_chars; 1833 char **_names_chars;
1834 typeArrayOop _times; 1834 typeArrayHandle _times;
1835 int _names_len; 1835 int _names_len;
1836 int _times_len; 1836 int _times_len;
1837 int _count; 1837 int _count;
1838 1838
1839 public: 1839 public:
1840 ThreadTimesClosure(objArrayHandle names, typeArrayOop times); 1840 ThreadTimesClosure(objArrayHandle names, typeArrayHandle times);
1841 ~ThreadTimesClosure(); 1841 ~ThreadTimesClosure();
1842 virtual void do_thread(Thread* thread); 1842 virtual void do_thread(Thread* thread);
1843 void do_unlocked(); 1843 void do_unlocked();
1844 int count() { return _count; } 1844 int count() { return _count; }
1845 }; 1845 };
1846 1846
1847 ThreadTimesClosure::ThreadTimesClosure(objArrayHandle names, 1847 ThreadTimesClosure::ThreadTimesClosure(objArrayHandle names,
1848 typeArrayOop times) { 1848 typeArrayHandle times) {
1849 assert(names() != NULL, "names was NULL"); 1849 assert(names() != NULL, "names was NULL");
1850 assert(times != NULL, "times was NULL"); 1850 assert(times() != NULL, "times was NULL");
1851 _names_strings = names; 1851 _names_strings = names;
1852 _names_len = names->length(); 1852 _names_len = names->length();
1853 _names_chars = NEW_C_HEAP_ARRAY(char*, _names_len, mtInternal); 1853 _names_chars = NEW_C_HEAP_ARRAY(char*, _names_len, mtInternal);
1854 _times = times; 1854 _times = times;
1855 _times_len = times->length(); 1855 _times_len = times->length();
1923 } 1923 }
1924 1924
1925 typeArrayOop ta = typeArrayOop(JNIHandles::resolve_non_null(times)); 1925 typeArrayOop ta = typeArrayOop(JNIHandles::resolve_non_null(times));
1926 typeArrayHandle times_ah(THREAD, ta); 1926 typeArrayHandle times_ah(THREAD, ta);
1927 1927
1928 ThreadTimesClosure ttc(names_ah, times_ah()); 1928 ThreadTimesClosure ttc(names_ah, times_ah);
1929 { 1929 {
1930 MutexLockerEx ml(Threads_lock); 1930 MutexLockerEx ml(Threads_lock);
1931 Threads::threads_do(&ttc); 1931 Threads::threads_do(&ttc);
1932 } 1932 }
1933 ttc.do_unlocked(); 1933 ttc.do_unlocked();