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 }
|