changeset 2267:02f78cfa4656

7020992: jmm_DumpThreads should not allocate system object arrays outside the perm gen Summary: Allocate ordinary object arrays Reviewed-by: ysr, never, mchung
author stefank
date Mon, 21 Feb 2011 11:26:45 +0100
parents f7702f8c0e25
children 8bbefb9743ae
files src/share/vm/memory/oopFactory.cpp src/share/vm/memory/oopFactory.hpp src/share/vm/services/management.cpp
diffstat 3 files changed, 5 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- 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;
 }
 
--- 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);
--- 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<instanceOop>* 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;