src/share/vm/oops/klass.inline.hpp

Print this page
rev 6796 : [mq]: templateOopIterate
rev 6797 : [mq]: vaTests
rev 6798 : [mq]: oneSwitch
rev 6799 : [mq]: latestChanges
rev 6800 : [mq]: replaceTemplateDispatchWithMacroDispatch
rev 6802 : [mq]: encodeKlassFixes

*** 24,35 **** --- 24,41 ---- #ifndef SHARE_VM_OOPS_KLASS_INLINE_HPP #define SHARE_VM_OOPS_KLASS_INLINE_HPP #include "memory/universe.hpp" + #include "oops/instanceClassLoaderKlass.inline.hpp" + #include "oops/instanceKlass.inline.hpp" + #include "oops/instanceMirrorKlass.inline.hpp" + #include "oops/instanceRefKlass.inline.hpp" #include "oops/klass.hpp" #include "oops/markOop.hpp" + #include "oops/objArrayKlass.inline.hpp" + #include "oops/typeArrayKlass.inline.hpp" inline void Klass::set_prototype_header(markOop header) { assert(!header->has_bias_pattern() || oop_is_instance(), "biased locking currently only supported for Java instances"); _prototype_header = header; }
*** 69,74 **** --- 75,93 ---- inline Klass* Klass::decode_klass(narrowKlass v) { return is_null(v) ? (Klass*)NULL : decode_klass_not_null(v); } + #define CONCRETE_KLASS_DO_AND_RETURN(the_klass, todo) \ + do { \ + switch ((the_klass)->dispatch_tag()) { \ + case Klass::_instance: return InstanceKlass::cast(the_klass)->todo; \ + case Klass::_instance_ref: return InstanceRefKlass::cast(the_klass)->todo; \ + case Klass::_instance_mirror: return InstanceMirrorKlass::cast(the_klass)->todo; \ + case Klass::_instance_class_loader: return InstanceClassLoaderKlass::cast(the_klass)->todo; \ + case Klass::_obj_array: return ObjArrayKlass::cast(the_klass)->todo; \ + case Klass::_type_array: return TypeArrayKlass::cast(the_klass)->todo; \ + default: fatal("Incorrect dispatch index"); return 0; \ + } \ + } while (false) + #endif // SHARE_VM_OOPS_KLASS_INLINE_HPP