45 } |
45 } |
46 return result; |
46 return result; |
47 } |
47 } |
48 |
48 |
49 typeArrayOop oopFactory::new_tenured_charArray(int length, TRAPS) { |
49 typeArrayOop oopFactory::new_tenured_charArray(int length, TRAPS) { |
50 return typeArrayKlass::cast(Universe::charArrayKlassObj())->allocate(length, THREAD); |
50 return TypeArrayKlass::cast(Universe::charArrayKlassObj())->allocate(length, THREAD); |
51 } |
51 } |
52 |
52 |
53 typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) { |
53 typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) { |
54 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type); |
54 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type); |
55 typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop); |
55 TypeArrayKlass* type_asArrayKlass = TypeArrayKlass::cast(type_asKlassOop); |
56 typeArrayOop result = type_asArrayKlass->allocate(length, THREAD); |
56 typeArrayOop result = type_asArrayKlass->allocate(length, THREAD); |
57 return result; |
57 return result; |
58 } |
58 } |
59 |
59 |
60 // Create a Java array that points to metadata. |
60 // Create a Java array that points to metadata. |
64 // Note:can't point to symbols because there's no way to unreference count |
64 // Note:can't point to symbols because there's no way to unreference count |
65 // them when this object goes away. |
65 // them when this object goes away. |
66 typeArrayOop oopFactory::new_metaDataArray(int length, TRAPS) { |
66 typeArrayOop oopFactory::new_metaDataArray(int length, TRAPS) { |
67 BasicType type = LP64_ONLY(T_LONG) NOT_LP64(T_INT); |
67 BasicType type = LP64_ONLY(T_LONG) NOT_LP64(T_INT); |
68 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type); |
68 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type); |
69 typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop); |
69 TypeArrayKlass* type_asArrayKlass = TypeArrayKlass::cast(type_asKlassOop); |
70 typeArrayOop result = type_asArrayKlass->allocate_common(length, true, THREAD); |
70 typeArrayOop result = type_asArrayKlass->allocate_common(length, true, THREAD); |
71 return result; |
71 return result; |
72 } |
72 } |
73 |
73 |
74 typeArrayOop oopFactory::new_typeArray_nozero(BasicType type, int length, TRAPS) { |
74 typeArrayOop oopFactory::new_typeArray_nozero(BasicType type, int length, TRAPS) { |
75 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type); |
75 Klass* type_asKlassOop = Universe::typeArrayKlassObj(type); |
76 typeArrayKlass* type_asArrayKlass = typeArrayKlass::cast(type_asKlassOop); |
76 TypeArrayKlass* type_asArrayKlass = TypeArrayKlass::cast(type_asKlassOop); |
77 typeArrayOop result = type_asArrayKlass->allocate_common(length, false, THREAD); |
77 typeArrayOop result = type_asArrayKlass->allocate_common(length, false, THREAD); |
78 return result; |
78 return result; |
79 } |
79 } |
80 |
80 |
81 |
81 |
82 objArrayOop oopFactory::new_objArray(Klass* klass, int length, TRAPS) { |
82 objArrayOop oopFactory::new_objArray(Klass* klass, int length, TRAPS) { |
83 assert(klass->is_klass(), "must be instance class"); |
83 assert(klass->is_klass(), "must be instance class"); |
84 if (klass->oop_is_array()) { |
84 if (klass->oop_is_array()) { |
85 return ((arrayKlass*)klass)->allocate_arrayArray(1, length, THREAD); |
85 return ((ArrayKlass*)klass)->allocate_arrayArray(1, length, THREAD); |
86 } else { |
86 } else { |
87 assert (klass->oop_is_instance(), "new object array with klass not an InstanceKlass"); |
87 assert (klass->oop_is_instance(), "new object array with klass not an InstanceKlass"); |
88 return ((InstanceKlass*)klass)->allocate_objArray(1, length, THREAD); |
88 return ((InstanceKlass*)klass)->allocate_objArray(1, length, THREAD); |
89 } |
89 } |
90 } |
90 } |