21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_OOPS_KLASSOOP_HPP
26 #define SHARE_VM_OOPS_KLASSOOP_HPP
27
28 #include "oops/oop.hpp"
29
30 // A klassOop is the C++ equivalent of a Java class.
31 // Part of a klassOopDesc is a Klass which handle the
32 // dispatching for the C++ method calls.
33
34 // klassOop object layout:
35 // [header ]
36 // [klass_field]
37 // [KLASS ]
38
39 class klassOopDesc : public oopDesc {
40 public:
41 // size operation
42 static int header_size() { return sizeof(klassOopDesc)/HeapWordSize; }
43
44 // support for code generation
45 static int klass_part_offset_in_bytes() { return sizeof(klassOopDesc); }
46
47 // returns the Klass part containing dispatching behavior
48 Klass* klass_part() const { return (Klass*)((address)this + klass_part_offset_in_bytes()); }
49
50 // Convenience wrapper
51 inline oop java_mirror() const;
52
53 private:
54 // These have no implementation since klassOop should never be accessed in this fashion
55 oop obj_field(int offset) const;
56 volatile oop obj_field_volatile(int offset) const;
57 void obj_field_put(int offset, oop value);
58 void obj_field_put_raw(int offset, oop value);
59 void obj_field_put_volatile(int offset, oop value);
60
61 jbyte byte_field(int offset) const;
62 void byte_field_put(int offset, jbyte contents);
63
64 jchar char_field(int offset) const;
65 void char_field_put(int offset, jchar contents);
66
67 jboolean bool_field(int offset) const;
68 void bool_field_put(int offset, jboolean contents);
|
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_OOPS_KLASSOOP_HPP
26 #define SHARE_VM_OOPS_KLASSOOP_HPP
27
28 #include "oops/oop.hpp"
29
30 // A klassOop is the C++ equivalent of a Java class.
31 // Part of a klassOopDesc is a Klass which handle the
32 // dispatching for the C++ method calls.
33
34 // klassOop object layout:
35 // [header ]
36 // [klass_field]
37 // [KLASS ]
38
39 class klassOopDesc : public oopDesc {
40 public:
41 // returns the Klass part containing dispatching behavior
42 Klass* klass_part() const { return (Klass*)((address)this + sizeof(klassOopDesc)); }
43
44 // Convenience wrapper
45 inline oop java_mirror() const;
46
47 private:
48 // These have no implementation since klassOop should never be accessed in this fashion
49 oop obj_field(int offset) const;
50 volatile oop obj_field_volatile(int offset) const;
51 void obj_field_put(int offset, oop value);
52 void obj_field_put_raw(int offset, oop value);
53 void obj_field_put_volatile(int offset, oop value);
54
55 jbyte byte_field(int offset) const;
56 void byte_field_put(int offset, jbyte contents);
57
58 jchar char_field(int offset) const;
59 void char_field_put(int offset, jchar contents);
60
61 jboolean bool_field(int offset) const;
62 void bool_field_put(int offset, jboolean contents);
|