56 ValueArrayKlass() {}
57
58 // Casting from Klass*
59 static ValueArrayKlass* cast(Klass* k) {
60 assert(k->is_valueArray_klass(), "cast to ValueArrayKlass");
61 return (ValueArrayKlass*) k;
62 }
63
64 // klass allocation
65 static ValueArrayKlass* allocate_klass(KlassHandle element_klass, TRAPS);
66
67 void initialize(TRAPS);
68
69 // Instance variables
70 ValueKlass* element_klass() const { return _element_klass; }
71 ValueKlass** element_klass_addr() { return &_element_klass; }
72
73 int element_byte_size() const { return 1 << layout_helper_log2_element_size(_layout_helper); }
74 int element_value_store_size() const { return _element_value_store_size; }
75
76 bool is_typeArray_klass_slow() const { return true; }
77 bool is_valueArray_klass_slow() const { return true; }
78
79 bool contains_oops() { return element_klass()->contains_oops(); }
80 bool is_atomic() { return element_klass()->is_atomic(); }
81
82 oop protection_domain() const;
83
84 static jint array_layout_helper(ValueKlass* vklass); // layout helper for values
85
86 // sizing
87 static int header_size() { return sizeof(ValueArrayKlass)/HeapWordSize; }
88 int size() const { return ArrayKlass::static_size(header_size()); }
89
90 jint max_elements() const;
91
92 int oop_size(oop obj) const;
93
94 // Oop Allocation
95 oop allocate(int length, bool do_zero, TRAPS);
96 oop multi_allocate(int rank, jint* sizes, TRAPS);
|
56 ValueArrayKlass() {}
57
58 // Casting from Klass*
59 static ValueArrayKlass* cast(Klass* k) {
60 assert(k->is_valueArray_klass(), "cast to ValueArrayKlass");
61 return (ValueArrayKlass*) k;
62 }
63
64 // klass allocation
65 static ValueArrayKlass* allocate_klass(KlassHandle element_klass, TRAPS);
66
67 void initialize(TRAPS);
68
69 // Instance variables
70 ValueKlass* element_klass() const { return _element_klass; }
71 ValueKlass** element_klass_addr() { return &_element_klass; }
72
73 int element_byte_size() const { return 1 << layout_helper_log2_element_size(_layout_helper); }
74 int element_value_store_size() const { return _element_value_store_size; }
75
76 bool is_valueArray_klass_slow() const { return true; }
77
78 bool contains_oops() { return element_klass()->contains_oops(); }
79 bool is_atomic() { return element_klass()->is_atomic(); }
80
81 oop protection_domain() const;
82
83 static jint array_layout_helper(ValueKlass* vklass); // layout helper for values
84
85 // sizing
86 static int header_size() { return sizeof(ValueArrayKlass)/HeapWordSize; }
87 int size() const { return ArrayKlass::static_size(header_size()); }
88
89 jint max_elements() const;
90
91 int oop_size(oop obj) const;
92
93 // Oop Allocation
94 oop allocate(int length, bool do_zero, TRAPS);
95 oop multi_allocate(int rank, jint* sizes, TRAPS);
|