290 assert(k == nullptr || k->is_klass(), "type check");
291 return k;
292 }
293
294 inline bool java_lang_Class::is_primitive(oop java_class) {
295 // should assert:
296 //assert(java_lang_Class::is_instance(java_class), "must be a Class object");
297 bool is_primitive = (java_class->metadata_field(_klass_offset) == nullptr);
298
299 #ifdef ASSERT
300 if (is_primitive) {
301 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
302 assert(k == nullptr || is_java_primitive(ArrayKlass::cast(k)->element_type()),
303 "Should be either the T_VOID primitive or a java primitive");
304 }
305 #endif
306
307 return is_primitive;
308 }
309
310 inline size_t java_lang_Class::oop_size(oop java_class) {
311 assert(_oop_size_offset != 0, "must be set");
312 int size = java_class->int_field(_oop_size_offset);
313 assert(size > 0, "Oop size must be greater than zero, not %d", size);
314 return size;
315 }
316
317 inline bool java_lang_invoke_DirectMethodHandle::is_instance(oop obj) {
318 return obj != nullptr && is_subclass(obj->klass());
319 }
320
321 inline bool java_lang_Module::is_instance(oop obj) {
322 return obj != nullptr && obj->klass() == vmClasses::Module_klass();
323 }
324
325 inline int Backtrace::merge_bci_and_version(int bci, int version) {
326 // only store u2 for version, checking for overflow.
327 if (version > USHRT_MAX || version < 0) version = USHRT_MAX;
328 assert((u2)bci == bci, "bci should be short");
329 return build_int_from_shorts((u2)version, (u2)bci);
|
290 assert(k == nullptr || k->is_klass(), "type check");
291 return k;
292 }
293
294 inline bool java_lang_Class::is_primitive(oop java_class) {
295 // should assert:
296 //assert(java_lang_Class::is_instance(java_class), "must be a Class object");
297 bool is_primitive = (java_class->metadata_field(_klass_offset) == nullptr);
298
299 #ifdef ASSERT
300 if (is_primitive) {
301 Klass* k = ((Klass*)java_class->metadata_field(_array_klass_offset));
302 assert(k == nullptr || is_java_primitive(ArrayKlass::cast(k)->element_type()),
303 "Should be either the T_VOID primitive or a java primitive");
304 }
305 #endif
306
307 return is_primitive;
308 }
309
310 inline bool java_lang_Class::is_primary_mirror(oop java_class) {
311 Klass* k = as_Klass(java_class);
312 if (k->is_inline_klass()) {
313 return java_class == primary_mirror(java_class);
314 } else {
315 return true;
316 }
317 }
318
319 inline bool java_lang_Class::is_secondary_mirror(oop java_class) {
320 Klass* k = as_Klass(java_class);
321 if (k->is_inline_klass()) {
322 return java_class == secondary_mirror(java_class);
323 } else {
324 return false;
325 }
326 }
327
328 inline size_t java_lang_Class::oop_size(oop java_class) {
329 assert(_oop_size_offset != 0, "must be set");
330 int size = java_class->int_field(_oop_size_offset);
331 assert(size > 0, "Oop size must be greater than zero, not %d", size);
332 return size;
333 }
334
335 inline bool java_lang_invoke_DirectMethodHandle::is_instance(oop obj) {
336 return obj != nullptr && is_subclass(obj->klass());
337 }
338
339 inline bool java_lang_Module::is_instance(oop obj) {
340 return obj != nullptr && obj->klass() == vmClasses::Module_klass();
341 }
342
343 inline int Backtrace::merge_bci_and_version(int bci, int version) {
344 // only store u2 for version, checking for overflow.
345 if (version > USHRT_MAX || version < 0) version = USHRT_MAX;
346 assert((u2)bci == bci, "bci should be short");
347 return build_int_from_shorts((u2)version, (u2)bci);
|