115 volatile Bytecodes::Code c = (Bytecodes::Code)*code;
116 assert(c == 0 || c == new_code || new_code == 0, "update must be consistent");
117 #endif
118 Atomic::release_store(code, new_code);
119 }
120
121 // Populate the strucutre with resolution information
122 void fill_in(InstanceKlass* klass, int offset, u2 index, u1 tos_state, u1 b1, u1 b2) {
123 _field_holder = klass;
124 _field_offset = offset;
125 _field_index = index;
126 _tos_state = tos_state;
127
128 // These must be set after the other fields
129 set_bytecode(&_get_code, b1);
130 set_bytecode(&_put_code, b2);
131 }
132
133 // CDS
134 void remove_unshareable_info();
135
136 // Offsets
137 static ByteSize field_holder_offset() { return byte_offset_of(ResolvedFieldEntry, _field_holder); }
138 static ByteSize field_offset_offset() { return byte_offset_of(ResolvedFieldEntry, _field_offset); }
139 static ByteSize field_index_offset() { return byte_offset_of(ResolvedFieldEntry, _field_index); }
140 static ByteSize get_code_offset() { return byte_offset_of(ResolvedFieldEntry, _get_code); }
141 static ByteSize put_code_offset() { return byte_offset_of(ResolvedFieldEntry, _put_code); }
142 static ByteSize type_offset() { return byte_offset_of(ResolvedFieldEntry, _tos_state); }
143 static ByteSize flags_offset() { return byte_offset_of(ResolvedFieldEntry, _flags); }
144
145 };
146
147 #endif //SHARE_OOPS_RESOLVEDFIELDENTRY_HPP
|
115 volatile Bytecodes::Code c = (Bytecodes::Code)*code;
116 assert(c == 0 || c == new_code || new_code == 0, "update must be consistent");
117 #endif
118 Atomic::release_store(code, new_code);
119 }
120
121 // Populate the strucutre with resolution information
122 void fill_in(InstanceKlass* klass, int offset, u2 index, u1 tos_state, u1 b1, u1 b2) {
123 _field_holder = klass;
124 _field_offset = offset;
125 _field_index = index;
126 _tos_state = tos_state;
127
128 // These must be set after the other fields
129 set_bytecode(&_get_code, b1);
130 set_bytecode(&_put_code, b2);
131 }
132
133 // CDS
134 void remove_unshareable_info();
135 void mark_and_relocate();
136
137 // Offsets
138 static ByteSize field_holder_offset() { return byte_offset_of(ResolvedFieldEntry, _field_holder); }
139 static ByteSize field_offset_offset() { return byte_offset_of(ResolvedFieldEntry, _field_offset); }
140 static ByteSize field_index_offset() { return byte_offset_of(ResolvedFieldEntry, _field_index); }
141 static ByteSize get_code_offset() { return byte_offset_of(ResolvedFieldEntry, _get_code); }
142 static ByteSize put_code_offset() { return byte_offset_of(ResolvedFieldEntry, _put_code); }
143 static ByteSize type_offset() { return byte_offset_of(ResolvedFieldEntry, _tos_state); }
144 static ByteSize flags_offset() { return byte_offset_of(ResolvedFieldEntry, _flags); }
145
146 };
147
148 #endif //SHARE_OOPS_RESOLVEDFIELDENTRY_HPP
|