diff src/share/vm/memory/oopFactory.cpp @ 2230:55cc33cf55bc

7018257: jmm_DumpThreads allocates into permgen Summary: Don't allocate in permgen Reviewed-by: ysr, sla
author stefank
date Fri, 11 Feb 2011 14:15:16 +0100
parents c5a923563727
children 02f78cfa4656
line wrap: on
line diff
--- a/src/share/vm/memory/oopFactory.cpp	Thu Feb 10 14:48:07 2011 -0800
+++ b/src/share/vm/memory/oopFactory.cpp	Fri Feb 11 14:15:16 2011 +0100
@@ -92,12 +92,21 @@
   }
 }
 
-objArrayOop oopFactory::new_system_objArray(int length, TRAPS) {
+objArrayOop oopFactory::new_system_objArray(int length, bool in_perm_gen, TRAPS) {
   int size = objArrayOopDesc::object_size(length);
   KlassHandle klass (THREAD, Universe::systemObjArrayKlassObj());
-  objArrayOop o = (objArrayOop)
-    Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL);
+  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);
+  }
   // 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;
 }