Skip to content

Commit 492b954

Browse files
committed
8329750: Change Universe functions to return more specific Klass* types
Reviewed-by: coleenp
1 parent 87131fb commit 492b954

File tree

6 files changed

+36
-41
lines changed

6 files changed

+36
-41
lines changed

src/hotspot/share/classfile/systemDictionary.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ Klass* SystemDictionary::resolve_array_class_or_null(Symbol* class_name,
368368
}
369369
} else {
370370
k = Universe::typeArrayKlass(t);
371-
k = TypeArrayKlass::cast(k)->array_klass(ndims, CHECK_NULL);
371+
k = k->array_klass(ndims, CHECK_NULL);
372372
}
373373
return k;
374374
}

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ C2V_VMENTRY_NULL(jobject, lookupType, (JNIEnv* env, jobject, jstring jname, ARGU
636636
resolved_klass = resolved_klass->array_klass(ndim, CHECK_NULL);
637637
}
638638
} else {
639-
resolved_klass = TypeArrayKlass::cast(Universe::typeArrayKlass(ss.type()))->array_klass(ndim, CHECK_NULL);
639+
resolved_klass = Universe::typeArrayKlass(ss.type())->array_klass(ndim, CHECK_NULL);
640640
}
641641
} else {
642642
resolved_klass = SystemDictionary::find_instance_klass(THREAD, class_name,

src/hotspot/share/memory/oopFactory.cpp

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -41,41 +41,41 @@
4141
#include "utilities/utf8.hpp"
4242

4343
typeArrayOop oopFactory::new_boolArray(int length, TRAPS) {
44-
return TypeArrayKlass::cast(Universe::boolArrayKlass())->allocate(length, THREAD);
44+
return Universe::boolArrayKlass()->allocate(length, THREAD);
4545
}
4646

4747
typeArrayOop oopFactory::new_charArray(int length, TRAPS) {
48-
return TypeArrayKlass::cast(Universe::charArrayKlass())->allocate(length, THREAD);
48+
return Universe::charArrayKlass()->allocate(length, THREAD);
4949
}
5050

5151
typeArrayOop oopFactory::new_floatArray(int length, TRAPS) {
52-
return TypeArrayKlass::cast(Universe::floatArrayKlass())->allocate(length, THREAD);
52+
return Universe::floatArrayKlass()->allocate(length, THREAD);
5353
}
5454

5555
typeArrayOop oopFactory::new_doubleArray(int length, TRAPS) {
56-
return TypeArrayKlass::cast(Universe::doubleArrayKlass())->allocate(length, THREAD);
56+
return Universe::doubleArrayKlass()->allocate(length, THREAD);
5757
}
5858

5959
typeArrayOop oopFactory::new_byteArray(int length, TRAPS) {
60-
return TypeArrayKlass::cast(Universe::byteArrayKlass())->allocate(length, THREAD);
60+
return Universe::byteArrayKlass()->allocate(length, THREAD);
6161
}
6262

6363
typeArrayOop oopFactory::new_shortArray(int length, TRAPS) {
64-
return TypeArrayKlass::cast(Universe::shortArrayKlass())->allocate(length, THREAD);
64+
return Universe::shortArrayKlass()->allocate(length, THREAD);
6565
}
6666

6767
typeArrayOop oopFactory::new_intArray(int length, TRAPS) {
68-
return TypeArrayKlass::cast(Universe::intArrayKlass())->allocate(length, THREAD);
68+
return Universe::intArrayKlass()->allocate(length, THREAD);
6969
}
7070

7171
typeArrayOop oopFactory::new_longArray(int length, TRAPS) {
72-
return TypeArrayKlass::cast(Universe::longArrayKlass())->allocate(length, THREAD);
72+
return Universe::longArrayKlass()->allocate(length, THREAD);
7373
}
7474

7575
// create java.lang.Object[]
7676
objArrayOop oopFactory::new_objectArray(int length, TRAPS) {
7777
assert(Universe::objectArrayKlass() != nullptr, "Too early?");
78-
return ObjArrayKlass::cast(Universe::objectArrayKlass())->allocate(length, THREAD);
78+
return Universe::objectArrayKlass()->allocate(length, THREAD);
7979
}
8080

8181
typeArrayOop oopFactory::new_charArray(const char* utf8_str, TRAPS) {
@@ -88,10 +88,8 @@ typeArrayOop oopFactory::new_charArray(const char* utf8_str, TRAPS) {
8888
}
8989

9090
typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
91-
Klass* klass = Universe::typeArrayKlass(type);
92-
TypeArrayKlass* typeArrayKlass = TypeArrayKlass::cast(klass);
93-
typeArrayOop result = typeArrayKlass->allocate(length, THREAD);
94-
return result;
91+
TypeArrayKlass* klass = Universe::typeArrayKlass(type);
92+
return klass->allocate(length, THREAD);
9593
}
9694

9795
// Create a Java array that points to Symbol.
@@ -100,17 +98,12 @@ typeArrayOop oopFactory::new_typeArray(BasicType type, int length, TRAPS) {
10098
// this. They cast Symbol* into this type.
10199
typeArrayOop oopFactory::new_symbolArray(int length, TRAPS) {
102100
BasicType type = LP64_ONLY(T_LONG) NOT_LP64(T_INT);
103-
Klass* klass = Universe::typeArrayKlass(type);
104-
TypeArrayKlass* typeArrayKlass = TypeArrayKlass::cast(klass);
105-
typeArrayOop result = typeArrayKlass->allocate(length, THREAD);
106-
return result;
101+
return new_typeArray(type, length, THREAD);
107102
}
108103

109104
typeArrayOop oopFactory::new_typeArray_nozero(BasicType type, int length, TRAPS) {
110-
Klass* klass = Universe::typeArrayKlass(type);
111-
TypeArrayKlass* typeArrayKlass = TypeArrayKlass::cast(klass);
112-
typeArrayOop result = typeArrayKlass->allocate_common(length, false, THREAD);
113-
return result;
105+
TypeArrayKlass* klass = Universe::typeArrayKlass(type);
106+
return klass->allocate_common(length, false, THREAD);
114107
}
115108

116109

src/hotspot/share/memory/universe.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -111,9 +111,9 @@ static LatestMethodCache _throw_no_such_method_error_cache; // Unsafe.throwNoSuc
111111
static LatestMethodCache _do_stack_walk_cache; // AbstractStackWalker.doStackWalk()
112112

113113
// Known objects
114-
Klass* Universe::_typeArrayKlasses[T_LONG+1] = { nullptr /*, nullptr...*/ };
115-
Klass* Universe::_objectArrayKlass = nullptr;
116-
Klass* Universe::_fillerArrayKlass = nullptr;
114+
TypeArrayKlass* Universe::_typeArrayKlasses[T_LONG+1] = { nullptr /*, nullptr...*/ };
115+
ObjArrayKlass* Universe::_objectArrayKlass = nullptr;
116+
Klass* Universe::_fillerArrayKlass = nullptr;
117117
OopHandle Universe::_basic_type_mirrors[T_VOID+1];
118118
#if INCLUDE_CDS_JAVA_HEAP
119119
int Universe::_archived_basic_type_mirror_indices[T_VOID+1];
@@ -472,8 +472,10 @@ void Universe::genesis(TRAPS) {
472472
// ordinary object arrays, _objectArrayKlass will be loaded when
473473
// SystemDictionary::initialize(CHECK); is run. See the extra check
474474
// for Object_klass_loaded in objArrayKlassKlass::allocate_objArray_klass_impl.
475-
_objectArrayKlass = InstanceKlass::
476-
cast(vmClasses::Object_klass())->array_klass(1, CHECK);
475+
{
476+
Klass* oak = vmClasses::Object_klass()->array_klass(CHECK);
477+
_objectArrayKlass = ObjArrayKlass::cast(oak);
478+
}
477479
// OLD
478480
// Add the class to the class hierarchy manually to make sure that
479481
// its vtable is initialized after core bootstrapping is completed.

src/hotspot/share/memory/universe.hpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ class Universe: AllStatic {
6565

6666
private:
6767
// Known classes in the VM
68-
static Klass* _typeArrayKlasses[T_LONG+1];
69-
static Klass* _objectArrayKlass;
68+
static TypeArrayKlass* _typeArrayKlasses[T_LONG+1];
69+
static ObjArrayKlass* _objectArrayKlass;
7070
// Special int-Array that represents filler objects that are used by GC to overwrite
7171
// dead objects. References to them are generally an error.
7272
static Klass* _fillerArrayKlass;
@@ -174,20 +174,20 @@ class Universe: AllStatic {
174174
static void set_verify_data(uintptr_t mask, uintptr_t bits) PRODUCT_RETURN;
175175

176176
// Known classes in the VM
177-
static Klass* boolArrayKlass() { return typeArrayKlass(T_BOOLEAN); }
178-
static Klass* byteArrayKlass() { return typeArrayKlass(T_BYTE); }
179-
static Klass* charArrayKlass() { return typeArrayKlass(T_CHAR); }
180-
static Klass* intArrayKlass() { return typeArrayKlass(T_INT); }
181-
static Klass* shortArrayKlass() { return typeArrayKlass(T_SHORT); }
182-
static Klass* longArrayKlass() { return typeArrayKlass(T_LONG); }
183-
static Klass* floatArrayKlass() { return typeArrayKlass(T_FLOAT); }
184-
static Klass* doubleArrayKlass() { return typeArrayKlass(T_DOUBLE); }
177+
static TypeArrayKlass* boolArrayKlass() { return typeArrayKlass(T_BOOLEAN); }
178+
static TypeArrayKlass* byteArrayKlass() { return typeArrayKlass(T_BYTE); }
179+
static TypeArrayKlass* charArrayKlass() { return typeArrayKlass(T_CHAR); }
180+
static TypeArrayKlass* intArrayKlass() { return typeArrayKlass(T_INT); }
181+
static TypeArrayKlass* shortArrayKlass() { return typeArrayKlass(T_SHORT); }
182+
static TypeArrayKlass* longArrayKlass() { return typeArrayKlass(T_LONG); }
183+
static TypeArrayKlass* floatArrayKlass() { return typeArrayKlass(T_FLOAT); }
184+
static TypeArrayKlass* doubleArrayKlass() { return typeArrayKlass(T_DOUBLE); }
185185

186-
static Klass* objectArrayKlass() { return _objectArrayKlass; }
186+
static ObjArrayKlass* objectArrayKlass() { return _objectArrayKlass; }
187187

188188
static Klass* fillerArrayKlass() { return _fillerArrayKlass; }
189189

190-
static Klass* typeArrayKlass(BasicType t) {
190+
static TypeArrayKlass* typeArrayKlass(BasicType t) {
191191
assert((uint)t >= T_BOOLEAN, "range check for type: %s", type2name(t));
192192
assert((uint)t < T_LONG+1, "range check for type: %s", type2name(t));
193193
assert(_typeArrayKlasses[t] != nullptr, "domain check");

src/hotspot/share/prims/vectorSupport.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ Handle VectorSupport::allocate_vector_payload_helper(InstanceKlass* ik, frame* f
138138
int elem_size = type2aelembytes(elem_bt);
139139

140140
// On-heap vector values are represented as primitive arrays.
141-
TypeArrayKlass* tak = TypeArrayKlass::cast(Universe::typeArrayKlass(elem_bt));
141+
TypeArrayKlass* tak = Universe::typeArrayKlass(elem_bt);
142142

143143
typeArrayOop arr = tak->allocate(num_elem, CHECK_NH); // safepoint
144144

0 commit comments

Comments
 (0)