# HG changeset patch # User stefank # Date 1298284005 -3600 # Node ID 02f78cfa46560b3bee9bbf1305d8c668535b9a8e # Parent f7702f8c0e257c2e7dfa1dee2a7001b3fb995bc9 7020992: jmm_DumpThreads should not allocate system object arrays outside the perm gen Summary: Allocate ordinary object arrays Reviewed-by: ysr, never, mchung diff -r f7702f8c0e25 -r 02f78cfa4656 src/share/vm/memory/oopFactory.cpp --- a/src/share/vm/memory/oopFactory.cpp Mon Feb 14 22:21:18 2011 -0500 +++ b/src/share/vm/memory/oopFactory.cpp Mon Feb 21 11:26:45 2011 +0100 @@ -92,21 +92,12 @@ } } -objArrayOop oopFactory::new_system_objArray(int length, bool in_perm_gen, TRAPS) { +objArrayOop oopFactory::new_system_objArray(int length, TRAPS) { int size = objArrayOopDesc::object_size(length); KlassHandle klass (THREAD, Universe::systemObjArrayKlassObj()); - oop o; - if (in_perm_gen) { - o = Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL); - } else { - o = Universe::heap()->array_allocate(klass, size, length, CHECK_NULL); - } + objArrayOop o = (objArrayOop) + Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL); // initialization not needed, allocated cleared - return (objArrayOop) o; -} - -objArrayOop oopFactory::new_system_objArray(int length, TRAPS) { - objArrayOop o = oopFactory::new_system_objArray(length, true, CHECK_NULL); return o; } diff -r f7702f8c0e25 -r 02f78cfa4656 src/share/vm/memory/oopFactory.hpp --- a/src/share/vm/memory/oopFactory.hpp Mon Feb 14 22:21:18 2011 -0500 +++ b/src/share/vm/memory/oopFactory.hpp Mon Feb 21 11:26:45 2011 +0100 @@ -102,7 +102,6 @@ // System object arrays static objArrayOop new_system_objArray(int length, TRAPS); - static objArrayOop new_system_objArray(int length, bool in_perm_gen, TRAPS); // Regular object arrays static objArrayOop new_objArray(klassOop klass, int length, TRAPS); diff -r f7702f8c0e25 -r 02f78cfa4656 src/share/vm/services/management.cpp --- a/src/share/vm/services/management.cpp Mon Feb 14 22:21:18 2011 -0500 +++ b/src/share/vm/services/management.cpp Mon Feb 21 11:26:45 2011 +0100 @@ -1311,7 +1311,7 @@ if (locked_monitors) { // Constructs Object[] and int[] to contain the object monitor and the stack depth // where the thread locked it - objArrayOop array = oopFactory::new_system_objArray(num_locked_monitors, false, CHECK_NULL); + objArrayOop array = oopFactory::new_objArray(SystemDictionary::Object_klass(), num_locked_monitors, CHECK_NULL); objArrayHandle mh(THREAD, array); monitors_array = mh; @@ -1353,7 +1353,7 @@ GrowableArray* locks = (tcl != NULL ? tcl->owned_locks() : NULL); int num_locked_synchronizers = (locks != NULL ? locks->length() : 0); - objArrayOop array = oopFactory::new_system_objArray(num_locked_synchronizers, false, CHECK_NULL); + objArrayOop array = oopFactory::new_objArray(SystemDictionary::Object_klass(), num_locked_synchronizers, CHECK_NULL); objArrayHandle sh(THREAD, array); synchronizers_array = sh;