src/share/vm/memory/oopFactory.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7081933 Sdiff src/share/vm/memory

src/share/vm/memory/oopFactory.cpp

Print this page




  60 }
  61 
  62 typeArrayOop oopFactory::new_permanent_byteArray(int length, TRAPS) {
  63   return typeArrayKlass::cast(Universe::byteArrayKlassObj())->allocate_permanent(length, THREAD);
  64 }
  65 
  66 
  67 typeArrayOop oopFactory::new_permanent_shortArray(int length, TRAPS) {
  68   return typeArrayKlass::cast(Universe::shortArrayKlassObj())->allocate_permanent(length, THREAD);
  69 }
  70 
  71 
  72 typeArrayOop oopFactory::new_permanent_intArray(int length, TRAPS) {
  73   return typeArrayKlass::cast(Universe::intArrayKlassObj())->allocate_permanent(length, THREAD);
  74 }
  75 
  76 
  77 typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
  78   klassOop type_asKlassOop = Universe::typeArrayKlassObj(type);
  79   typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop);
  80   typeArrayOop result = type_asArrayKlass->allocate(length, THREAD);
  81   return result;
  82 }







  83 
  84 
  85 objArrayOop oopFactory::new_objArray(klassOop klass, int length, TRAPS) {
  86   assert(klass->is_klass(), "must be instance class");
  87   if (klass->klass_part()->oop_is_array()) {
  88     return ((arrayKlass*)klass->klass_part())->allocate_arrayArray(1, length, THREAD);
  89   } else {
  90     assert (klass->klass_part()->oop_is_instance(), "new object array with klass not an instanceKlass");
  91     return ((instanceKlass*)klass->klass_part())->allocate_objArray(1, length, THREAD);
  92   }
  93 }
  94 
  95 objArrayOop oopFactory::new_system_objArray(int length, TRAPS) {
  96   int size = objArrayOopDesc::object_size(length);
  97   KlassHandle klass (THREAD, Universe::systemObjArrayKlassObj());
  98   objArrayOop o = (objArrayOop)
  99     Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL);
 100   // initialization not needed, allocated cleared
 101   return o;
 102 }




  60 }
  61 
  62 typeArrayOop oopFactory::new_permanent_byteArray(int length, TRAPS) {
  63   return typeArrayKlass::cast(Universe::byteArrayKlassObj())->allocate_permanent(length, THREAD);
  64 }
  65 
  66 
  67 typeArrayOop oopFactory::new_permanent_shortArray(int length, TRAPS) {
  68   return typeArrayKlass::cast(Universe::shortArrayKlassObj())->allocate_permanent(length, THREAD);
  69 }
  70 
  71 
  72 typeArrayOop oopFactory::new_permanent_intArray(int length, TRAPS) {
  73   return typeArrayKlass::cast(Universe::intArrayKlassObj())->allocate_permanent(length, THREAD);
  74 }
  75 
  76 
  77 typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
  78   klassOop type_asKlassOop = Universe::typeArrayKlassObj(type);
  79   typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop);
  80   typeArrayOop result = type_asArrayKlass->allocate_common(length, false, THREAD);
  81   return result;
  82 }
  83 
  84 typeArrayOop oopFactory::new_typeArray_nozero(BasicType type, int length, TRAPS) {
  85   klassOop type_asKlassOop = Universe::typeArrayKlassObj(type);
  86   typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop);
  87   typeArrayOop result = type_asArrayKlass->allocate_common(length, true, THREAD);
  88   return result;
  89 }
  90 
  91 
  92 objArrayOop oopFactory::new_objArray(klassOop klass, int length, TRAPS) {
  93   assert(klass->is_klass(), "must be instance class");
  94   if (klass->klass_part()->oop_is_array()) {
  95     return ((arrayKlass*)klass->klass_part())->allocate_arrayArray(1, length, THREAD);
  96   } else {
  97     assert (klass->klass_part()->oop_is_instance(), "new object array with klass not an instanceKlass");
  98     return ((instanceKlass*)klass->klass_part())->allocate_objArray(1, length, THREAD);
  99   }
 100 }
 101 
 102 objArrayOop oopFactory::new_system_objArray(int length, TRAPS) {
 103   int size = objArrayOopDesc::object_size(length);
 104   KlassHandle klass (THREAD, Universe::systemObjArrayKlassObj());
 105   objArrayOop o = (objArrayOop)
 106     Universe::heap()->permanent_array_allocate(klass, size, length, CHECK_NULL);
 107   // initialization not needed, allocated cleared
 108   return o;
 109 }


src/share/vm/memory/oopFactory.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File