23 */
24
25 #include "precompiled.hpp"
26 #include "ci/ciInstanceKlass.hpp"
27 #include "ci/ciValueArrayKlass.hpp"
28 #include "ci/ciSymbol.hpp"
29 #include "ci/ciUtilities.hpp"
30 #include "oops/valueArrayKlass.hpp"
31
32 // ciValueArrayKlass
33 //
34 // This class represents a Klass* in the HotSpot virtual machine
35 // whose Klass part is a ValueArrayKlass.
36
37 // ------------------------------------------------------------------
38 // ciValueArrayKlass::ciValueArrayKlass
39 //
40 // Constructor for loaded value array klasses.
41 ciValueArrayKlass::ciValueArrayKlass(Klass* h_k) : ciArrayKlass(h_k) {
42 assert(get_Klass()->is_valueArray_klass(), "wrong type");
43 ValueKlass* element_Klass = get_ValueArrayKlass()->element_klass();
44 _base_element_klass = CURRENT_ENV->get_klass(element_Klass);
45 assert(_base_element_klass->is_valuetype(), "bad base klass");
46 if (dimension() == 1) {
47 _element_klass = _base_element_klass;
48 } else {
49 _element_klass = NULL;
50 }
51 if (!ciObjectFactory::is_initialized()) {
52 assert(_element_klass->is_java_lang_Object(), "only arrays of object are shared");
53 }
54 }
55
56 // ------------------------------------------------------------------
57 // ciValueArrayKlass::element_klass
58 //
59 // What is the one-level element type of this array?
60 ciKlass* ciValueArrayKlass::element_klass() {
61 if (_element_klass == NULL) {
62 assert(dimension() > 1, "_element_klass should not be NULL");
63 // Produce the element klass.
|
23 */
24
25 #include "precompiled.hpp"
26 #include "ci/ciInstanceKlass.hpp"
27 #include "ci/ciValueArrayKlass.hpp"
28 #include "ci/ciSymbol.hpp"
29 #include "ci/ciUtilities.hpp"
30 #include "oops/valueArrayKlass.hpp"
31
32 // ciValueArrayKlass
33 //
34 // This class represents a Klass* in the HotSpot virtual machine
35 // whose Klass part is a ValueArrayKlass.
36
37 // ------------------------------------------------------------------
38 // ciValueArrayKlass::ciValueArrayKlass
39 //
40 // Constructor for loaded value array klasses.
41 ciValueArrayKlass::ciValueArrayKlass(Klass* h_k) : ciArrayKlass(h_k) {
42 assert(get_Klass()->is_valueArray_klass(), "wrong type");
43 assert(get_ValueArrayKlass()->element_klass()->is_value(), "element must be value");
44 Klass* element_Klass = get_ValueArrayKlass()->element_klass();
45 _base_element_klass = CURRENT_ENV->get_klass(element_Klass);
46 assert(_base_element_klass->is_valuetype(), "bad base klass");
47 if (dimension() == 1) {
48 _element_klass = _base_element_klass;
49 } else {
50 _element_klass = NULL;
51 }
52 if (!ciObjectFactory::is_initialized()) {
53 assert(_element_klass->is_java_lang_Object(), "only arrays of object are shared");
54 }
55 }
56
57 // ------------------------------------------------------------------
58 // ciValueArrayKlass::element_klass
59 //
60 // What is the one-level element type of this array?
61 ciKlass* ciValueArrayKlass::element_klass() {
62 if (_element_klass == NULL) {
63 assert(dimension() > 1, "_element_klass should not be NULL");
64 // Produce the element klass.
|