src/share/vm/memory/oopFactory.cpp

changeset 4142
d8ce2825b193
parent 4037
da91efe96a93
child 6876
710a3c8b516e
equal deleted inserted replaced
4122:1b582b1bf7cb 4142:d8ce2825b193
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 }

mercurial