< prev index next >

src/hotspot/share/classfile/javaClasses.inline.hpp

Print this page

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);
< prev index next >