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