244 }
245 virtual bool can_be_primary_super_slow() const;
246
247 // Returns number of primary supers; may be a number in the inclusive range [0, primary_super_limit].
248 juint super_depth() const {
249 if (!can_be_primary_super()) {
250 return primary_super_limit();
251 } else {
252 juint d = (super_check_offset() - in_bytes(primary_supers_offset())) / sizeof(Klass*);
253 assert(d < primary_super_limit(), "oob");
254 assert(_primary_supers[d] == this, "proper init");
255 return d;
256 }
257 }
258
259 // java mirror
260 oop java_mirror() const;
261 void set_java_mirror(Handle m);
262
263 oop archived_java_mirror_raw() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // no GC barrier
264 void set_archived_java_mirror_raw(oop m) NOT_CDS_JAVA_HEAP_RETURN; // no GC barrier
265
266 // Temporary mirror switch used by RedefineClasses
267 // Both mirrors are on the ClassLoaderData::_handles list already so no
268 // barriers are needed.
269 void set_java_mirror_handle(OopHandle mirror) { _java_mirror = mirror; }
270 OopHandle java_mirror_handle() const {
271 return _java_mirror;
272 }
273
274 // modifier flags
275 jint modifier_flags() const { return _modifier_flags; }
276 void set_modifier_flags(jint flags) { _modifier_flags = flags; }
277
278 // size helper
279 int layout_helper() const { return _layout_helper; }
280 void set_layout_helper(int lh) { _layout_helper = lh; }
281
282 // Note: for instances layout_helper() may include padding.
283 // Use InstanceKlass::contains_field_offset to classify field offsets.
|
244 }
245 virtual bool can_be_primary_super_slow() const;
246
247 // Returns number of primary supers; may be a number in the inclusive range [0, primary_super_limit].
248 juint super_depth() const {
249 if (!can_be_primary_super()) {
250 return primary_super_limit();
251 } else {
252 juint d = (super_check_offset() - in_bytes(primary_supers_offset())) / sizeof(Klass*);
253 assert(d < primary_super_limit(), "oob");
254 assert(_primary_supers[d] == this, "proper init");
255 return d;
256 }
257 }
258
259 // java mirror
260 oop java_mirror() const;
261 void set_java_mirror(Handle m);
262
263 oop archived_java_mirror_raw() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // no GC barrier
264 narrowOop archived_java_mirror_raw_narrow() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // no GC barrier
265 void set_archived_java_mirror_raw(oop m) NOT_CDS_JAVA_HEAP_RETURN; // no GC barrier
266
267 // Temporary mirror switch used by RedefineClasses
268 // Both mirrors are on the ClassLoaderData::_handles list already so no
269 // barriers are needed.
270 void set_java_mirror_handle(OopHandle mirror) { _java_mirror = mirror; }
271 OopHandle java_mirror_handle() const {
272 return _java_mirror;
273 }
274
275 // modifier flags
276 jint modifier_flags() const { return _modifier_flags; }
277 void set_modifier_flags(jint flags) { _modifier_flags = flags; }
278
279 // size helper
280 int layout_helper() const { return _layout_helper; }
281 void set_layout_helper(int lh) { _layout_helper = lh; }
282
283 // Note: for instances layout_helper() may include padding.
284 // Use InstanceKlass::contains_field_offset to classify field offsets.
|