227 }
228 virtual bool can_be_primary_super_slow() const;
229
230 // Returns number of primary supers; may be a number in the inclusive range [0, primary_super_limit].
231 juint super_depth() const {
232 if (!can_be_primary_super()) {
233 return primary_super_limit();
234 } else {
235 juint d = (super_check_offset() - in_bytes(primary_supers_offset())) / sizeof(Klass*);
236 assert(d < primary_super_limit(), "oob");
237 assert(_primary_supers[d] == this, "proper init");
238 return d;
239 }
240 }
241
242 // java mirror
243 oop java_mirror() const;
244 void set_java_mirror(Handle m);
245
246 oop archived_java_mirror_raw() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // no GC barrier
247 oop archived_java_mirror() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // accessor with GC barrier
248 void set_archived_java_mirror_raw(oop m) NOT_CDS_JAVA_HEAP_RETURN; // no GC barrier
249
250 // Temporary mirror switch used by RedefineClasses
251 // Both mirrors are on the ClassLoaderData::_handles list already so no
252 // barriers are needed.
253 void set_java_mirror_handle(OopHandle mirror) { _java_mirror = mirror; }
254 OopHandle java_mirror_handle() const {
255 return _java_mirror;
256 }
257
258 // modifier flags
259 jint modifier_flags() const { return _modifier_flags; }
260 void set_modifier_flags(jint flags) { _modifier_flags = flags; }
261
262 // size helper
263 int layout_helper() const { return _layout_helper; }
264 void set_layout_helper(int lh) { _layout_helper = lh; }
265
266 // Note: for instances layout_helper() may include padding.
267 // Use InstanceKlass::contains_field_offset to classify field offsets.
|
227 }
228 virtual bool can_be_primary_super_slow() const;
229
230 // Returns number of primary supers; may be a number in the inclusive range [0, primary_super_limit].
231 juint super_depth() const {
232 if (!can_be_primary_super()) {
233 return primary_super_limit();
234 } else {
235 juint d = (super_check_offset() - in_bytes(primary_supers_offset())) / sizeof(Klass*);
236 assert(d < primary_super_limit(), "oob");
237 assert(_primary_supers[d] == this, "proper init");
238 return d;
239 }
240 }
241
242 // java mirror
243 oop java_mirror() const;
244 void set_java_mirror(Handle m);
245
246 oop archived_java_mirror_raw() NOT_CDS_JAVA_HEAP_RETURN_(NULL); // no GC barrier
247 void set_archived_java_mirror_raw(oop m) NOT_CDS_JAVA_HEAP_RETURN; // no GC barrier
248
249 // Temporary mirror switch used by RedefineClasses
250 // Both mirrors are on the ClassLoaderData::_handles list already so no
251 // barriers are needed.
252 void set_java_mirror_handle(OopHandle mirror) { _java_mirror = mirror; }
253 OopHandle java_mirror_handle() const {
254 return _java_mirror;
255 }
256
257 // modifier flags
258 jint modifier_flags() const { return _modifier_flags; }
259 void set_modifier_flags(jint flags) { _modifier_flags = flags; }
260
261 // size helper
262 int layout_helper() const { return _layout_helper; }
263 void set_layout_helper(int lh) { _layout_helper = lh; }
264
265 // Note: for instances layout_helper() may include padding.
266 // Use InstanceKlass::contains_field_offset to classify field offsets.
|