1 /* |
1 /* |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
43 |
43 |
44 // support for code generation |
44 // support for code generation |
45 static int klass_part_offset_in_bytes() { return sizeof(klassOopDesc); } |
45 static int klass_part_offset_in_bytes() { return sizeof(klassOopDesc); } |
46 |
46 |
47 // returns the Klass part containing dispatching behavior |
47 // returns the Klass part containing dispatching behavior |
48 Klass* klass_part() { return (Klass*)((address)this + klass_part_offset_in_bytes()); } |
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 void obj_field_put(int offset, oop value); |
|
57 void obj_field_raw_put(int offset, oop value); |
|
58 |
|
59 jbyte byte_field(int offset) const; |
|
60 void byte_field_put(int offset, jbyte contents); |
|
61 |
|
62 jchar char_field(int offset) const; |
|
63 void char_field_put(int offset, jchar contents); |
|
64 |
|
65 jboolean bool_field(int offset) const; |
|
66 void bool_field_put(int offset, jboolean contents); |
|
67 |
|
68 jint int_field(int offset) const; |
|
69 void int_field_put(int offset, jint contents); |
|
70 |
|
71 jshort short_field(int offset) const; |
|
72 void short_field_put(int offset, jshort contents); |
|
73 |
|
74 jlong long_field(int offset) const; |
|
75 void long_field_put(int offset, jlong contents); |
|
76 |
|
77 jfloat float_field(int offset) const; |
|
78 void float_field_put(int offset, jfloat contents); |
|
79 |
|
80 jdouble double_field(int offset) const; |
|
81 void double_field_put(int offset, jdouble contents); |
|
82 |
|
83 address address_field(int offset) const; |
|
84 void address_field_put(int offset, address contents); |
|
85 |
|
86 oop obj_field_acquire(int offset) const; |
|
87 void release_obj_field_put(int offset, oop value); |
|
88 |
|
89 jbyte byte_field_acquire(int offset) const; |
|
90 void release_byte_field_put(int offset, jbyte contents); |
|
91 |
|
92 jchar char_field_acquire(int offset) const; |
|
93 void release_char_field_put(int offset, jchar contents); |
|
94 |
|
95 jboolean bool_field_acquire(int offset) const; |
|
96 void release_bool_field_put(int offset, jboolean contents); |
|
97 |
|
98 jint int_field_acquire(int offset) const; |
|
99 void release_int_field_put(int offset, jint contents); |
|
100 |
|
101 jshort short_field_acquire(int offset) const; |
|
102 void release_short_field_put(int offset, jshort contents); |
|
103 |
|
104 jlong long_field_acquire(int offset) const; |
|
105 void release_long_field_put(int offset, jlong contents); |
|
106 |
|
107 jfloat float_field_acquire(int offset) const; |
|
108 void release_float_field_put(int offset, jfloat contents); |
|
109 |
|
110 jdouble double_field_acquire(int offset) const; |
|
111 void release_double_field_put(int offset, jdouble contents); |
|
112 |
|
113 address address_field_acquire(int offset) const; |
|
114 void release_address_field_put(int offset, address contents); |
49 }; |
115 }; |
50 |
116 |
51 #endif // SHARE_VM_OOPS_KLASSOOP_HPP |
117 #endif // SHARE_VM_OOPS_KLASSOOP_HPP |