23 */ |
23 */ |
24 |
24 |
25 #ifndef SHARE_OOPS_KLASS_INLINE_HPP |
25 #ifndef SHARE_OOPS_KLASS_INLINE_HPP |
26 #define SHARE_OOPS_KLASS_INLINE_HPP |
26 #define SHARE_OOPS_KLASS_INLINE_HPP |
27 |
27 |
|
28 #include "classfile/classLoaderData.inline.hpp" |
28 #include "oops/compressedOops.hpp" |
29 #include "oops/compressedOops.hpp" |
29 #include "oops/klass.hpp" |
30 #include "oops/klass.hpp" |
30 #include "oops/markOop.hpp" |
31 #include "oops/markWord.hpp" |
|
32 #include "oops/oopHandle.inline.hpp" |
31 |
33 |
32 inline void Klass::set_prototype_header(markOop header) { |
34 inline void Klass::set_prototype_header(markWord header) { |
33 assert(!header->has_bias_pattern() || is_instance_klass(), "biased locking currently only supported for Java instances"); |
35 assert(!header.has_bias_pattern() || is_instance_klass(), "biased locking currently only supported for Java instances"); |
34 _prototype_header = header; |
36 _prototype_header = header; |
35 } |
37 } |
36 |
38 |
|
39 inline oop Klass::java_mirror() const { |
|
40 return _java_mirror.resolve(); |
|
41 } |
|
42 |
|
43 inline klassVtable Klass::vtable() const { |
|
44 return klassVtable(const_cast<Klass*>(this), start_of_vtable(), vtable_length() / vtableEntry::size()); |
|
45 } |
|
46 |
|
47 inline oop Klass::class_loader() const { |
|
48 return class_loader_data()->class_loader(); |
|
49 } |
|
50 |
|
51 inline vtableEntry* Klass::start_of_vtable() const { |
|
52 return (vtableEntry*) ((address)this + in_bytes(vtable_start_offset())); |
|
53 } |
|
54 |
|
55 inline ByteSize Klass::vtable_start_offset() { |
|
56 return in_ByteSize(InstanceKlass::header_size() * wordSize); |
|
57 } |
|
58 |
37 #endif // SHARE_OOPS_KLASS_INLINE_HPP |
59 #endif // SHARE_OOPS_KLASS_INLINE_HPP |